diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+node_modules
diff --git a/dist/1.0.0/objectivity.WordCloud.mpk b/dist/1.0.0/objectivity.WordCloud.mpk
new file mode 100644
index 0000000..83c2176
Binary files /dev/null and b/dist/1.0.0/objectivity.WordCloud.mpk differ
diff --git a/dist/1.0.1/objectivity.WordCloud.mpk b/dist/1.0.1/objectivity.WordCloud.mpk
new file mode 100644
index 0000000..656c575
Binary files /dev/null and b/dist/1.0.1/objectivity.WordCloud.mpk differ
diff --git a/dist/tmp/widgets/WordCloud.xml b/dist/tmp/widgets/WordCloud.xml
new file mode 100644
index 0000000..60728b6
--- /dev/null
+++ b/dist/tmp/widgets/WordCloud.xml
@@ -0,0 +1,46 @@
+
+
+ Word Cloud
+ Show word cloud based on react-d3-cloud
+
+
+
+
+ Data source
+ The list of objects to be used for rendering in the WordCloud, should contain a text attribute and a numeric attribute.
+
+
+ Text attribute
+ Text attribute
+
+
+
+
+
+ Int attribute
+ Int attribute
+
+
+
+
+
+
+
+ On click
+ This action will be called once user clicks on the word.
+
+
+
+
+ Chosen word
+ This attribute stores the clicked word
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/tmp/widgets/objectivity/wordcloud/WordCloud.js b/dist/tmp/widgets/objectivity/wordcloud/WordCloud.js
new file mode 100644
index 0000000..0a3f020
--- /dev/null
+++ b/dist/tmp/widgets/objectivity/wordcloud/WordCloud.js
@@ -0,0 +1,25514 @@
+
+(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document);
+define(['react'], (function (React$3) { 'use strict';
+
+
+
+ function ___$insertStyle(css) {
+ if (!css || typeof window === 'undefined') {
+ return;
+ }
+ const style = document.createElement('style');
+ style.setAttribute('type', 'text/css');
+ style.innerHTML = css;
+ document.head.appendChild(style);
+ return css;
+ }
+
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React$3);
+
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+ var check = function (it) {
+ return it && it.Math == Math && it;
+ }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+
+
+ var global$R = // eslint-disable-next-line es/no-global-this -- safe
+ check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe
+ check(typeof self == 'object' && self) || check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func -- fallback
+ function () {
+ return this;
+ }() || Function('return this')();
+
+ var objectGetOwnPropertyDescriptor = {};
+
+ var fails$15 = function (exec) {
+ try {
+ return !!exec();
+ } catch (error) {
+ return true;
+ }
+ };
+
+ var fails$14 = fails$15; // Detect IE8's incomplete defineProperty implementation
+
+
+ var descriptors = !fails$14(function () {
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+ return Object.defineProperty({}, 1, {
+ get: function () {
+ return 7;
+ }
+ })[1] != 7;
+ });
+
+ var objectPropertyIsEnumerable = {};
+
+ var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+ var getOwnPropertyDescriptor$9 = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug
+
+ var NASHORN_BUG = getOwnPropertyDescriptor$9 && !$propertyIsEnumerable$1.call({
+ 1: 2
+ }, 1); // `Object.prototype.propertyIsEnumerable` method implementation
+ // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
+
+ objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+ var descriptor = getOwnPropertyDescriptor$9(this, V);
+ return !!descriptor && descriptor.enumerable;
+ } : $propertyIsEnumerable$1;
+
+ var createPropertyDescriptor$9 = function (bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+ };
+
+ var toString$u = {}.toString;
+
+ var classofRaw$1 = function (it) {
+ return toString$u.call(it).slice(8, -1);
+ };
+
+ var fails$13 = fails$15;
+
+ var classof$d = classofRaw$1;
+
+ var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings
+
+ var indexedObject = fails$13(function () {
+ // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
+ // eslint-disable-next-line no-prototype-builtins -- safe
+ return !Object('z').propertyIsEnumerable(0);
+ }) ? function (it) {
+ return classof$d(it) == 'String' ? split.call(it, '') : Object(it);
+ } : Object;
+
+ // `RequireObjectCoercible` abstract operation
+ // https://tc39.es/ecma262/#sec-requireobjectcoercible
+ var requireObjectCoercible$j = function (it) {
+ if (it == undefined) throw TypeError("Can't call method on " + it);
+ return it;
+ };
+
+ // toObject with fallback for non-array-like ES3 strings
+ var IndexedObject$6 = indexedObject;
+
+ var requireObjectCoercible$i = requireObjectCoercible$j;
+
+ var toIndexedObject$d = function (it) {
+ return IndexedObject$6(requireObjectCoercible$i(it));
+ };
+
+ // `IsCallable` abstract operation
+ // https://tc39.es/ecma262/#sec-iscallable
+ var isCallable$z = function (argument) {
+ return typeof argument === 'function';
+ };
+
+ var isCallable$y = isCallable$z;
+
+ var isObject$C = function (it) {
+ return typeof it === 'object' ? it !== null : isCallable$y(it);
+ };
+
+ var global$Q = global$R;
+
+ var isCallable$x = isCallable$z;
+
+ var aFunction = function (argument) {
+ return isCallable$x(argument) ? argument : undefined;
+ };
+
+ var getBuiltIn$y = function (namespace, method) {
+ return arguments.length < 2 ? aFunction(global$Q[namespace]) : global$Q[namespace] && global$Q[namespace][method];
+ };
+
+ var getBuiltIn$x = getBuiltIn$y;
+
+ var engineUserAgent = getBuiltIn$x('navigator', 'userAgent') || '';
+
+ var global$P = global$R;
+
+ var userAgent$7 = engineUserAgent;
+
+ var process$4 = global$P.process;
+ var Deno = global$P.Deno;
+ var versions = process$4 && process$4.versions || Deno && Deno.version;
+ var v8 = versions && versions.v8;
+ var match, version;
+
+ if (v8) {
+ match = v8.split('.');
+ version = match[0] < 4 ? 1 : match[0] + match[1];
+ } else if (userAgent$7) {
+ match = userAgent$7.match(/Edge\/(\d+)/);
+
+ if (!match || match[1] >= 74) {
+ match = userAgent$7.match(/Chrome\/(\d+)/);
+ if (match) version = match[1];
+ }
+ }
+
+ var engineV8Version = version && +version;
+
+ /* eslint-disable es/no-symbol -- required for testing */
+
+ var V8_VERSION$3 = engineV8Version;
+
+ var fails$12 = fails$15; // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
+
+
+ var nativeSymbol$1 = !!Object.getOwnPropertySymbols && !fails$12(function () {
+ var symbol = Symbol(); // Chrome 38 Symbol has incorrect toString conversion
+ // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
+
+ return !String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
+ !Symbol.sham && V8_VERSION$3 && V8_VERSION$3 < 41;
+ });
+
+ /* eslint-disable es/no-symbol -- required for testing */
+
+ var NATIVE_SYMBOL$2 = nativeSymbol$1;
+
+ var useSymbolAsUid = NATIVE_SYMBOL$2 && !Symbol.sham && typeof Symbol.iterator == 'symbol';
+
+ var isCallable$w = isCallable$z;
+
+ var getBuiltIn$w = getBuiltIn$y;
+
+ var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
+
+ var isSymbol$5 = USE_SYMBOL_AS_UID$1 ? function (it) {
+ return typeof it == 'symbol';
+ } : function (it) {
+ var $Symbol = getBuiltIn$w('Symbol');
+ return isCallable$w($Symbol) && Object(it) instanceof $Symbol;
+ };
+
+ var tryToString$3 = function (argument) {
+ try {
+ return String(argument);
+ } catch (error) {
+ return 'Object';
+ }
+ };
+
+ var isCallable$v = isCallable$z;
+
+ var tryToString$2 = tryToString$3; // `Assert: IsCallable(argument) is true`
+
+
+ var aCallable$Q = function (argument) {
+ if (isCallable$v(argument)) return argument;
+ throw TypeError(tryToString$2(argument) + ' is not a function');
+ };
+
+ var aCallable$P = aCallable$Q; // `GetMethod` abstract operation
+ // https://tc39.es/ecma262/#sec-getmethod
+
+
+ var getMethod$h = function (V, P) {
+ var func = V[P];
+ return func == null ? undefined : aCallable$P(func);
+ };
+
+ var isCallable$u = isCallable$z;
+
+ var isObject$B = isObject$C; // `OrdinaryToPrimitive` abstract operation
+ // https://tc39.es/ecma262/#sec-ordinarytoprimitive
+
+
+ var ordinaryToPrimitive$2 = function (input, pref) {
+ var fn, val;
+ if (pref === 'string' && isCallable$u(fn = input.toString) && !isObject$B(val = fn.call(input))) return val;
+ if (isCallable$u(fn = input.valueOf) && !isObject$B(val = fn.call(input))) return val;
+ if (pref !== 'string' && isCallable$u(fn = input.toString) && !isObject$B(val = fn.call(input))) return val;
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+ var shared$7 = {exports: {}};
+
+ var isPure = false;
+
+ var global$O = global$R;
+
+ var setGlobal$3 = function (key, value) {
+ try {
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
+ Object.defineProperty(global$O, key, {
+ value: value,
+ configurable: true,
+ writable: true
+ });
+ } catch (error) {
+ global$O[key] = value;
+ }
+
+ return value;
+ };
+
+ var global$N = global$R;
+
+ var setGlobal$2 = setGlobal$3;
+
+ var SHARED = '__core-js_shared__';
+ var store$5 = global$N[SHARED] || setGlobal$2(SHARED, {});
+ var sharedStore = store$5;
+
+ var store$4 = sharedStore;
+
+ (shared$7.exports = function (key, value) {
+ return store$4[key] || (store$4[key] = value !== undefined ? value : {});
+ })('versions', []).push({
+ version: '3.18.3',
+ mode: 'global',
+ copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
+ });
+
+ var requireObjectCoercible$h = requireObjectCoercible$j; // `ToObject` abstract operation
+ // https://tc39.es/ecma262/#sec-toobject
+
+
+ var toObject$A = function (argument) {
+ return Object(requireObjectCoercible$h(argument));
+ };
+
+ var toObject$z = toObject$A;
+
+ var hasOwnProperty$1 = {}.hasOwnProperty; // `HasOwnProperty` abstract operation
+ // https://tc39.es/ecma262/#sec-hasownproperty
+
+ var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
+ return hasOwnProperty$1.call(toObject$z(it), key);
+ };
+
+ var id$2 = 0;
+ var postfix = Math.random();
+
+ var uid$5 = function (key) {
+ return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$2 + postfix).toString(36);
+ };
+
+ var global$M = global$R;
+
+ var shared$6 = shared$7.exports;
+
+ var hasOwn$o = hasOwnProperty_1;
+
+ var uid$4 = uid$5;
+
+ var NATIVE_SYMBOL$1 = nativeSymbol$1;
+
+ var USE_SYMBOL_AS_UID = useSymbolAsUid;
+
+ var WellKnownSymbolsStore$1 = shared$6('wks');
+ var Symbol$3 = global$M.Symbol;
+ var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$3 : Symbol$3 && Symbol$3.withoutSetter || uid$4;
+
+ var wellKnownSymbol$G = function (name) {
+ if (!hasOwn$o(WellKnownSymbolsStore$1, name) || !(NATIVE_SYMBOL$1 || typeof WellKnownSymbolsStore$1[name] == 'string')) {
+ if (NATIVE_SYMBOL$1 && hasOwn$o(Symbol$3, name)) {
+ WellKnownSymbolsStore$1[name] = Symbol$3[name];
+ } else {
+ WellKnownSymbolsStore$1[name] = createWellKnownSymbol('Symbol.' + name);
+ }
+ }
+
+ return WellKnownSymbolsStore$1[name];
+ };
+
+ var isObject$A = isObject$C;
+
+ var isSymbol$4 = isSymbol$5;
+
+ var getMethod$g = getMethod$h;
+
+ var ordinaryToPrimitive$1 = ordinaryToPrimitive$2;
+
+ var wellKnownSymbol$F = wellKnownSymbol$G;
+
+ var TO_PRIMITIVE$2 = wellKnownSymbol$F('toPrimitive'); // `ToPrimitive` abstract operation
+ // https://tc39.es/ecma262/#sec-toprimitive
+
+ var toPrimitive$3 = function (input, pref) {
+ if (!isObject$A(input) || isSymbol$4(input)) return input;
+ var exoticToPrim = getMethod$g(input, TO_PRIMITIVE$2);
+ var result;
+
+ if (exoticToPrim) {
+ if (pref === undefined) pref = 'default';
+ result = exoticToPrim.call(input, pref);
+ if (!isObject$A(result) || isSymbol$4(result)) return result;
+ throw TypeError("Can't convert object to primitive value");
+ }
+
+ if (pref === undefined) pref = 'number';
+ return ordinaryToPrimitive$1(input, pref);
+ };
+
+ var toPrimitive$2 = toPrimitive$3;
+
+ var isSymbol$3 = isSymbol$5; // `ToPropertyKey` abstract operation
+ // https://tc39.es/ecma262/#sec-topropertykey
+
+
+ var toPropertyKey$9 = function (argument) {
+ var key = toPrimitive$2(argument, 'string');
+ return isSymbol$3(key) ? key : String(key);
+ };
+
+ var global$L = global$R;
+
+ var isObject$z = isObject$C;
+
+ var document$3 = global$L.document; // typeof document.createElement is 'object' in old IE
+
+ var EXISTS$1 = isObject$z(document$3) && isObject$z(document$3.createElement);
+
+ var documentCreateElement$2 = function (it) {
+ return EXISTS$1 ? document$3.createElement(it) : {};
+ };
+
+ var DESCRIPTORS$A = descriptors;
+
+ var fails$11 = fails$15;
+
+ var createElement$1 = documentCreateElement$2; // Thank's IE8 for his funny defineProperty
+
+
+ var ie8DomDefine = !DESCRIPTORS$A && !fails$11(function () {
+ // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
+ return Object.defineProperty(createElement$1('div'), 'a', {
+ get: function () {
+ return 7;
+ }
+ }).a != 7;
+ });
+
+ var DESCRIPTORS$z = descriptors;
+
+ var propertyIsEnumerableModule$2 = objectPropertyIsEnumerable;
+
+ var createPropertyDescriptor$8 = createPropertyDescriptor$9;
+
+ var toIndexedObject$c = toIndexedObject$d;
+
+ var toPropertyKey$8 = toPropertyKey$9;
+
+ var hasOwn$n = hasOwnProperty_1;
+
+ var IE8_DOM_DEFINE$1 = ie8DomDefine; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+
+ var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+
+ objectGetOwnPropertyDescriptor.f = DESCRIPTORS$z ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {
+ O = toIndexedObject$c(O);
+ P = toPropertyKey$8(P);
+ if (IE8_DOM_DEFINE$1) try {
+ return $getOwnPropertyDescriptor$1(O, P);
+ } catch (error) {
+ /* empty */
+ }
+ if (hasOwn$n(O, P)) return createPropertyDescriptor$8(!propertyIsEnumerableModule$2.f.call(O, P), O[P]);
+ };
+
+ var objectDefineProperty = {};
+
+ var isObject$y = isObject$C; // `Assert: Type(argument) is Object`
+
+
+ var anObject$1C = function (argument) {
+ if (isObject$y(argument)) return argument;
+ throw TypeError(String(argument) + ' is not an object');
+ };
+
+ var DESCRIPTORS$y = descriptors;
+
+ var IE8_DOM_DEFINE = ie8DomDefine;
+
+ var anObject$1B = anObject$1C;
+
+ var toPropertyKey$7 = toPropertyKey$9; // eslint-disable-next-line es/no-object-defineproperty -- safe
+
+
+ var $defineProperty$1 = Object.defineProperty; // `Object.defineProperty` method
+ // https://tc39.es/ecma262/#sec-object.defineproperty
+
+ objectDefineProperty.f = DESCRIPTORS$y ? $defineProperty$1 : function defineProperty(O, P, Attributes) {
+ anObject$1B(O);
+ P = toPropertyKey$7(P);
+ anObject$1B(Attributes);
+ if (IE8_DOM_DEFINE) try {
+ return $defineProperty$1(O, P, Attributes);
+ } catch (error) {
+ /* empty */
+ }
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
+ if ('value' in Attributes) O[P] = Attributes.value;
+ return O;
+ };
+
+ var DESCRIPTORS$x = descriptors;
+
+ var definePropertyModule$c = objectDefineProperty;
+
+ var createPropertyDescriptor$7 = createPropertyDescriptor$9;
+
+ var createNonEnumerableProperty$h = DESCRIPTORS$x ? function (object, key, value) {
+ return definePropertyModule$c.f(object, key, createPropertyDescriptor$7(1, value));
+ } : function (object, key, value) {
+ object[key] = value;
+ return object;
+ };
+
+ var redefine$l = {exports: {}};
+
+ var isCallable$t = isCallable$z;
+
+ var store$3 = sharedStore;
+
+ var functionToString = Function.toString; // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
+
+ if (!isCallable$t(store$3.inspectSource)) {
+ store$3.inspectSource = function (it) {
+ return functionToString.call(it);
+ };
+ }
+
+ var inspectSource$4 = store$3.inspectSource;
+
+ var global$K = global$R;
+
+ var isCallable$s = isCallable$z;
+
+ var inspectSource$3 = inspectSource$4;
+
+ var WeakMap$3 = global$K.WeakMap;
+ var nativeWeakMap = isCallable$s(WeakMap$3) && /native code/.test(inspectSource$3(WeakMap$3));
+
+ var shared$5 = shared$7.exports;
+
+ var uid$3 = uid$5;
+
+ var keys$3 = shared$5('keys');
+
+ var sharedKey$4 = function (key) {
+ return keys$3[key] || (keys$3[key] = uid$3(key));
+ };
+
+ var hiddenKeys$6 = {};
+
+ var NATIVE_WEAK_MAP$1 = nativeWeakMap;
+
+ var global$J = global$R;
+
+ var isObject$x = isObject$C;
+
+ var createNonEnumerableProperty$g = createNonEnumerableProperty$h;
+
+ var hasOwn$m = hasOwnProperty_1;
+
+ var shared$4 = sharedStore;
+
+ var sharedKey$3 = sharedKey$4;
+
+ var hiddenKeys$5 = hiddenKeys$6;
+
+ var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
+ var WeakMap$2 = global$J.WeakMap;
+ var set$4, get$3, has$2;
+
+ var enforce = function (it) {
+ return has$2(it) ? get$3(it) : set$4(it, {});
+ };
+
+ var getterFor = function (TYPE) {
+ return function (it) {
+ var state;
+
+ if (!isObject$x(it) || (state = get$3(it)).type !== TYPE) {
+ throw TypeError('Incompatible receiver, ' + TYPE + ' required');
+ }
+
+ return state;
+ };
+ };
+
+ if (NATIVE_WEAK_MAP$1 || shared$4.state) {
+ var store$2 = shared$4.state || (shared$4.state = new WeakMap$2());
+ var wmget = store$2.get;
+ var wmhas = store$2.has;
+ var wmset = store$2.set;
+
+ set$4 = function (it, metadata) {
+ if (wmhas.call(store$2, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+ metadata.facade = it;
+ wmset.call(store$2, it, metadata);
+ return metadata;
+ };
+
+ get$3 = function (it) {
+ return wmget.call(store$2, it) || {};
+ };
+
+ has$2 = function (it) {
+ return wmhas.call(store$2, it);
+ };
+ } else {
+ var STATE = sharedKey$3('state');
+ hiddenKeys$5[STATE] = true;
+
+ set$4 = function (it, metadata) {
+ if (hasOwn$m(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+ metadata.facade = it;
+ createNonEnumerableProperty$g(it, STATE, metadata);
+ return metadata;
+ };
+
+ get$3 = function (it) {
+ return hasOwn$m(it, STATE) ? it[STATE] : {};
+ };
+
+ has$2 = function (it) {
+ return hasOwn$m(it, STATE);
+ };
+ }
+
+ var internalState = {
+ set: set$4,
+ get: get$3,
+ has: has$2,
+ enforce: enforce,
+ getterFor: getterFor
+ };
+
+ var DESCRIPTORS$w = descriptors;
+
+ var hasOwn$l = hasOwnProperty_1;
+
+ var FunctionPrototype$2 = Function.prototype; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+ var getDescriptor = DESCRIPTORS$w && Object.getOwnPropertyDescriptor;
+ var EXISTS = hasOwn$l(FunctionPrototype$2, 'name'); // additional protection from minified / mangled / dropped function names
+
+ var PROPER = EXISTS && function something() {
+ /* empty */
+ }.name === 'something';
+
+ var CONFIGURABLE = EXISTS && (!DESCRIPTORS$w || DESCRIPTORS$w && getDescriptor(FunctionPrototype$2, 'name').configurable);
+ var functionName = {
+ EXISTS: EXISTS,
+ PROPER: PROPER,
+ CONFIGURABLE: CONFIGURABLE
+ };
+
+ var global$I = global$R;
+
+ var isCallable$r = isCallable$z;
+
+ var hasOwn$k = hasOwnProperty_1;
+
+ var createNonEnumerableProperty$f = createNonEnumerableProperty$h;
+
+ var setGlobal$1 = setGlobal$3;
+
+ var inspectSource$2 = inspectSource$4;
+
+ var InternalStateModule$j = internalState;
+
+ var CONFIGURABLE_FUNCTION_NAME$2 = functionName.CONFIGURABLE;
+
+ var getInternalState$i = InternalStateModule$j.get;
+ var enforceInternalState$1 = InternalStateModule$j.enforce;
+ var TEMPLATE = String(String).split('String');
+ (redefine$l.exports = function (O, key, value, options) {
+ var unsafe = options ? !!options.unsafe : false;
+ var simple = options ? !!options.enumerable : false;
+ var noTargetGet = options ? !!options.noTargetGet : false;
+ var name = options && options.name !== undefined ? options.name : key;
+ var state;
+
+ if (isCallable$r(value)) {
+ if (String(name).slice(0, 7) === 'Symbol(') {
+ name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
+ }
+
+ if (!hasOwn$k(value, 'name') || CONFIGURABLE_FUNCTION_NAME$2 && value.name !== name) {
+ createNonEnumerableProperty$f(value, 'name', name);
+ }
+
+ state = enforceInternalState$1(value);
+
+ if (!state.source) {
+ state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
+ }
+ }
+
+ if (O === global$I) {
+ if (simple) O[key] = value;else setGlobal$1(key, value);
+ return;
+ } else if (!unsafe) {
+ delete O[key];
+ } else if (!noTargetGet && O[key]) {
+ simple = true;
+ }
+
+ if (simple) O[key] = value;else createNonEnumerableProperty$f(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+ })(Function.prototype, 'toString', function toString() {
+ return isCallable$r(this) && getInternalState$i(this).source || inspectSource$2(this);
+ });
+
+ var objectGetOwnPropertyNames = {};
+
+ var ceil$2 = Math.ceil;
+ var floor$a = Math.floor; // `ToIntegerOrInfinity` abstract operation
+ // https://tc39.es/ecma262/#sec-tointegerorinfinity
+
+ var toIntegerOrInfinity$i = function (argument) {
+ var number = +argument; // eslint-disable-next-line no-self-compare -- safe
+
+ return number !== number || number === 0 ? 0 : (number > 0 ? floor$a : ceil$2)(number);
+ };
+
+ var toIntegerOrInfinity$h = toIntegerOrInfinity$i;
+
+ var max$6 = Math.max;
+ var min$a = Math.min; // Helper for a popular repeating case of the spec:
+ // Let integer be ? ToInteger(index).
+ // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
+
+ var toAbsoluteIndex$8 = function (index, length) {
+ var integer = toIntegerOrInfinity$h(index);
+ return integer < 0 ? max$6(integer + length, 0) : min$a(integer, length);
+ };
+
+ var toIntegerOrInfinity$g = toIntegerOrInfinity$i;
+
+ var min$9 = Math.min; // `ToLength` abstract operation
+ // https://tc39.es/ecma262/#sec-tolength
+
+ var toLength$d = function (argument) {
+ return argument > 0 ? min$9(toIntegerOrInfinity$g(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
+ };
+
+ var toLength$c = toLength$d; // `LengthOfArrayLike` abstract operation
+ // https://tc39.es/ecma262/#sec-lengthofarraylike
+
+
+ var lengthOfArrayLike$q = function (obj) {
+ return toLength$c(obj.length);
+ };
+
+ var toIndexedObject$b = toIndexedObject$d;
+
+ var toAbsoluteIndex$7 = toAbsoluteIndex$8;
+
+ var lengthOfArrayLike$p = lengthOfArrayLike$q; // `Array.prototype.{ indexOf, includes }` methods implementation
+
+
+ var createMethod$8 = function (IS_INCLUDES) {
+ return function ($this, el, fromIndex) {
+ var O = toIndexedObject$b($this);
+ var length = lengthOfArrayLike$p(O);
+ var index = toAbsoluteIndex$7(fromIndex, length);
+ var value; // Array#includes uses SameValueZero equality algorithm
+ // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (IS_INCLUDES && el != el) while (length > index) {
+ value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not
+ } else for (; length > index; index++) {
+ if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
+ }
+ return !IS_INCLUDES && -1;
+ };
+ };
+
+ var arrayIncludes = {
+ // `Array.prototype.includes` method
+ // https://tc39.es/ecma262/#sec-array.prototype.includes
+ includes: createMethod$8(true),
+ // `Array.prototype.indexOf` method
+ // https://tc39.es/ecma262/#sec-array.prototype.indexof
+ indexOf: createMethod$8(false)
+ };
+
+ var hasOwn$j = hasOwnProperty_1;
+
+ var toIndexedObject$a = toIndexedObject$d;
+
+ var indexOf = arrayIncludes.indexOf;
+
+ var hiddenKeys$4 = hiddenKeys$6;
+
+ var objectKeysInternal = function (object, names) {
+ var O = toIndexedObject$a(object);
+ var i = 0;
+ var result = [];
+ var key;
+
+ for (key in O) !hasOwn$j(hiddenKeys$4, key) && hasOwn$j(O, key) && result.push(key); // Don't enum bug & hidden keys
+
+
+ while (names.length > i) if (hasOwn$j(O, key = names[i++])) {
+ ~indexOf(result, key) || result.push(key);
+ }
+
+ return result;
+ };
+
+ // IE8- don't enum bug keys
+ var enumBugKeys$3 = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];
+
+ var internalObjectKeys$1 = objectKeysInternal;
+
+ var enumBugKeys$2 = enumBugKeys$3;
+
+ var hiddenKeys$3 = enumBugKeys$2.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertynames
+ // eslint-disable-next-line es/no-object-getownpropertynames -- safe
+
+ objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+ return internalObjectKeys$1(O, hiddenKeys$3);
+ };
+
+ var objectGetOwnPropertySymbols = {};
+
+ // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
+ objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;
+
+ var getBuiltIn$v = getBuiltIn$y;
+
+ var getOwnPropertyNamesModule$2 = objectGetOwnPropertyNames;
+
+ var getOwnPropertySymbolsModule$2 = objectGetOwnPropertySymbols;
+
+ var anObject$1A = anObject$1C; // all object keys, includes non-enumerable and symbols
+
+
+ var ownKeys$3 = getBuiltIn$v('Reflect', 'ownKeys') || function ownKeys(it) {
+ var keys = getOwnPropertyNamesModule$2.f(anObject$1A(it));
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule$2.f;
+ return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
+ };
+
+ var hasOwn$i = hasOwnProperty_1;
+
+ var ownKeys$2 = ownKeys$3;
+
+ var getOwnPropertyDescriptorModule$6 = objectGetOwnPropertyDescriptor;
+
+ var definePropertyModule$b = objectDefineProperty;
+
+ var copyConstructorProperties$3 = function (target, source) {
+ var keys = ownKeys$2(source);
+ var defineProperty = definePropertyModule$b.f;
+ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$6.f;
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ if (!hasOwn$i(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+ }
+ };
+
+ var fails$10 = fails$15;
+
+ var isCallable$q = isCallable$z;
+
+ var replacement = /#|\.prototype\./;
+
+ var isForced$5 = function (feature, detection) {
+ var value = data[normalize$1(feature)];
+ return value == POLYFILL ? true : value == NATIVE ? false : isCallable$q(detection) ? fails$10(detection) : !!detection;
+ };
+
+ var normalize$1 = isForced$5.normalize = function (string) {
+ return String(string).replace(replacement, '.').toLowerCase();
+ };
+
+ var data = isForced$5.data = {};
+ var NATIVE = isForced$5.NATIVE = 'N';
+ var POLYFILL = isForced$5.POLYFILL = 'P';
+ var isForced_1 = isForced$5;
+
+ var global$H = global$R;
+
+ var getOwnPropertyDescriptor$8 = objectGetOwnPropertyDescriptor.f;
+
+ var createNonEnumerableProperty$e = createNonEnumerableProperty$h;
+
+ var redefine$k = redefine$l.exports;
+
+ var setGlobal = setGlobal$3;
+
+ var copyConstructorProperties$2 = copyConstructorProperties$3;
+
+ var isForced$4 = isForced_1;
+ /*
+ options.target - name of the target object
+ options.global - target is the global object
+ options.stat - export as static methods of target
+ options.proto - export as prototype methods of target
+ options.real - real prototype method for the `pure` version
+ options.forced - export even if the native feature is available
+ options.bind - bind methods to the target, required for the `pure` version
+ options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
+ options.unsafe - use the simple assignment of property instead of delete + defineProperty
+ options.sham - add a flag to not completely full polyfills
+ options.enumerable - export as enumerable property
+ options.noTargetGet - prevent calling a getter on target
+ options.name - the .name of the function if it does not match the key
+ */
+
+
+ var _export = function (options, source) {
+ var TARGET = options.target;
+ var GLOBAL = options.global;
+ var STATIC = options.stat;
+ var FORCED, target, key, targetProperty, sourceProperty, descriptor;
+
+ if (GLOBAL) {
+ target = global$H;
+ } else if (STATIC) {
+ target = global$H[TARGET] || setGlobal(TARGET, {});
+ } else {
+ target = (global$H[TARGET] || {}).prototype;
+ }
+
+ if (target) for (key in source) {
+ sourceProperty = source[key];
+
+ if (options.noTargetGet) {
+ descriptor = getOwnPropertyDescriptor$8(target, key);
+ targetProperty = descriptor && descriptor.value;
+ } else targetProperty = target[key];
+
+ FORCED = isForced$4(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target
+
+ if (!FORCED && targetProperty !== undefined) {
+ if (typeof sourceProperty === typeof targetProperty) continue;
+ copyConstructorProperties$2(sourceProperty, targetProperty);
+ } // add a flag to not completely full polyfills
+
+
+ if (options.sham || targetProperty && targetProperty.sham) {
+ createNonEnumerableProperty$e(sourceProperty, 'sham', true);
+ } // extend global
+
+
+ redefine$k(target, key, sourceProperty, options);
+ }
+ };
+
+ var classof$c = classofRaw$1; // `IsArray` abstract operation
+ // https://tc39.es/ecma262/#sec-isarray
+ // eslint-disable-next-line es/no-array-isarray -- safe
+
+
+ var isArray$8 = Array.isArray || function isArray(argument) {
+ return classof$c(argument) == 'Array';
+ };
+
+ var wellKnownSymbol$E = wellKnownSymbol$G;
+
+ var TO_STRING_TAG$8 = wellKnownSymbol$E('toStringTag');
+ var test$2 = {};
+ test$2[TO_STRING_TAG$8] = 'z';
+ var toStringTagSupport = String(test$2) === '[object z]';
+
+ var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport;
+
+ var isCallable$p = isCallable$z;
+
+ var classofRaw = classofRaw$1;
+
+ var wellKnownSymbol$D = wellKnownSymbol$G;
+
+ var TO_STRING_TAG$7 = wellKnownSymbol$D('toStringTag'); // ES3 wrong here
+
+ var CORRECT_ARGUMENTS = classofRaw(function () {
+ return arguments;
+ }()) == 'Arguments'; // fallback for IE11 Script Access Denied error
+
+ var tryGet = function (it, key) {
+ try {
+ return it[key];
+ } catch (error) {
+ /* empty */
+ }
+ }; // getting tag from ES6+ `Object.prototype.toString`
+
+
+ var classof$b = TO_STRING_TAG_SUPPORT$2 ? classofRaw : function (it) {
+ var O, tag, result;
+ return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case
+ : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$7)) == 'string' ? tag // builtinTag case
+ : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback
+ : (result = classofRaw(O)) == 'Object' && isCallable$p(O.callee) ? 'Arguments' : result;
+ };
+
+ var classof$a = classof$b;
+
+ var toString$t = function (argument) {
+ if (classof$a(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
+ return String(argument);
+ };
+
+ var internalObjectKeys = objectKeysInternal;
+
+ var enumBugKeys$1 = enumBugKeys$3; // `Object.keys` method
+ // https://tc39.es/ecma262/#sec-object.keys
+ // eslint-disable-next-line es/no-object-keys -- safe
+
+
+ var objectKeys$5 = Object.keys || function keys(O) {
+ return internalObjectKeys(O, enumBugKeys$1);
+ };
+
+ var DESCRIPTORS$v = descriptors;
+
+ var definePropertyModule$a = objectDefineProperty;
+
+ var anObject$1z = anObject$1C;
+
+ var objectKeys$4 = objectKeys$5; // `Object.defineProperties` method
+ // https://tc39.es/ecma262/#sec-object.defineproperties
+ // eslint-disable-next-line es/no-object-defineproperties -- safe
+
+
+ var objectDefineProperties = DESCRIPTORS$v ? Object.defineProperties : function defineProperties(O, Properties) {
+ anObject$1z(O);
+ var keys = objectKeys$4(Properties);
+ var length = keys.length;
+ var index = 0;
+ var key;
+
+ while (length > index) definePropertyModule$a.f(O, key = keys[index++], Properties[key]);
+
+ return O;
+ };
+
+ var getBuiltIn$u = getBuiltIn$y;
+
+ var html$2 = getBuiltIn$u('document', 'documentElement');
+
+ /* global ActiveXObject -- old IE, WSH */
+
+ var anObject$1y = anObject$1C;
+
+ var defineProperties$3 = objectDefineProperties;
+
+ var enumBugKeys = enumBugKeys$3;
+
+ var hiddenKeys$2 = hiddenKeys$6;
+
+ var html$1 = html$2;
+
+ var documentCreateElement$1 = documentCreateElement$2;
+
+ var sharedKey$2 = sharedKey$4;
+
+ var GT = '>';
+ var LT = '<';
+ var PROTOTYPE$2 = 'prototype';
+ var SCRIPT = 'script';
+ var IE_PROTO$1 = sharedKey$2('IE_PROTO');
+
+ var EmptyConstructor = function () {
+ /* empty */
+ };
+
+ var scriptTag = function (content) {
+ return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
+ }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
+
+
+ var NullProtoObjectViaActiveX = function (activeXDocument) {
+ activeXDocument.write(scriptTag(''));
+ activeXDocument.close();
+ var temp = activeXDocument.parentWindow.Object;
+ activeXDocument = null; // avoid memory leak
+
+ return temp;
+ }; // Create object with fake `null` prototype: use iframe Object with cleared prototype
+
+
+ var NullProtoObjectViaIFrame = function () {
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = documentCreateElement$1('iframe');
+ var JS = 'java' + SCRIPT + ':';
+ var iframeDocument;
+ iframe.style.display = 'none';
+ html$1.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475
+
+ iframe.src = String(JS);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(scriptTag('document.F=Object'));
+ iframeDocument.close();
+ return iframeDocument.F;
+ }; // Check for document.domain and active x support
+ // No need to use active x approach when document.domain is not set
+ // see https://github.com/es-shims/es5-shim/issues/150
+ // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
+ // avoid IE GC bug
+
+
+ var activeXDocument;
+
+ var NullProtoObject = function () {
+ try {
+ activeXDocument = new ActiveXObject('htmlfile');
+ } catch (error) {
+ /* ignore */
+ }
+
+ NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) // old IE
+ : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); // WSH
+
+ var length = enumBugKeys.length;
+
+ while (length--) delete NullProtoObject[PROTOTYPE$2][enumBugKeys[length]];
+
+ return NullProtoObject();
+ };
+
+ hiddenKeys$2[IE_PROTO$1] = true; // `Object.create` method
+ // https://tc39.es/ecma262/#sec-object.create
+
+ var objectCreate$1 = Object.create || function create(O, Properties) {
+ var result;
+
+ if (O !== null) {
+ EmptyConstructor[PROTOTYPE$2] = anObject$1y(O);
+ result = new EmptyConstructor();
+ EmptyConstructor[PROTOTYPE$2] = null; // add "__proto__" for Object.getPrototypeOf polyfill
+
+ result[IE_PROTO$1] = O;
+ } else result = NullProtoObject();
+
+ return Properties === undefined ? result : defineProperties$3(result, Properties);
+ };
+
+ var objectGetOwnPropertyNamesExternal = {};
+
+ /* eslint-disable es/no-object-getownpropertynames -- safe */
+
+ var toIndexedObject$9 = toIndexedObject$d;
+
+ var $getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;
+
+ var toString$s = {}.toString;
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
+
+ var getWindowNames = function (it) {
+ try {
+ return $getOwnPropertyNames$1(it);
+ } catch (error) {
+ return windowNames.slice();
+ }
+ }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+
+
+ objectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames(it) {
+ return windowNames && toString$s.call(it) == '[object Window]' ? getWindowNames(it) : $getOwnPropertyNames$1(toIndexedObject$9(it));
+ };
+
+ var wellKnownSymbolWrapped = {};
+
+ var wellKnownSymbol$C = wellKnownSymbol$G;
+
+ wellKnownSymbolWrapped.f = wellKnownSymbol$C;
+
+ var global$G = global$R;
+
+ var path$1 = global$G;
+
+ var path = path$1;
+
+ var hasOwn$h = hasOwnProperty_1;
+
+ var wrappedWellKnownSymbolModule$1 = wellKnownSymbolWrapped;
+
+ var defineProperty$g = objectDefineProperty.f;
+
+ var defineWellKnownSymbol$l = function (NAME) {
+ var Symbol = path.Symbol || (path.Symbol = {});
+ if (!hasOwn$h(Symbol, NAME)) defineProperty$g(Symbol, NAME, {
+ value: wrappedWellKnownSymbolModule$1.f(NAME)
+ });
+ };
+
+ var defineProperty$f = objectDefineProperty.f;
+
+ var hasOwn$g = hasOwnProperty_1;
+
+ var wellKnownSymbol$B = wellKnownSymbol$G;
+
+ var TO_STRING_TAG$6 = wellKnownSymbol$B('toStringTag');
+
+ var setToStringTag$b = function (it, TAG, STATIC) {
+ if (it && !hasOwn$g(it = STATIC ? it : it.prototype, TO_STRING_TAG$6)) {
+ defineProperty$f(it, TO_STRING_TAG$6, {
+ configurable: true,
+ value: TAG
+ });
+ }
+ };
+
+ var aCallable$O = aCallable$Q; // optional / simple context binding
+
+
+ var functionBindContext = function (fn, that, length) {
+ aCallable$O(fn);
+ if (that === undefined) return fn;
+
+ switch (length) {
+ case 0:
+ return function () {
+ return fn.call(that);
+ };
+
+ 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 () {
+ return fn.apply(that, arguments);
+ };
+ };
+
+ var fails$$ = fails$15;
+
+ var isCallable$o = isCallable$z;
+
+ var classof$9 = classof$b;
+
+ var getBuiltIn$t = getBuiltIn$y;
+
+ var inspectSource$1 = inspectSource$4;
+
+ var empty$1 = [];
+ var construct$1 = getBuiltIn$t('Reflect', 'construct');
+ var constructorRegExp = /^\s*(?:class|function)\b/;
+ var exec$1 = constructorRegExp.exec;
+ var INCORRECT_TO_STRING = !constructorRegExp.exec(function () {
+ /* empty */
+ });
+
+ var isConstructorModern = function (argument) {
+ if (!isCallable$o(argument)) return false;
+
+ try {
+ construct$1(Object, empty$1, argument);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ };
+
+ var isConstructorLegacy = function (argument) {
+ if (!isCallable$o(argument)) return false;
+
+ switch (classof$9(argument)) {
+ case 'AsyncFunction':
+ case 'GeneratorFunction':
+ case 'AsyncGeneratorFunction':
+ return false;
+ // we can't check .prototype since constructors produced by .bind haven't it
+ }
+
+ return INCORRECT_TO_STRING || !!exec$1.call(constructorRegExp, inspectSource$1(argument));
+ }; // `IsConstructor` abstract operation
+ // https://tc39.es/ecma262/#sec-isconstructor
+
+
+ var isConstructor$7 = !construct$1 || fails$$(function () {
+ var called;
+ return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () {
+ called = true;
+ }) || called;
+ }) ? isConstructorLegacy : isConstructorModern;
+
+ var isArray$7 = isArray$8;
+
+ var isConstructor$6 = isConstructor$7;
+
+ var isObject$w = isObject$C;
+
+ var wellKnownSymbol$A = wellKnownSymbol$G;
+
+ var SPECIES$6 = wellKnownSymbol$A('species'); // a part of `ArraySpeciesCreate` abstract operation
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
+
+ var arraySpeciesConstructor$2 = function (originalArray) {
+ var C;
+
+ if (isArray$7(originalArray)) {
+ C = originalArray.constructor; // cross-realm fallback
+
+ if (isConstructor$6(C) && (C === Array || isArray$7(C.prototype))) C = undefined;else if (isObject$w(C)) {
+ C = C[SPECIES$6];
+ if (C === null) C = undefined;
+ }
+ }
+
+ return C === undefined ? Array : C;
+ };
+
+ var arraySpeciesConstructor$1 = arraySpeciesConstructor$2; // `ArraySpeciesCreate` abstract operation
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
+
+
+ var arraySpeciesCreate$6 = function (originalArray, length) {
+ return new (arraySpeciesConstructor$1(originalArray))(length === 0 ? 0 : length);
+ };
+
+ var bind$q = functionBindContext;
+
+ var IndexedObject$5 = indexedObject;
+
+ var toObject$y = toObject$A;
+
+ var lengthOfArrayLike$o = lengthOfArrayLike$q;
+
+ var arraySpeciesCreate$5 = arraySpeciesCreate$6;
+
+ var push$4 = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
+
+ var createMethod$7 = function (TYPE) {
+ var IS_MAP = TYPE == 1;
+ var IS_FILTER = TYPE == 2;
+ var IS_SOME = TYPE == 3;
+ var IS_EVERY = TYPE == 4;
+ var IS_FIND_INDEX = TYPE == 6;
+ var IS_FILTER_REJECT = TYPE == 7;
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+ return function ($this, callbackfn, that, specificCreate) {
+ var O = toObject$y($this);
+ var self = IndexedObject$5(O);
+ var boundFunction = bind$q(callbackfn, that, 3);
+ var length = lengthOfArrayLike$o(self);
+ var index = 0;
+ var create = specificCreate || arraySpeciesCreate$5;
+ var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
+ var value, result;
+
+ for (; length > index; index++) if (NO_HOLES || index in self) {
+ value = self[index];
+ result = boundFunction(value, index, O);
+
+ if (TYPE) {
+ if (IS_MAP) target[index] = result; // map
+ else if (result) switch (TYPE) {
+ case 3:
+ return true;
+ // some
+
+ case 5:
+ return value;
+ // find
+
+ case 6:
+ return index;
+ // findIndex
+
+ case 2:
+ push$4.call(target, value);
+ // filter
+ } else switch (TYPE) {
+ case 4:
+ return false;
+ // every
+
+ case 7:
+ push$4.call(target, value);
+ // filterReject
+ }
+ }
+ }
+
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
+ };
+ };
+
+ var arrayIteration = {
+ // `Array.prototype.forEach` method
+ // https://tc39.es/ecma262/#sec-array.prototype.foreach
+ forEach: createMethod$7(0),
+ // `Array.prototype.map` method
+ // https://tc39.es/ecma262/#sec-array.prototype.map
+ map: createMethod$7(1),
+ // `Array.prototype.filter` method
+ // https://tc39.es/ecma262/#sec-array.prototype.filter
+ filter: createMethod$7(2),
+ // `Array.prototype.some` method
+ // https://tc39.es/ecma262/#sec-array.prototype.some
+ some: createMethod$7(3),
+ // `Array.prototype.every` method
+ // https://tc39.es/ecma262/#sec-array.prototype.every
+ every: createMethod$7(4),
+ // `Array.prototype.find` method
+ // https://tc39.es/ecma262/#sec-array.prototype.find
+ find: createMethod$7(5),
+ // `Array.prototype.findIndex` method
+ // https://tc39.es/ecma262/#sec-array.prototype.findIndex
+ findIndex: createMethod$7(6),
+ // `Array.prototype.filterReject` method
+ // https://github.com/tc39/proposal-array-filtering
+ filterReject: createMethod$7(7)
+ };
+
+ var $$4i = _export;
+
+ var global$F = global$R;
+
+ var getBuiltIn$s = getBuiltIn$y;
+
+ var DESCRIPTORS$u = descriptors;
+
+ var NATIVE_SYMBOL = nativeSymbol$1;
+
+ var fails$_ = fails$15;
+
+ var hasOwn$f = hasOwnProperty_1;
+
+ var isArray$6 = isArray$8;
+
+ var isCallable$n = isCallable$z;
+
+ var isObject$v = isObject$C;
+
+ var isSymbol$2 = isSymbol$5;
+
+ var anObject$1x = anObject$1C;
+
+ var toObject$x = toObject$A;
+
+ var toIndexedObject$8 = toIndexedObject$d;
+
+ var toPropertyKey$6 = toPropertyKey$9;
+
+ var $toString$3 = toString$t;
+
+ var createPropertyDescriptor$6 = createPropertyDescriptor$9;
+
+ var nativeObjectCreate = objectCreate$1;
+
+ var objectKeys$3 = objectKeys$5;
+
+ var getOwnPropertyNamesModule$1 = objectGetOwnPropertyNames;
+
+ var getOwnPropertyNamesExternal = objectGetOwnPropertyNamesExternal;
+
+ var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols;
+
+ var getOwnPropertyDescriptorModule$5 = objectGetOwnPropertyDescriptor;
+
+ var definePropertyModule$9 = objectDefineProperty;
+
+ var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable;
+
+ var redefine$j = redefine$l.exports;
+
+ var shared$3 = shared$7.exports;
+
+ var sharedKey$1 = sharedKey$4;
+
+ var hiddenKeys$1 = hiddenKeys$6;
+
+ var uid$2 = uid$5;
+
+ var wellKnownSymbol$z = wellKnownSymbol$G;
+
+ var wrappedWellKnownSymbolModule = wellKnownSymbolWrapped;
+
+ var defineWellKnownSymbol$k = defineWellKnownSymbol$l;
+
+ var setToStringTag$a = setToStringTag$b;
+
+ var InternalStateModule$i = internalState;
+
+ var $forEach$3 = arrayIteration.forEach;
+
+ var HIDDEN = sharedKey$1('hidden');
+ var SYMBOL = 'Symbol';
+ var PROTOTYPE$1 = 'prototype';
+ var TO_PRIMITIVE$1 = wellKnownSymbol$z('toPrimitive');
+ var setInternalState$i = InternalStateModule$i.set;
+ var getInternalState$h = InternalStateModule$i.getterFor(SYMBOL);
+ var ObjectPrototype$3 = Object[PROTOTYPE$1];
+ var $Symbol = global$F.Symbol;
+ var $stringify$1 = getBuiltIn$s('JSON', 'stringify');
+ var nativeGetOwnPropertyDescriptor$2 = getOwnPropertyDescriptorModule$5.f;
+ var nativeDefineProperty$1 = definePropertyModule$9.f;
+ var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
+ var nativePropertyIsEnumerable = propertyIsEnumerableModule$1.f;
+ var AllSymbols = shared$3('symbols');
+ var ObjectPrototypeSymbols = shared$3('op-symbols');
+ var StringToSymbolRegistry = shared$3('string-to-symbol-registry');
+ var SymbolToStringRegistry = shared$3('symbol-to-string-registry');
+ var WellKnownSymbolsStore = shared$3('wks');
+ var QObject = global$F.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+
+ var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+
+ var setSymbolDescriptor = DESCRIPTORS$u && fails$_(function () {
+ return nativeObjectCreate(nativeDefineProperty$1({}, 'a', {
+ get: function () {
+ return nativeDefineProperty$1(this, 'a', {
+ value: 7
+ }).a;
+ }
+ })).a != 7;
+ }) ? function (O, P, Attributes) {
+ var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$2(ObjectPrototype$3, P);
+ if (ObjectPrototypeDescriptor) delete ObjectPrototype$3[P];
+ nativeDefineProperty$1(O, P, Attributes);
+
+ if (ObjectPrototypeDescriptor && O !== ObjectPrototype$3) {
+ nativeDefineProperty$1(ObjectPrototype$3, P, ObjectPrototypeDescriptor);
+ }
+ } : nativeDefineProperty$1;
+
+ var wrap$1 = function (tag, description) {
+ var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE$1]);
+ setInternalState$i(symbol, {
+ type: SYMBOL,
+ tag: tag,
+ description: description
+ });
+ if (!DESCRIPTORS$u) symbol.description = description;
+ return symbol;
+ };
+
+ var $defineProperty = function defineProperty(O, P, Attributes) {
+ if (O === ObjectPrototype$3) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
+ anObject$1x(O);
+ var key = toPropertyKey$6(P);
+ anObject$1x(Attributes);
+
+ if (hasOwn$f(AllSymbols, key)) {
+ if (!Attributes.enumerable) {
+ if (!hasOwn$f(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor$6(1, {}));
+ O[HIDDEN][key] = true;
+ } else {
+ if (hasOwn$f(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
+ Attributes = nativeObjectCreate(Attributes, {
+ enumerable: createPropertyDescriptor$6(0, false)
+ });
+ }
+
+ return setSymbolDescriptor(O, key, Attributes);
+ }
+
+ return nativeDefineProperty$1(O, key, Attributes);
+ };
+
+ var $defineProperties = function defineProperties(O, Properties) {
+ anObject$1x(O);
+ var properties = toIndexedObject$8(Properties);
+ var keys = objectKeys$3(properties).concat($getOwnPropertySymbols(properties));
+ $forEach$3(keys, function (key) {
+ if (!DESCRIPTORS$u || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
+ });
+ return O;
+ };
+
+ var $create = function create(O, Properties) {
+ return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
+ };
+
+ var $propertyIsEnumerable = function propertyIsEnumerable(V) {
+ var P = toPropertyKey$6(V);
+ var enumerable = nativePropertyIsEnumerable.call(this, P);
+ if (this === ObjectPrototype$3 && hasOwn$f(AllSymbols, P) && !hasOwn$f(ObjectPrototypeSymbols, P)) return false;
+ return enumerable || !hasOwn$f(this, P) || !hasOwn$f(AllSymbols, P) || hasOwn$f(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
+ };
+
+ var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
+ var it = toIndexedObject$8(O);
+ var key = toPropertyKey$6(P);
+ if (it === ObjectPrototype$3 && hasOwn$f(AllSymbols, key) && !hasOwn$f(ObjectPrototypeSymbols, key)) return;
+ var descriptor = nativeGetOwnPropertyDescriptor$2(it, key);
+
+ if (descriptor && hasOwn$f(AllSymbols, key) && !(hasOwn$f(it, HIDDEN) && it[HIDDEN][key])) {
+ descriptor.enumerable = true;
+ }
+
+ return descriptor;
+ };
+
+ var $getOwnPropertyNames = function getOwnPropertyNames(O) {
+ var names = nativeGetOwnPropertyNames(toIndexedObject$8(O));
+ var result = [];
+ $forEach$3(names, function (key) {
+ if (!hasOwn$f(AllSymbols, key) && !hasOwn$f(hiddenKeys$1, key)) result.push(key);
+ });
+ return result;
+ };
+
+ var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
+ var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$3;
+ var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject$8(O));
+ var result = [];
+ $forEach$3(names, function (key) {
+ if (hasOwn$f(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn$f(ObjectPrototype$3, key))) {
+ result.push(AllSymbols[key]);
+ }
+ });
+ return result;
+ }; // `Symbol` constructor
+ // https://tc39.es/ecma262/#sec-symbol-constructor
+
+
+ if (!NATIVE_SYMBOL) {
+ $Symbol = function Symbol() {
+ if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
+ var description = !arguments.length || arguments[0] === undefined ? undefined : $toString$3(arguments[0]);
+ var tag = uid$2(description);
+
+ var setter = function (value) {
+ if (this === ObjectPrototype$3) setter.call(ObjectPrototypeSymbols, value);
+ if (hasOwn$f(this, HIDDEN) && hasOwn$f(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+ setSymbolDescriptor(this, tag, createPropertyDescriptor$6(1, value));
+ };
+
+ if (DESCRIPTORS$u && USE_SETTER) setSymbolDescriptor(ObjectPrototype$3, tag, {
+ configurable: true,
+ set: setter
+ });
+ return wrap$1(tag, description);
+ };
+
+ redefine$j($Symbol[PROTOTYPE$1], 'toString', function toString() {
+ return getInternalState$h(this).tag;
+ });
+ redefine$j($Symbol, 'withoutSetter', function (description) {
+ return wrap$1(uid$2(description), description);
+ });
+ propertyIsEnumerableModule$1.f = $propertyIsEnumerable;
+ definePropertyModule$9.f = $defineProperty;
+ getOwnPropertyDescriptorModule$5.f = $getOwnPropertyDescriptor;
+ getOwnPropertyNamesModule$1.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
+ getOwnPropertySymbolsModule$1.f = $getOwnPropertySymbols;
+
+ wrappedWellKnownSymbolModule.f = function (name) {
+ return wrap$1(wellKnownSymbol$z(name), name);
+ };
+
+ if (DESCRIPTORS$u) {
+ // https://github.com/tc39/proposal-Symbol-description
+ nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {
+ configurable: true,
+ get: function description() {
+ return getInternalState$h(this).description;
+ }
+ });
+
+ {
+ redefine$j(ObjectPrototype$3, 'propertyIsEnumerable', $propertyIsEnumerable, {
+ unsafe: true
+ });
+ }
+ }
+ }
+
+ $$4i({
+ global: true,
+ wrap: true,
+ forced: !NATIVE_SYMBOL,
+ sham: !NATIVE_SYMBOL
+ }, {
+ Symbol: $Symbol
+ });
+ $forEach$3(objectKeys$3(WellKnownSymbolsStore), function (name) {
+ defineWellKnownSymbol$k(name);
+ });
+ $$4i({
+ target: SYMBOL,
+ stat: true,
+ forced: !NATIVE_SYMBOL
+ }, {
+ // `Symbol.for` method
+ // https://tc39.es/ecma262/#sec-symbol.for
+ 'for': function (key) {
+ var string = $toString$3(key);
+ if (hasOwn$f(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
+ var symbol = $Symbol(string);
+ StringToSymbolRegistry[string] = symbol;
+ SymbolToStringRegistry[symbol] = string;
+ return symbol;
+ },
+ // `Symbol.keyFor` method
+ // https://tc39.es/ecma262/#sec-symbol.keyfor
+ keyFor: function keyFor(sym) {
+ if (!isSymbol$2(sym)) throw TypeError(sym + ' is not a symbol');
+ if (hasOwn$f(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
+ },
+ useSetter: function () {
+ USE_SETTER = true;
+ },
+ useSimple: function () {
+ USE_SETTER = false;
+ }
+ });
+ $$4i({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_SYMBOL,
+ sham: !DESCRIPTORS$u
+ }, {
+ // `Object.create` method
+ // https://tc39.es/ecma262/#sec-object.create
+ create: $create,
+ // `Object.defineProperty` method
+ // https://tc39.es/ecma262/#sec-object.defineproperty
+ defineProperty: $defineProperty,
+ // `Object.defineProperties` method
+ // https://tc39.es/ecma262/#sec-object.defineproperties
+ defineProperties: $defineProperties,
+ // `Object.getOwnPropertyDescriptor` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor
+ });
+ $$4i({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_SYMBOL
+ }, {
+ // `Object.getOwnPropertyNames` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertynames
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // `Object.getOwnPropertySymbols` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertysymbols
+ getOwnPropertySymbols: $getOwnPropertySymbols
+ }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3443
+
+ $$4i({
+ target: 'Object',
+ stat: true,
+ forced: fails$_(function () {
+ getOwnPropertySymbolsModule$1.f(1);
+ })
+ }, {
+ getOwnPropertySymbols: function getOwnPropertySymbols(it) {
+ return getOwnPropertySymbolsModule$1.f(toObject$x(it));
+ }
+ }); // `JSON.stringify` method behavior with symbols
+ // https://tc39.es/ecma262/#sec-json.stringify
+
+ if ($stringify$1) {
+ var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails$_(function () {
+ var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {}
+
+ return $stringify$1([symbol]) != '[null]' // WebKit converts symbol values to JSON as null
+ || $stringify$1({
+ a: symbol
+ }) != '{}' // V8 throws on boxed symbols
+ || $stringify$1(Object(symbol)) != '{}';
+ });
+ $$4i({
+ target: 'JSON',
+ stat: true,
+ forced: FORCED_JSON_STRINGIFY
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ stringify: function stringify(it, replacer, space) {
+ var args = [it];
+ var index = 1;
+ var $replacer;
+
+ while (arguments.length > index) args.push(arguments[index++]);
+
+ $replacer = replacer;
+ if (!isObject$v(replacer) && it === undefined || isSymbol$2(it)) return; // IE8 returns string on undefined
+
+ if (!isArray$6(replacer)) replacer = function (key, value) {
+ if (isCallable$n($replacer)) value = $replacer.call(this, key, value);
+ if (!isSymbol$2(value)) return value;
+ };
+ args[1] = replacer;
+ return $stringify$1.apply(null, args);
+ }
+ });
+ } // `Symbol.prototype[@@toPrimitive]` method
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
+
+
+ if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE$1]) {
+ var valueOf$1 = $Symbol[PROTOTYPE$1].valueOf;
+ redefine$j($Symbol[PROTOTYPE$1], TO_PRIMITIVE$1, function () {
+ return valueOf$1.apply(this, arguments);
+ });
+ } // `Symbol.prototype[@@toStringTag]` property
+ // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
+
+
+ setToStringTag$a($Symbol, SYMBOL);
+ hiddenKeys$1[HIDDEN] = true;
+
+ var $$4h = _export;
+
+ var DESCRIPTORS$t = descriptors;
+
+ var global$E = global$R;
+
+ var hasOwn$e = hasOwnProperty_1;
+
+ var isCallable$m = isCallable$z;
+
+ var isObject$u = isObject$C;
+
+ var defineProperty$e = objectDefineProperty.f;
+
+ var copyConstructorProperties$1 = copyConstructorProperties$3;
+
+ var NativeSymbol = global$E.Symbol;
+
+ if (DESCRIPTORS$t && isCallable$m(NativeSymbol) && (!('description' in NativeSymbol.prototype) || // Safari 12 bug
+ NativeSymbol().description !== undefined)) {
+ var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description
+
+ var SymbolWrapper = function Symbol() {
+ var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
+ var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
+ : description === undefined ? NativeSymbol() : NativeSymbol(description);
+ if (description === '') EmptyStringDescriptionStore[result] = true;
+ return result;
+ };
+
+ copyConstructorProperties$1(SymbolWrapper, NativeSymbol);
+ var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
+ symbolPrototype.constructor = SymbolWrapper;
+ var symbolToString = symbolPrototype.toString;
+ var nativeSymbol = String(NativeSymbol('test')) == 'Symbol(test)';
+ var regexp = /^Symbol\((.*)\)[^)]+$/;
+ defineProperty$e(symbolPrototype, 'description', {
+ configurable: true,
+ get: function description() {
+ var symbol = isObject$u(this) ? this.valueOf() : this;
+ var string = symbolToString.call(symbol);
+ if (hasOwn$e(EmptyStringDescriptionStore, symbol)) return '';
+ var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');
+ return desc === '' ? undefined : desc;
+ }
+ });
+ $$4h({
+ global: true,
+ forced: true
+ }, {
+ Symbol: SymbolWrapper
+ });
+ }
+
+ var defineWellKnownSymbol$j = defineWellKnownSymbol$l; // `Symbol.asyncIterator` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.asynciterator
+
+
+ defineWellKnownSymbol$j('asyncIterator');
+
+ var defineWellKnownSymbol$i = defineWellKnownSymbol$l; // `Symbol.hasInstance` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.hasinstance
+
+
+ defineWellKnownSymbol$i('hasInstance');
+
+ var defineWellKnownSymbol$h = defineWellKnownSymbol$l; // `Symbol.isConcatSpreadable` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.isconcatspreadable
+
+
+ defineWellKnownSymbol$h('isConcatSpreadable');
+
+ var defineWellKnownSymbol$g = defineWellKnownSymbol$l; // `Symbol.iterator` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.iterator
+
+
+ defineWellKnownSymbol$g('iterator');
+
+ var defineWellKnownSymbol$f = defineWellKnownSymbol$l; // `Symbol.match` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.match
+
+
+ defineWellKnownSymbol$f('match');
+
+ var defineWellKnownSymbol$e = defineWellKnownSymbol$l; // `Symbol.matchAll` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.matchall
+
+
+ defineWellKnownSymbol$e('matchAll');
+
+ var defineWellKnownSymbol$d = defineWellKnownSymbol$l; // `Symbol.replace` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.replace
+
+
+ defineWellKnownSymbol$d('replace');
+
+ var defineWellKnownSymbol$c = defineWellKnownSymbol$l; // `Symbol.search` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.search
+
+
+ defineWellKnownSymbol$c('search');
+
+ var defineWellKnownSymbol$b = defineWellKnownSymbol$l; // `Symbol.species` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.species
+
+
+ defineWellKnownSymbol$b('species');
+
+ var defineWellKnownSymbol$a = defineWellKnownSymbol$l; // `Symbol.split` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.split
+
+
+ defineWellKnownSymbol$a('split');
+
+ var defineWellKnownSymbol$9 = defineWellKnownSymbol$l; // `Symbol.toPrimitive` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.toprimitive
+
+
+ defineWellKnownSymbol$9('toPrimitive');
+
+ var defineWellKnownSymbol$8 = defineWellKnownSymbol$l; // `Symbol.toStringTag` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.tostringtag
+
+
+ defineWellKnownSymbol$8('toStringTag');
+
+ var defineWellKnownSymbol$7 = defineWellKnownSymbol$l; // `Symbol.unscopables` well-known symbol
+ // https://tc39.es/ecma262/#sec-symbol.unscopables
+
+
+ defineWellKnownSymbol$7('unscopables');
+
+ var fails$Z = fails$15;
+
+ var correctPrototypeGetter = !fails$Z(function () {
+ function F() {
+ /* empty */
+ }
+
+ F.prototype.constructor = null; // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
+
+ return Object.getPrototypeOf(new F()) !== F.prototype;
+ });
+
+ var hasOwn$d = hasOwnProperty_1;
+
+ var isCallable$l = isCallable$z;
+
+ var toObject$w = toObject$A;
+
+ var sharedKey = sharedKey$4;
+
+ var CORRECT_PROTOTYPE_GETTER$2 = correctPrototypeGetter;
+
+ var IE_PROTO = sharedKey('IE_PROTO');
+ var ObjectPrototype$2 = Object.prototype; // `Object.getPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-object.getprototypeof
+ // eslint-disable-next-line es/no-object-getprototypeof -- safe
+
+ var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER$2 ? Object.getPrototypeOf : function (O) {
+ var object = toObject$w(O);
+ if (hasOwn$d(object, IE_PROTO)) return object[IE_PROTO];
+ var constructor = object.constructor;
+
+ if (isCallable$l(constructor) && object instanceof constructor) {
+ return constructor.prototype;
+ }
+
+ return object instanceof Object ? ObjectPrototype$2 : null;
+ };
+
+ var isCallable$k = isCallable$z;
+
+ var aPossiblePrototype$2 = function (argument) {
+ if (typeof argument === 'object' || isCallable$k(argument)) return argument;
+ throw TypeError("Can't set " + String(argument) + ' as a prototype');
+ };
+
+ /* eslint-disable no-proto -- safe */
+
+ var anObject$1w = anObject$1C;
+
+ var aPossiblePrototype$1 = aPossiblePrototype$2; // `Object.setPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-object.setprototypeof
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
+ // eslint-disable-next-line es/no-object-setprototypeof -- safe
+
+
+ var objectSetPrototypeOf$1 = Object.setPrototypeOf || ('__proto__' in {} ? function () {
+ var CORRECT_SETTER = false;
+ var test = {};
+ var setter;
+
+ try {
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+ setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
+ setter.call(test, []);
+ CORRECT_SETTER = test instanceof Array;
+ } catch (error) {
+ /* empty */
+ }
+
+ return function setPrototypeOf(O, proto) {
+ anObject$1w(O);
+ aPossiblePrototype$1(proto);
+ if (CORRECT_SETTER) setter.call(O, proto);else O.__proto__ = proto;
+ return O;
+ };
+ }() : undefined);
+
+ var isObject$t = isObject$C;
+
+ var createNonEnumerableProperty$d = createNonEnumerableProperty$h; // `InstallErrorCause` abstract operation
+ // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
+
+
+ var installErrorCause$1 = function (O, options) {
+ if (isObject$t(options) && 'cause' in options) {
+ createNonEnumerableProperty$d(O, 'cause', options.cause);
+ }
+ };
+
+ var iterators = {};
+
+ var wellKnownSymbol$y = wellKnownSymbol$G;
+
+ var Iterators$4 = iterators;
+
+ var ITERATOR$a = wellKnownSymbol$y('iterator');
+ var ArrayPrototype$2 = Array.prototype; // check on default Array iterator
+
+ var isArrayIteratorMethod$3 = function (it) {
+ return it !== undefined && (Iterators$4.Array === it || ArrayPrototype$2[ITERATOR$a] === it);
+ };
+
+ var classof$8 = classof$b;
+
+ var getMethod$f = getMethod$h;
+
+ var Iterators$3 = iterators;
+
+ var wellKnownSymbol$x = wellKnownSymbol$G;
+
+ var ITERATOR$9 = wellKnownSymbol$x('iterator');
+
+ var getIteratorMethod$9 = function (it) {
+ if (it != undefined) return getMethod$f(it, ITERATOR$9) || getMethod$f(it, '@@iterator') || Iterators$3[classof$8(it)];
+ };
+
+ var aCallable$N = aCallable$Q;
+
+ var anObject$1v = anObject$1C;
+
+ var getIteratorMethod$8 = getIteratorMethod$9;
+
+ var getIterator$b = function (argument, usingIterator) {
+ var iteratorMethod = arguments.length < 2 ? getIteratorMethod$8(argument) : usingIterator;
+ if (aCallable$N(iteratorMethod)) return anObject$1v(iteratorMethod.call(argument));
+ throw TypeError(String(argument) + ' is not iterable');
+ };
+
+ var anObject$1u = anObject$1C;
+
+ var getMethod$e = getMethod$h;
+
+ var iteratorClose$4 = function (iterator, kind, value) {
+ var innerResult, innerError;
+ anObject$1u(iterator);
+
+ try {
+ innerResult = getMethod$e(iterator, 'return');
+
+ if (!innerResult) {
+ if (kind === 'throw') throw value;
+ return value;
+ }
+
+ innerResult = innerResult.call(iterator);
+ } catch (error) {
+ innerError = true;
+ innerResult = error;
+ }
+
+ if (kind === 'throw') throw value;
+ if (innerError) throw innerResult;
+ anObject$1u(innerResult);
+ return value;
+ };
+
+ var anObject$1t = anObject$1C;
+
+ var isArrayIteratorMethod$2 = isArrayIteratorMethod$3;
+
+ var lengthOfArrayLike$n = lengthOfArrayLike$q;
+
+ var bind$p = functionBindContext;
+
+ var getIterator$a = getIterator$b;
+
+ var getIteratorMethod$7 = getIteratorMethod$9;
+
+ var iteratorClose$3 = iteratorClose$4;
+
+ var Result = function (stopped, result) {
+ this.stopped = stopped;
+ this.result = result;
+ };
+
+ var iterate$I = function (iterable, unboundFunction, options) {
+ var that = options && options.that;
+ var AS_ENTRIES = !!(options && options.AS_ENTRIES);
+ var IS_ITERATOR = !!(options && options.IS_ITERATOR);
+ var INTERRUPTED = !!(options && options.INTERRUPTED);
+ var fn = bind$p(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
+ var iterator, iterFn, index, length, result, next, step;
+
+ var stop = function (condition) {
+ if (iterator) iteratorClose$3(iterator, 'normal', condition);
+ return new Result(true, condition);
+ };
+
+ var callFn = function (value) {
+ if (AS_ENTRIES) {
+ anObject$1t(value);
+ return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
+ }
+
+ return INTERRUPTED ? fn(value, stop) : fn(value);
+ };
+
+ if (IS_ITERATOR) {
+ iterator = iterable;
+ } else {
+ iterFn = getIteratorMethod$7(iterable);
+ if (!iterFn) throw TypeError(String(iterable) + ' is not iterable'); // optimisation for array iterators
+
+ if (isArrayIteratorMethod$2(iterFn)) {
+ for (index = 0, length = lengthOfArrayLike$n(iterable); length > index; index++) {
+ result = callFn(iterable[index]);
+ if (result && result instanceof Result) return result;
+ }
+
+ return new Result(false);
+ }
+
+ iterator = getIterator$a(iterable, iterFn);
+ }
+
+ next = iterator.next;
+
+ while (!(step = next.call(iterator)).done) {
+ try {
+ result = callFn(step.value);
+ } catch (error) {
+ iteratorClose$3(iterator, 'throw', error);
+ }
+
+ if (typeof result == 'object' && result && result instanceof Result) return result;
+ }
+
+ return new Result(false);
+ };
+
+ var $$4g = _export;
+
+ var getPrototypeOf$e = objectGetPrototypeOf$1;
+
+ var setPrototypeOf$7 = objectSetPrototypeOf$1;
+
+ var copyConstructorProperties = copyConstructorProperties$3;
+
+ var create$d = objectCreate$1;
+
+ var createNonEnumerableProperty$c = createNonEnumerableProperty$h;
+
+ var createPropertyDescriptor$5 = createPropertyDescriptor$9;
+
+ var installErrorCause = installErrorCause$1;
+
+ var iterate$H = iterate$I;
+
+ var toString$r = toString$t;
+
+ var $AggregateError = function AggregateError(errors, message
+ /* , options */
+ ) {
+ var that = this;
+ var options = arguments.length > 2 ? arguments[2] : undefined;
+ if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message, options);
+
+ if (setPrototypeOf$7) {
+ // eslint-disable-next-line unicorn/error-message -- expected
+ that = setPrototypeOf$7(new Error(undefined), getPrototypeOf$e(that));
+ }
+
+ if (message !== undefined) createNonEnumerableProperty$c(that, 'message', toString$r(message));
+ installErrorCause(that, options);
+ var errorsArray = [];
+ iterate$H(errors, errorsArray.push, {
+ that: errorsArray
+ });
+ createNonEnumerableProperty$c(that, 'errors', errorsArray);
+ return that;
+ };
+
+ if (setPrototypeOf$7) setPrototypeOf$7($AggregateError, Error);else copyConstructorProperties($AggregateError, Error);
+ $AggregateError.prototype = create$d(Error.prototype, {
+ constructor: createPropertyDescriptor$5(1, $AggregateError),
+ message: createPropertyDescriptor$5(1, ''),
+ name: createPropertyDescriptor$5(1, 'AggregateError')
+ }); // `AggregateError` constructor
+ // https://tc39.es/ecma262/#sec-aggregate-error-constructor
+
+ $$4g({
+ global: true
+ }, {
+ AggregateError: $AggregateError
+ });
+
+ var wellKnownSymbol$w = wellKnownSymbol$G;
+
+ var create$c = objectCreate$1;
+
+ var definePropertyModule$8 = objectDefineProperty;
+
+ var UNSCOPABLES = wellKnownSymbol$w('unscopables');
+ var ArrayPrototype$1 = Array.prototype; // Array.prototype[@@unscopables]
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ if (ArrayPrototype$1[UNSCOPABLES] == undefined) {
+ definePropertyModule$8.f(ArrayPrototype$1, UNSCOPABLES, {
+ configurable: true,
+ value: create$c(null)
+ });
+ } // add a key to Array.prototype[@@unscopables]
+
+
+ var addToUnscopables$h = function (key) {
+ ArrayPrototype$1[UNSCOPABLES][key] = true;
+ };
+
+ var $$4f = _export;
+
+ var toObject$v = toObject$A;
+
+ var lengthOfArrayLike$m = lengthOfArrayLike$q;
+
+ var toIntegerOrInfinity$f = toIntegerOrInfinity$i;
+
+ var addToUnscopables$g = addToUnscopables$h; // `Array.prototype.at` method
+ // https://github.com/tc39/proposal-relative-indexing-method
+
+
+ $$4f({
+ target: 'Array',
+ proto: true
+ }, {
+ at: function at(index) {
+ var O = toObject$v(this);
+ var len = lengthOfArrayLike$m(O);
+ var relativeIndex = toIntegerOrInfinity$f(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : O[k];
+ }
+ });
+ addToUnscopables$g('at');
+
+ var toPropertyKey$5 = toPropertyKey$9;
+
+ var definePropertyModule$7 = objectDefineProperty;
+
+ var createPropertyDescriptor$4 = createPropertyDescriptor$9;
+
+ var createProperty$7 = function (object, key, value) {
+ var propertyKey = toPropertyKey$5(key);
+ if (propertyKey in object) definePropertyModule$7.f(object, propertyKey, createPropertyDescriptor$4(0, value));else object[propertyKey] = value;
+ };
+
+ var fails$Y = fails$15;
+
+ var wellKnownSymbol$v = wellKnownSymbol$G;
+
+ var V8_VERSION$2 = engineV8Version;
+
+ var SPECIES$5 = wellKnownSymbol$v('species');
+
+ var arrayMethodHasSpeciesSupport$5 = function (METHOD_NAME) {
+ // We can't use this feature detection in V8 since it causes
+ // deoptimization and serious performance degradation
+ // https://github.com/zloirock/core-js/issues/677
+ return V8_VERSION$2 >= 51 || !fails$Y(function () {
+ var array = [];
+ var constructor = array.constructor = {};
+
+ constructor[SPECIES$5] = function () {
+ return {
+ foo: 1
+ };
+ };
+
+ return array[METHOD_NAME](Boolean).foo !== 1;
+ });
+ };
+
+ var $$4e = _export;
+
+ var fails$X = fails$15;
+
+ var isArray$5 = isArray$8;
+
+ var isObject$s = isObject$C;
+
+ var toObject$u = toObject$A;
+
+ var lengthOfArrayLike$l = lengthOfArrayLike$q;
+
+ var createProperty$6 = createProperty$7;
+
+ var arraySpeciesCreate$4 = arraySpeciesCreate$6;
+
+ var arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5;
+
+ var wellKnownSymbol$u = wellKnownSymbol$G;
+
+ var V8_VERSION$1 = engineV8Version;
+
+ var IS_CONCAT_SPREADABLE = wellKnownSymbol$u('isConcatSpreadable');
+ var MAX_SAFE_INTEGER$2 = 0x1FFFFFFFFFFFFF;
+ var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes
+ // deoptimization and serious performance degradation
+ // https://github.com/zloirock/core-js/issues/679
+
+ var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION$1 >= 51 || !fails$X(function () {
+ var array = [];
+ array[IS_CONCAT_SPREADABLE] = false;
+ return array.concat()[0] !== array;
+ });
+ var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$4('concat');
+
+ var isConcatSpreadable = function (O) {
+ if (!isObject$s(O)) return false;
+ var spreadable = O[IS_CONCAT_SPREADABLE];
+ return spreadable !== undefined ? !!spreadable : isArray$5(O);
+ };
+
+ var FORCED$u = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method
+ // https://tc39.es/ecma262/#sec-array.prototype.concat
+ // with adding support of @@isConcatSpreadable and @@species
+
+ $$4e({
+ target: 'Array',
+ proto: true,
+ forced: FORCED$u
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ concat: function concat(arg) {
+ var O = toObject$u(this);
+ var A = arraySpeciesCreate$4(O, 0);
+ var n = 0;
+ var i, k, length, len, E;
+
+ for (i = -1, length = arguments.length; i < length; i++) {
+ E = i === -1 ? O : arguments[i];
+
+ if (isConcatSpreadable(E)) {
+ len = lengthOfArrayLike$l(E);
+ if (n + len > MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+
+ for (k = 0; k < len; k++, n++) if (k in E) createProperty$6(A, n, E[k]);
+ } else {
+ if (n >= MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+ createProperty$6(A, n++, E);
+ }
+ }
+
+ A.length = n;
+ return A;
+ }
+ });
+
+ var toObject$t = toObject$A;
+
+ var toAbsoluteIndex$6 = toAbsoluteIndex$8;
+
+ var lengthOfArrayLike$k = lengthOfArrayLike$q;
+
+ var min$8 = Math.min; // `Array.prototype.copyWithin` method implementation
+ // https://tc39.es/ecma262/#sec-array.prototype.copywithin
+ // eslint-disable-next-line es/no-array-prototype-copywithin -- safe
+
+ var arrayCopyWithin = [].copyWithin || function copyWithin(target
+ /* = 0 */
+ , start
+ /* = 0, end = @length */
+ ) {
+ var O = toObject$t(this);
+ var len = lengthOfArrayLike$k(O);
+ var to = toAbsoluteIndex$6(target, len);
+ var from = toAbsoluteIndex$6(start, len);
+ var end = arguments.length > 2 ? arguments[2] : undefined;
+ var count = min$8((end === undefined ? len : toAbsoluteIndex$6(end, len)) - from, len - to);
+ var inc = 1;
+
+ if (from < to && to < from + count) {
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+
+ while (count-- > 0) {
+ if (from in O) O[to] = O[from];else delete O[to];
+ to += inc;
+ from += inc;
+ }
+
+ return O;
+ };
+
+ var $$4d = _export;
+
+ var copyWithin = arrayCopyWithin;
+
+ var addToUnscopables$f = addToUnscopables$h; // `Array.prototype.copyWithin` method
+ // https://tc39.es/ecma262/#sec-array.prototype.copywithin
+
+
+ $$4d({
+ target: 'Array',
+ proto: true
+ }, {
+ copyWithin: copyWithin
+ }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$f('copyWithin');
+
+ var fails$W = fails$15;
+
+ var arrayMethodIsStrict$9 = function (METHOD_NAME, argument) {
+ var method = [][METHOD_NAME];
+ return !!method && fails$W(function () {
+ // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
+ method.call(null, argument || function () {
+ throw 1;
+ }, 1);
+ });
+ };
+
+ var $$4c = _export;
+
+ var $every$2 = arrayIteration.every;
+
+ var arrayMethodIsStrict$8 = arrayMethodIsStrict$9;
+
+ var STRICT_METHOD$8 = arrayMethodIsStrict$8('every'); // `Array.prototype.every` method
+ // https://tc39.es/ecma262/#sec-array.prototype.every
+
+ $$4c({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$8
+ }, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ return $every$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var toObject$s = toObject$A;
+
+ var toAbsoluteIndex$5 = toAbsoluteIndex$8;
+
+ var lengthOfArrayLike$j = lengthOfArrayLike$q; // `Array.prototype.fill` method implementation
+ // https://tc39.es/ecma262/#sec-array.prototype.fill
+
+
+ var arrayFill$1 = function fill(value
+ /* , start = 0, end = @length */
+ ) {
+ var O = toObject$s(this);
+ var length = lengthOfArrayLike$j(O);
+ var argumentsLength = arguments.length;
+ var index = toAbsoluteIndex$5(argumentsLength > 1 ? arguments[1] : undefined, length);
+ var end = argumentsLength > 2 ? arguments[2] : undefined;
+ var endPos = end === undefined ? length : toAbsoluteIndex$5(end, length);
+
+ while (endPos > index) O[index++] = value;
+
+ return O;
+ };
+
+ var $$4b = _export;
+
+ var fill = arrayFill$1;
+
+ var addToUnscopables$e = addToUnscopables$h; // `Array.prototype.fill` method
+ // https://tc39.es/ecma262/#sec-array.prototype.fill
+
+
+ $$4b({
+ target: 'Array',
+ proto: true
+ }, {
+ fill: fill
+ }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$e('fill');
+
+ var $$4a = _export;
+
+ var $filter$1 = arrayIteration.filter;
+
+ var arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5;
+
+ var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$3('filter'); // `Array.prototype.filter` method
+ // https://tc39.es/ecma262/#sec-array.prototype.filter
+ // with adding support of @@species
+
+ $$4a({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$3
+ }, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ return $filter$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$49 = _export;
+
+ var $find$2 = arrayIteration.find;
+
+ var addToUnscopables$d = addToUnscopables$h;
+
+ var FIND = 'find';
+ var SKIPS_HOLES$1 = true; // Shouldn't skip holes
+
+ if (FIND in []) Array(1)[FIND](function () {
+ SKIPS_HOLES$1 = false;
+ }); // `Array.prototype.find` method
+ // https://tc39.es/ecma262/#sec-array.prototype.find
+
+ $$49({
+ target: 'Array',
+ proto: true,
+ forced: SKIPS_HOLES$1
+ }, {
+ find: function find(callbackfn
+ /* , that = undefined */
+ ) {
+ return $find$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$d(FIND);
+
+ var $$48 = _export;
+
+ var $findIndex$1 = arrayIteration.findIndex;
+
+ var addToUnscopables$c = addToUnscopables$h;
+
+ var FIND_INDEX = 'findIndex';
+ var SKIPS_HOLES = true; // Shouldn't skip holes
+
+ if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () {
+ SKIPS_HOLES = false;
+ }); // `Array.prototype.findIndex` method
+ // https://tc39.es/ecma262/#sec-array.prototype.findindex
+
+ $$48({
+ target: 'Array',
+ proto: true,
+ forced: SKIPS_HOLES
+ }, {
+ findIndex: function findIndex(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$c(FIND_INDEX);
+
+ var isArray$4 = isArray$8;
+
+ var lengthOfArrayLike$i = lengthOfArrayLike$q;
+
+ var bind$o = functionBindContext; // `FlattenIntoArray` abstract operation
+ // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
+
+
+ var flattenIntoArray$2 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
+ var targetIndex = start;
+ var sourceIndex = 0;
+ var mapFn = mapper ? bind$o(mapper, thisArg, 3) : false;
+ var element, elementLen;
+
+ while (sourceIndex < sourceLen) {
+ if (sourceIndex in source) {
+ element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
+
+ if (depth > 0 && isArray$4(element)) {
+ elementLen = lengthOfArrayLike$i(element);
+ targetIndex = flattenIntoArray$2(target, original, element, elementLen, targetIndex, depth - 1) - 1;
+ } else {
+ if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
+ target[targetIndex] = element;
+ }
+
+ targetIndex++;
+ }
+
+ sourceIndex++;
+ }
+
+ return targetIndex;
+ };
+
+ var flattenIntoArray_1 = flattenIntoArray$2;
+
+ var $$47 = _export;
+
+ var flattenIntoArray$1 = flattenIntoArray_1;
+
+ var toObject$r = toObject$A;
+
+ var lengthOfArrayLike$h = lengthOfArrayLike$q;
+
+ var toIntegerOrInfinity$e = toIntegerOrInfinity$i;
+
+ var arraySpeciesCreate$3 = arraySpeciesCreate$6; // `Array.prototype.flat` method
+ // https://tc39.es/ecma262/#sec-array.prototype.flat
+
+
+ $$47({
+ target: 'Array',
+ proto: true
+ }, {
+ flat: function flat() {
+ var depthArg = arguments.length ? arguments[0] : undefined;
+ var O = toObject$r(this);
+ var sourceLen = lengthOfArrayLike$h(O);
+ var A = arraySpeciesCreate$3(O, 0);
+ A.length = flattenIntoArray$1(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity$e(depthArg));
+ return A;
+ }
+ });
+
+ var $$46 = _export;
+
+ var flattenIntoArray = flattenIntoArray_1;
+
+ var aCallable$M = aCallable$Q;
+
+ var toObject$q = toObject$A;
+
+ var lengthOfArrayLike$g = lengthOfArrayLike$q;
+
+ var arraySpeciesCreate$2 = arraySpeciesCreate$6; // `Array.prototype.flatMap` method
+ // https://tc39.es/ecma262/#sec-array.prototype.flatmap
+
+
+ $$46({
+ target: 'Array',
+ proto: true
+ }, {
+ flatMap: function flatMap(callbackfn
+ /* , thisArg */
+ ) {
+ var O = toObject$q(this);
+ var sourceLen = lengthOfArrayLike$g(O);
+ var A;
+ aCallable$M(callbackfn);
+ A = arraySpeciesCreate$2(O, 0);
+ A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return A;
+ }
+ });
+
+ var $forEach$2 = arrayIteration.forEach;
+
+ var arrayMethodIsStrict$7 = arrayMethodIsStrict$9;
+
+ var STRICT_METHOD$7 = arrayMethodIsStrict$7('forEach'); // `Array.prototype.forEach` method implementation
+ // https://tc39.es/ecma262/#sec-array.prototype.foreach
+
+ var arrayForEach = !STRICT_METHOD$7 ? function forEach(callbackfn
+ /* , thisArg */
+ ) {
+ return $forEach$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); // eslint-disable-next-line es/no-array-prototype-foreach -- safe
+ } : [].forEach;
+
+ var $$45 = _export;
+
+ var forEach$2 = arrayForEach; // `Array.prototype.forEach` method
+ // https://tc39.es/ecma262/#sec-array.prototype.foreach
+ // eslint-disable-next-line es/no-array-prototype-foreach -- safe
+
+
+ $$45({
+ target: 'Array',
+ proto: true,
+ forced: [].forEach != forEach$2
+ }, {
+ forEach: forEach$2
+ });
+
+ var anObject$1s = anObject$1C;
+
+ var iteratorClose$2 = iteratorClose$4; // call something on iterator step with safe closing on error
+
+
+ var callWithSafeIterationClosing$3 = function (iterator, fn, value, ENTRIES) {
+ try {
+ return ENTRIES ? fn(anObject$1s(value)[0], value[1]) : fn(value);
+ } catch (error) {
+ iteratorClose$2(iterator, 'throw', error);
+ }
+ };
+
+ var bind$n = functionBindContext;
+
+ var toObject$p = toObject$A;
+
+ var callWithSafeIterationClosing$2 = callWithSafeIterationClosing$3;
+
+ var isArrayIteratorMethod$1 = isArrayIteratorMethod$3;
+
+ var isConstructor$5 = isConstructor$7;
+
+ var lengthOfArrayLike$f = lengthOfArrayLike$q;
+
+ var createProperty$5 = createProperty$7;
+
+ var getIterator$9 = getIterator$b;
+
+ var getIteratorMethod$6 = getIteratorMethod$9; // `Array.from` method implementation
+ // https://tc39.es/ecma262/#sec-array.from
+
+
+ var arrayFrom$1 = function from(arrayLike
+ /* , mapfn = undefined, thisArg = undefined */
+ ) {
+ var O = toObject$p(arrayLike);
+ var IS_CONSTRUCTOR = isConstructor$5(this);
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var mapping = mapfn !== undefined;
+ if (mapping) mapfn = bind$n(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
+ var iteratorMethod = getIteratorMethod$6(O);
+ var index = 0;
+ var length, result, step, iterator, next, value; // if the target is not iterable or it's an array with the default iterator - use a simple case
+
+ if (iteratorMethod && !(this == Array && isArrayIteratorMethod$1(iteratorMethod))) {
+ iterator = getIterator$9(O, iteratorMethod);
+ next = iterator.next;
+ result = IS_CONSTRUCTOR ? new this() : [];
+
+ for (; !(step = next.call(iterator)).done; index++) {
+ value = mapping ? callWithSafeIterationClosing$2(iterator, mapfn, [step.value, index], true) : step.value;
+ createProperty$5(result, index, value);
+ }
+ } else {
+ length = lengthOfArrayLike$f(O);
+ result = IS_CONSTRUCTOR ? new this(length) : Array(length);
+
+ for (; length > index; index++) {
+ value = mapping ? mapfn(O[index], index) : O[index];
+ createProperty$5(result, index, value);
+ }
+ }
+
+ result.length = index;
+ return result;
+ };
+
+ var wellKnownSymbol$t = wellKnownSymbol$G;
+
+ var ITERATOR$8 = wellKnownSymbol$t('iterator');
+ var SAFE_CLOSING = false;
+
+ try {
+ var called = 0;
+ var iteratorWithReturn = {
+ next: function () {
+ return {
+ done: !!called++
+ };
+ },
+ 'return': function () {
+ SAFE_CLOSING = true;
+ }
+ };
+
+ iteratorWithReturn[ITERATOR$8] = function () {
+ return this;
+ }; // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
+
+
+ Array.from(iteratorWithReturn, function () {
+ throw 2;
+ });
+ } catch (error) {
+ /* empty */
+ }
+
+ var checkCorrectnessOfIteration$4 = function (exec, SKIP_CLOSING) {
+ if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
+ var ITERATION_SUPPORT = false;
+
+ try {
+ var object = {};
+
+ object[ITERATOR$8] = function () {
+ return {
+ next: function () {
+ return {
+ done: ITERATION_SUPPORT = true
+ };
+ }
+ };
+ };
+
+ exec(object);
+ } catch (error) {
+ /* empty */
+ }
+
+ return ITERATION_SUPPORT;
+ };
+
+ var $$44 = _export;
+
+ var from$5 = arrayFrom$1;
+
+ var checkCorrectnessOfIteration$3 = checkCorrectnessOfIteration$4;
+
+ var INCORRECT_ITERATION$1 = !checkCorrectnessOfIteration$3(function (iterable) {
+ // eslint-disable-next-line es/no-array-from -- required for testing
+ Array.from(iterable);
+ }); // `Array.from` method
+ // https://tc39.es/ecma262/#sec-array.from
+
+ $$44({
+ target: 'Array',
+ stat: true,
+ forced: INCORRECT_ITERATION$1
+ }, {
+ from: from$5
+ });
+
+ var $$43 = _export;
+
+ var $includes$1 = arrayIncludes.includes;
+
+ var addToUnscopables$b = addToUnscopables$h; // `Array.prototype.includes` method
+ // https://tc39.es/ecma262/#sec-array.prototype.includes
+
+
+ $$43({
+ target: 'Array',
+ proto: true
+ }, {
+ includes: function includes(el
+ /* , fromIndex = 0 */
+ ) {
+ return $includes$1(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$b('includes');
+
+ /* eslint-disable es/no-array-prototype-indexof -- required for testing */
+
+ var $$42 = _export;
+
+ var $indexOf$1 = arrayIncludes.indexOf;
+
+ var arrayMethodIsStrict$6 = arrayMethodIsStrict$9;
+
+ var nativeIndexOf = [].indexOf;
+ var NEGATIVE_ZERO$1 = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
+ var STRICT_METHOD$6 = arrayMethodIsStrict$6('indexOf'); // `Array.prototype.indexOf` method
+ // https://tc39.es/ecma262/#sec-array.prototype.indexof
+
+ $$42({
+ target: 'Array',
+ proto: true,
+ forced: NEGATIVE_ZERO$1 || !STRICT_METHOD$6
+ }, {
+ indexOf: function indexOf(searchElement
+ /* , fromIndex = 0 */
+ ) {
+ return NEGATIVE_ZERO$1 // convert -0 to +0
+ ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf$1(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$41 = _export;
+
+ var isArray$3 = isArray$8; // `Array.isArray` method
+ // https://tc39.es/ecma262/#sec-array.isarray
+
+
+ $$41({
+ target: 'Array',
+ stat: true
+ }, {
+ isArray: isArray$3
+ });
+
+ var fails$V = fails$15;
+
+ var isCallable$j = isCallable$z;
+
+ var getPrototypeOf$d = objectGetPrototypeOf$1;
+
+ var redefine$i = redefine$l.exports;
+
+ var wellKnownSymbol$s = wellKnownSymbol$G;
+
+ var ITERATOR$7 = wellKnownSymbol$s('iterator');
+ var BUGGY_SAFARI_ITERATORS$1 = false; // `%IteratorPrototype%` object
+ // https://tc39.es/ecma262/#sec-%iteratorprototype%-object
+
+ var IteratorPrototype$5, PrototypeOfArrayIteratorPrototype, arrayIterator$1;
+ /* eslint-disable es/no-array-prototype-keys -- safe */
+
+ if ([].keys) {
+ arrayIterator$1 = [].keys(); // Safari 8 has buggy iterators w/o `next`
+
+ if (!('next' in arrayIterator$1)) BUGGY_SAFARI_ITERATORS$1 = true;else {
+ PrototypeOfArrayIteratorPrototype = getPrototypeOf$d(getPrototypeOf$d(arrayIterator$1));
+ if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$5 = PrototypeOfArrayIteratorPrototype;
+ }
+ }
+
+ var NEW_ITERATOR_PROTOTYPE = IteratorPrototype$5 == undefined || fails$V(function () {
+ var test = {}; // FF44- legacy iterators case
+
+ return IteratorPrototype$5[ITERATOR$7].call(test) !== test;
+ });
+ if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$5 = {}; // `%IteratorPrototype%[@@iterator]()` method
+ // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
+
+ if (!isCallable$j(IteratorPrototype$5[ITERATOR$7])) {
+ redefine$i(IteratorPrototype$5, ITERATOR$7, function () {
+ return this;
+ });
+ }
+
+ var iteratorsCore = {
+ IteratorPrototype: IteratorPrototype$5,
+ BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1
+ };
+
+ var IteratorPrototype$4 = iteratorsCore.IteratorPrototype;
+
+ var create$b = objectCreate$1;
+
+ var createPropertyDescriptor$3 = createPropertyDescriptor$9;
+
+ var setToStringTag$9 = setToStringTag$b;
+
+ var Iterators$2 = iterators;
+
+ var returnThis$1 = function () {
+ return this;
+ };
+
+ var createIteratorConstructor$7 = function (IteratorConstructor, NAME, next) {
+ var TO_STRING_TAG = NAME + ' Iterator';
+ IteratorConstructor.prototype = create$b(IteratorPrototype$4, {
+ next: createPropertyDescriptor$3(1, next)
+ });
+ setToStringTag$9(IteratorConstructor, TO_STRING_TAG, false);
+ Iterators$2[TO_STRING_TAG] = returnThis$1;
+ return IteratorConstructor;
+ };
+
+ var $$40 = _export;
+
+ var FunctionName$1 = functionName;
+
+ var isCallable$i = isCallable$z;
+
+ var createIteratorConstructor$6 = createIteratorConstructor$7;
+
+ var getPrototypeOf$c = objectGetPrototypeOf$1;
+
+ var setPrototypeOf$6 = objectSetPrototypeOf$1;
+
+ var setToStringTag$8 = setToStringTag$b;
+
+ var createNonEnumerableProperty$b = createNonEnumerableProperty$h;
+
+ var redefine$h = redefine$l.exports;
+
+ var wellKnownSymbol$r = wellKnownSymbol$G;
+
+ var Iterators$1 = iterators;
+
+ var IteratorsCore = iteratorsCore;
+
+ var PROPER_FUNCTION_NAME$4 = FunctionName$1.PROPER;
+ var CONFIGURABLE_FUNCTION_NAME$1 = FunctionName$1.CONFIGURABLE;
+ var IteratorPrototype$3 = IteratorsCore.IteratorPrototype;
+ var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+ var ITERATOR$6 = wellKnownSymbol$r('iterator');
+ var KEYS = 'keys';
+ var VALUES = 'values';
+ var ENTRIES = 'entries';
+
+ var returnThis = function () {
+ return this;
+ };
+
+ var defineIterator$3 = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
+ createIteratorConstructor$6(IteratorConstructor, NAME, next);
+
+ var getIterationMethod = function (KIND) {
+ if (KIND === DEFAULT && defaultIterator) return defaultIterator;
+ if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
+
+ switch (KIND) {
+ case KEYS:
+ return function keys() {
+ return new IteratorConstructor(this, KIND);
+ };
+
+ case VALUES:
+ return function values() {
+ return new IteratorConstructor(this, KIND);
+ };
+
+ case ENTRIES:
+ return function entries() {
+ return new IteratorConstructor(this, KIND);
+ };
+ }
+
+ return function () {
+ return new IteratorConstructor(this);
+ };
+ };
+
+ var TO_STRING_TAG = NAME + ' Iterator';
+ var INCORRECT_VALUES_NAME = false;
+ var IterablePrototype = Iterable.prototype;
+ var nativeIterator = IterablePrototype[ITERATOR$6] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];
+ var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+ var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
+ var CurrentIteratorPrototype, methods, KEY; // fix native
+
+ if (anyNativeIterator) {
+ CurrentIteratorPrototype = getPrototypeOf$c(anyNativeIterator.call(new Iterable()));
+
+ if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+ if (getPrototypeOf$c(CurrentIteratorPrototype) !== IteratorPrototype$3) {
+ if (setPrototypeOf$6) {
+ setPrototypeOf$6(CurrentIteratorPrototype, IteratorPrototype$3);
+ } else if (!isCallable$i(CurrentIteratorPrototype[ITERATOR$6])) {
+ redefine$h(CurrentIteratorPrototype, ITERATOR$6, returnThis);
+ }
+ } // Set @@toStringTag to native iterators
+
+
+ setToStringTag$8(CurrentIteratorPrototype, TO_STRING_TAG, true);
+ }
+ } // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
+
+
+ if (PROPER_FUNCTION_NAME$4 && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+ if (CONFIGURABLE_FUNCTION_NAME$1) {
+ createNonEnumerableProperty$b(IterablePrototype, 'name', VALUES);
+ } else {
+ INCORRECT_VALUES_NAME = true;
+
+ defaultIterator = function values() {
+ return nativeIterator.call(this);
+ };
+ }
+ } // export additional methods
+
+
+ if (DEFAULT) {
+ methods = {
+ values: getIterationMethod(VALUES),
+ keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+ entries: getIterationMethod(ENTRIES)
+ };
+ if (FORCED) for (KEY in methods) {
+ if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+ redefine$h(IterablePrototype, KEY, methods[KEY]);
+ }
+ } else $$40({
+ target: NAME,
+ proto: true,
+ forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME
+ }, methods);
+ } // define iterator
+
+
+ if (IterablePrototype[ITERATOR$6] !== defaultIterator) {
+ redefine$h(IterablePrototype, ITERATOR$6, defaultIterator, {
+ name: DEFAULT
+ });
+ }
+
+ Iterators$1[NAME] = defaultIterator;
+ return methods;
+ };
+
+ var toIndexedObject$7 = toIndexedObject$d;
+
+ var addToUnscopables$a = addToUnscopables$h;
+
+ var Iterators = iterators;
+
+ var InternalStateModule$h = internalState;
+
+ var defineIterator$2 = defineIterator$3;
+
+ var ARRAY_ITERATOR = 'Array Iterator';
+ var setInternalState$h = InternalStateModule$h.set;
+ var getInternalState$g = InternalStateModule$h.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method
+ // https://tc39.es/ecma262/#sec-array.prototype.entries
+ // `Array.prototype.keys` method
+ // https://tc39.es/ecma262/#sec-array.prototype.keys
+ // `Array.prototype.values` method
+ // https://tc39.es/ecma262/#sec-array.prototype.values
+ // `Array.prototype[@@iterator]` method
+ // https://tc39.es/ecma262/#sec-array.prototype-@@iterator
+ // `CreateArrayIterator` internal method
+ // https://tc39.es/ecma262/#sec-createarrayiterator
+
+ var es_array_iterator = defineIterator$2(Array, 'Array', function (iterated, kind) {
+ setInternalState$h(this, {
+ type: ARRAY_ITERATOR,
+ target: toIndexedObject$7(iterated),
+ // target
+ index: 0,
+ // next index
+ kind: kind // kind
+
+ }); // `%ArrayIteratorPrototype%.next` method
+ // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
+ }, function () {
+ var state = getInternalState$g(this);
+ var target = state.target;
+ var kind = state.kind;
+ var index = state.index++;
+
+ if (!target || index >= target.length) {
+ state.target = undefined;
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ if (kind == 'keys') return {
+ value: index,
+ done: false
+ };
+ if (kind == 'values') return {
+ value: target[index],
+ done: false
+ };
+ return {
+ value: [index, target[index]],
+ done: false
+ };
+ }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values%
+ // https://tc39.es/ecma262/#sec-createunmappedargumentsobject
+ // https://tc39.es/ecma262/#sec-createmappedargumentsobject
+
+ Iterators.Arguments = Iterators.Array; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+ addToUnscopables$a('keys');
+ addToUnscopables$a('values');
+ addToUnscopables$a('entries');
+
+ var $$3$ = _export;
+
+ var IndexedObject$4 = indexedObject;
+
+ var toIndexedObject$6 = toIndexedObject$d;
+
+ var arrayMethodIsStrict$5 = arrayMethodIsStrict$9;
+
+ var nativeJoin = [].join;
+ var ES3_STRINGS = IndexedObject$4 != Object;
+ var STRICT_METHOD$5 = arrayMethodIsStrict$5('join', ','); // `Array.prototype.join` method
+ // https://tc39.es/ecma262/#sec-array.prototype.join
+
+ $$3$({
+ target: 'Array',
+ proto: true,
+ forced: ES3_STRINGS || !STRICT_METHOD$5
+ }, {
+ join: function join(separator) {
+ return nativeJoin.call(toIndexedObject$6(this), separator === undefined ? ',' : separator);
+ }
+ });
+
+ /* eslint-disable es/no-array-prototype-lastindexof -- safe */
+
+ var toIndexedObject$5 = toIndexedObject$d;
+
+ var toIntegerOrInfinity$d = toIntegerOrInfinity$i;
+
+ var lengthOfArrayLike$e = lengthOfArrayLike$q;
+
+ var arrayMethodIsStrict$4 = arrayMethodIsStrict$9;
+
+ var min$7 = Math.min;
+ var $lastIndexOf$1 = [].lastIndexOf;
+ var NEGATIVE_ZERO = !!$lastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0;
+ var STRICT_METHOD$4 = arrayMethodIsStrict$4('lastIndexOf');
+ var FORCED$t = NEGATIVE_ZERO || !STRICT_METHOD$4; // `Array.prototype.lastIndexOf` method implementation
+ // https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+
+ var arrayLastIndexOf = FORCED$t ? function lastIndexOf(searchElement
+ /* , fromIndex = @[*-1] */
+ ) {
+ // convert -0 to +0
+ if (NEGATIVE_ZERO) return $lastIndexOf$1.apply(this, arguments) || 0;
+ var O = toIndexedObject$5(this);
+ var length = lengthOfArrayLike$e(O);
+ var index = length - 1;
+ if (arguments.length > 1) index = min$7(index, toIntegerOrInfinity$d(arguments[1]));
+ if (index < 0) index = length + index;
+
+ for (; index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
+
+ return -1;
+ } : $lastIndexOf$1;
+
+ var $$3_ = _export;
+
+ var lastIndexOf = arrayLastIndexOf; // `Array.prototype.lastIndexOf` method
+ // https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+ // eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing
+
+
+ $$3_({
+ target: 'Array',
+ proto: true,
+ forced: lastIndexOf !== [].lastIndexOf
+ }, {
+ lastIndexOf: lastIndexOf
+ });
+
+ var $$3Z = _export;
+
+ var $map$1 = arrayIteration.map;
+
+ var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5;
+
+ var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$2('map'); // `Array.prototype.map` method
+ // https://tc39.es/ecma262/#sec-array.prototype.map
+ // with adding support of @@species
+
+ $$3Z({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$2
+ }, {
+ map: function map(callbackfn
+ /* , thisArg */
+ ) {
+ return $map$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$3Y = _export;
+
+ var fails$U = fails$15;
+
+ var isConstructor$4 = isConstructor$7;
+
+ var createProperty$4 = createProperty$7;
+
+ var ISNT_GENERIC = fails$U(function () {
+ function F() {
+ /* empty */
+ } // eslint-disable-next-line es/no-array-of -- required for testing
+
+
+ return !(Array.of.call(F) instanceof F);
+ }); // `Array.of` method
+ // https://tc39.es/ecma262/#sec-array.of
+ // WebKit Array.of isn't generic
+
+ $$3Y({
+ target: 'Array',
+ stat: true,
+ forced: ISNT_GENERIC
+ }, {
+ of: function of() {
+ var index = 0;
+ var argumentsLength = arguments.length;
+ var result = new (isConstructor$4(this) ? this : Array)(argumentsLength);
+
+ while (argumentsLength > index) createProperty$4(result, index, arguments[index++]);
+
+ result.length = argumentsLength;
+ return result;
+ }
+ });
+
+ var aCallable$L = aCallable$Q;
+
+ var toObject$o = toObject$A;
+
+ var IndexedObject$3 = indexedObject;
+
+ var lengthOfArrayLike$d = lengthOfArrayLike$q; // `Array.prototype.{ reduce, reduceRight }` methods implementation
+
+
+ var createMethod$6 = function (IS_RIGHT) {
+ return function (that, callbackfn, argumentsLength, memo) {
+ aCallable$L(callbackfn);
+ var O = toObject$o(that);
+ var self = IndexedObject$3(O);
+ var length = lengthOfArrayLike$d(O);
+ var index = IS_RIGHT ? length - 1 : 0;
+ var i = IS_RIGHT ? -1 : 1;
+ if (argumentsLength < 2) while (true) {
+ if (index in self) {
+ memo = self[index];
+ index += i;
+ break;
+ }
+
+ index += i;
+
+ if (IS_RIGHT ? index < 0 : length <= index) {
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+
+ for (; IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
+ memo = callbackfn(memo, self[index], index, O);
+ }
+
+ return memo;
+ };
+ };
+
+ var arrayReduce = {
+ // `Array.prototype.reduce` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
+ left: createMethod$6(false),
+ // `Array.prototype.reduceRight` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
+ right: createMethod$6(true)
+ };
+
+ var classof$7 = classofRaw$1;
+
+ var global$D = global$R;
+
+ var engineIsNode = classof$7(global$D.process) == 'process';
+
+ var $$3X = _export;
+
+ var $reduce$1 = arrayReduce.left;
+
+ var arrayMethodIsStrict$3 = arrayMethodIsStrict$9;
+
+ var CHROME_VERSION$1 = engineV8Version;
+
+ var IS_NODE$5 = engineIsNode;
+
+ var STRICT_METHOD$3 = arrayMethodIsStrict$3('reduce'); // Chrome 80-82 has a critical bug
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+
+ var CHROME_BUG$1 = !IS_NODE$5 && CHROME_VERSION$1 > 79 && CHROME_VERSION$1 < 83; // `Array.prototype.reduce` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
+
+ $$3X({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$3 || CHROME_BUG$1
+ }, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduce$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$3W = _export;
+
+ var $reduceRight$1 = arrayReduce.right;
+
+ var arrayMethodIsStrict$2 = arrayMethodIsStrict$9;
+
+ var CHROME_VERSION = engineV8Version;
+
+ var IS_NODE$4 = engineIsNode;
+
+ var STRICT_METHOD$2 = arrayMethodIsStrict$2('reduceRight'); // Chrome 80-82 has a critical bug
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+
+ var CHROME_BUG = !IS_NODE$4 && CHROME_VERSION > 79 && CHROME_VERSION < 83; // `Array.prototype.reduceRight` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
+
+ $$3W({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$2 || CHROME_BUG
+ }, {
+ reduceRight: function reduceRight(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduceRight$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$3V = _export;
+
+ var isArray$2 = isArray$8;
+
+ var nativeReverse = [].reverse;
+ var test$1 = [1, 2]; // `Array.prototype.reverse` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reverse
+ // fix for Safari 12.0 bug
+ // https://bugs.webkit.org/show_bug.cgi?id=188794
+
+ $$3V({
+ target: 'Array',
+ proto: true,
+ forced: String(test$1) === String(test$1.reverse())
+ }, {
+ reverse: function reverse() {
+ // eslint-disable-next-line no-self-assign -- dirty hack
+ if (isArray$2(this)) this.length = this.length;
+ return nativeReverse.call(this);
+ }
+ });
+
+ var $$3U = _export;
+
+ var isArray$1 = isArray$8;
+
+ var isConstructor$3 = isConstructor$7;
+
+ var isObject$r = isObject$C;
+
+ var toAbsoluteIndex$4 = toAbsoluteIndex$8;
+
+ var lengthOfArrayLike$c = lengthOfArrayLike$q;
+
+ var toIndexedObject$4 = toIndexedObject$d;
+
+ var createProperty$3 = createProperty$7;
+
+ var wellKnownSymbol$q = wellKnownSymbol$G;
+
+ var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5;
+
+ var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('slice');
+ var SPECIES$4 = wellKnownSymbol$q('species');
+ var nativeSlice = [].slice;
+ var max$5 = Math.max; // `Array.prototype.slice` method
+ // https://tc39.es/ecma262/#sec-array.prototype.slice
+ // fallback for not array-like ES3 strings and DOM objects
+
+ $$3U({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$1
+ }, {
+ slice: function slice(start, end) {
+ var O = toIndexedObject$4(this);
+ var length = lengthOfArrayLike$c(O);
+ var k = toAbsoluteIndex$4(start, length);
+ var fin = toAbsoluteIndex$4(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
+
+ var Constructor, result, n;
+
+ if (isArray$1(O)) {
+ Constructor = O.constructor; // cross-realm fallback
+
+ if (isConstructor$3(Constructor) && (Constructor === Array || isArray$1(Constructor.prototype))) {
+ Constructor = undefined;
+ } else if (isObject$r(Constructor)) {
+ Constructor = Constructor[SPECIES$4];
+ if (Constructor === null) Constructor = undefined;
+ }
+
+ if (Constructor === Array || Constructor === undefined) {
+ return nativeSlice.call(O, k, fin);
+ }
+ }
+
+ result = new (Constructor === undefined ? Array : Constructor)(max$5(fin - k, 0));
+
+ for (n = 0; k < fin; k++, n++) if (k in O) createProperty$3(result, n, O[k]);
+
+ result.length = n;
+ return result;
+ }
+ });
+
+ var $$3T = _export;
+
+ var $some$2 = arrayIteration.some;
+
+ var arrayMethodIsStrict$1 = arrayMethodIsStrict$9;
+
+ var STRICT_METHOD$1 = arrayMethodIsStrict$1('some'); // `Array.prototype.some` method
+ // https://tc39.es/ecma262/#sec-array.prototype.some
+
+ $$3T({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$1
+ }, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ return $some$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ // TODO: use something more complex like timsort?
+ var floor$9 = Math.floor;
+
+ var mergeSort = function (array, comparefn) {
+ var length = array.length;
+ var middle = floor$9(length / 2);
+ return length < 8 ? insertionSort(array, comparefn) : merge(mergeSort(array.slice(0, middle), comparefn), mergeSort(array.slice(middle), comparefn), comparefn);
+ };
+
+ var insertionSort = function (array, comparefn) {
+ var length = array.length;
+ var i = 1;
+ var element, j;
+
+ while (i < length) {
+ j = i;
+ element = array[i];
+
+ while (j && comparefn(array[j - 1], element) > 0) {
+ array[j] = array[--j];
+ }
+
+ if (j !== i++) array[j] = element;
+ }
+
+ return array;
+ };
+
+ var merge = function (left, right, comparefn) {
+ var llength = left.length;
+ var rlength = right.length;
+ var lindex = 0;
+ var rindex = 0;
+ var result = [];
+
+ while (lindex < llength || rindex < rlength) {
+ if (lindex < llength && rindex < rlength) {
+ result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);
+ } else {
+ result.push(lindex < llength ? left[lindex++] : right[rindex++]);
+ }
+ }
+
+ return result;
+ };
+
+ var arraySort = mergeSort;
+
+ var userAgent$6 = engineUserAgent;
+
+ var firefox = userAgent$6.match(/firefox\/(\d+)/i);
+ var engineFfVersion = !!firefox && +firefox[1];
+
+ var UA = engineUserAgent;
+
+ var engineIsIeOrEdge = /MSIE|Trident/.test(UA);
+
+ var userAgent$5 = engineUserAgent;
+
+ var webkit = userAgent$5.match(/AppleWebKit\/(\d+)\./);
+ var engineWebkitVersion = !!webkit && +webkit[1];
+
+ var $$3S = _export;
+
+ var aCallable$K = aCallable$Q;
+
+ var toObject$n = toObject$A;
+
+ var lengthOfArrayLike$b = lengthOfArrayLike$q;
+
+ var toString$q = toString$t;
+
+ var fails$T = fails$15;
+
+ var internalSort$1 = arraySort;
+
+ var arrayMethodIsStrict = arrayMethodIsStrict$9;
+
+ var FF$1 = engineFfVersion;
+
+ var IE_OR_EDGE$1 = engineIsIeOrEdge;
+
+ var V8$1 = engineV8Version;
+
+ var WEBKIT$2 = engineWebkitVersion;
+
+ var test = [];
+ var nativeSort$1 = test.sort; // IE8-
+
+ var FAILS_ON_UNDEFINED = fails$T(function () {
+ test.sort(undefined);
+ }); // V8 bug
+
+ var FAILS_ON_NULL = fails$T(function () {
+ test.sort(null);
+ }); // Old WebKit
+
+ var STRICT_METHOD = arrayMethodIsStrict('sort');
+ var STABLE_SORT$1 = !fails$T(function () {
+ // feature detection can be too slow, so check engines versions
+ if (V8$1) return V8$1 < 70;
+ if (FF$1 && FF$1 > 3) return;
+ if (IE_OR_EDGE$1) return true;
+ if (WEBKIT$2) return WEBKIT$2 < 603;
+ var result = '';
+ var code, chr, value, index; // generate an array with more 512 elements (Chakra and old V8 fails only in this case)
+
+ for (code = 65; code < 76; code++) {
+ chr = String.fromCharCode(code);
+
+ switch (code) {
+ case 66:
+ case 69:
+ case 70:
+ case 72:
+ value = 3;
+ break;
+
+ case 68:
+ case 71:
+ value = 4;
+ break;
+
+ default:
+ value = 2;
+ }
+
+ for (index = 0; index < 47; index++) {
+ test.push({
+ k: chr + index,
+ v: value
+ });
+ }
+ }
+
+ test.sort(function (a, b) {
+ return b.v - a.v;
+ });
+
+ for (index = 0; index < test.length; index++) {
+ chr = test[index].k.charAt(0);
+ if (result.charAt(result.length - 1) !== chr) result += chr;
+ }
+
+ return result !== 'DGBEFHACIJK';
+ });
+ var FORCED$s = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT$1;
+
+ var getSortCompare$1 = function (comparefn) {
+ return function (x, y) {
+ if (y === undefined) return -1;
+ if (x === undefined) return 1;
+ if (comparefn !== undefined) return +comparefn(x, y) || 0;
+ return toString$q(x) > toString$q(y) ? 1 : -1;
+ };
+ }; // `Array.prototype.sort` method
+ // https://tc39.es/ecma262/#sec-array.prototype.sort
+
+
+ $$3S({
+ target: 'Array',
+ proto: true,
+ forced: FORCED$s
+ }, {
+ sort: function sort(comparefn) {
+ if (comparefn !== undefined) aCallable$K(comparefn);
+ var array = toObject$n(this);
+ if (STABLE_SORT$1) return comparefn === undefined ? nativeSort$1.call(array) : nativeSort$1.call(array, comparefn);
+ var items = [];
+ var arrayLength = lengthOfArrayLike$b(array);
+ var itemsLength, index;
+
+ for (index = 0; index < arrayLength; index++) {
+ if (index in array) items.push(array[index]);
+ }
+
+ items = internalSort$1(items, getSortCompare$1(comparefn));
+ itemsLength = items.length;
+ index = 0;
+
+ while (index < itemsLength) array[index] = items[index++];
+
+ while (index < arrayLength) delete array[index++];
+
+ return array;
+ }
+ });
+
+ var getBuiltIn$r = getBuiltIn$y;
+
+ var definePropertyModule$6 = objectDefineProperty;
+
+ var wellKnownSymbol$p = wellKnownSymbol$G;
+
+ var DESCRIPTORS$s = descriptors;
+
+ var SPECIES$3 = wellKnownSymbol$p('species');
+
+ var setSpecies$7 = function (CONSTRUCTOR_NAME) {
+ var Constructor = getBuiltIn$r(CONSTRUCTOR_NAME);
+ var defineProperty = definePropertyModule$6.f;
+
+ if (DESCRIPTORS$s && Constructor && !Constructor[SPECIES$3]) {
+ defineProperty(Constructor, SPECIES$3, {
+ configurable: true,
+ get: function () {
+ return this;
+ }
+ });
+ }
+ };
+
+ var setSpecies$6 = setSpecies$7; // `Array[@@species]` getter
+ // https://tc39.es/ecma262/#sec-get-array-@@species
+
+
+ setSpecies$6('Array');
+
+ var $$3R = _export;
+
+ var toAbsoluteIndex$3 = toAbsoluteIndex$8;
+
+ var toIntegerOrInfinity$c = toIntegerOrInfinity$i;
+
+ var lengthOfArrayLike$a = lengthOfArrayLike$q;
+
+ var toObject$m = toObject$A;
+
+ var arraySpeciesCreate$1 = arraySpeciesCreate$6;
+
+ var createProperty$2 = createProperty$7;
+
+ var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5;
+
+ var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
+ var max$4 = Math.max;
+ var min$6 = Math.min;
+ var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;
+ var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method
+ // https://tc39.es/ecma262/#sec-array.prototype.splice
+ // with adding support of @@species
+
+ $$3R({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT
+ }, {
+ splice: function splice(start, deleteCount
+ /* , ...items */
+ ) {
+ var O = toObject$m(this);
+ var len = lengthOfArrayLike$a(O);
+ var actualStart = toAbsoluteIndex$3(start, len);
+ var argumentsLength = arguments.length;
+ var insertCount, actualDeleteCount, A, k, from, to;
+
+ if (argumentsLength === 0) {
+ insertCount = actualDeleteCount = 0;
+ } else if (argumentsLength === 1) {
+ insertCount = 0;
+ actualDeleteCount = len - actualStart;
+ } else {
+ insertCount = argumentsLength - 2;
+ actualDeleteCount = min$6(max$4(toIntegerOrInfinity$c(deleteCount), 0), len - actualStart);
+ }
+
+ if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {
+ throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
+ }
+
+ A = arraySpeciesCreate$1(O, actualDeleteCount);
+
+ for (k = 0; k < actualDeleteCount; k++) {
+ from = actualStart + k;
+ if (from in O) createProperty$2(A, k, O[from]);
+ }
+
+ A.length = actualDeleteCount;
+
+ if (insertCount < actualDeleteCount) {
+ for (k = actualStart; k < len - actualDeleteCount; k++) {
+ from = k + actualDeleteCount;
+ to = k + insertCount;
+ if (from in O) O[to] = O[from];else delete O[to];
+ }
+
+ for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
+ } else if (insertCount > actualDeleteCount) {
+ for (k = len - actualDeleteCount; k > actualStart; k--) {
+ from = k + actualDeleteCount - 1;
+ to = k + insertCount - 1;
+ if (from in O) O[to] = O[from];else delete O[to];
+ }
+ }
+
+ for (k = 0; k < insertCount; k++) {
+ O[k + actualStart] = arguments[k + 2];
+ }
+
+ O.length = len - actualDeleteCount + insertCount;
+ return A;
+ }
+ });
+
+ // this method was added to unscopables after implementation
+ // in popular engines, so it's moved to a separate module
+ var addToUnscopables$9 = addToUnscopables$h; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+
+ addToUnscopables$9('flat');
+
+ // this method was added to unscopables after implementation
+ // in popular engines, so it's moved to a separate module
+ var addToUnscopables$8 = addToUnscopables$h; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+
+ addToUnscopables$8('flatMap');
+
+ // eslint-disable-next-line es/no-typed-arrays -- safe
+ var arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';
+
+ var redefine$g = redefine$l.exports;
+
+ var redefineAll$a = function (target, src, options) {
+ for (var key in src) redefine$g(target, key, src[key], options);
+
+ return target;
+ };
+
+ var anInstance$b = function (it, Constructor, name) {
+ if (it instanceof Constructor) return it;
+ throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
+ };
+
+ var toIntegerOrInfinity$b = toIntegerOrInfinity$i;
+
+ var toLength$b = toLength$d; // `ToIndex` abstract operation
+ // https://tc39.es/ecma262/#sec-toindex
+
+
+ var toIndex$2 = function (it) {
+ if (it === undefined) return 0;
+ var number = toIntegerOrInfinity$b(it);
+ var length = toLength$b(number);
+ if (number !== length) throw RangeError('Wrong length or index');
+ return length;
+ };
+
+ // IEEE754 conversions based on https://github.com/feross/ieee754
+ var abs$7 = Math.abs;
+ var pow$4 = Math.pow;
+ var floor$8 = Math.floor;
+ var log$8 = Math.log;
+ var LN2$2 = Math.LN2;
+
+ var pack = function (number, mantissaLength, bytes) {
+ var buffer = new Array(bytes);
+ var exponentLength = bytes * 8 - mantissaLength - 1;
+ var eMax = (1 << exponentLength) - 1;
+ var eBias = eMax >> 1;
+ var rt = mantissaLength === 23 ? pow$4(2, -24) - pow$4(2, -77) : 0;
+ var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
+ var index = 0;
+ var exponent, mantissa, c;
+ number = abs$7(number); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (number != number || number === Infinity) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ mantissa = number != number ? 1 : 0;
+ exponent = eMax;
+ } else {
+ exponent = floor$8(log$8(number) / LN2$2);
+
+ if (number * (c = pow$4(2, -exponent)) < 1) {
+ exponent--;
+ c *= 2;
+ }
+
+ if (exponent + eBias >= 1) {
+ number += rt / c;
+ } else {
+ number += rt * pow$4(2, 1 - eBias);
+ }
+
+ if (number * c >= 2) {
+ exponent++;
+ c /= 2;
+ }
+
+ if (exponent + eBias >= eMax) {
+ mantissa = 0;
+ exponent = eMax;
+ } else if (exponent + eBias >= 1) {
+ mantissa = (number * c - 1) * pow$4(2, mantissaLength);
+ exponent = exponent + eBias;
+ } else {
+ mantissa = number * pow$4(2, eBias - 1) * pow$4(2, mantissaLength);
+ exponent = 0;
+ }
+ }
+
+ for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
+
+ exponent = exponent << mantissaLength | mantissa;
+ exponentLength += mantissaLength;
+
+ for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
+
+ buffer[--index] |= sign * 128;
+ return buffer;
+ };
+
+ var unpack = function (buffer, mantissaLength) {
+ var bytes = buffer.length;
+ var exponentLength = bytes * 8 - mantissaLength - 1;
+ var eMax = (1 << exponentLength) - 1;
+ var eBias = eMax >> 1;
+ var nBits = exponentLength - 7;
+ var index = bytes - 1;
+ var sign = buffer[index--];
+ var exponent = sign & 127;
+ var mantissa;
+ sign >>= 7;
+
+ for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
+
+ mantissa = exponent & (1 << -nBits) - 1;
+ exponent >>= -nBits;
+ nBits += mantissaLength;
+
+ for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
+
+ if (exponent === 0) {
+ exponent = 1 - eBias;
+ } else if (exponent === eMax) {
+ return mantissa ? NaN : sign ? -Infinity : Infinity;
+ } else {
+ mantissa = mantissa + pow$4(2, mantissaLength);
+ exponent = exponent - eBias;
+ }
+
+ return (sign ? -1 : 1) * mantissa * pow$4(2, exponent - mantissaLength);
+ };
+
+ var ieee754 = {
+ pack: pack,
+ unpack: unpack
+ };
+
+ var global$C = global$R;
+
+ var DESCRIPTORS$r = descriptors;
+
+ var NATIVE_ARRAY_BUFFER$2 = arrayBufferNative;
+
+ var FunctionName = functionName;
+
+ var createNonEnumerableProperty$a = createNonEnumerableProperty$h;
+
+ var redefineAll$9 = redefineAll$a;
+
+ var fails$S = fails$15;
+
+ var anInstance$a = anInstance$b;
+
+ var toIntegerOrInfinity$a = toIntegerOrInfinity$i;
+
+ var toLength$a = toLength$d;
+
+ var toIndex$1 = toIndex$2;
+
+ var IEEE754 = ieee754;
+
+ var getPrototypeOf$b = objectGetPrototypeOf$1;
+
+ var setPrototypeOf$5 = objectSetPrototypeOf$1;
+
+ var getOwnPropertyNames$5 = objectGetOwnPropertyNames.f;
+
+ var defineProperty$d = objectDefineProperty.f;
+
+ var arrayFill = arrayFill$1;
+
+ var setToStringTag$7 = setToStringTag$b;
+
+ var InternalStateModule$g = internalState;
+
+ var PROPER_FUNCTION_NAME$3 = FunctionName.PROPER;
+ var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
+ var getInternalState$f = InternalStateModule$g.get;
+ var setInternalState$g = InternalStateModule$g.set;
+ var ARRAY_BUFFER$1 = 'ArrayBuffer';
+ var DATA_VIEW = 'DataView';
+ var PROTOTYPE = 'prototype';
+ var WRONG_LENGTH$1 = 'Wrong length';
+ var WRONG_INDEX = 'Wrong index';
+ var NativeArrayBuffer$1 = global$C[ARRAY_BUFFER$1];
+ var $ArrayBuffer = NativeArrayBuffer$1;
+ var $DataView = global$C[DATA_VIEW];
+ var $DataViewPrototype = $DataView && $DataView[PROTOTYPE];
+ var ObjectPrototype$1 = Object.prototype;
+ var RangeError$2 = global$C.RangeError;
+ var packIEEE754 = IEEE754.pack;
+ var unpackIEEE754 = IEEE754.unpack;
+
+ var packInt8 = function (number) {
+ return [number & 0xFF];
+ };
+
+ var packInt16 = function (number) {
+ return [number & 0xFF, number >> 8 & 0xFF];
+ };
+
+ var packInt32 = function (number) {
+ return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];
+ };
+
+ var unpackInt32 = function (buffer) {
+ return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
+ };
+
+ var packFloat32 = function (number) {
+ return packIEEE754(number, 23, 4);
+ };
+
+ var packFloat64 = function (number) {
+ return packIEEE754(number, 52, 8);
+ };
+
+ var addGetter$1 = function (Constructor, key) {
+ defineProperty$d(Constructor[PROTOTYPE], key, {
+ get: function () {
+ return getInternalState$f(this)[key];
+ }
+ });
+ };
+
+ var get$2 = function (view, count, index, isLittleEndian) {
+ var intIndex = toIndex$1(index);
+ var store = getInternalState$f(view);
+ if (intIndex + count > store.byteLength) throw RangeError$2(WRONG_INDEX);
+ var bytes = getInternalState$f(store.buffer).bytes;
+ var start = intIndex + store.byteOffset;
+ var pack = bytes.slice(start, start + count);
+ return isLittleEndian ? pack : pack.reverse();
+ };
+
+ var set$3 = function (view, count, index, conversion, value, isLittleEndian) {
+ var intIndex = toIndex$1(index);
+ var store = getInternalState$f(view);
+ if (intIndex + count > store.byteLength) throw RangeError$2(WRONG_INDEX);
+ var bytes = getInternalState$f(store.buffer).bytes;
+ var start = intIndex + store.byteOffset;
+ var pack = conversion(+value);
+
+ for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];
+ };
+
+ if (!NATIVE_ARRAY_BUFFER$2) {
+ $ArrayBuffer = function ArrayBuffer(length) {
+ anInstance$a(this, $ArrayBuffer, ARRAY_BUFFER$1);
+ var byteLength = toIndex$1(length);
+ setInternalState$g(this, {
+ bytes: arrayFill.call(new Array(byteLength), 0),
+ byteLength: byteLength
+ });
+ if (!DESCRIPTORS$r) this.byteLength = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength) {
+ anInstance$a(this, $DataView, DATA_VIEW);
+ anInstance$a(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = getInternalState$f(buffer).byteLength;
+ var offset = toIntegerOrInfinity$a(byteOffset);
+ if (offset < 0 || offset > bufferLength) throw RangeError$2('Wrong offset');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength$a(byteLength);
+ if (offset + byteLength > bufferLength) throw RangeError$2(WRONG_LENGTH$1);
+ setInternalState$g(this, {
+ buffer: buffer,
+ byteLength: byteLength,
+ byteOffset: offset
+ });
+
+ if (!DESCRIPTORS$r) {
+ this.buffer = buffer;
+ this.byteLength = byteLength;
+ this.byteOffset = offset;
+ }
+ };
+
+ if (DESCRIPTORS$r) {
+ addGetter$1($ArrayBuffer, 'byteLength');
+ addGetter$1($DataView, 'buffer');
+ addGetter$1($DataView, 'byteLength');
+ addGetter$1($DataView, 'byteOffset');
+ }
+
+ redefineAll$9($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset) {
+ return get$2(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset) {
+ return get$2(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset
+ /* , littleEndian */
+ ) {
+ var bytes = get$2(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset
+ /* , littleEndian */
+ ) {
+ var bytes = get$2(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackInt32(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));
+ },
+ getUint32: function getUint32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackInt32(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackIEEE754(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);
+ },
+ getFloat64: function getFloat64(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackIEEE754(get$2(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);
+ },
+ setInt8: function setInt8(byteOffset, value) {
+ set$3(this, 1, byteOffset, packInt8, value);
+ },
+ setUint8: function setUint8(byteOffset, value) {
+ set$3(this, 1, byteOffset, packInt8, value);
+ },
+ setInt16: function setInt16(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setUint16: function setUint16(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setInt32: function setInt32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setUint32: function setUint32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setFloat32: function setFloat32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setFloat64: function setFloat64(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);
+ }
+ });
+ } else {
+ var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME$3 && NativeArrayBuffer$1.name !== ARRAY_BUFFER$1;
+ /* eslint-disable no-new -- required for testing */
+
+ if (!fails$S(function () {
+ NativeArrayBuffer$1(1);
+ }) || !fails$S(function () {
+ new NativeArrayBuffer$1(-1);
+ }) || fails$S(function () {
+ new NativeArrayBuffer$1();
+ new NativeArrayBuffer$1(1.5);
+ new NativeArrayBuffer$1(NaN);
+ return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
+ })) {
+ /* eslint-enable no-new -- required for testing */
+ $ArrayBuffer = function ArrayBuffer(length) {
+ anInstance$a(this, $ArrayBuffer);
+ return new NativeArrayBuffer$1(toIndex$1(length));
+ };
+
+ var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer$1[PROTOTYPE];
+
+ for (var keys$2 = getOwnPropertyNames$5(NativeArrayBuffer$1), j$1 = 0, key$1; keys$2.length > j$1;) {
+ if (!((key$1 = keys$2[j$1++]) in $ArrayBuffer)) {
+ createNonEnumerableProperty$a($ArrayBuffer, key$1, NativeArrayBuffer$1[key$1]);
+ }
+ }
+
+ ArrayBufferPrototype.constructor = $ArrayBuffer;
+ } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
+ createNonEnumerableProperty$a(NativeArrayBuffer$1, 'name', ARRAY_BUFFER$1);
+ } // WebKit bug - the same parent prototype for typed arrays and data view
+
+
+ if (setPrototypeOf$5 && getPrototypeOf$b($DataViewPrototype) !== ObjectPrototype$1) {
+ setPrototypeOf$5($DataViewPrototype, ObjectPrototype$1);
+ } // iOS Safari 7.x bug
+
+
+ var testView = new $DataView(new $ArrayBuffer(2));
+ var $setInt8 = $DataViewPrototype.setInt8;
+ testView.setInt8(0, 2147483648);
+ testView.setInt8(1, 2147483649);
+ if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll$9($DataViewPrototype, {
+ setInt8: function setInt8(byteOffset, value) {
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value) {
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, {
+ unsafe: true
+ });
+ }
+
+ setToStringTag$7($ArrayBuffer, ARRAY_BUFFER$1);
+ setToStringTag$7($DataView, DATA_VIEW);
+ var arrayBuffer = {
+ ArrayBuffer: $ArrayBuffer,
+ DataView: $DataView
+ };
+
+ var $$3Q = _export;
+
+ var global$B = global$R;
+
+ var arrayBufferModule = arrayBuffer;
+
+ var setSpecies$5 = setSpecies$7;
+
+ var ARRAY_BUFFER = 'ArrayBuffer';
+ var ArrayBuffer$4 = arrayBufferModule[ARRAY_BUFFER];
+ var NativeArrayBuffer = global$B[ARRAY_BUFFER]; // `ArrayBuffer` constructor
+ // https://tc39.es/ecma262/#sec-arraybuffer-constructor
+
+ $$3Q({
+ global: true,
+ forced: NativeArrayBuffer !== ArrayBuffer$4
+ }, {
+ ArrayBuffer: ArrayBuffer$4
+ });
+ setSpecies$5(ARRAY_BUFFER);
+
+ var NATIVE_ARRAY_BUFFER$1 = arrayBufferNative;
+
+ var DESCRIPTORS$q = descriptors;
+
+ var global$A = global$R;
+
+ var isCallable$h = isCallable$z;
+
+ var isObject$q = isObject$C;
+
+ var hasOwn$c = hasOwnProperty_1;
+
+ var classof$6 = classof$b;
+
+ var tryToString$1 = tryToString$3;
+
+ var createNonEnumerableProperty$9 = createNonEnumerableProperty$h;
+
+ var redefine$f = redefine$l.exports;
+
+ var defineProperty$c = objectDefineProperty.f;
+
+ var getPrototypeOf$a = objectGetPrototypeOf$1;
+
+ var setPrototypeOf$4 = objectSetPrototypeOf$1;
+
+ var wellKnownSymbol$o = wellKnownSymbol$G;
+
+ var uid$1 = uid$5;
+
+ var Int8Array$3 = global$A.Int8Array;
+ var Int8ArrayPrototype = Int8Array$3 && Int8Array$3.prototype;
+ var Uint8ClampedArray = global$A.Uint8ClampedArray;
+ var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
+ var TypedArray$1 = Int8Array$3 && getPrototypeOf$a(Int8Array$3);
+ var TypedArrayPrototype$1 = Int8ArrayPrototype && getPrototypeOf$a(Int8ArrayPrototype);
+ var ObjectPrototype = Object.prototype;
+ var isPrototypeOf$2 = ObjectPrototype.isPrototypeOf;
+ var TO_STRING_TAG$5 = wellKnownSymbol$o('toStringTag');
+ var TYPED_ARRAY_TAG$1 = uid$1('TYPED_ARRAY_TAG');
+ var TYPED_ARRAY_CONSTRUCTOR$2 = uid$1('TYPED_ARRAY_CONSTRUCTOR'); // Fixing native typed arrays in Opera Presto crashes the browser, see #595
+
+ var NATIVE_ARRAY_BUFFER_VIEWS$3 = NATIVE_ARRAY_BUFFER$1 && !!setPrototypeOf$4 && classof$6(global$A.opera) !== 'Opera';
+ var TYPED_ARRAY_TAG_REQIRED = false;
+ var NAME$1, Constructor, Prototype;
+ var TypedArrayConstructorsList = {
+ Int8Array: 1,
+ Uint8Array: 1,
+ Uint8ClampedArray: 1,
+ Int16Array: 2,
+ Uint16Array: 2,
+ Int32Array: 4,
+ Uint32Array: 4,
+ Float32Array: 4,
+ Float64Array: 8
+ };
+ var BigIntArrayConstructorsList = {
+ BigInt64Array: 8,
+ BigUint64Array: 8
+ };
+
+ var isView = function isView(it) {
+ if (!isObject$q(it)) return false;
+ var klass = classof$6(it);
+ return klass === 'DataView' || hasOwn$c(TypedArrayConstructorsList, klass) || hasOwn$c(BigIntArrayConstructorsList, klass);
+ };
+
+ var isTypedArray$1 = function (it) {
+ if (!isObject$q(it)) return false;
+ var klass = classof$6(it);
+ return hasOwn$c(TypedArrayConstructorsList, klass) || hasOwn$c(BigIntArrayConstructorsList, klass);
+ };
+
+ var aTypedArray$t = function (it) {
+ if (isTypedArray$1(it)) return it;
+ throw TypeError('Target is not a typed array');
+ };
+
+ var aTypedArrayConstructor$5 = function (C) {
+ if (isCallable$h(C) && (!setPrototypeOf$4 || isPrototypeOf$2.call(TypedArray$1, C))) return C;
+ throw TypeError(tryToString$1(C) + ' is not a typed array constructor');
+ };
+
+ var exportTypedArrayMethod$u = function (KEY, property, forced) {
+ if (!DESCRIPTORS$q) return;
+ if (forced) for (var ARRAY in TypedArrayConstructorsList) {
+ var TypedArrayConstructor = global$A[ARRAY];
+ if (TypedArrayConstructor && hasOwn$c(TypedArrayConstructor.prototype, KEY)) try {
+ delete TypedArrayConstructor.prototype[KEY];
+ } catch (error) {
+ /* empty */
+ }
+ }
+
+ if (!TypedArrayPrototype$1[KEY] || forced) {
+ redefine$f(TypedArrayPrototype$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$3 && Int8ArrayPrototype[KEY] || property);
+ }
+ };
+
+ var exportTypedArrayStaticMethod$3 = function (KEY, property, forced) {
+ var ARRAY, TypedArrayConstructor;
+ if (!DESCRIPTORS$q) return;
+
+ if (setPrototypeOf$4) {
+ if (forced) for (ARRAY in TypedArrayConstructorsList) {
+ TypedArrayConstructor = global$A[ARRAY];
+ if (TypedArrayConstructor && hasOwn$c(TypedArrayConstructor, KEY)) try {
+ delete TypedArrayConstructor[KEY];
+ } catch (error) {
+ /* empty */
+ }
+ }
+
+ if (!TypedArray$1[KEY] || forced) {
+ // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
+ try {
+ return redefine$f(TypedArray$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$3 && TypedArray$1[KEY] || property);
+ } catch (error) {
+ /* empty */
+ }
+ } else return;
+ }
+
+ for (ARRAY in TypedArrayConstructorsList) {
+ TypedArrayConstructor = global$A[ARRAY];
+
+ if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
+ redefine$f(TypedArrayConstructor, KEY, property);
+ }
+ }
+ };
+
+ for (NAME$1 in TypedArrayConstructorsList) {
+ Constructor = global$A[NAME$1];
+ Prototype = Constructor && Constructor.prototype;
+ if (Prototype) createNonEnumerableProperty$9(Prototype, TYPED_ARRAY_CONSTRUCTOR$2, Constructor);else NATIVE_ARRAY_BUFFER_VIEWS$3 = false;
+ }
+
+ for (NAME$1 in BigIntArrayConstructorsList) {
+ Constructor = global$A[NAME$1];
+ Prototype = Constructor && Constructor.prototype;
+ if (Prototype) createNonEnumerableProperty$9(Prototype, TYPED_ARRAY_CONSTRUCTOR$2, Constructor);
+ } // WebKit bug - typed arrays constructors prototype is Object.prototype
+
+
+ if (!NATIVE_ARRAY_BUFFER_VIEWS$3 || !isCallable$h(TypedArray$1) || TypedArray$1 === Function.prototype) {
+ // eslint-disable-next-line no-shadow -- safe
+ TypedArray$1 = function TypedArray() {
+ throw TypeError('Incorrect invocation');
+ };
+
+ if (NATIVE_ARRAY_BUFFER_VIEWS$3) for (NAME$1 in TypedArrayConstructorsList) {
+ if (global$A[NAME$1]) setPrototypeOf$4(global$A[NAME$1], TypedArray$1);
+ }
+ }
+
+ if (!NATIVE_ARRAY_BUFFER_VIEWS$3 || !TypedArrayPrototype$1 || TypedArrayPrototype$1 === ObjectPrototype) {
+ TypedArrayPrototype$1 = TypedArray$1.prototype;
+ if (NATIVE_ARRAY_BUFFER_VIEWS$3) for (NAME$1 in TypedArrayConstructorsList) {
+ if (global$A[NAME$1]) setPrototypeOf$4(global$A[NAME$1].prototype, TypedArrayPrototype$1);
+ }
+ } // WebKit bug - one more object in Uint8ClampedArray prototype chain
+
+
+ if (NATIVE_ARRAY_BUFFER_VIEWS$3 && getPrototypeOf$a(Uint8ClampedArrayPrototype) !== TypedArrayPrototype$1) {
+ setPrototypeOf$4(Uint8ClampedArrayPrototype, TypedArrayPrototype$1);
+ }
+
+ if (DESCRIPTORS$q && !hasOwn$c(TypedArrayPrototype$1, TO_STRING_TAG$5)) {
+ TYPED_ARRAY_TAG_REQIRED = true;
+ defineProperty$c(TypedArrayPrototype$1, TO_STRING_TAG$5, {
+ get: function () {
+ return isObject$q(this) ? this[TYPED_ARRAY_TAG$1] : undefined;
+ }
+ });
+
+ for (NAME$1 in TypedArrayConstructorsList) if (global$A[NAME$1]) {
+ createNonEnumerableProperty$9(global$A[NAME$1], TYPED_ARRAY_TAG$1, NAME$1);
+ }
+ }
+
+ var arrayBufferViewCore = {
+ NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS$3,
+ TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR$2,
+ TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG$1,
+ aTypedArray: aTypedArray$t,
+ aTypedArrayConstructor: aTypedArrayConstructor$5,
+ exportTypedArrayMethod: exportTypedArrayMethod$u,
+ exportTypedArrayStaticMethod: exportTypedArrayStaticMethod$3,
+ isView: isView,
+ isTypedArray: isTypedArray$1,
+ TypedArray: TypedArray$1,
+ TypedArrayPrototype: TypedArrayPrototype$1
+ };
+
+ var $$3P = _export;
+
+ var ArrayBufferViewCore$x = arrayBufferViewCore;
+
+ var NATIVE_ARRAY_BUFFER_VIEWS$2 = ArrayBufferViewCore$x.NATIVE_ARRAY_BUFFER_VIEWS; // `ArrayBuffer.isView` method
+ // https://tc39.es/ecma262/#sec-arraybuffer.isview
+
+ $$3P({
+ target: 'ArrayBuffer',
+ stat: true,
+ forced: !NATIVE_ARRAY_BUFFER_VIEWS$2
+ }, {
+ isView: ArrayBufferViewCore$x.isView
+ });
+
+ var isConstructor$2 = isConstructor$7;
+
+ var tryToString = tryToString$3; // `Assert: IsConstructor(argument) is true`
+
+
+ var aConstructor$5 = function (argument) {
+ if (isConstructor$2(argument)) return argument;
+ throw TypeError(tryToString(argument) + ' is not a constructor');
+ };
+
+ var anObject$1r = anObject$1C;
+
+ var aConstructor$4 = aConstructor$5;
+
+ var wellKnownSymbol$n = wellKnownSymbol$G;
+
+ var SPECIES$2 = wellKnownSymbol$n('species'); // `SpeciesConstructor` abstract operation
+ // https://tc39.es/ecma262/#sec-speciesconstructor
+
+ var speciesConstructor$f = function (O, defaultConstructor) {
+ var C = anObject$1r(O).constructor;
+ var S;
+ return C === undefined || (S = anObject$1r(C)[SPECIES$2]) == undefined ? defaultConstructor : aConstructor$4(S);
+ };
+
+ var $$3O = _export;
+
+ var fails$R = fails$15;
+
+ var ArrayBufferModule$2 = arrayBuffer;
+
+ var anObject$1q = anObject$1C;
+
+ var toAbsoluteIndex$2 = toAbsoluteIndex$8;
+
+ var toLength$9 = toLength$d;
+
+ var speciesConstructor$e = speciesConstructor$f;
+
+ var ArrayBuffer$3 = ArrayBufferModule$2.ArrayBuffer;
+ var DataView$2 = ArrayBufferModule$2.DataView;
+ var nativeArrayBufferSlice = ArrayBuffer$3.prototype.slice;
+ var INCORRECT_SLICE = fails$R(function () {
+ return !new ArrayBuffer$3(2).slice(1, undefined).byteLength;
+ }); // `ArrayBuffer.prototype.slice` method
+ // https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice
+
+ $$3O({
+ target: 'ArrayBuffer',
+ proto: true,
+ unsafe: true,
+ forced: INCORRECT_SLICE
+ }, {
+ slice: function slice(start, end) {
+ if (nativeArrayBufferSlice !== undefined && end === undefined) {
+ return nativeArrayBufferSlice.call(anObject$1q(this), start); // FF fix
+ }
+
+ var length = anObject$1q(this).byteLength;
+ var first = toAbsoluteIndex$2(start, length);
+ var fin = toAbsoluteIndex$2(end === undefined ? length : end, length);
+ var result = new (speciesConstructor$e(this, ArrayBuffer$3))(toLength$9(fin - first));
+ var viewSource = new DataView$2(this);
+ var viewTarget = new DataView$2(result);
+ var index = 0;
+
+ while (first < fin) {
+ viewTarget.setUint8(index++, viewSource.getUint8(first++));
+ }
+
+ return result;
+ }
+ });
+
+ var $$3N = _export;
+
+ var ArrayBufferModule$1 = arrayBuffer;
+
+ var NATIVE_ARRAY_BUFFER = arrayBufferNative; // `DataView` constructor
+ // https://tc39.es/ecma262/#sec-dataview-constructor
+
+
+ $$3N({
+ global: true,
+ forced: !NATIVE_ARRAY_BUFFER
+ }, {
+ DataView: ArrayBufferModule$1.DataView
+ });
+
+ var $$3M = _export;
+
+ var fails$Q = fails$15;
+
+ var FORCED$r = fails$Q(function () {
+ return new Date(16e11).getYear() !== 120;
+ });
+ var getFullYear = Date.prototype.getFullYear; // `Date.prototype.getYear` method
+ // https://tc39.es/ecma262/#sec-date.prototype.getyear
+
+ $$3M({
+ target: 'Date',
+ proto: true,
+ forced: FORCED$r
+ }, {
+ getYear: function getYear() {
+ return getFullYear.call(this) - 1900;
+ }
+ });
+
+ var $$3L = _export; // `Date.now` method
+ // https://tc39.es/ecma262/#sec-date.now
+
+
+ $$3L({
+ target: 'Date',
+ stat: true
+ }, {
+ now: function now() {
+ return new Date().getTime();
+ }
+ });
+
+ var $$3K = _export;
+
+ var toIntegerOrInfinity$9 = toIntegerOrInfinity$i;
+
+ var getTime$2 = Date.prototype.getTime;
+ var setFullYear = Date.prototype.setFullYear; // `Date.prototype.setYear` method
+ // https://tc39.es/ecma262/#sec-date.prototype.setyear
+
+ $$3K({
+ target: 'Date',
+ proto: true
+ }, {
+ setYear: function setYear(year) {
+ // validate
+ getTime$2.call(this);
+ var yi = toIntegerOrInfinity$9(year);
+ var yyyy = 0 <= yi && yi <= 99 ? yi + 1900 : yi;
+ return setFullYear.call(this, yyyy);
+ }
+ });
+
+ var $$3J = _export; // `Date.prototype.toGMTString` method
+ // https://tc39.es/ecma262/#sec-date.prototype.togmtstring
+
+
+ $$3J({
+ target: 'Date',
+ proto: true
+ }, {
+ toGMTString: Date.prototype.toUTCString
+ });
+
+ var toIntegerOrInfinity$8 = toIntegerOrInfinity$i;
+
+ var toString$p = toString$t;
+
+ var requireObjectCoercible$g = requireObjectCoercible$j; // `String.prototype.repeat` method implementation
+ // https://tc39.es/ecma262/#sec-string.prototype.repeat
+
+
+ var stringRepeat = function repeat(count) {
+ var str = toString$p(requireObjectCoercible$g(this));
+ var result = '';
+ var n = toIntegerOrInfinity$8(count);
+ if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
+
+ for (; n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
+
+ return result;
+ };
+
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var toLength$8 = toLength$d;
+
+ var toString$o = toString$t;
+
+ var repeat$2 = stringRepeat;
+
+ var requireObjectCoercible$f = requireObjectCoercible$j;
+
+ var ceil$1 = Math.ceil; // `String.prototype.{ padStart, padEnd }` methods implementation
+
+ var createMethod$5 = function (IS_END) {
+ return function ($this, maxLength, fillString) {
+ var S = toString$o(requireObjectCoercible$f($this));
+ var intMaxLength = toLength$8(maxLength);
+ var stringLength = S.length;
+ var fillStr = fillString === undefined ? ' ' : toString$o(fillString);
+ var fillLen, stringFiller;
+ if (intMaxLength <= stringLength || fillStr == '') return S;
+ fillLen = intMaxLength - stringLength;
+ stringFiller = repeat$2.call(fillStr, ceil$1(fillLen / fillStr.length));
+ if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
+ return IS_END ? S + stringFiller : stringFiller + S;
+ };
+ };
+
+ var stringPad = {
+ // `String.prototype.padStart` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padstart
+ start: createMethod$5(false),
+ // `String.prototype.padEnd` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padend
+ end: createMethod$5(true)
+ };
+
+ var fails$P = fails$15;
+
+ var padStart = stringPad.start;
+
+ var abs$6 = Math.abs;
+ var DatePrototype$2 = Date.prototype;
+ var getTime$1 = DatePrototype$2.getTime;
+ var nativeDateToISOString = DatePrototype$2.toISOString; // `Date.prototype.toISOString` method implementation
+ // https://tc39.es/ecma262/#sec-date.prototype.toisostring
+ // PhantomJS / old WebKit fails here:
+
+ var dateToIsoString = fails$P(function () {
+ return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
+ }) || !fails$P(function () {
+ nativeDateToISOString.call(new Date(NaN));
+ }) ? function toISOString() {
+ if (!isFinite(getTime$1.call(this))) throw RangeError('Invalid time value');
+ var date = this;
+ var year = date.getUTCFullYear();
+ var milliseconds = date.getUTCMilliseconds();
+ var sign = year < 0 ? '-' : year > 9999 ? '+' : '';
+ return sign + padStart(abs$6(year), sign ? 6 : 4, 0) + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + '-' + padStart(date.getUTCDate(), 2, 0) + 'T' + padStart(date.getUTCHours(), 2, 0) + ':' + padStart(date.getUTCMinutes(), 2, 0) + ':' + padStart(date.getUTCSeconds(), 2, 0) + '.' + padStart(milliseconds, 3, 0) + 'Z';
+ } : nativeDateToISOString;
+
+ var $$3I = _export;
+
+ var toISOString = dateToIsoString; // `Date.prototype.toISOString` method
+ // https://tc39.es/ecma262/#sec-date.prototype.toisostring
+ // PhantomJS / old WebKit has a broken implementations
+
+
+ $$3I({
+ target: 'Date',
+ proto: true,
+ forced: Date.prototype.toISOString !== toISOString
+ }, {
+ toISOString: toISOString
+ });
+
+ var $$3H = _export;
+
+ var fails$O = fails$15;
+
+ var toObject$l = toObject$A;
+
+ var toPrimitive$1 = toPrimitive$3;
+
+ var FORCED$q = fails$O(function () {
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({
+ toISOString: function () {
+ return 1;
+ }
+ }) !== 1;
+ }); // `Date.prototype.toJSON` method
+ // https://tc39.es/ecma262/#sec-date.prototype.tojson
+
+ $$3H({
+ target: 'Date',
+ proto: true,
+ forced: FORCED$q
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ toJSON: function toJSON(key) {
+ var O = toObject$l(this);
+ var pv = toPrimitive$1(O, 'number');
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+ });
+
+ var anObject$1p = anObject$1C;
+
+ var ordinaryToPrimitive = ordinaryToPrimitive$2; // `Date.prototype[@@toPrimitive](hint)` method implementation
+ // https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+
+
+ var dateToPrimitive$1 = function (hint) {
+ anObject$1p(this);
+ if (hint === 'string' || hint === 'default') hint = 'string';else if (hint !== 'number') throw TypeError('Incorrect hint');
+ return ordinaryToPrimitive(this, hint);
+ };
+
+ var redefine$e = redefine$l.exports;
+
+ var dateToPrimitive = dateToPrimitive$1;
+
+ var wellKnownSymbol$m = wellKnownSymbol$G;
+
+ var TO_PRIMITIVE = wellKnownSymbol$m('toPrimitive');
+ var DatePrototype$1 = Date.prototype; // `Date.prototype[@@toPrimitive]` method
+ // https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+
+ if (!(TO_PRIMITIVE in DatePrototype$1)) {
+ redefine$e(DatePrototype$1, TO_PRIMITIVE, dateToPrimitive);
+ }
+
+ var redefine$d = redefine$l.exports;
+
+ var DatePrototype = Date.prototype;
+ var INVALID_DATE = 'Invalid Date';
+ var TO_STRING$1 = 'toString';
+ var nativeDateToString = DatePrototype[TO_STRING$1];
+ var getTime = DatePrototype.getTime; // `Date.prototype.toString` method
+ // https://tc39.es/ecma262/#sec-date.prototype.tostring
+
+ if (String(new Date(NaN)) != INVALID_DATE) {
+ redefine$d(DatePrototype, TO_STRING$1, function toString() {
+ var value = getTime.call(this); // eslint-disable-next-line no-self-compare -- NaN check
+
+ return value === value ? nativeDateToString.call(this) : INVALID_DATE;
+ });
+ }
+
+ var $$3G = _export;
+
+ var toString$n = toString$t;
+
+ var raw = /[\w*+\-./@]/;
+
+ var hex$1 = function (code, length) {
+ var result = code.toString(16);
+
+ while (result.length < length) result = '0' + result;
+
+ return result;
+ }; // `escape` method
+ // https://tc39.es/ecma262/#sec-escape-string
+
+
+ $$3G({
+ global: true
+ }, {
+ escape: function escape(string) {
+ var str = toString$n(string);
+ var result = '';
+ var length = str.length;
+ var index = 0;
+ var chr, code;
+
+ while (index < length) {
+ chr = str.charAt(index++);
+
+ if (raw.test(chr)) {
+ result += chr;
+ } else {
+ code = chr.charCodeAt(0);
+
+ if (code < 256) {
+ result += '%' + hex$1(code, 2);
+ } else {
+ result += '%u' + hex$1(code, 4).toUpperCase();
+ }
+ }
+ }
+
+ return result;
+ }
+ });
+
+ var aCallable$J = aCallable$Q;
+
+ var isObject$p = isObject$C;
+
+ var slice$2 = [].slice;
+ var factories = {};
+
+ var construct = function (C, argsLength, args) {
+ if (!(argsLength in factories)) {
+ for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']'; // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only
+
+
+ factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');
+ }
+
+ return factories[argsLength](C, args);
+ }; // `Function.prototype.bind` method implementation
+ // https://tc39.es/ecma262/#sec-function.prototype.bind
+
+
+ var functionBind = Function.bind || function bind(that
+ /* , ...args */
+ ) {
+ var fn = aCallable$J(this);
+ var partArgs = slice$2.call(arguments, 1);
+
+ var boundFunction = function bound() {
+ var args = partArgs.concat(slice$2.call(arguments));
+ return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);
+ };
+
+ if (isObject$p(fn.prototype)) boundFunction.prototype = fn.prototype;
+ return boundFunction;
+ };
+
+ var $$3F = _export;
+
+ var bind$m = functionBind; // `Function.prototype.bind` method
+ // https://tc39.es/ecma262/#sec-function.prototype.bind
+
+
+ $$3F({
+ target: 'Function',
+ proto: true
+ }, {
+ bind: bind$m
+ });
+
+ var isCallable$g = isCallable$z;
+
+ var isObject$o = isObject$C;
+
+ var definePropertyModule$5 = objectDefineProperty;
+
+ var getPrototypeOf$9 = objectGetPrototypeOf$1;
+
+ var wellKnownSymbol$l = wellKnownSymbol$G;
+
+ var HAS_INSTANCE = wellKnownSymbol$l('hasInstance');
+ var FunctionPrototype$1 = Function.prototype; // `Function.prototype[@@hasInstance]` method
+ // https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance
+
+ if (!(HAS_INSTANCE in FunctionPrototype$1)) {
+ definePropertyModule$5.f(FunctionPrototype$1, HAS_INSTANCE, {
+ value: function (O) {
+ if (!isCallable$g(this) || !isObject$o(O)) return false;
+ if (!isObject$o(this.prototype)) return O instanceof this; // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+
+ while (O = getPrototypeOf$9(O)) if (this.prototype === O) return true;
+
+ return false;
+ }
+ });
+ }
+
+ var DESCRIPTORS$p = descriptors;
+
+ var FUNCTION_NAME_EXISTS = functionName.EXISTS;
+
+ var defineProperty$b = objectDefineProperty.f;
+
+ var FunctionPrototype = Function.prototype;
+ var FunctionPrototypeToString = FunctionPrototype.toString;
+ var nameRE = /^\s*function ([^ (]*)/;
+ var NAME = 'name'; // Function instances `.name` property
+ // https://tc39.es/ecma262/#sec-function-instances-name
+
+ if (DESCRIPTORS$p && !FUNCTION_NAME_EXISTS) {
+ defineProperty$b(FunctionPrototype, NAME, {
+ configurable: true,
+ get: function () {
+ try {
+ return FunctionPrototypeToString.call(this).match(nameRE)[1];
+ } catch (error) {
+ return '';
+ }
+ }
+ });
+ }
+
+ var $$3E = _export;
+
+ var global$z = global$R; // `globalThis` object
+ // https://tc39.es/ecma262/#sec-globalthis
+
+
+ $$3E({
+ global: true
+ }, {
+ globalThis: global$z
+ });
+
+ var $$3D = _export;
+
+ var getBuiltIn$q = getBuiltIn$y;
+
+ var fails$N = fails$15;
+
+ var $stringify = getBuiltIn$q('JSON', 'stringify');
+ var re = /[\uD800-\uDFFF]/g;
+ var low = /^[\uD800-\uDBFF]$/;
+ var hi = /^[\uDC00-\uDFFF]$/;
+
+ var fix = function (match, offset, string) {
+ var prev = string.charAt(offset - 1);
+ var next = string.charAt(offset + 1);
+
+ if (low.test(match) && !hi.test(next) || hi.test(match) && !low.test(prev)) {
+ return '\\u' + match.charCodeAt(0).toString(16);
+ }
+
+ return match;
+ };
+
+ var FORCED$p = fails$N(function () {
+ return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' || $stringify('\uDEAD') !== '"\\udead"';
+ });
+
+ if ($stringify) {
+ // `JSON.stringify` method
+ // https://tc39.es/ecma262/#sec-json.stringify
+ // https://github.com/tc39/proposal-well-formed-stringify
+ $$3D({
+ target: 'JSON',
+ stat: true,
+ forced: FORCED$p
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ stringify: function stringify(it, replacer, space) {
+ var result = $stringify.apply(null, arguments);
+ return typeof result == 'string' ? result.replace(re, fix) : result;
+ }
+ });
+ }
+
+ var global$y = global$R;
+
+ var setToStringTag$6 = setToStringTag$b; // JSON[@@toStringTag] property
+ // https://tc39.es/ecma262/#sec-json-@@tostringtag
+
+
+ setToStringTag$6(global$y.JSON, 'JSON', true);
+
+ var internalMetadata = {exports: {}};
+
+ var fails$M = fails$15;
+
+ var freezing = !fails$M(function () {
+ // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing
+ return Object.isExtensible(Object.preventExtensions({}));
+ });
+
+ var $$3C = _export;
+
+ var hiddenKeys = hiddenKeys$6;
+
+ var isObject$n = isObject$C;
+
+ var hasOwn$b = hasOwnProperty_1;
+
+ var defineProperty$a = objectDefineProperty.f;
+
+ var getOwnPropertyNamesModule = objectGetOwnPropertyNames;
+
+ var getOwnPropertyNamesExternalModule = objectGetOwnPropertyNamesExternal;
+
+ var uid = uid$5;
+
+ var FREEZING$4 = freezing;
+
+ var REQUIRED = false;
+ var METADATA = uid('meta');
+ var id$1 = 0; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+ var isExtensible$1 = Object.isExtensible || function () {
+ return true;
+ };
+
+ var setMetadata = function (it) {
+ defineProperty$a(it, METADATA, {
+ value: {
+ objectID: 'O' + id$1++,
+ // object ID
+ weakData: {} // weak collections IDs
+
+ }
+ });
+ };
+
+ var fastKey$1 = function (it, create) {
+ // return a primitive with prefix
+ if (!isObject$n(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+
+ if (!hasOwn$b(it, METADATA)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible$1(it)) return 'F'; // not necessary to add metadata
+
+ if (!create) return 'E'; // add missing metadata
+
+ setMetadata(it); // return object ID
+ }
+
+ return it[METADATA].objectID;
+ };
+
+ var getWeakData$1 = function (it, create) {
+ if (!hasOwn$b(it, METADATA)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible$1(it)) return true; // not necessary to add metadata
+
+ if (!create) return false; // add missing metadata
+
+ setMetadata(it); // return the store of weak collections IDs
+ }
+
+ return it[METADATA].weakData;
+ }; // add metadata on freeze-family methods calling
+
+
+ var onFreeze$3 = function (it) {
+ if (FREEZING$4 && REQUIRED && isExtensible$1(it) && !hasOwn$b(it, METADATA)) setMetadata(it);
+ return it;
+ };
+
+ var enable = function () {
+ meta.enable = function () {
+ /* empty */
+ };
+
+ REQUIRED = true;
+ var getOwnPropertyNames = getOwnPropertyNamesModule.f;
+ var splice = [].splice;
+ var test = {};
+ test[METADATA] = 1; // prevent exposing of metadata key
+
+ if (getOwnPropertyNames(test).length) {
+ getOwnPropertyNamesModule.f = function (it) {
+ var result = getOwnPropertyNames(it);
+
+ for (var i = 0, length = result.length; i < length; i++) {
+ if (result[i] === METADATA) {
+ splice.call(result, i, 1);
+ break;
+ }
+ }
+
+ return result;
+ };
+
+ $$3C({
+ target: 'Object',
+ stat: true,
+ forced: true
+ }, {
+ getOwnPropertyNames: getOwnPropertyNamesExternalModule.f
+ });
+ }
+ };
+
+ var meta = internalMetadata.exports = {
+ enable: enable,
+ fastKey: fastKey$1,
+ getWeakData: getWeakData$1,
+ onFreeze: onFreeze$3
+ };
+ hiddenKeys[METADATA] = true;
+
+ var isCallable$f = isCallable$z;
+
+ var isObject$m = isObject$C;
+
+ var setPrototypeOf$3 = objectSetPrototypeOf$1; // makes subclassing work correct for wrapped built-ins
+
+
+ var inheritIfRequired$4 = function ($this, dummy, Wrapper) {
+ var NewTarget, NewTargetPrototype;
+ if ( // it can work only with native `setPrototypeOf`
+ setPrototypeOf$3 && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
+ isCallable$f(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject$m(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf$3($this, NewTargetPrototype);
+ return $this;
+ };
+
+ var $$3B = _export;
+
+ var global$x = global$R;
+
+ var isForced$3 = isForced_1;
+
+ var redefine$c = redefine$l.exports;
+
+ var InternalMetadataModule$1 = internalMetadata.exports;
+
+ var iterate$G = iterate$I;
+
+ var anInstance$9 = anInstance$b;
+
+ var isCallable$e = isCallable$z;
+
+ var isObject$l = isObject$C;
+
+ var fails$L = fails$15;
+
+ var checkCorrectnessOfIteration$2 = checkCorrectnessOfIteration$4;
+
+ var setToStringTag$5 = setToStringTag$b;
+
+ var inheritIfRequired$3 = inheritIfRequired$4;
+
+ var collection$4 = function (CONSTRUCTOR_NAME, wrapper, common) {
+ var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
+ var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
+ var ADDER = IS_MAP ? 'set' : 'add';
+ var NativeConstructor = global$x[CONSTRUCTOR_NAME];
+ var NativePrototype = NativeConstructor && NativeConstructor.prototype;
+ var Constructor = NativeConstructor;
+ var exported = {};
+
+ var fixMethod = function (KEY) {
+ var nativeMethod = NativePrototype[KEY];
+ redefine$c(NativePrototype, KEY, KEY == 'add' ? function add(value) {
+ nativeMethod.call(this, value === 0 ? 0 : value);
+ return this;
+ } : KEY == 'delete' ? function (key) {
+ return IS_WEAK && !isObject$l(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : KEY == 'get' ? function get(key) {
+ return IS_WEAK && !isObject$l(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : KEY == 'has' ? function has(key) {
+ return IS_WEAK && !isObject$l(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : function set(key, value) {
+ nativeMethod.call(this, key === 0 ? 0 : key, value);
+ return this;
+ });
+ };
+
+ var REPLACE = isForced$3(CONSTRUCTOR_NAME, !isCallable$e(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails$L(function () {
+ new NativeConstructor().entries().next();
+ })));
+
+ if (REPLACE) {
+ // create collection constructor
+ Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
+ InternalMetadataModule$1.enable();
+ } else if (isForced$3(CONSTRUCTOR_NAME, true)) {
+ var instance = new Constructor(); // early implementations not supports chaining
+
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+
+ var THROWS_ON_PRIMITIVES = fails$L(function () {
+ instance.has(1);
+ }); // most early implementations doesn't supports iterables, most modern - not close it correctly
+ // eslint-disable-next-line no-new -- required for testing
+
+ var ACCEPT_ITERABLES = checkCorrectnessOfIteration$2(function (iterable) {
+ new NativeConstructor(iterable);
+ }); // for early implementations -0 and +0 not the same
+
+ var BUGGY_ZERO = !IS_WEAK && fails$L(function () {
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new NativeConstructor();
+ var index = 5;
+
+ while (index--) $instance[ADDER](index, index);
+
+ return !$instance.has(-0);
+ });
+
+ if (!ACCEPT_ITERABLES) {
+ Constructor = wrapper(function (dummy, iterable) {
+ anInstance$9(dummy, Constructor, CONSTRUCTOR_NAME);
+ var that = inheritIfRequired$3(new NativeConstructor(), dummy, Constructor);
+ if (iterable != undefined) iterate$G(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ return that;
+ });
+ Constructor.prototype = NativePrototype;
+ NativePrototype.constructor = Constructor;
+ }
+
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method
+
+ if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;
+ }
+
+ exported[CONSTRUCTOR_NAME] = Constructor;
+ $$3B({
+ global: true,
+ forced: Constructor != NativeConstructor
+ }, exported);
+ setToStringTag$5(Constructor, CONSTRUCTOR_NAME);
+ if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
+ return Constructor;
+ };
+
+ var defineProperty$9 = objectDefineProperty.f;
+
+ var create$a = objectCreate$1;
+
+ var redefineAll$8 = redefineAll$a;
+
+ var bind$l = functionBindContext;
+
+ var anInstance$8 = anInstance$b;
+
+ var iterate$F = iterate$I;
+
+ var defineIterator$1 = defineIterator$3;
+
+ var setSpecies$4 = setSpecies$7;
+
+ var DESCRIPTORS$o = descriptors;
+
+ var fastKey = internalMetadata.exports.fastKey;
+
+ var InternalStateModule$f = internalState;
+
+ var setInternalState$f = InternalStateModule$f.set;
+ var internalStateGetterFor$1 = InternalStateModule$f.getterFor;
+ var collectionStrong$2 = {
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance$8(that, C, CONSTRUCTOR_NAME);
+ setInternalState$f(that, {
+ type: CONSTRUCTOR_NAME,
+ index: create$a(null),
+ first: undefined,
+ last: undefined,
+ size: 0
+ });
+ if (!DESCRIPTORS$o) that.size = 0;
+ if (iterable != undefined) iterate$F(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ });
+ var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME);
+
+ var define = function (that, key, value) {
+ var state = getInternalState(that);
+ var entry = getEntry(that, key);
+ var previous, index; // change existing entry
+
+ if (entry) {
+ entry.value = value; // create new entry
+ } else {
+ state.last = entry = {
+ index: index = fastKey(key, true),
+ key: key,
+ value: value,
+ previous: previous = state.last,
+ next: undefined,
+ removed: false
+ };
+ if (!state.first) state.first = entry;
+ if (previous) previous.next = entry;
+ if (DESCRIPTORS$o) state.size++;else that.size++; // add to index
+
+ if (index !== 'F') state.index[index] = entry;
+ }
+
+ return that;
+ };
+
+ var getEntry = function (that, key) {
+ var state = getInternalState(that); // fast case
+
+ var index = fastKey(key);
+ var entry;
+ if (index !== 'F') return state.index[index]; // frozen object case
+
+ for (entry = state.first; entry; entry = entry.next) {
+ if (entry.key == key) return entry;
+ }
+ };
+
+ redefineAll$8(C.prototype, {
+ // `{ Map, Set }.prototype.clear()` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.clear
+ // https://tc39.es/ecma262/#sec-set.prototype.clear
+ clear: function clear() {
+ var that = this;
+ var state = getInternalState(that);
+ var data = state.index;
+ var entry = state.first;
+
+ while (entry) {
+ entry.removed = true;
+ if (entry.previous) entry.previous = entry.previous.next = undefined;
+ delete data[entry.index];
+ entry = entry.next;
+ }
+
+ state.first = state.last = undefined;
+ if (DESCRIPTORS$o) state.size = 0;else that.size = 0;
+ },
+ // `{ Map, Set }.prototype.delete(key)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.delete
+ // https://tc39.es/ecma262/#sec-set.prototype.delete
+ 'delete': function (key) {
+ var that = this;
+ var state = getInternalState(that);
+ var entry = getEntry(that, key);
+
+ if (entry) {
+ var next = entry.next;
+ var prev = entry.previous;
+ delete state.index[entry.index];
+ entry.removed = true;
+ if (prev) prev.next = next;
+ if (next) next.previous = prev;
+ if (state.first == entry) state.first = next;
+ if (state.last == entry) state.last = prev;
+ if (DESCRIPTORS$o) state.size--;else that.size--;
+ }
+
+ return !!entry;
+ },
+ // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.foreach
+ // https://tc39.es/ecma262/#sec-set.prototype.foreach
+ forEach: function forEach(callbackfn
+ /* , that = undefined */
+ ) {
+ var state = getInternalState(this);
+ var boundFunction = bind$l(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var entry;
+
+ while (entry = entry ? entry.next : state.first) {
+ boundFunction(entry.value, entry.key, this); // revert to the last existing entry
+
+ while (entry && entry.removed) entry = entry.previous;
+ }
+ },
+ // `{ Map, Set}.prototype.has(key)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.has
+ // https://tc39.es/ecma262/#sec-set.prototype.has
+ has: function has(key) {
+ return !!getEntry(this, key);
+ }
+ });
+ redefineAll$8(C.prototype, IS_MAP ? {
+ // `Map.prototype.get(key)` method
+ // https://tc39.es/ecma262/#sec-map.prototype.get
+ get: function get(key) {
+ var entry = getEntry(this, key);
+ return entry && entry.value;
+ },
+ // `Map.prototype.set(key, value)` method
+ // https://tc39.es/ecma262/#sec-map.prototype.set
+ set: function set(key, value) {
+ return define(this, key === 0 ? 0 : key, value);
+ }
+ } : {
+ // `Set.prototype.add(value)` method
+ // https://tc39.es/ecma262/#sec-set.prototype.add
+ add: function add(value) {
+ return define(this, value = value === 0 ? 0 : value, value);
+ }
+ });
+ if (DESCRIPTORS$o) defineProperty$9(C.prototype, 'size', {
+ get: function () {
+ return getInternalState(this).size;
+ }
+ });
+ return C;
+ },
+ setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {
+ var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
+ var getInternalCollectionState = internalStateGetterFor$1(CONSTRUCTOR_NAME);
+ var getInternalIteratorState = internalStateGetterFor$1(ITERATOR_NAME); // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.entries
+ // https://tc39.es/ecma262/#sec-map.prototype.keys
+ // https://tc39.es/ecma262/#sec-map.prototype.values
+ // https://tc39.es/ecma262/#sec-map.prototype-@@iterator
+ // https://tc39.es/ecma262/#sec-set.prototype.entries
+ // https://tc39.es/ecma262/#sec-set.prototype.keys
+ // https://tc39.es/ecma262/#sec-set.prototype.values
+ // https://tc39.es/ecma262/#sec-set.prototype-@@iterator
+
+ defineIterator$1(C, CONSTRUCTOR_NAME, function (iterated, kind) {
+ setInternalState$f(this, {
+ type: ITERATOR_NAME,
+ target: iterated,
+ state: getInternalCollectionState(iterated),
+ kind: kind,
+ last: undefined
+ });
+ }, function () {
+ var state = getInternalIteratorState(this);
+ var kind = state.kind;
+ var entry = state.last; // revert to the last existing entry
+
+ while (entry && entry.removed) entry = entry.previous; // get next entry
+
+
+ if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
+ // or finish the iteration
+ state.target = undefined;
+ return {
+ value: undefined,
+ done: true
+ };
+ } // return step by kind
+
+
+ if (kind == 'keys') return {
+ value: entry.key,
+ done: false
+ };
+ if (kind == 'values') return {
+ value: entry.value,
+ done: false
+ };
+ return {
+ value: [entry.key, entry.value],
+ done: false
+ };
+ }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // `{ Map, Set }.prototype[@@species]` accessors
+ // https://tc39.es/ecma262/#sec-get-map-@@species
+ // https://tc39.es/ecma262/#sec-get-set-@@species
+
+ setSpecies$4(CONSTRUCTOR_NAME);
+ }
+ };
+
+ var collection$3 = collection$4;
+
+ var collectionStrong$1 = collectionStrong$2; // `Map` constructor
+ // https://tc39.es/ecma262/#sec-map-objects
+
+
+ var es_map = collection$3('Map', function (init) {
+ return function Map() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+ }, collectionStrong$1);
+
+ var log$7 = Math.log; // `Math.log1p` method implementation
+ // https://tc39.es/ecma262/#sec-math.log1p
+ // eslint-disable-next-line es/no-math-log1p -- safe
+
+ var mathLog1p = Math.log1p || function log1p(x) {
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log$7(1 + x);
+ };
+
+ var $$3A = _export;
+
+ var log1p$1 = mathLog1p; // eslint-disable-next-line es/no-math-acosh -- required for testing
+
+
+ var $acosh = Math.acosh;
+ var log$6 = Math.log;
+ var sqrt$2 = Math.sqrt;
+ var LN2$1 = Math.LN2;
+ var FORCED$o = !$acosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
+ || Math.floor($acosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN
+ || $acosh(Infinity) != Infinity; // `Math.acosh` method
+ // https://tc39.es/ecma262/#sec-math.acosh
+
+ $$3A({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$o
+ }, {
+ acosh: function acosh(x) {
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? log$6(x) + LN2$1 : log1p$1(x - 1 + sqrt$2(x - 1) * sqrt$2(x + 1));
+ }
+ });
+
+ var $$3z = _export; // eslint-disable-next-line es/no-math-asinh -- required for testing
+
+
+ var $asinh = Math.asinh;
+ var log$5 = Math.log;
+ var sqrt$1 = Math.sqrt;
+
+ function asinh(x) {
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log$5(x + sqrt$1(x * x + 1));
+ } // `Math.asinh` method
+ // https://tc39.es/ecma262/#sec-math.asinh
+ // Tor Browser bug: Math.asinh(0) -> -0
+
+
+ $$3z({
+ target: 'Math',
+ stat: true,
+ forced: !($asinh && 1 / $asinh(0) > 0)
+ }, {
+ asinh: asinh
+ });
+
+ var $$3y = _export; // eslint-disable-next-line es/no-math-atanh -- required for testing
+
+
+ var $atanh = Math.atanh;
+ var log$4 = Math.log; // `Math.atanh` method
+ // https://tc39.es/ecma262/#sec-math.atanh
+ // Tor Browser bug: Math.atanh(-0) -> 0
+
+ $$3y({
+ target: 'Math',
+ stat: true,
+ forced: !($atanh && 1 / $atanh(-0) < 0)
+ }, {
+ atanh: function atanh(x) {
+ return (x = +x) == 0 ? x : log$4((1 + x) / (1 - x)) / 2;
+ }
+ });
+
+ // `Math.sign` method implementation
+ // https://tc39.es/ecma262/#sec-math.sign
+ // eslint-disable-next-line es/no-math-sign -- safe
+ var mathSign = Math.sign || function sign(x) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+ };
+
+ var $$3x = _export;
+
+ var sign$2 = mathSign;
+
+ var abs$5 = Math.abs;
+ var pow$3 = Math.pow; // `Math.cbrt` method
+ // https://tc39.es/ecma262/#sec-math.cbrt
+
+ $$3x({
+ target: 'Math',
+ stat: true
+ }, {
+ cbrt: function cbrt(x) {
+ return sign$2(x = +x) * pow$3(abs$5(x), 1 / 3);
+ }
+ });
+
+ var $$3w = _export;
+
+ var floor$7 = Math.floor;
+ var log$3 = Math.log;
+ var LOG2E = Math.LOG2E; // `Math.clz32` method
+ // https://tc39.es/ecma262/#sec-math.clz32
+
+ $$3w({
+ target: 'Math',
+ stat: true
+ }, {
+ clz32: function clz32(x) {
+ return (x >>>= 0) ? 31 - floor$7(log$3(x + 0.5) * LOG2E) : 32;
+ }
+ });
+
+ // eslint-disable-next-line es/no-math-expm1 -- safe
+ var $expm1 = Math.expm1;
+ var exp$2 = Math.exp; // `Math.expm1` method implementation
+ // https://tc39.es/ecma262/#sec-math.expm1
+
+ var mathExpm1 = !$expm1 // Old FF bug
+ || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 // Tor Browser bug
+ || $expm1(-2e-17) != -2e-17 ? function expm1(x) {
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp$2(x) - 1;
+ } : $expm1;
+
+ var $$3v = _export;
+
+ var expm1$3 = mathExpm1; // eslint-disable-next-line es/no-math-cosh -- required for testing
+
+
+ var $cosh = Math.cosh;
+ var abs$4 = Math.abs;
+ var E$1 = Math.E; // `Math.cosh` method
+ // https://tc39.es/ecma262/#sec-math.cosh
+
+ $$3v({
+ target: 'Math',
+ stat: true,
+ forced: !$cosh || $cosh(710) === Infinity
+ }, {
+ cosh: function cosh(x) {
+ var t = expm1$3(abs$4(x) - 1) + 1;
+ return (t + 1 / (t * E$1 * E$1)) * (E$1 / 2);
+ }
+ });
+
+ var $$3u = _export;
+
+ var expm1$2 = mathExpm1; // `Math.expm1` method
+ // https://tc39.es/ecma262/#sec-math.expm1
+ // eslint-disable-next-line es/no-math-expm1 -- required for testing
+
+
+ $$3u({
+ target: 'Math',
+ stat: true,
+ forced: expm1$2 != Math.expm1
+ }, {
+ expm1: expm1$2
+ });
+
+ var sign$1 = mathSign;
+
+ var abs$3 = Math.abs;
+ var pow$2 = Math.pow;
+ var EPSILON = pow$2(2, -52);
+ var EPSILON32 = pow$2(2, -23);
+ var MAX32 = pow$2(2, 127) * (2 - EPSILON32);
+ var MIN32 = pow$2(2, -126);
+
+ var roundTiesToEven = function (n) {
+ return n + 1 / EPSILON - 1 / EPSILON;
+ }; // `Math.fround` method implementation
+ // https://tc39.es/ecma262/#sec-math.fround
+ // eslint-disable-next-line es/no-math-fround -- safe
+
+
+ var mathFround = Math.fround || function fround(x) {
+ var $abs = abs$3(x);
+ var $sign = sign$1(x);
+ var a, result;
+ if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (result > MAX32 || result != result) return $sign * Infinity;
+ return $sign * result;
+ };
+
+ var $$3t = _export;
+
+ var fround$1 = mathFround; // `Math.fround` method
+ // https://tc39.es/ecma262/#sec-math.fround
+
+
+ $$3t({
+ target: 'Math',
+ stat: true
+ }, {
+ fround: fround$1
+ });
+
+ var $$3s = _export; // eslint-disable-next-line es/no-math-hypot -- required for testing
+
+
+ var $hypot = Math.hypot;
+ var abs$2 = Math.abs;
+ var sqrt = Math.sqrt; // Chrome 77 bug
+ // https://bugs.chromium.org/p/v8/issues/detail?id=9546
+
+ var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; // `Math.hypot` method
+ // https://tc39.es/ecma262/#sec-math.hypot
+
+ $$3s({
+ target: 'Math',
+ stat: true,
+ forced: BUGGY
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ hypot: function hypot(value1, value2) {
+ var sum = 0;
+ var i = 0;
+ var aLen = arguments.length;
+ var larg = 0;
+ var arg, div;
+
+ while (i < aLen) {
+ arg = abs$2(arguments[i++]);
+
+ if (larg < arg) {
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if (arg > 0) {
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+
+ return larg === Infinity ? Infinity : larg * sqrt(sum);
+ }
+ });
+
+ var $$3r = _export;
+
+ var fails$K = fails$15; // eslint-disable-next-line es/no-math-imul -- required for testing
+
+
+ var $imul = Math.imul;
+ var FORCED$n = fails$K(function () {
+ return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2;
+ }); // `Math.imul` method
+ // https://tc39.es/ecma262/#sec-math.imul
+ // some WebKit versions fails with big numbers, some has wrong arity
+
+ $$3r({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$n
+ }, {
+ imul: function imul(x, y) {
+ var UINT16 = 0xFFFF;
+ var xn = +x;
+ var yn = +y;
+ var xl = UINT16 & xn;
+ var yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+ });
+
+ var $$3q = _export;
+
+ var log$2 = Math.log;
+ var LOG10E = Math.LOG10E; // `Math.log10` method
+ // https://tc39.es/ecma262/#sec-math.log10
+
+ $$3q({
+ target: 'Math',
+ stat: true
+ }, {
+ log10: function log10(x) {
+ return log$2(x) * LOG10E;
+ }
+ });
+
+ var $$3p = _export;
+
+ var log1p = mathLog1p; // `Math.log1p` method
+ // https://tc39.es/ecma262/#sec-math.log1p
+
+
+ $$3p({
+ target: 'Math',
+ stat: true
+ }, {
+ log1p: log1p
+ });
+
+ var $$3o = _export;
+
+ var log$1 = Math.log;
+ var LN2 = Math.LN2; // `Math.log2` method
+ // https://tc39.es/ecma262/#sec-math.log2
+
+ $$3o({
+ target: 'Math',
+ stat: true
+ }, {
+ log2: function log2(x) {
+ return log$1(x) / LN2;
+ }
+ });
+
+ var $$3n = _export;
+
+ var sign = mathSign; // `Math.sign` method
+ // https://tc39.es/ecma262/#sec-math.sign
+
+
+ $$3n({
+ target: 'Math',
+ stat: true
+ }, {
+ sign: sign
+ });
+
+ var $$3m = _export;
+
+ var fails$J = fails$15;
+
+ var expm1$1 = mathExpm1;
+
+ var abs$1 = Math.abs;
+ var exp$1 = Math.exp;
+ var E = Math.E;
+ var FORCED$m = fails$J(function () {
+ // eslint-disable-next-line es/no-math-sinh -- required for testing
+ return Math.sinh(-2e-17) != -2e-17;
+ }); // `Math.sinh` method
+ // https://tc39.es/ecma262/#sec-math.sinh
+ // V8 near Chromium 38 has a problem with very small numbers
+
+ $$3m({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$m
+ }, {
+ sinh: function sinh(x) {
+ return abs$1(x = +x) < 1 ? (expm1$1(x) - expm1$1(-x)) / 2 : (exp$1(x - 1) - exp$1(-x - 1)) * (E / 2);
+ }
+ });
+
+ var $$3l = _export;
+
+ var expm1 = mathExpm1;
+
+ var exp = Math.exp; // `Math.tanh` method
+ // https://tc39.es/ecma262/#sec-math.tanh
+
+ $$3l({
+ target: 'Math',
+ stat: true
+ }, {
+ tanh: function tanh(x) {
+ var a = expm1(x = +x);
+ var b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+ });
+
+ var setToStringTag$4 = setToStringTag$b; // Math[@@toStringTag] property
+ // https://tc39.es/ecma262/#sec-math-@@tostringtag
+
+
+ setToStringTag$4(Math, 'Math', true);
+
+ var $$3k = _export;
+
+ var ceil = Math.ceil;
+ var floor$6 = Math.floor; // `Math.trunc` method
+ // https://tc39.es/ecma262/#sec-math.trunc
+
+ $$3k({
+ target: 'Math',
+ stat: true
+ }, {
+ trunc: function trunc(it) {
+ return (it > 0 ? floor$6 : ceil)(it);
+ }
+ });
+
+ var valueOf = 1.0.valueOf; // `thisNumberValue` abstract operation
+ // https://tc39.es/ecma262/#sec-thisnumbervalue
+
+ var thisNumberValue$3 = function (value) {
+ return valueOf.call(value);
+ };
+
+ // a string of all valid unicode whitespaces
+ var whitespaces$4 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
+
+ var requireObjectCoercible$e = requireObjectCoercible$j;
+
+ var toString$m = toString$t;
+
+ var whitespaces$3 = whitespaces$4;
+
+ var whitespace = '[' + whitespaces$3 + ']';
+ var ltrim = RegExp('^' + whitespace + whitespace + '*');
+ var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
+
+ var createMethod$4 = function (TYPE) {
+ return function ($this) {
+ var string = toString$m(requireObjectCoercible$e($this));
+ if (TYPE & 1) string = string.replace(ltrim, '');
+ if (TYPE & 2) string = string.replace(rtrim, '');
+ return string;
+ };
+ };
+
+ var stringTrim = {
+ // `String.prototype.{ trimLeft, trimStart }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimstart
+ start: createMethod$4(1),
+ // `String.prototype.{ trimRight, trimEnd }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimend
+ end: createMethod$4(2),
+ // `String.prototype.trim` method
+ // https://tc39.es/ecma262/#sec-string.prototype.trim
+ trim: createMethod$4(3)
+ };
+
+ var DESCRIPTORS$n = descriptors;
+
+ var global$w = global$R;
+
+ var isForced$2 = isForced_1;
+
+ var redefine$b = redefine$l.exports;
+
+ var hasOwn$a = hasOwnProperty_1;
+
+ var inheritIfRequired$2 = inheritIfRequired$4;
+
+ var isSymbol$1 = isSymbol$5;
+
+ var toPrimitive = toPrimitive$3;
+
+ var fails$I = fails$15;
+
+ var getOwnPropertyNames$4 = objectGetOwnPropertyNames.f;
+
+ var getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor.f;
+
+ var defineProperty$8 = objectDefineProperty.f;
+
+ var thisNumberValue$2 = thisNumberValue$3;
+
+ var trim$3 = stringTrim.trim;
+
+ var NUMBER = 'Number';
+ var NativeNumber = global$w[NUMBER];
+ var NumberPrototype = NativeNumber.prototype; // `ToNumeric` abstract operation
+ // https://tc39.es/ecma262/#sec-tonumeric
+
+ var toNumeric = function (value) {
+ var primValue = toPrimitive(value, 'number');
+ return typeof primValue === 'bigint' ? primValue : toNumber(primValue);
+ }; // `ToNumber` abstract operation
+ // https://tc39.es/ecma262/#sec-tonumber
+
+
+ var toNumber = function (argument) {
+ var it = toPrimitive(argument, 'number');
+ var first, third, radix, maxCode, digits, length, index, code;
+ if (isSymbol$1(it)) throw TypeError('Cannot convert a Symbol value to a number');
+
+ if (typeof it == 'string' && it.length > 2) {
+ it = trim$3(it);
+ first = it.charCodeAt(0);
+
+ if (first === 43 || first === 45) {
+ third = it.charCodeAt(2);
+ if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if (first === 48) {
+ switch (it.charCodeAt(1)) {
+ case 66:
+ case 98:
+ radix = 2;
+ maxCode = 49;
+ break;
+ // fast equal of /^0b[01]+$/i
+
+ case 79:
+ case 111:
+ radix = 8;
+ maxCode = 55;
+ break;
+ // fast equal of /^0o[0-7]+$/i
+
+ default:
+ return +it;
+ }
+
+ digits = it.slice(2);
+ length = digits.length;
+
+ for (index = 0; index < length; index++) {
+ code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+
+ if (code < 48 || code > maxCode) return NaN;
+ }
+
+ return parseInt(digits, radix);
+ }
+ }
+
+ return +it;
+ }; // `Number` constructor
+ // https://tc39.es/ecma262/#sec-number-constructor
+
+
+ if (isForced$2(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
+ var NumberWrapper = function Number(value) {
+ var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
+ var dummy = this; // check on 1..constructor(foo) case
+
+ return dummy instanceof NumberWrapper && fails$I(function () {
+ thisNumberValue$2(dummy);
+ }) ? inheritIfRequired$2(Object(n), dummy, NumberWrapper) : n;
+ };
+
+ for (var keys$1 = DESCRIPTORS$n ? getOwnPropertyNames$4(NativeNumber) : ( // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before):
+ 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + // ESNext
+ 'fromString,range').split(','), j = 0, key; keys$1.length > j; j++) {
+ if (hasOwn$a(NativeNumber, key = keys$1[j]) && !hasOwn$a(NumberWrapper, key)) {
+ defineProperty$8(NumberWrapper, key, getOwnPropertyDescriptor$7(NativeNumber, key));
+ }
+ }
+
+ NumberWrapper.prototype = NumberPrototype;
+ NumberPrototype.constructor = NumberWrapper;
+ redefine$b(global$w, NUMBER, NumberWrapper);
+ }
+
+ var $$3j = _export; // `Number.EPSILON` constant
+ // https://tc39.es/ecma262/#sec-number.epsilon
+
+
+ $$3j({
+ target: 'Number',
+ stat: true
+ }, {
+ EPSILON: Math.pow(2, -52)
+ });
+
+ var global$v = global$R;
+
+ var globalIsFinite = global$v.isFinite; // `Number.isFinite` method
+ // https://tc39.es/ecma262/#sec-number.isfinite
+ // eslint-disable-next-line es/no-number-isfinite -- safe
+
+ var numberIsFinite$2 = Number.isFinite || function isFinite(it) {
+ return typeof it == 'number' && globalIsFinite(it);
+ };
+
+ var $$3i = _export;
+
+ var numberIsFinite$1 = numberIsFinite$2; // `Number.isFinite` method
+ // https://tc39.es/ecma262/#sec-number.isfinite
+
+
+ $$3i({
+ target: 'Number',
+ stat: true
+ }, {
+ isFinite: numberIsFinite$1
+ });
+
+ var isObject$k = isObject$C;
+
+ var floor$5 = Math.floor; // `IsIntegralNumber` abstract operation
+ // https://tc39.es/ecma262/#sec-isintegralnumber
+ // eslint-disable-next-line es/no-number-isinteger -- safe
+
+ var isIntegralNumber$3 = Number.isInteger || function isInteger(it) {
+ return !isObject$k(it) && isFinite(it) && floor$5(it) === it;
+ };
+
+ var $$3h = _export;
+
+ var isIntegralNumber$2 = isIntegralNumber$3; // `Number.isInteger` method
+ // https://tc39.es/ecma262/#sec-number.isinteger
+
+
+ $$3h({
+ target: 'Number',
+ stat: true
+ }, {
+ isInteger: isIntegralNumber$2
+ });
+
+ var $$3g = _export; // `Number.isNaN` method
+ // https://tc39.es/ecma262/#sec-number.isnan
+
+
+ $$3g({
+ target: 'Number',
+ stat: true
+ }, {
+ isNaN: function isNaN(number) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return number != number;
+ }
+ });
+
+ var $$3f = _export;
+
+ var isIntegralNumber$1 = isIntegralNumber$3;
+
+ var abs = Math.abs; // `Number.isSafeInteger` method
+ // https://tc39.es/ecma262/#sec-number.issafeinteger
+
+ $$3f({
+ target: 'Number',
+ stat: true
+ }, {
+ isSafeInteger: function isSafeInteger(number) {
+ return isIntegralNumber$1(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
+ }
+ });
+
+ var $$3e = _export; // `Number.MAX_SAFE_INTEGER` constant
+ // https://tc39.es/ecma262/#sec-number.max_safe_integer
+
+
+ $$3e({
+ target: 'Number',
+ stat: true
+ }, {
+ MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF
+ });
+
+ var $$3d = _export; // `Number.MIN_SAFE_INTEGER` constant
+ // https://tc39.es/ecma262/#sec-number.min_safe_integer
+
+
+ $$3d({
+ target: 'Number',
+ stat: true
+ }, {
+ MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF
+ });
+
+ var global$u = global$R;
+
+ var fails$H = fails$15;
+
+ var toString$l = toString$t;
+
+ var trim$2 = stringTrim.trim;
+
+ var whitespaces$2 = whitespaces$4;
+
+ var $parseFloat$1 = global$u.parseFloat;
+ var Symbol$2 = global$u.Symbol;
+ var ITERATOR$5 = Symbol$2 && Symbol$2.iterator;
+ var FORCED$l = 1 / $parseFloat$1(whitespaces$2 + '-0') !== -Infinity // MS Edge 18- broken with boxed symbols
+ || ITERATOR$5 && !fails$H(function () {
+ $parseFloat$1(Object(ITERATOR$5));
+ }); // `parseFloat` method
+ // https://tc39.es/ecma262/#sec-parsefloat-string
+
+ var numberParseFloat = FORCED$l ? function parseFloat(string) {
+ var trimmedString = trim$2(toString$l(string));
+ var result = $parseFloat$1(trimmedString);
+ return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
+ } : $parseFloat$1;
+
+ var $$3c = _export;
+
+ var parseFloat$1 = numberParseFloat; // `Number.parseFloat` method
+ // https://tc39.es/ecma262/#sec-number.parseFloat
+ // eslint-disable-next-line es/no-number-parsefloat -- required for testing
+
+
+ $$3c({
+ target: 'Number',
+ stat: true,
+ forced: Number.parseFloat != parseFloat$1
+ }, {
+ parseFloat: parseFloat$1
+ });
+
+ var global$t = global$R;
+
+ var fails$G = fails$15;
+
+ var toString$k = toString$t;
+
+ var trim$1 = stringTrim.trim;
+
+ var whitespaces$1 = whitespaces$4;
+
+ var $parseInt$1 = global$t.parseInt;
+ var Symbol$1 = global$t.Symbol;
+ var ITERATOR$4 = Symbol$1 && Symbol$1.iterator;
+ var hex = /^[+-]?0x/i;
+ var FORCED$k = $parseInt$1(whitespaces$1 + '08') !== 8 || $parseInt$1(whitespaces$1 + '0x16') !== 22 // MS Edge 18- broken with boxed symbols
+ || ITERATOR$4 && !fails$G(function () {
+ $parseInt$1(Object(ITERATOR$4));
+ }); // `parseInt` method
+ // https://tc39.es/ecma262/#sec-parseint-string-radix
+
+ var numberParseInt = FORCED$k ? function parseInt(string, radix) {
+ var S = trim$1(toString$k(string));
+ return $parseInt$1(S, radix >>> 0 || (hex.test(S) ? 16 : 10));
+ } : $parseInt$1;
+
+ var $$3b = _export;
+
+ var parseInt$2 = numberParseInt; // `Number.parseInt` method
+ // https://tc39.es/ecma262/#sec-number.parseint
+ // eslint-disable-next-line es/no-number-parseint -- required for testing
+
+
+ $$3b({
+ target: 'Number',
+ stat: true,
+ forced: Number.parseInt != parseInt$2
+ }, {
+ parseInt: parseInt$2
+ });
+
+ var $$3a = _export;
+
+ var toIntegerOrInfinity$7 = toIntegerOrInfinity$i;
+
+ var thisNumberValue$1 = thisNumberValue$3;
+
+ var repeat$1 = stringRepeat;
+
+ var fails$F = fails$15;
+
+ var nativeToFixed = 1.0.toFixed;
+ var floor$4 = Math.floor;
+
+ var pow$1 = function (x, n, acc) {
+ return n === 0 ? acc : n % 2 === 1 ? pow$1(x, n - 1, acc * x) : pow$1(x * x, n / 2, acc);
+ };
+
+ var log = function (x) {
+ var n = 0;
+ var x2 = x;
+
+ while (x2 >= 4096) {
+ n += 12;
+ x2 /= 4096;
+ }
+
+ while (x2 >= 2) {
+ n += 1;
+ x2 /= 2;
+ }
+
+ return n;
+ };
+
+ var multiply = function (data, n, c) {
+ var index = -1;
+ var c2 = c;
+
+ while (++index < 6) {
+ c2 += n * data[index];
+ data[index] = c2 % 1e7;
+ c2 = floor$4(c2 / 1e7);
+ }
+ };
+
+ var divide = function (data, n) {
+ var index = 6;
+ var c = 0;
+
+ while (--index >= 0) {
+ c += data[index];
+ data[index] = floor$4(c / n);
+ c = c % n * 1e7;
+ }
+ };
+
+ var dataToString = function (data) {
+ var index = 6;
+ var s = '';
+
+ while (--index >= 0) {
+ if (s !== '' || index === 0 || data[index] !== 0) {
+ var t = String(data[index]);
+ s = s === '' ? t : s + repeat$1.call('0', 7 - t.length) + t;
+ }
+ }
+
+ return s;
+ };
+
+ var FORCED$j = nativeToFixed && (0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || 1000000000000000128.0.toFixed(0) !== '1000000000000000128') || !fails$F(function () {
+ // V8 ~ Android 4.3-
+ nativeToFixed.call({});
+ }); // `Number.prototype.toFixed` method
+ // https://tc39.es/ecma262/#sec-number.prototype.tofixed
+
+ $$3a({
+ target: 'Number',
+ proto: true,
+ forced: FORCED$j
+ }, {
+ toFixed: function toFixed(fractionDigits) {
+ var number = thisNumberValue$1(this);
+ var fractDigits = toIntegerOrInfinity$7(fractionDigits);
+ var data = [0, 0, 0, 0, 0, 0];
+ var sign = '';
+ var result = '0';
+ var e, z, j, k;
+ if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (number != number) return 'NaN';
+ if (number <= -1e21 || number >= 1e21) return String(number);
+
+ if (number < 0) {
+ sign = '-';
+ number = -number;
+ }
+
+ if (number > 1e-21) {
+ e = log(number * pow$1(2, 69, 1)) - 69;
+ z = e < 0 ? number * pow$1(2, -e, 1) : number / pow$1(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+
+ if (e > 0) {
+ multiply(data, 0, z);
+ j = fractDigits;
+
+ while (j >= 7) {
+ multiply(data, 1e7, 0);
+ j -= 7;
+ }
+
+ multiply(data, pow$1(10, j, 1), 0);
+ j = e - 1;
+
+ while (j >= 23) {
+ divide(data, 1 << 23);
+ j -= 23;
+ }
+
+ divide(data, 1 << j);
+ multiply(data, 1, 1);
+ divide(data, 2);
+ result = dataToString(data);
+ } else {
+ multiply(data, 0, z);
+ multiply(data, 1 << -e, 0);
+ result = dataToString(data) + repeat$1.call('0', fractDigits);
+ }
+ }
+
+ if (fractDigits > 0) {
+ k = result.length;
+ result = sign + (k <= fractDigits ? '0.' + repeat$1.call('0', fractDigits - k) + result : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
+ } else {
+ result = sign + result;
+ }
+
+ return result;
+ }
+ });
+
+ var $$39 = _export;
+
+ var fails$E = fails$15;
+
+ var thisNumberValue = thisNumberValue$3;
+
+ var nativeToPrecision = 1.0.toPrecision;
+ var FORCED$i = fails$E(function () {
+ // IE7-
+ return nativeToPrecision.call(1, undefined) !== '1';
+ }) || !fails$E(function () {
+ // V8 ~ Android 4.3-
+ nativeToPrecision.call({});
+ }); // `Number.prototype.toPrecision` method
+ // https://tc39.es/ecma262/#sec-number.prototype.toprecision
+
+ $$39({
+ target: 'Number',
+ proto: true,
+ forced: FORCED$i
+ }, {
+ toPrecision: function toPrecision(precision) {
+ return precision === undefined ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision);
+ }
+ });
+
+ var DESCRIPTORS$m = descriptors;
+
+ var fails$D = fails$15;
+
+ var objectKeys$2 = objectKeys$5;
+
+ var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;
+
+ var propertyIsEnumerableModule = objectPropertyIsEnumerable;
+
+ var toObject$k = toObject$A;
+
+ var IndexedObject$2 = indexedObject; // eslint-disable-next-line es/no-object-assign -- safe
+
+
+ var $assign = Object.assign; // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+
+ var defineProperty$7 = Object.defineProperty; // `Object.assign` method
+ // https://tc39.es/ecma262/#sec-object.assign
+
+ var objectAssign$1 = !$assign || fails$D(function () {
+ // should have correct order of operations (Edge bug)
+ if (DESCRIPTORS$m && $assign({
+ b: 1
+ }, $assign(defineProperty$7({}, 'a', {
+ enumerable: true,
+ get: function () {
+ defineProperty$7(this, 'b', {
+ value: 3,
+ enumerable: false
+ });
+ }
+ }), {
+ b: 2
+ })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug)
+
+ var A = {};
+ var B = {}; // eslint-disable-next-line es/no-symbol -- safe
+
+ var symbol = Symbol();
+ var alphabet = 'abcdefghijklmnopqrst';
+ A[symbol] = 7;
+ alphabet.split('').forEach(function (chr) {
+ B[chr] = chr;
+ });
+ return $assign({}, A)[symbol] != 7 || objectKeys$2($assign({}, B)).join('') != alphabet;
+ }) ? function assign(target, source) {
+ // eslint-disable-line no-unused-vars -- required for `.length`
+ var T = toObject$k(target);
+ var argumentsLength = arguments.length;
+ var index = 1;
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+ var propertyIsEnumerable = propertyIsEnumerableModule.f;
+
+ while (argumentsLength > index) {
+ var S = IndexedObject$2(arguments[index++]);
+ var keys = getOwnPropertySymbols ? objectKeys$2(S).concat(getOwnPropertySymbols(S)) : objectKeys$2(S);
+ var length = keys.length;
+ var j = 0;
+ var key;
+
+ while (length > j) {
+ key = keys[j++];
+ if (!DESCRIPTORS$m || propertyIsEnumerable.call(S, key)) T[key] = S[key];
+ }
+ }
+
+ return T;
+ } : $assign;
+
+ var $$38 = _export;
+
+ var assign$4 = objectAssign$1; // `Object.assign` method
+ // https://tc39.es/ecma262/#sec-object.assign
+ // eslint-disable-next-line es/no-object-assign -- required for testing
+
+
+ $$38({
+ target: 'Object',
+ stat: true,
+ forced: Object.assign !== assign$4
+ }, {
+ assign: assign$4
+ });
+
+ var $$37 = _export;
+
+ var DESCRIPTORS$l = descriptors;
+
+ var create$9 = objectCreate$1; // `Object.create` method
+ // https://tc39.es/ecma262/#sec-object.create
+
+
+ $$37({
+ target: 'Object',
+ stat: true,
+ sham: !DESCRIPTORS$l
+ }, {
+ create: create$9
+ });
+
+ var global$s = global$R;
+
+ var fails$C = fails$15;
+
+ var WEBKIT$1 = engineWebkitVersion; // Forced replacement object prototype accessors methods
+
+
+ var objectPrototypeAccessorsForced = !fails$C(function () {
+ // This feature detection crashes old WebKit
+ // https://github.com/zloirock/core-js/issues/232
+ if (WEBKIT$1 && WEBKIT$1 < 535) return;
+ var key = Math.random(); // In FF throws only define methods
+ // eslint-disable-next-line no-undef, no-useless-call -- required for testing
+
+ __defineSetter__.call(null, key, function () {
+ /* empty */
+ });
+
+ delete global$s[key];
+ });
+
+ var $$36 = _export;
+
+ var DESCRIPTORS$k = descriptors;
+
+ var FORCED$h = objectPrototypeAccessorsForced;
+
+ var aCallable$I = aCallable$Q;
+
+ var toObject$j = toObject$A;
+
+ var definePropertyModule$4 = objectDefineProperty; // `Object.prototype.__defineGetter__` method
+ // https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__
+
+
+ if (DESCRIPTORS$k) {
+ $$36({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$h
+ }, {
+ __defineGetter__: function __defineGetter__(P, getter) {
+ definePropertyModule$4.f(toObject$j(this), P, {
+ get: aCallable$I(getter),
+ enumerable: true,
+ configurable: true
+ });
+ }
+ });
+ }
+
+ var $$35 = _export;
+
+ var DESCRIPTORS$j = descriptors;
+
+ var defineProperties$2 = objectDefineProperties; // `Object.defineProperties` method
+ // https://tc39.es/ecma262/#sec-object.defineproperties
+
+
+ $$35({
+ target: 'Object',
+ stat: true,
+ forced: !DESCRIPTORS$j,
+ sham: !DESCRIPTORS$j
+ }, {
+ defineProperties: defineProperties$2
+ });
+
+ var $$34 = _export;
+
+ var DESCRIPTORS$i = descriptors;
+
+ var objectDefinePropertyModile = objectDefineProperty; // `Object.defineProperty` method
+ // https://tc39.es/ecma262/#sec-object.defineproperty
+
+
+ $$34({
+ target: 'Object',
+ stat: true,
+ forced: !DESCRIPTORS$i,
+ sham: !DESCRIPTORS$i
+ }, {
+ defineProperty: objectDefinePropertyModile.f
+ });
+
+ var $$33 = _export;
+
+ var DESCRIPTORS$h = descriptors;
+
+ var FORCED$g = objectPrototypeAccessorsForced;
+
+ var aCallable$H = aCallable$Q;
+
+ var toObject$i = toObject$A;
+
+ var definePropertyModule$3 = objectDefineProperty; // `Object.prototype.__defineSetter__` method
+ // https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__
+
+
+ if (DESCRIPTORS$h) {
+ $$33({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$g
+ }, {
+ __defineSetter__: function __defineSetter__(P, setter) {
+ definePropertyModule$3.f(toObject$i(this), P, {
+ set: aCallable$H(setter),
+ enumerable: true,
+ configurable: true
+ });
+ }
+ });
+ }
+
+ var DESCRIPTORS$g = descriptors;
+
+ var objectKeys$1 = objectKeys$5;
+
+ var toIndexedObject$3 = toIndexedObject$d;
+
+ var propertyIsEnumerable = objectPropertyIsEnumerable.f; // `Object.{ entries, values }` methods implementation
+
+
+ var createMethod$3 = function (TO_ENTRIES) {
+ return function (it) {
+ var O = toIndexedObject$3(it);
+ var keys = objectKeys$1(O);
+ var length = keys.length;
+ var i = 0;
+ var result = [];
+ var key;
+
+ while (length > i) {
+ key = keys[i++];
+
+ if (!DESCRIPTORS$g || propertyIsEnumerable.call(O, key)) {
+ result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
+ }
+ }
+
+ return result;
+ };
+ };
+
+ var objectToArray = {
+ // `Object.entries` method
+ // https://tc39.es/ecma262/#sec-object.entries
+ entries: createMethod$3(true),
+ // `Object.values` method
+ // https://tc39.es/ecma262/#sec-object.values
+ values: createMethod$3(false)
+ };
+
+ var $$32 = _export;
+
+ var $entries = objectToArray.entries; // `Object.entries` method
+ // https://tc39.es/ecma262/#sec-object.entries
+
+
+ $$32({
+ target: 'Object',
+ stat: true
+ }, {
+ entries: function entries(O) {
+ return $entries(O);
+ }
+ });
+
+ var $$31 = _export;
+
+ var FREEZING$3 = freezing;
+
+ var fails$B = fails$15;
+
+ var isObject$j = isObject$C;
+
+ var onFreeze$2 = internalMetadata.exports.onFreeze; // eslint-disable-next-line es/no-object-freeze -- safe
+
+
+ var $freeze = Object.freeze;
+ var FAILS_ON_PRIMITIVES$9 = fails$B(function () {
+ $freeze(1);
+ }); // `Object.freeze` method
+ // https://tc39.es/ecma262/#sec-object.freeze
+
+ $$31({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$9,
+ sham: !FREEZING$3
+ }, {
+ freeze: function freeze(it) {
+ return $freeze && isObject$j(it) ? $freeze(onFreeze$2(it)) : it;
+ }
+ });
+
+ var $$30 = _export;
+
+ var iterate$E = iterate$I;
+
+ var createProperty$1 = createProperty$7; // `Object.fromEntries` method
+ // https://github.com/tc39/proposal-object-from-entries
+
+
+ $$30({
+ target: 'Object',
+ stat: true
+ }, {
+ fromEntries: function fromEntries(iterable) {
+ var obj = {};
+ iterate$E(iterable, function (k, v) {
+ createProperty$1(obj, k, v);
+ }, {
+ AS_ENTRIES: true
+ });
+ return obj;
+ }
+ });
+
+ var $$2$ = _export;
+
+ var fails$A = fails$15;
+
+ var toIndexedObject$2 = toIndexedObject$d;
+
+ var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
+
+ var DESCRIPTORS$f = descriptors;
+
+ var FAILS_ON_PRIMITIVES$8 = fails$A(function () {
+ nativeGetOwnPropertyDescriptor$1(1);
+ });
+ var FORCED$f = !DESCRIPTORS$f || FAILS_ON_PRIMITIVES$8; // `Object.getOwnPropertyDescriptor` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+
+ $$2$({
+ target: 'Object',
+ stat: true,
+ forced: FORCED$f,
+ sham: !DESCRIPTORS$f
+ }, {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
+ return nativeGetOwnPropertyDescriptor$1(toIndexedObject$2(it), key);
+ }
+ });
+
+ var $$2_ = _export;
+
+ var DESCRIPTORS$e = descriptors;
+
+ var ownKeys$1 = ownKeys$3;
+
+ var toIndexedObject$1 = toIndexedObject$d;
+
+ var getOwnPropertyDescriptorModule$4 = objectGetOwnPropertyDescriptor;
+
+ var createProperty = createProperty$7; // `Object.getOwnPropertyDescriptors` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+
+
+ $$2_({
+ target: 'Object',
+ stat: true,
+ sham: !DESCRIPTORS$e
+ }, {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
+ var O = toIndexedObject$1(object);
+ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$4.f;
+ var keys = ownKeys$1(O);
+ var result = {};
+ var index = 0;
+ var key, descriptor;
+
+ while (keys.length > index) {
+ descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);
+ if (descriptor !== undefined) createProperty(result, key, descriptor);
+ }
+
+ return result;
+ }
+ });
+
+ var $$2Z = _export;
+
+ var fails$z = fails$15;
+
+ var getOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal.f; // eslint-disable-next-line es/no-object-getownpropertynames -- required for testing
+
+
+ var FAILS_ON_PRIMITIVES$7 = fails$z(function () {
+ return !Object.getOwnPropertyNames(1);
+ }); // `Object.getOwnPropertyNames` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertynames
+
+ $$2Z({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$7
+ }, {
+ getOwnPropertyNames: getOwnPropertyNames$3
+ });
+
+ var $$2Y = _export;
+
+ var fails$y = fails$15;
+
+ var toObject$h = toObject$A;
+
+ var nativeGetPrototypeOf = objectGetPrototypeOf$1;
+
+ var CORRECT_PROTOTYPE_GETTER$1 = correctPrototypeGetter;
+
+ var FAILS_ON_PRIMITIVES$6 = fails$y(function () {
+ nativeGetPrototypeOf(1);
+ }); // `Object.getPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-object.getprototypeof
+
+ $$2Y({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$6,
+ sham: !CORRECT_PROTOTYPE_GETTER$1
+ }, {
+ getPrototypeOf: function getPrototypeOf(it) {
+ return nativeGetPrototypeOf(toObject$h(it));
+ }
+ });
+
+ var $$2X = _export;
+
+ var hasOwn$9 = hasOwnProperty_1; // `Object.hasOwn` method
+ // https://github.com/tc39/proposal-accessible-object-hasownproperty
+
+
+ $$2X({
+ target: 'Object',
+ stat: true
+ }, {
+ hasOwn: hasOwn$9
+ });
+
+ // `SameValue` abstract operation
+ // https://tc39.es/ecma262/#sec-samevalue
+ // eslint-disable-next-line es/no-object-is -- safe
+ var sameValue$1 = Object.is || function is(x, y) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+ };
+
+ var $$2W = _export;
+
+ var is = sameValue$1; // `Object.is` method
+ // https://tc39.es/ecma262/#sec-object.is
+
+
+ $$2W({
+ target: 'Object',
+ stat: true
+ }, {
+ is: is
+ });
+
+ var $$2V = _export;
+
+ var fails$x = fails$15;
+
+ var isObject$i = isObject$C; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+
+ var $isExtensible = Object.isExtensible;
+ var FAILS_ON_PRIMITIVES$5 = fails$x(function () {
+ $isExtensible(1);
+ }); // `Object.isExtensible` method
+ // https://tc39.es/ecma262/#sec-object.isextensible
+
+ $$2V({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$5
+ }, {
+ isExtensible: function isExtensible(it) {
+ return isObject$i(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ }
+ });
+
+ var $$2U = _export;
+
+ var fails$w = fails$15;
+
+ var isObject$h = isObject$C; // eslint-disable-next-line es/no-object-isfrozen -- safe
+
+
+ var $isFrozen = Object.isFrozen;
+ var FAILS_ON_PRIMITIVES$4 = fails$w(function () {
+ $isFrozen(1);
+ }); // `Object.isFrozen` method
+ // https://tc39.es/ecma262/#sec-object.isfrozen
+
+ $$2U({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$4
+ }, {
+ isFrozen: function isFrozen(it) {
+ return isObject$h(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ }
+ });
+
+ var $$2T = _export;
+
+ var fails$v = fails$15;
+
+ var isObject$g = isObject$C; // eslint-disable-next-line es/no-object-issealed -- safe
+
+
+ var $isSealed = Object.isSealed;
+ var FAILS_ON_PRIMITIVES$3 = fails$v(function () {
+ $isSealed(1);
+ }); // `Object.isSealed` method
+ // https://tc39.es/ecma262/#sec-object.issealed
+
+ $$2T({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$3
+ }, {
+ isSealed: function isSealed(it) {
+ return isObject$g(it) ? $isSealed ? $isSealed(it) : false : true;
+ }
+ });
+
+ var $$2S = _export;
+
+ var toObject$g = toObject$A;
+
+ var nativeKeys = objectKeys$5;
+
+ var fails$u = fails$15;
+
+ var FAILS_ON_PRIMITIVES$2 = fails$u(function () {
+ nativeKeys(1);
+ }); // `Object.keys` method
+ // https://tc39.es/ecma262/#sec-object.keys
+
+ $$2S({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$2
+ }, {
+ keys: function keys(it) {
+ return nativeKeys(toObject$g(it));
+ }
+ });
+
+ var $$2R = _export;
+
+ var DESCRIPTORS$d = descriptors;
+
+ var FORCED$e = objectPrototypeAccessorsForced;
+
+ var toObject$f = toObject$A;
+
+ var toPropertyKey$4 = toPropertyKey$9;
+
+ var getPrototypeOf$8 = objectGetPrototypeOf$1;
+
+ var getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor.f; // `Object.prototype.__lookupGetter__` method
+ // https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__
+
+
+ if (DESCRIPTORS$d) {
+ $$2R({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$e
+ }, {
+ __lookupGetter__: function __lookupGetter__(P) {
+ var O = toObject$f(this);
+ var key = toPropertyKey$4(P);
+ var desc;
+
+ do {
+ if (desc = getOwnPropertyDescriptor$6(O, key)) return desc.get;
+ } while (O = getPrototypeOf$8(O));
+ }
+ });
+ }
+
+ var $$2Q = _export;
+
+ var DESCRIPTORS$c = descriptors;
+
+ var FORCED$d = objectPrototypeAccessorsForced;
+
+ var toObject$e = toObject$A;
+
+ var toPropertyKey$3 = toPropertyKey$9;
+
+ var getPrototypeOf$7 = objectGetPrototypeOf$1;
+
+ var getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor.f; // `Object.prototype.__lookupSetter__` method
+ // https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__
+
+
+ if (DESCRIPTORS$c) {
+ $$2Q({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$d
+ }, {
+ __lookupSetter__: function __lookupSetter__(P) {
+ var O = toObject$e(this);
+ var key = toPropertyKey$3(P);
+ var desc;
+
+ do {
+ if (desc = getOwnPropertyDescriptor$5(O, key)) return desc.set;
+ } while (O = getPrototypeOf$7(O));
+ }
+ });
+ }
+
+ var $$2P = _export;
+
+ var isObject$f = isObject$C;
+
+ var onFreeze$1 = internalMetadata.exports.onFreeze;
+
+ var FREEZING$2 = freezing;
+
+ var fails$t = fails$15; // eslint-disable-next-line es/no-object-preventextensions -- safe
+
+
+ var $preventExtensions = Object.preventExtensions;
+ var FAILS_ON_PRIMITIVES$1 = fails$t(function () {
+ $preventExtensions(1);
+ }); // `Object.preventExtensions` method
+ // https://tc39.es/ecma262/#sec-object.preventextensions
+
+ $$2P({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$1,
+ sham: !FREEZING$2
+ }, {
+ preventExtensions: function preventExtensions(it) {
+ return $preventExtensions && isObject$f(it) ? $preventExtensions(onFreeze$1(it)) : it;
+ }
+ });
+
+ var $$2O = _export;
+
+ var isObject$e = isObject$C;
+
+ var onFreeze = internalMetadata.exports.onFreeze;
+
+ var FREEZING$1 = freezing;
+
+ var fails$s = fails$15; // eslint-disable-next-line es/no-object-seal -- safe
+
+
+ var $seal = Object.seal;
+ var FAILS_ON_PRIMITIVES = fails$s(function () {
+ $seal(1);
+ }); // `Object.seal` method
+ // https://tc39.es/ecma262/#sec-object.seal
+
+ $$2O({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES,
+ sham: !FREEZING$1
+ }, {
+ seal: function seal(it) {
+ return $seal && isObject$e(it) ? $seal(onFreeze(it)) : it;
+ }
+ });
+
+ var $$2N = _export;
+
+ var setPrototypeOf$2 = objectSetPrototypeOf$1; // `Object.setPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-object.setprototypeof
+
+
+ $$2N({
+ target: 'Object',
+ stat: true
+ }, {
+ setPrototypeOf: setPrototypeOf$2
+ });
+
+ var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport;
+
+ var classof$5 = classof$b; // `Object.prototype.toString` method implementation
+ // https://tc39.es/ecma262/#sec-object.prototype.tostring
+
+
+ var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() {
+ return '[object ' + classof$5(this) + ']';
+ };
+
+ var TO_STRING_TAG_SUPPORT = toStringTagSupport;
+
+ var redefine$a = redefine$l.exports;
+
+ var toString$j = objectToString; // `Object.prototype.toString` method
+ // https://tc39.es/ecma262/#sec-object.prototype.tostring
+
+
+ if (!TO_STRING_TAG_SUPPORT) {
+ redefine$a(Object.prototype, 'toString', toString$j, {
+ unsafe: true
+ });
+ }
+
+ var $$2M = _export;
+
+ var $values = objectToArray.values; // `Object.values` method
+ // https://tc39.es/ecma262/#sec-object.values
+
+
+ $$2M({
+ target: 'Object',
+ stat: true
+ }, {
+ values: function values(O) {
+ return $values(O);
+ }
+ });
+
+ var $$2L = _export;
+
+ var $parseFloat = numberParseFloat; // `parseFloat` method
+ // https://tc39.es/ecma262/#sec-parsefloat-string
+
+
+ $$2L({
+ global: true,
+ forced: parseFloat != $parseFloat
+ }, {
+ parseFloat: $parseFloat
+ });
+
+ var $$2K = _export;
+
+ var $parseInt = numberParseInt; // `parseInt` method
+ // https://tc39.es/ecma262/#sec-parseint-string-radix
+
+
+ $$2K({
+ global: true,
+ forced: parseInt != $parseInt
+ }, {
+ parseInt: $parseInt
+ });
+
+ var global$r = global$R;
+
+ var nativePromiseConstructor = global$r.Promise;
+
+ var userAgent$4 = engineUserAgent;
+
+ var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$4);
+
+ var global$q = global$R;
+
+ var isCallable$d = isCallable$z;
+
+ var fails$r = fails$15;
+
+ var bind$k = functionBindContext;
+
+ var html = html$2;
+
+ var createElement = documentCreateElement$2;
+
+ var IS_IOS$1 = engineIsIos;
+
+ var IS_NODE$3 = engineIsNode;
+
+ var set$2 = global$q.setImmediate;
+ var clear = global$q.clearImmediate;
+ var process$3 = global$q.process;
+ var MessageChannel = global$q.MessageChannel;
+ var Dispatch$1 = global$q.Dispatch;
+ var counter = 0;
+ var queue = {};
+ var ONREADYSTATECHANGE = 'onreadystatechange';
+ var location$1, defer, channel, port;
+
+ try {
+ // Deno throws a ReferenceError on `location` access without `--location` flag
+ location$1 = global$q.location;
+ } catch (error) {
+ /* empty */
+ }
+
+ var run = function (id) {
+ // eslint-disable-next-line no-prototype-builtins -- safe
+ if (queue.hasOwnProperty(id)) {
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+ };
+
+ var runner = function (id) {
+ return function () {
+ run(id);
+ };
+ };
+
+ var listener = function (event) {
+ run(event.data);
+ };
+
+ var post = function (id) {
+ // old engines have not location.origin
+ global$q.postMessage(String(id), location$1.protocol + '//' + location$1.host);
+ }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+
+
+ if (!set$2 || !clear) {
+ set$2 = function setImmediate(fn) {
+ var args = [];
+ var argumentsLength = arguments.length;
+ var i = 1;
+
+ while (argumentsLength > i) args.push(arguments[i++]);
+
+ queue[++counter] = function () {
+ // eslint-disable-next-line no-new-func -- spec requirement
+ (isCallable$d(fn) ? fn : Function(fn)).apply(undefined, args);
+ };
+
+ defer(counter);
+ return counter;
+ };
+
+ clear = function clearImmediate(id) {
+ delete queue[id];
+ }; // Node.js 0.8-
+
+
+ if (IS_NODE$3) {
+ defer = function (id) {
+ process$3.nextTick(runner(id));
+ }; // Sphere (JS game engine) Dispatch API
+
+ } else if (Dispatch$1 && Dispatch$1.now) {
+ defer = function (id) {
+ Dispatch$1.now(runner(id));
+ }; // Browsers with MessageChannel, includes WebWorkers
+ // except iOS - https://github.com/zloirock/core-js/issues/624
+
+ } else if (MessageChannel && !IS_IOS$1) {
+ channel = new MessageChannel();
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = bind$k(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if (global$q.addEventListener && isCallable$d(global$q.postMessage) && !global$q.importScripts && location$1 && location$1.protocol !== 'file:' && !fails$r(post)) {
+ defer = post;
+ global$q.addEventListener('message', listener, false); // IE8-
+ } else if (ONREADYSTATECHANGE in createElement('script')) {
+ defer = function (id) {
+ html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
+ html.removeChild(this);
+ run(id);
+ };
+ }; // Rest old browsers
+
+ } else {
+ defer = function (id) {
+ setTimeout(runner(id), 0);
+ };
+ }
+ }
+
+ var task$2 = {
+ set: set$2,
+ clear: clear
+ };
+
+ var userAgent$3 = engineUserAgent;
+
+ var global$p = global$R;
+
+ var engineIsIosPebble = /ipad|iphone|ipod/i.test(userAgent$3) && global$p.Pebble !== undefined;
+
+ var userAgent$2 = engineUserAgent;
+
+ var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent$2);
+
+ var global$o = global$R;
+
+ var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f;
+
+ var macrotask = task$2.set;
+
+ var IS_IOS = engineIsIos;
+
+ var IS_IOS_PEBBLE = engineIsIosPebble;
+
+ var IS_WEBOS_WEBKIT = engineIsWebosWebkit;
+
+ var IS_NODE$2 = engineIsNode;
+
+ var MutationObserver = global$o.MutationObserver || global$o.WebKitMutationObserver;
+ var document$2 = global$o.document;
+ var process$2 = global$o.process;
+ var Promise$4 = global$o.Promise; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
+
+ var queueMicrotaskDescriptor = getOwnPropertyDescriptor$4(global$o, 'queueMicrotask');
+ var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
+ var flush, head, last, notify$1, toggle, node, promise, then; // modern engines have queueMicrotask method
+
+ if (!queueMicrotask) {
+ flush = function () {
+ var parent, fn;
+ if (IS_NODE$2 && (parent = process$2.domain)) parent.exit();
+
+ while (head) {
+ fn = head.fn;
+ head = head.next;
+
+ try {
+ fn();
+ } catch (error) {
+ if (head) notify$1();else last = undefined;
+ throw error;
+ }
+ }
+
+ last = undefined;
+ if (parent) parent.enter();
+ }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
+ // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
+
+
+ if (!IS_IOS && !IS_NODE$2 && !IS_WEBOS_WEBKIT && MutationObserver && document$2) {
+ toggle = true;
+ node = document$2.createTextNode('');
+ new MutationObserver(flush).observe(node, {
+ characterData: true
+ });
+
+ notify$1 = function () {
+ node.data = toggle = !toggle;
+ }; // environments with maybe non-completely correct, but existent Promise
+
+ } else if (!IS_IOS_PEBBLE && Promise$4 && Promise$4.resolve) {
+ // Promise.resolve without an argument throws an error in LG WebOS 2
+ promise = Promise$4.resolve(undefined); // workaround of WebKit ~ iOS Safari 10.1 bug
+
+ promise.constructor = Promise$4;
+ then = promise.then;
+
+ notify$1 = function () {
+ then.call(promise, flush);
+ }; // Node.js without promises
+
+ } else if (IS_NODE$2) {
+ notify$1 = function () {
+ process$2.nextTick(flush);
+ }; // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+
+ } else {
+ notify$1 = function () {
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global$o, flush);
+ };
+ }
+ }
+
+ var microtask$2 = queueMicrotask || function (fn) {
+ var task = {
+ fn: fn,
+ next: undefined
+ };
+ if (last) last.next = task;
+
+ if (!head) {
+ head = task;
+ notify$1();
+ }
+
+ last = task;
+ };
+
+ var newPromiseCapability$2 = {};
+
+ var aCallable$G = aCallable$Q;
+
+ var PromiseCapability = function (C) {
+ var resolve, reject;
+ this.promise = new C(function ($$resolve, $$reject) {
+ if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aCallable$G(resolve);
+ this.reject = aCallable$G(reject);
+ }; // `NewPromiseCapability` abstract operation
+ // https://tc39.es/ecma262/#sec-newpromisecapability
+
+
+ newPromiseCapability$2.f = function (C) {
+ return new PromiseCapability(C);
+ };
+
+ var anObject$1o = anObject$1C;
+
+ var isObject$d = isObject$C;
+
+ var newPromiseCapability$1 = newPromiseCapability$2;
+
+ var promiseResolve$2 = function (C, x) {
+ anObject$1o(C);
+ if (isObject$d(x) && x.constructor === C) return x;
+ var promiseCapability = newPromiseCapability$1.f(C);
+ var resolve = promiseCapability.resolve;
+ resolve(x);
+ return promiseCapability.promise;
+ };
+
+ var global$n = global$R;
+
+ var hostReportErrors$2 = function (a, b) {
+ var console = global$n.console;
+
+ if (console && console.error) {
+ arguments.length === 1 ? console.error(a) : console.error(a, b);
+ }
+ };
+
+ var perform$4 = function (exec) {
+ try {
+ return {
+ error: false,
+ value: exec()
+ };
+ } catch (error) {
+ return {
+ error: true,
+ value: error
+ };
+ }
+ };
+
+ var engineIsBrowser = typeof window == 'object';
+
+ var $$2J = _export;
+
+ var global$m = global$R;
+
+ var getBuiltIn$p = getBuiltIn$y;
+
+ var NativePromise$1 = nativePromiseConstructor;
+
+ var redefine$9 = redefine$l.exports;
+
+ var redefineAll$7 = redefineAll$a;
+
+ var setPrototypeOf$1 = objectSetPrototypeOf$1;
+
+ var setToStringTag$3 = setToStringTag$b;
+
+ var setSpecies$3 = setSpecies$7;
+
+ var aCallable$F = aCallable$Q;
+
+ var isCallable$c = isCallable$z;
+
+ var isObject$c = isObject$C;
+
+ var anInstance$7 = anInstance$b;
+
+ var inspectSource = inspectSource$4;
+
+ var iterate$D = iterate$I;
+
+ var checkCorrectnessOfIteration$1 = checkCorrectnessOfIteration$4;
+
+ var speciesConstructor$d = speciesConstructor$f;
+
+ var task$1 = task$2.set;
+
+ var microtask$1 = microtask$2;
+
+ var promiseResolve$1 = promiseResolve$2;
+
+ var hostReportErrors$1 = hostReportErrors$2;
+
+ var newPromiseCapabilityModule$3 = newPromiseCapability$2;
+
+ var perform$3 = perform$4;
+
+ var InternalStateModule$e = internalState;
+
+ var isForced$1 = isForced_1;
+
+ var wellKnownSymbol$k = wellKnownSymbol$G;
+
+ var IS_BROWSER = engineIsBrowser;
+
+ var IS_NODE$1 = engineIsNode;
+
+ var V8_VERSION = engineV8Version;
+
+ var SPECIES$1 = wellKnownSymbol$k('species');
+ var PROMISE = 'Promise';
+ var getInternalState$e = InternalStateModule$e.get;
+ var setInternalState$e = InternalStateModule$e.set;
+ var getInternalPromiseState = InternalStateModule$e.getterFor(PROMISE);
+ var NativePromisePrototype = NativePromise$1 && NativePromise$1.prototype;
+ var PromiseConstructor = NativePromise$1;
+ var PromiseConstructorPrototype = NativePromisePrototype;
+ var TypeError$1 = global$m.TypeError;
+ var document$1 = global$m.document;
+ var process$1 = global$m.process;
+ var newPromiseCapability = newPromiseCapabilityModule$3.f;
+ var newGenericPromiseCapability = newPromiseCapability;
+ var DISPATCH_EVENT = !!(document$1 && document$1.createEvent && global$m.dispatchEvent);
+ var NATIVE_REJECTION_EVENT = isCallable$c(global$m.PromiseRejectionEvent);
+ var UNHANDLED_REJECTION = 'unhandledrejection';
+ var REJECTION_HANDLED = 'rejectionhandled';
+ var PENDING = 0;
+ var FULFILLED = 1;
+ var REJECTED = 2;
+ var HANDLED = 1;
+ var UNHANDLED = 2;
+ var SUBCLASSING = false;
+ var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
+ var FORCED$c = isForced$1(PROMISE, function () {
+ var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);
+ var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor); // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
+ // We can't detect it synchronously, so just check versions
+
+ if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; // We need Promise#finally in the pure version for preventing prototype pollution
+ // deoptimization and performance degradation
+ // https://github.com/zloirock/core-js/issues/679
+
+ if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false; // Detect correctness of subclassing with @@species support
+
+ var promise = new PromiseConstructor(function (resolve) {
+ resolve(1);
+ });
+
+ var FakePromise = function (exec) {
+ exec(function () {
+ /* empty */
+ }, function () {
+ /* empty */
+ });
+ };
+
+ var constructor = promise.constructor = {};
+ constructor[SPECIES$1] = FakePromise;
+ SUBCLASSING = promise.then(function () {
+ /* empty */
+ }) instanceof FakePromise;
+ if (!SUBCLASSING) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+
+ return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;
+ });
+ var INCORRECT_ITERATION = FORCED$c || !checkCorrectnessOfIteration$1(function (iterable) {
+ PromiseConstructor.all(iterable)['catch'](function () {
+ /* empty */
+ });
+ }); // helpers
+
+ var isThenable = function (it) {
+ var then;
+ return isObject$c(it) && isCallable$c(then = it.then) ? then : false;
+ };
+
+ var notify = function (state, isReject) {
+ if (state.notified) return;
+ state.notified = true;
+ var chain = state.reactions;
+ microtask$1(function () {
+ var value = state.value;
+ var ok = state.state == FULFILLED;
+ var index = 0; // variable length - can't use forEach
+
+ while (chain.length > index) {
+ var reaction = chain[index++];
+ var handler = ok ? reaction.ok : reaction.fail;
+ var resolve = reaction.resolve;
+ var reject = reaction.reject;
+ var domain = reaction.domain;
+ var result, then, exited;
+
+ try {
+ if (handler) {
+ if (!ok) {
+ if (state.rejection === UNHANDLED) onHandleUnhandled(state);
+ state.rejection = HANDLED;
+ }
+
+ if (handler === true) result = value;else {
+ if (domain) domain.enter();
+ result = handler(value); // can throw
+
+ if (domain) {
+ domain.exit();
+ exited = true;
+ }
+ }
+
+ if (result === reaction.promise) {
+ reject(TypeError$1('Promise-chain cycle'));
+ } else if (then = isThenable(result)) {
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch (error) {
+ if (domain && !exited) domain.exit();
+ reject(error);
+ }
+ }
+
+ state.reactions = [];
+ state.notified = false;
+ if (isReject && !state.rejection) onUnhandled(state);
+ });
+ };
+
+ var dispatchEvent$1 = function (name, promise, reason) {
+ var event, handler;
+
+ if (DISPATCH_EVENT) {
+ event = document$1.createEvent('Event');
+ event.promise = promise;
+ event.reason = reason;
+ event.initEvent(name, false, true);
+ global$m.dispatchEvent(event);
+ } else event = {
+ promise: promise,
+ reason: reason
+ };
+
+ if (!NATIVE_REJECTION_EVENT && (handler = global$m['on' + name])) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors$1('Unhandled promise rejection', reason);
+ };
+
+ var onUnhandled = function (state) {
+ task$1.call(global$m, function () {
+ var promise = state.facade;
+ var value = state.value;
+ var IS_UNHANDLED = isUnhandled(state);
+ var result;
+
+ if (IS_UNHANDLED) {
+ result = perform$3(function () {
+ if (IS_NODE$1) {
+ process$1.emit('unhandledRejection', value, promise);
+ } else dispatchEvent$1(UNHANDLED_REJECTION, promise, value);
+ }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+
+ state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;
+ if (result.error) throw result.value;
+ }
+ });
+ };
+
+ var isUnhandled = function (state) {
+ return state.rejection !== HANDLED && !state.parent;
+ };
+
+ var onHandleUnhandled = function (state) {
+ task$1.call(global$m, function () {
+ var promise = state.facade;
+
+ if (IS_NODE$1) {
+ process$1.emit('rejectionHandled', promise);
+ } else dispatchEvent$1(REJECTION_HANDLED, promise, state.value);
+ });
+ };
+
+ var bind$j = function (fn, state, unwrap) {
+ return function (value) {
+ fn(state, value, unwrap);
+ };
+ };
+
+ var internalReject = function (state, value, unwrap) {
+ if (state.done) return;
+ state.done = true;
+ if (unwrap) state = unwrap;
+ state.value = value;
+ state.state = REJECTED;
+ notify(state, true);
+ };
+
+ var internalResolve = function (state, value, unwrap) {
+ if (state.done) return;
+ state.done = true;
+ if (unwrap) state = unwrap;
+
+ try {
+ if (state.facade === value) throw TypeError$1("Promise can't be resolved itself");
+ var then = isThenable(value);
+
+ if (then) {
+ microtask$1(function () {
+ var wrapper = {
+ done: false
+ };
+
+ try {
+ then.call(value, bind$j(internalResolve, wrapper, state), bind$j(internalReject, wrapper, state));
+ } catch (error) {
+ internalReject(wrapper, error, state);
+ }
+ });
+ } else {
+ state.value = value;
+ state.state = FULFILLED;
+ notify(state, false);
+ }
+ } catch (error) {
+ internalReject({
+ done: false
+ }, error, state);
+ }
+ }; // constructor polyfill
+
+
+ if (FORCED$c) {
+ // 25.4.3.1 Promise(executor)
+ PromiseConstructor = function Promise(executor) {
+ anInstance$7(this, PromiseConstructor, PROMISE);
+ aCallable$F(executor);
+ Internal.call(this);
+ var state = getInternalState$e(this);
+
+ try {
+ executor(bind$j(internalResolve, state), bind$j(internalReject, state));
+ } catch (error) {
+ internalReject(state, error);
+ }
+ };
+
+ PromiseConstructorPrototype = PromiseConstructor.prototype; // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ Internal = function Promise(executor) {
+ setInternalState$e(this, {
+ type: PROMISE,
+ done: false,
+ notified: false,
+ parent: false,
+ reactions: [],
+ rejection: false,
+ state: PENDING,
+ value: undefined
+ });
+ };
+
+ Internal.prototype = redefineAll$7(PromiseConstructorPrototype, {
+ // `Promise.prototype.then` method
+ // https://tc39.es/ecma262/#sec-promise.prototype.then
+ then: function then(onFulfilled, onRejected) {
+ var state = getInternalPromiseState(this);
+ var reaction = newPromiseCapability(speciesConstructor$d(this, PromiseConstructor));
+ reaction.ok = isCallable$c(onFulfilled) ? onFulfilled : true;
+ reaction.fail = isCallable$c(onRejected) && onRejected;
+ reaction.domain = IS_NODE$1 ? process$1.domain : undefined;
+ state.parent = true;
+ state.reactions.push(reaction);
+ if (state.state != PENDING) notify(state, false);
+ return reaction.promise;
+ },
+ // `Promise.prototype.catch` method
+ // https://tc39.es/ecma262/#sec-promise.prototype.catch
+ 'catch': function (onRejected) {
+ return this.then(undefined, onRejected);
+ }
+ });
+
+ OwnPromiseCapability = function () {
+ var promise = new Internal();
+ var state = getInternalState$e(promise);
+ this.promise = promise;
+ this.resolve = bind$j(internalResolve, state);
+ this.reject = bind$j(internalReject, state);
+ };
+
+ newPromiseCapabilityModule$3.f = newPromiseCapability = function (C) {
+ return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
+ };
+
+ if (isCallable$c(NativePromise$1) && NativePromisePrototype !== Object.prototype) {
+ nativeThen = NativePromisePrototype.then;
+
+ if (!SUBCLASSING) {
+ // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
+ redefine$9(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
+ var that = this;
+ return new PromiseConstructor(function (resolve, reject) {
+ nativeThen.call(that, resolve, reject);
+ }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640
+ }, {
+ unsafe: true
+ }); // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
+
+ redefine$9(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], {
+ unsafe: true
+ });
+ } // make `.constructor === Promise` work for native promise-based APIs
+
+
+ try {
+ delete NativePromisePrototype.constructor;
+ } catch (error) {
+ /* empty */
+ } // make `instanceof Promise` work for native promise-based APIs
+
+
+ if (setPrototypeOf$1) {
+ setPrototypeOf$1(NativePromisePrototype, PromiseConstructorPrototype);
+ }
+ }
+ }
+
+ $$2J({
+ global: true,
+ wrap: true,
+ forced: FORCED$c
+ }, {
+ Promise: PromiseConstructor
+ });
+ setToStringTag$3(PromiseConstructor, PROMISE, false);
+ setSpecies$3(PROMISE);
+ PromiseWrapper = getBuiltIn$p(PROMISE); // statics
+
+ $$2J({
+ target: PROMISE,
+ stat: true,
+ forced: FORCED$c
+ }, {
+ // `Promise.reject` method
+ // https://tc39.es/ecma262/#sec-promise.reject
+ reject: function reject(r) {
+ var capability = newPromiseCapability(this);
+ capability.reject.call(undefined, r);
+ return capability.promise;
+ }
+ });
+ $$2J({
+ target: PROMISE,
+ stat: true,
+ forced: FORCED$c
+ }, {
+ // `Promise.resolve` method
+ // https://tc39.es/ecma262/#sec-promise.resolve
+ resolve: function resolve(x) {
+ return promiseResolve$1(this, x);
+ }
+ });
+ $$2J({
+ target: PROMISE,
+ stat: true,
+ forced: INCORRECT_ITERATION
+ }, {
+ // `Promise.all` method
+ // https://tc39.es/ecma262/#sec-promise.all
+ all: function all(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$3(function () {
+ var $promiseResolve = aCallable$F(C.resolve);
+ var values = [];
+ var counter = 0;
+ var remaining = 1;
+ iterate$D(iterable, function (promise) {
+ var index = counter++;
+ var alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ $promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ },
+ // `Promise.race` method
+ // https://tc39.es/ecma262/#sec-promise.race
+ race: function race(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var reject = capability.reject;
+ var result = perform$3(function () {
+ var $promiseResolve = aCallable$F(C.resolve);
+ iterate$D(iterable, function (promise) {
+ $promiseResolve.call(C, promise).then(capability.resolve, reject);
+ });
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+ });
+
+ var $$2I = _export;
+
+ var aCallable$E = aCallable$Q;
+
+ var newPromiseCapabilityModule$2 = newPromiseCapability$2;
+
+ var perform$2 = perform$4;
+
+ var iterate$C = iterate$I; // `Promise.allSettled` method
+ // https://tc39.es/ecma262/#sec-promise.allsettled
+
+
+ $$2I({
+ target: 'Promise',
+ stat: true
+ }, {
+ allSettled: function allSettled(iterable) {
+ var C = this;
+ var capability = newPromiseCapabilityModule$2.f(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$2(function () {
+ var promiseResolve = aCallable$E(C.resolve);
+ var values = [];
+ var counter = 0;
+ var remaining = 1;
+ iterate$C(iterable, function (promise) {
+ var index = counter++;
+ var alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = {
+ status: 'fulfilled',
+ value: value
+ };
+ --remaining || resolve(values);
+ }, function (error) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = {
+ status: 'rejected',
+ reason: error
+ };
+ --remaining || resolve(values);
+ });
+ });
+ --remaining || resolve(values);
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+ });
+
+ var $$2H = _export;
+
+ var aCallable$D = aCallable$Q;
+
+ var getBuiltIn$o = getBuiltIn$y;
+
+ var newPromiseCapabilityModule$1 = newPromiseCapability$2;
+
+ var perform$1 = perform$4;
+
+ var iterate$B = iterate$I;
+
+ var PROMISE_ANY_ERROR = 'No one promise resolved'; // `Promise.any` method
+ // https://tc39.es/ecma262/#sec-promise.any
+
+ $$2H({
+ target: 'Promise',
+ stat: true
+ }, {
+ any: function any(iterable) {
+ var C = this;
+ var capability = newPromiseCapabilityModule$1.f(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$1(function () {
+ var promiseResolve = aCallable$D(C.resolve);
+ var errors = [];
+ var counter = 0;
+ var remaining = 1;
+ var alreadyResolved = false;
+ iterate$B(iterable, function (promise) {
+ var index = counter++;
+ var alreadyRejected = false;
+ errors.push(undefined);
+ remaining++;
+ promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyRejected || alreadyResolved) return;
+ alreadyResolved = true;
+ resolve(value);
+ }, function (error) {
+ if (alreadyRejected || alreadyResolved) return;
+ alreadyRejected = true;
+ errors[index] = error;
+ --remaining || reject(new (getBuiltIn$o('AggregateError'))(errors, PROMISE_ANY_ERROR));
+ });
+ });
+ --remaining || reject(new (getBuiltIn$o('AggregateError'))(errors, PROMISE_ANY_ERROR));
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+ });
+
+ var $$2G = _export;
+
+ var NativePromise = nativePromiseConstructor;
+
+ var fails$q = fails$15;
+
+ var getBuiltIn$n = getBuiltIn$y;
+
+ var isCallable$b = isCallable$z;
+
+ var speciesConstructor$c = speciesConstructor$f;
+
+ var promiseResolve = promiseResolve$2;
+
+ var redefine$8 = redefine$l.exports; // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
+
+
+ var NON_GENERIC = !!NativePromise && fails$q(function () {
+ NativePromise.prototype['finally'].call({
+ then: function () {
+ /* empty */
+ }
+ }, function () {
+ /* empty */
+ });
+ }); // `Promise.prototype.finally` method
+ // https://tc39.es/ecma262/#sec-promise.prototype.finally
+
+ $$2G({
+ target: 'Promise',
+ proto: true,
+ real: true,
+ forced: NON_GENERIC
+ }, {
+ 'finally': function (onFinally) {
+ var C = speciesConstructor$c(this, getBuiltIn$n('Promise'));
+ var isFunction = isCallable$b(onFinally);
+ return this.then(isFunction ? function (x) {
+ return promiseResolve(C, onFinally()).then(function () {
+ return x;
+ });
+ } : onFinally, isFunction ? function (e) {
+ return promiseResolve(C, onFinally()).then(function () {
+ throw e;
+ });
+ } : onFinally);
+ }
+ }); // makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
+
+ if (isCallable$b(NativePromise)) {
+ var method = getBuiltIn$n('Promise').prototype['finally'];
+
+ if (NativePromise.prototype['finally'] !== method) {
+ redefine$8(NativePromise.prototype, 'finally', method, {
+ unsafe: true
+ });
+ }
+ }
+
+ var $$2F = _export;
+
+ var getBuiltIn$m = getBuiltIn$y;
+
+ var aCallable$C = aCallable$Q;
+
+ var anObject$1n = anObject$1C;
+
+ var fails$p = fails$15;
+
+ var nativeApply = getBuiltIn$m('Reflect', 'apply');
+ var functionApply = Function.apply; // MS Edge argumentsList argument is optional
+
+ var OPTIONAL_ARGUMENTS_LIST = !fails$p(function () {
+ nativeApply(function () {
+ /* empty */
+ });
+ }); // `Reflect.apply` method
+ // https://tc39.es/ecma262/#sec-reflect.apply
+
+ $$2F({
+ target: 'Reflect',
+ stat: true,
+ forced: OPTIONAL_ARGUMENTS_LIST
+ }, {
+ apply: function apply(target, thisArgument, argumentsList) {
+ aCallable$C(target);
+ anObject$1n(argumentsList);
+ return nativeApply ? nativeApply(target, thisArgument, argumentsList) : functionApply.call(target, thisArgument, argumentsList);
+ }
+ });
+
+ var $$2E = _export;
+
+ var getBuiltIn$l = getBuiltIn$y;
+
+ var aConstructor$3 = aConstructor$5;
+
+ var anObject$1m = anObject$1C;
+
+ var isObject$b = isObject$C;
+
+ var create$8 = objectCreate$1;
+
+ var bind$i = functionBind;
+
+ var fails$o = fails$15;
+
+ var nativeConstruct = getBuiltIn$l('Reflect', 'construct'); // `Reflect.construct` method
+ // https://tc39.es/ecma262/#sec-reflect.construct
+ // MS Edge supports only 2 arguments and argumentsList argument is optional
+ // FF Nightly sets third argument as `new.target`, but does not create `this` from it
+
+ var NEW_TARGET_BUG = fails$o(function () {
+ function F() {
+ /* empty */
+ }
+
+ return !(nativeConstruct(function () {
+ /* empty */
+ }, [], F) instanceof F);
+ });
+ var ARGS_BUG = !fails$o(function () {
+ nativeConstruct(function () {
+ /* empty */
+ });
+ });
+ var FORCED$b = NEW_TARGET_BUG || ARGS_BUG;
+ $$2E({
+ target: 'Reflect',
+ stat: true,
+ forced: FORCED$b,
+ sham: FORCED$b
+ }, {
+ construct: function construct(Target, args
+ /* , newTarget */
+ ) {
+ aConstructor$3(Target);
+ anObject$1m(args);
+ var newTarget = arguments.length < 3 ? Target : aConstructor$3(arguments[2]);
+ if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
+
+ if (Target == newTarget) {
+ // w/o altered newTarget, optimization for 0-4 arguments
+ switch (args.length) {
+ case 0:
+ return new Target();
+
+ case 1:
+ return new Target(args[0]);
+
+ case 2:
+ return new Target(args[0], args[1]);
+
+ case 3:
+ return new Target(args[0], args[1], args[2]);
+
+ case 4:
+ return new Target(args[0], args[1], args[2], args[3]);
+ } // w/o altered newTarget, lot of arguments case
+
+
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind$i.apply(Target, $args))();
+ } // with altered newTarget, not support built-in constructors
+
+
+ var proto = newTarget.prototype;
+ var instance = create$8(isObject$b(proto) ? proto : Object.prototype);
+ var result = Function.apply.call(Target, instance, args);
+ return isObject$b(result) ? result : instance;
+ }
+ });
+
+ var $$2D = _export;
+
+ var DESCRIPTORS$b = descriptors;
+
+ var anObject$1l = anObject$1C;
+
+ var toPropertyKey$2 = toPropertyKey$9;
+
+ var definePropertyModule$2 = objectDefineProperty;
+
+ var fails$n = fails$15; // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+
+
+ var ERROR_INSTEAD_OF_FALSE = fails$n(function () {
+ // eslint-disable-next-line es/no-reflect -- required for testing
+ Reflect.defineProperty(definePropertyModule$2.f({}, 1, {
+ value: 1
+ }), 1, {
+ value: 2
+ });
+ }); // `Reflect.defineProperty` method
+ // https://tc39.es/ecma262/#sec-reflect.defineproperty
+
+ $$2D({
+ target: 'Reflect',
+ stat: true,
+ forced: ERROR_INSTEAD_OF_FALSE,
+ sham: !DESCRIPTORS$b
+ }, {
+ defineProperty: function defineProperty(target, propertyKey, attributes) {
+ anObject$1l(target);
+ var key = toPropertyKey$2(propertyKey);
+ anObject$1l(attributes);
+
+ try {
+ definePropertyModule$2.f(target, key, attributes);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+ });
+
+ var $$2C = _export;
+
+ var anObject$1k = anObject$1C;
+
+ var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f; // `Reflect.deleteProperty` method
+ // https://tc39.es/ecma262/#sec-reflect.deleteproperty
+
+
+ $$2C({
+ target: 'Reflect',
+ stat: true
+ }, {
+ deleteProperty: function deleteProperty(target, propertyKey) {
+ var descriptor = getOwnPropertyDescriptor$3(anObject$1k(target), propertyKey);
+ return descriptor && !descriptor.configurable ? false : delete target[propertyKey];
+ }
+ });
+
+ var hasOwn$8 = hasOwnProperty_1;
+
+ var isDataDescriptor$2 = function (descriptor) {
+ return descriptor !== undefined && (hasOwn$8(descriptor, 'value') || hasOwn$8(descriptor, 'writable'));
+ };
+
+ var $$2B = _export;
+
+ var isObject$a = isObject$C;
+
+ var anObject$1j = anObject$1C;
+
+ var isDataDescriptor$1 = isDataDescriptor$2;
+
+ var getOwnPropertyDescriptorModule$3 = objectGetOwnPropertyDescriptor;
+
+ var getPrototypeOf$6 = objectGetPrototypeOf$1; // `Reflect.get` method
+ // https://tc39.es/ecma262/#sec-reflect.get
+
+
+ function get$1(target, propertyKey
+ /* , receiver */
+ ) {
+ var receiver = arguments.length < 3 ? target : arguments[2];
+ var descriptor, prototype;
+ if (anObject$1j(target) === receiver) return target[propertyKey];
+ descriptor = getOwnPropertyDescriptorModule$3.f(target, propertyKey);
+ if (descriptor) return isDataDescriptor$1(descriptor) ? descriptor.value : descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
+ if (isObject$a(prototype = getPrototypeOf$6(target))) return get$1(prototype, propertyKey, receiver);
+ }
+
+ $$2B({
+ target: 'Reflect',
+ stat: true
+ }, {
+ get: get$1
+ });
+
+ var $$2A = _export;
+
+ var DESCRIPTORS$a = descriptors;
+
+ var anObject$1i = anObject$1C;
+
+ var getOwnPropertyDescriptorModule$2 = objectGetOwnPropertyDescriptor; // `Reflect.getOwnPropertyDescriptor` method
+ // https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor
+
+
+ $$2A({
+ target: 'Reflect',
+ stat: true,
+ sham: !DESCRIPTORS$a
+ }, {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
+ return getOwnPropertyDescriptorModule$2.f(anObject$1i(target), propertyKey);
+ }
+ });
+
+ var $$2z = _export;
+
+ var anObject$1h = anObject$1C;
+
+ var objectGetPrototypeOf = objectGetPrototypeOf$1;
+
+ var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; // `Reflect.getPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-reflect.getprototypeof
+
+
+ $$2z({
+ target: 'Reflect',
+ stat: true,
+ sham: !CORRECT_PROTOTYPE_GETTER
+ }, {
+ getPrototypeOf: function getPrototypeOf(target) {
+ return objectGetPrototypeOf(anObject$1h(target));
+ }
+ });
+
+ var $$2y = _export; // `Reflect.has` method
+ // https://tc39.es/ecma262/#sec-reflect.has
+
+
+ $$2y({
+ target: 'Reflect',
+ stat: true
+ }, {
+ has: function has(target, propertyKey) {
+ return propertyKey in target;
+ }
+ });
+
+ var $$2x = _export;
+
+ var anObject$1g = anObject$1C; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+
+ var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method
+ // https://tc39.es/ecma262/#sec-reflect.isextensible
+
+ $$2x({
+ target: 'Reflect',
+ stat: true
+ }, {
+ isExtensible: function isExtensible(target) {
+ anObject$1g(target);
+ return objectIsExtensible ? objectIsExtensible(target) : true;
+ }
+ });
+
+ var $$2w = _export;
+
+ var ownKeys = ownKeys$3; // `Reflect.ownKeys` method
+ // https://tc39.es/ecma262/#sec-reflect.ownkeys
+
+
+ $$2w({
+ target: 'Reflect',
+ stat: true
+ }, {
+ ownKeys: ownKeys
+ });
+
+ var $$2v = _export;
+
+ var getBuiltIn$k = getBuiltIn$y;
+
+ var anObject$1f = anObject$1C;
+
+ var FREEZING = freezing; // `Reflect.preventExtensions` method
+ // https://tc39.es/ecma262/#sec-reflect.preventextensions
+
+
+ $$2v({
+ target: 'Reflect',
+ stat: true,
+ sham: !FREEZING
+ }, {
+ preventExtensions: function preventExtensions(target) {
+ anObject$1f(target);
+
+ try {
+ var objectPreventExtensions = getBuiltIn$k('Object', 'preventExtensions');
+ if (objectPreventExtensions) objectPreventExtensions(target);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+ });
+
+ var $$2u = _export;
+
+ var anObject$1e = anObject$1C;
+
+ var isObject$9 = isObject$C;
+
+ var isDataDescriptor = isDataDescriptor$2;
+
+ var fails$m = fails$15;
+
+ var definePropertyModule$1 = objectDefineProperty;
+
+ var getOwnPropertyDescriptorModule$1 = objectGetOwnPropertyDescriptor;
+
+ var getPrototypeOf$5 = objectGetPrototypeOf$1;
+
+ var createPropertyDescriptor$2 = createPropertyDescriptor$9; // `Reflect.set` method
+ // https://tc39.es/ecma262/#sec-reflect.set
+
+
+ function set$1(target, propertyKey, V
+ /* , receiver */
+ ) {
+ var receiver = arguments.length < 4 ? target : arguments[3];
+ var ownDescriptor = getOwnPropertyDescriptorModule$1.f(anObject$1e(target), propertyKey);
+ var existingDescriptor, prototype, setter;
+
+ if (!ownDescriptor) {
+ if (isObject$9(prototype = getPrototypeOf$5(target))) {
+ return set$1(prototype, propertyKey, V, receiver);
+ }
+
+ ownDescriptor = createPropertyDescriptor$2(0);
+ }
+
+ if (isDataDescriptor(ownDescriptor)) {
+ if (ownDescriptor.writable === false || !isObject$9(receiver)) return false;
+
+ if (existingDescriptor = getOwnPropertyDescriptorModule$1.f(receiver, propertyKey)) {
+ if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
+ existingDescriptor.value = V;
+ definePropertyModule$1.f(receiver, propertyKey, existingDescriptor);
+ } else definePropertyModule$1.f(receiver, propertyKey, createPropertyDescriptor$2(0, V));
+ } else {
+ setter = ownDescriptor.set;
+ if (setter === undefined) return false;
+ setter.call(receiver, V);
+ }
+
+ return true;
+ } // MS Edge 17-18 Reflect.set allows setting the property to object
+ // with non-writable property on the prototype
+
+
+ var MS_EDGE_BUG = fails$m(function () {
+ var Constructor = function () {
+ /* empty */
+ };
+
+ var object = definePropertyModule$1.f(new Constructor(), 'a', {
+ configurable: true
+ }); // eslint-disable-next-line es/no-reflect -- required for testing
+
+ return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
+ });
+ $$2u({
+ target: 'Reflect',
+ stat: true,
+ forced: MS_EDGE_BUG
+ }, {
+ set: set$1
+ });
+
+ var $$2t = _export;
+
+ var anObject$1d = anObject$1C;
+
+ var aPossiblePrototype = aPossiblePrototype$2;
+
+ var objectSetPrototypeOf = objectSetPrototypeOf$1; // `Reflect.setPrototypeOf` method
+ // https://tc39.es/ecma262/#sec-reflect.setprototypeof
+
+
+ if (objectSetPrototypeOf) $$2t({
+ target: 'Reflect',
+ stat: true
+ }, {
+ setPrototypeOf: function setPrototypeOf(target, proto) {
+ anObject$1d(target);
+ aPossiblePrototype(proto);
+
+ try {
+ objectSetPrototypeOf(target, proto);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+ });
+
+ var $$2s = _export;
+
+ var global$l = global$R;
+
+ var setToStringTag$2 = setToStringTag$b;
+
+ $$2s({
+ global: true
+ }, {
+ Reflect: {}
+ }); // Reflect[@@toStringTag] property
+ // https://tc39.es/ecma262/#sec-reflect-@@tostringtag
+
+ setToStringTag$2(global$l.Reflect, 'Reflect', true);
+
+ var isObject$8 = isObject$C;
+
+ var classof$4 = classofRaw$1;
+
+ var wellKnownSymbol$j = wellKnownSymbol$G;
+
+ var MATCH$2 = wellKnownSymbol$j('match'); // `IsRegExp` abstract operation
+ // https://tc39.es/ecma262/#sec-isregexp
+
+ var isRegexp = function (it) {
+ var isRegExp;
+ return isObject$8(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$4(it) == 'RegExp');
+ };
+
+ var anObject$1c = anObject$1C; // `RegExp.prototype.flags` getter implementation
+ // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+
+
+ var regexpFlags$1 = function () {
+ var that = anObject$1c(this);
+ var result = '';
+ if (that.global) result += 'g';
+ if (that.ignoreCase) result += 'i';
+ if (that.multiline) result += 'm';
+ if (that.dotAll) result += 's';
+ if (that.unicode) result += 'u';
+ if (that.sticky) result += 'y';
+ return result;
+ };
+
+ var regexpStickyHelpers = {};
+
+ var fails$l = fails$15;
+
+ var global$k = global$R; // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
+
+
+ var $RegExp$2 = global$k.RegExp;
+ regexpStickyHelpers.UNSUPPORTED_Y = fails$l(function () {
+ var re = $RegExp$2('a', 'y');
+ re.lastIndex = 2;
+ return re.exec('abcd') != null;
+ });
+ regexpStickyHelpers.BROKEN_CARET = fails$l(function () {
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
+ var re = $RegExp$2('^r', 'gy');
+ re.lastIndex = 2;
+ return re.exec('str') != null;
+ });
+
+ var fails$k = fails$15;
+
+ var global$j = global$R; // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
+
+
+ var $RegExp$1 = global$j.RegExp;
+ var regexpUnsupportedDotAll = fails$k(function () {
+ var re = $RegExp$1('.', 's');
+ return !(re.dotAll && re.exec('\n') && re.flags === 's');
+ });
+
+ var fails$j = fails$15;
+
+ var global$i = global$R; // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError
+
+
+ var $RegExp = global$i.RegExp;
+ var regexpUnsupportedNcg = fails$j(function () {
+ var re = $RegExp('(?b)', 'g');
+ return re.exec('b').groups.a !== 'b' || 'b'.replace(re, '$c') !== 'bc';
+ });
+
+ var DESCRIPTORS$9 = descriptors;
+
+ var global$h = global$R;
+
+ var isForced = isForced_1;
+
+ var inheritIfRequired$1 = inheritIfRequired$4;
+
+ var createNonEnumerableProperty$8 = createNonEnumerableProperty$h;
+
+ var defineProperty$6 = objectDefineProperty.f;
+
+ var getOwnPropertyNames$2 = objectGetOwnPropertyNames.f;
+
+ var isRegExp$4 = isRegexp;
+
+ var toString$i = toString$t;
+
+ var getFlags = regexpFlags$1;
+
+ var stickyHelpers$2 = regexpStickyHelpers;
+
+ var redefine$7 = redefine$l.exports;
+
+ var fails$i = fails$15;
+
+ var hasOwn$7 = hasOwnProperty_1;
+
+ var enforceInternalState = internalState.enforce;
+
+ var setSpecies$2 = setSpecies$7;
+
+ var wellKnownSymbol$i = wellKnownSymbol$G;
+
+ var UNSUPPORTED_DOT_ALL$2 = regexpUnsupportedDotAll;
+
+ var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg;
+
+ var MATCH$1 = wellKnownSymbol$i('match');
+ var NativeRegExp = global$h.RegExp;
+ var RegExpPrototype$6 = NativeRegExp.prototype; // TODO: Use only propper RegExpIdentifierName
+
+ var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
+ var re1 = /a/g;
+ var re2 = /a/g; // "new" should create a new object, old webkit bug
+
+ var CORRECT_NEW = new NativeRegExp(re1) !== re1;
+ var UNSUPPORTED_Y$3 = stickyHelpers$2.UNSUPPORTED_Y;
+ var BASE_FORCED = DESCRIPTORS$9 && (!CORRECT_NEW || UNSUPPORTED_Y$3 || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1 || fails$i(function () {
+ re2[MATCH$1] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match
+
+ return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
+ }));
+
+ var handleDotAll = function (string) {
+ var length = string.length;
+ var index = 0;
+ var result = '';
+ var brackets = false;
+ var chr;
+
+ for (; index <= length; index++) {
+ chr = string.charAt(index);
+
+ if (chr === '\\') {
+ result += chr + string.charAt(++index);
+ continue;
+ }
+
+ if (!brackets && chr === '.') {
+ result += '[\\s\\S]';
+ } else {
+ if (chr === '[') {
+ brackets = true;
+ } else if (chr === ']') {
+ brackets = false;
+ }
+
+ result += chr;
+ }
+ }
+
+ return result;
+ };
+
+ var handleNCG = function (string) {
+ var length = string.length;
+ var index = 0;
+ var result = '';
+ var named = [];
+ var names = {};
+ var brackets = false;
+ var ncg = false;
+ var groupid = 0;
+ var groupname = '';
+ var chr;
+
+ for (; index <= length; index++) {
+ chr = string.charAt(index);
+
+ if (chr === '\\') {
+ chr = chr + string.charAt(++index);
+ } else if (chr === ']') {
+ brackets = false;
+ } else if (!brackets) switch (true) {
+ case chr === '[':
+ brackets = true;
+ break;
+
+ case chr === '(':
+ if (IS_NCG.test(string.slice(index + 1))) {
+ index += 2;
+ ncg = true;
+ }
+
+ result += chr;
+ groupid++;
+ continue;
+
+ case chr === '>' && ncg:
+ if (groupname === '' || hasOwn$7(names, groupname)) {
+ throw new SyntaxError('Invalid capture group name');
+ }
+
+ names[groupname] = true;
+ named.push([groupname, groupid]);
+ ncg = false;
+ groupname = '';
+ continue;
+ }
+
+ if (ncg) groupname += chr;else result += chr;
+ }
+
+ return [result, named];
+ }; // `RegExp` constructor
+ // https://tc39.es/ecma262/#sec-regexp-constructor
+
+
+ if (isForced('RegExp', BASE_FORCED)) {
+ var RegExpWrapper = function RegExp(pattern, flags) {
+ var thisIsRegExp = this instanceof RegExpWrapper;
+ var patternIsRegExp = isRegExp$4(pattern);
+ var flagsAreUndefined = flags === undefined;
+ var groups = [];
+ var rawPattern = pattern;
+ var rawFlags, dotAll, sticky, handled, result, state;
+
+ if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {
+ return pattern;
+ }
+
+ if (patternIsRegExp || pattern instanceof RegExpWrapper) {
+ pattern = pattern.source;
+ if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern);
+ }
+
+ pattern = pattern === undefined ? '' : toString$i(pattern);
+ flags = flags === undefined ? '' : toString$i(flags);
+ rawPattern = pattern;
+
+ if (UNSUPPORTED_DOT_ALL$2 && 'dotAll' in re1) {
+ dotAll = !!flags && flags.indexOf('s') > -1;
+ if (dotAll) flags = flags.replace(/s/g, '');
+ }
+
+ rawFlags = flags;
+
+ if (UNSUPPORTED_Y$3 && 'sticky' in re1) {
+ sticky = !!flags && flags.indexOf('y') > -1;
+ if (sticky) flags = flags.replace(/y/g, '');
+ }
+
+ if (UNSUPPORTED_NCG$1) {
+ handled = handleNCG(pattern);
+ pattern = handled[0];
+ groups = handled[1];
+ }
+
+ result = inheritIfRequired$1(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$6, RegExpWrapper);
+
+ if (dotAll || sticky || groups.length) {
+ state = enforceInternalState(result);
+
+ if (dotAll) {
+ state.dotAll = true;
+ state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);
+ }
+
+ if (sticky) state.sticky = true;
+ if (groups.length) state.groups = groups;
+ }
+
+ if (pattern !== rawPattern) try {
+ // fails in old engines, but we have no alternatives for unsupported regex syntax
+ createNonEnumerableProperty$8(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
+ } catch (error) {
+ /* empty */
+ }
+ return result;
+ };
+
+ var proxy = function (key) {
+ key in RegExpWrapper || defineProperty$6(RegExpWrapper, key, {
+ configurable: true,
+ get: function () {
+ return NativeRegExp[key];
+ },
+ set: function (it) {
+ NativeRegExp[key] = it;
+ }
+ });
+ };
+
+ for (var keys = getOwnPropertyNames$2(NativeRegExp), index = 0; keys.length > index;) {
+ proxy(keys[index++]);
+ }
+
+ RegExpPrototype$6.constructor = RegExpWrapper;
+ RegExpWrapper.prototype = RegExpPrototype$6;
+ redefine$7(global$h, 'RegExp', RegExpWrapper);
+ } // https://tc39.es/ecma262/#sec-get-regexp-@@species
+
+
+ setSpecies$2('RegExp');
+
+ var DESCRIPTORS$8 = descriptors;
+
+ var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll;
+
+ var defineProperty$5 = objectDefineProperty.f;
+
+ var getInternalState$d = internalState.get;
+
+ var RegExpPrototype$5 = RegExp.prototype; // `RegExp.prototype.dotAll` getter
+ // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
+
+ if (DESCRIPTORS$8 && UNSUPPORTED_DOT_ALL$1) {
+ defineProperty$5(RegExpPrototype$5, 'dotAll', {
+ configurable: true,
+ get: function () {
+ if (this === RegExpPrototype$5) return undefined; // We can't use InternalStateModule.getterFor because
+ // we don't add metadata for regexps created by a literal.
+
+ if (this instanceof RegExp) {
+ return !!getInternalState$d(this).dotAll;
+ }
+
+ throw TypeError('Incompatible receiver, RegExp required');
+ }
+ });
+ }
+
+ /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
+
+ /* eslint-disable regexp/no-useless-quantifier -- testing */
+
+ var toString$h = toString$t;
+
+ var regexpFlags = regexpFlags$1;
+
+ var stickyHelpers$1 = regexpStickyHelpers;
+
+ var shared$2 = shared$7.exports;
+
+ var create$7 = objectCreate$1;
+
+ var getInternalState$c = internalState.get;
+
+ var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll;
+
+ var UNSUPPORTED_NCG = regexpUnsupportedNcg;
+
+ var nativeExec = RegExp.prototype.exec;
+ var nativeReplace = shared$2('native-string-replace', String.prototype.replace);
+ var patchedExec = nativeExec;
+
+ var UPDATES_LAST_INDEX_WRONG = function () {
+ var re1 = /a/;
+ var re2 = /b*/g;
+ nativeExec.call(re1, 'a');
+ nativeExec.call(re2, 'a');
+ return re1.lastIndex !== 0 || re2.lastIndex !== 0;
+ }();
+
+ var UNSUPPORTED_Y$2 = stickyHelpers$1.UNSUPPORTED_Y || stickyHelpers$1.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch.
+
+ var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
+ var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
+
+ if (PATCH) {
+ // eslint-disable-next-line max-statements -- TODO
+ patchedExec = function exec(string) {
+ var re = this;
+ var state = getInternalState$c(re);
+ var str = toString$h(string);
+ var raw = state.raw;
+ var result, reCopy, lastIndex, match, i, object, group;
+
+ if (raw) {
+ raw.lastIndex = re.lastIndex;
+ result = patchedExec.call(raw, str);
+ re.lastIndex = raw.lastIndex;
+ return result;
+ }
+
+ var groups = state.groups;
+ var sticky = UNSUPPORTED_Y$2 && re.sticky;
+ var flags = regexpFlags.call(re);
+ var source = re.source;
+ var charsAdded = 0;
+ var strCopy = str;
+
+ if (sticky) {
+ flags = flags.replace('y', '');
+
+ if (flags.indexOf('g') === -1) {
+ flags += 'g';
+ }
+
+ strCopy = str.slice(re.lastIndex); // Support anchored sticky behavior.
+
+ if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\n')) {
+ source = '(?: ' + source + ')';
+ strCopy = ' ' + strCopy;
+ charsAdded++;
+ } // ^(? + rx + ) is needed, in combination with some str slicing, to
+ // simulate the 'y' flag.
+
+
+ reCopy = new RegExp('^(?:' + source + ')', flags);
+ }
+
+ if (NPCG_INCLUDED) {
+ reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
+ }
+
+ if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
+ match = nativeExec.call(sticky ? reCopy : re, strCopy);
+
+ if (sticky) {
+ if (match) {
+ match.input = match.input.slice(charsAdded);
+ match[0] = match[0].slice(charsAdded);
+ match.index = re.lastIndex;
+ re.lastIndex += match[0].length;
+ } else re.lastIndex = 0;
+ } else if (UPDATES_LAST_INDEX_WRONG && match) {
+ re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
+ }
+
+ if (NPCG_INCLUDED && match && match.length > 1) {
+ // Fix browsers whose `exec` methods don't consistently return `undefined`
+ // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
+ nativeReplace.call(match[0], reCopy, function () {
+ for (i = 1; i < arguments.length - 2; i++) {
+ if (arguments[i] === undefined) match[i] = undefined;
+ }
+ });
+ }
+
+ if (match && groups) {
+ match.groups = object = create$7(null);
+
+ for (i = 0; i < groups.length; i++) {
+ group = groups[i];
+ object[group[0]] = match[group[1]];
+ }
+ }
+
+ return match;
+ };
+ }
+
+ var regexpExec$3 = patchedExec;
+
+ var $$2r = _export;
+
+ var exec = regexpExec$3; // `RegExp.prototype.exec` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype.exec
+
+
+ $$2r({
+ target: 'RegExp',
+ proto: true,
+ forced: /./.exec !== exec
+ }, {
+ exec: exec
+ });
+
+ var DESCRIPTORS$7 = descriptors;
+
+ var objectDefinePropertyModule = objectDefineProperty;
+
+ var regExpFlags = regexpFlags$1;
+
+ var fails$h = fails$15;
+
+ var FORCED$a = DESCRIPTORS$7 && fails$h(function () {
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+ return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({
+ dotAll: true,
+ sticky: true
+ }) !== 'sy';
+ }); // `RegExp.prototype.flags` getter
+ // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+
+ if (FORCED$a) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: regExpFlags
+ });
+
+ var DESCRIPTORS$6 = descriptors;
+
+ var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y;
+
+ var defineProperty$4 = objectDefineProperty.f;
+
+ var getInternalState$b = internalState.get;
+
+ var RegExpPrototype$4 = RegExp.prototype; // `RegExp.prototype.sticky` getter
+ // https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
+
+ if (DESCRIPTORS$6 && UNSUPPORTED_Y$1) {
+ defineProperty$4(RegExpPrototype$4, 'sticky', {
+ configurable: true,
+ get: function () {
+ if (this === RegExpPrototype$4) return undefined; // We can't use InternalStateModule.getterFor because
+ // we don't add metadata for regexps created by a literal.
+
+ if (this instanceof RegExp) {
+ return !!getInternalState$b(this).sticky;
+ }
+
+ throw TypeError('Incompatible receiver, RegExp required');
+ }
+ });
+ }
+
+ var $$2q = _export;
+
+ var isCallable$a = isCallable$z;
+
+ var isObject$7 = isObject$C;
+
+ var DELEGATES_TO_EXEC = function () {
+ var execCalled = false;
+ var re = /[ac]/;
+
+ re.exec = function () {
+ execCalled = true;
+ return /./.exec.apply(this, arguments);
+ };
+
+ return re.test('abc') === true && execCalled;
+ }();
+
+ var nativeTest = /./.test; // `RegExp.prototype.test` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype.test
+
+ $$2q({
+ target: 'RegExp',
+ proto: true,
+ forced: !DELEGATES_TO_EXEC
+ }, {
+ test: function (str) {
+ var exec = this.exec;
+ if (!isCallable$a(exec)) return nativeTest.call(this, str);
+ var result = exec.call(this, str);
+
+ if (result !== null && !isObject$7(result)) {
+ throw new Error('RegExp exec method returned something other than an Object or null');
+ }
+
+ return !!result;
+ }
+ });
+
+ var PROPER_FUNCTION_NAME$2 = functionName.PROPER;
+
+ var redefine$6 = redefine$l.exports;
+
+ var anObject$1b = anObject$1C;
+
+ var $toString$2 = toString$t;
+
+ var fails$g = fails$15;
+
+ var flags = regexpFlags$1;
+
+ var TO_STRING = 'toString';
+ var RegExpPrototype$3 = RegExp.prototype;
+ var nativeToString = RegExpPrototype$3[TO_STRING];
+ var NOT_GENERIC = fails$g(function () {
+ return nativeToString.call({
+ source: 'a',
+ flags: 'b'
+ }) != '/a/b';
+ }); // FF44- RegExp#toString has a wrong name
+
+ var INCORRECT_NAME = PROPER_FUNCTION_NAME$2 && nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
+
+ if (NOT_GENERIC || INCORRECT_NAME) {
+ redefine$6(RegExp.prototype, TO_STRING, function toString() {
+ var R = anObject$1b(this);
+ var p = $toString$2(R.source);
+ var rf = R.flags;
+ var f = $toString$2(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$3) ? flags.call(R) : rf);
+ return '/' + p + '/' + f;
+ }, {
+ unsafe: true
+ });
+ }
+
+ var collection$2 = collection$4;
+
+ var collectionStrong = collectionStrong$2; // `Set` constructor
+ // https://tc39.es/ecma262/#sec-set-objects
+
+
+ var es_set = collection$2('Set', function (init) {
+ return function Set() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+ }, collectionStrong);
+
+ var $$2p = _export;
+
+ var requireObjectCoercible$d = requireObjectCoercible$j;
+
+ var toIntegerOrInfinity$6 = toIntegerOrInfinity$i;
+
+ var toString$g = toString$t;
+
+ var fails$f = fails$15;
+
+ var FORCED$9 = fails$f(function () {
+ return '𠮷'.at(0) !== '\uD842';
+ }); // `String.prototype.at` method
+ // https://github.com/tc39/proposal-relative-indexing-method
+
+ $$2p({
+ target: 'String',
+ proto: true,
+ forced: FORCED$9
+ }, {
+ at: function at(index) {
+ var S = toString$g(requireObjectCoercible$d(this));
+ var len = S.length;
+ var relativeIndex = toIntegerOrInfinity$6(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : S.charAt(k);
+ }
+ });
+
+ var toIntegerOrInfinity$5 = toIntegerOrInfinity$i;
+
+ var toString$f = toString$t;
+
+ var requireObjectCoercible$c = requireObjectCoercible$j;
+
+ var createMethod$2 = function (CONVERT_TO_STRING) {
+ return function ($this, pos) {
+ var S = toString$f(requireObjectCoercible$c($this));
+ var position = toIntegerOrInfinity$5(pos);
+ var size = S.length;
+ var first, second;
+ if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
+ first = S.charCodeAt(position);
+ return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
+ };
+ };
+
+ var stringMultibyte = {
+ // `String.prototype.codePointAt` method
+ // https://tc39.es/ecma262/#sec-string.prototype.codepointat
+ codeAt: createMethod$2(false),
+ // `String.prototype.at` method
+ // https://github.com/mathiasbynens/String.prototype.at
+ charAt: createMethod$2(true)
+ };
+
+ var $$2o = _export;
+
+ var codeAt$2 = stringMultibyte.codeAt; // `String.prototype.codePointAt` method
+ // https://tc39.es/ecma262/#sec-string.prototype.codepointat
+
+
+ $$2o({
+ target: 'String',
+ proto: true
+ }, {
+ codePointAt: function codePointAt(pos) {
+ return codeAt$2(this, pos);
+ }
+ });
+
+ var isRegExp$3 = isRegexp;
+
+ var notARegexp = function (it) {
+ if (isRegExp$3(it)) {
+ throw TypeError("The method doesn't accept regular expressions");
+ }
+
+ return it;
+ };
+
+ var wellKnownSymbol$h = wellKnownSymbol$G;
+
+ var MATCH = wellKnownSymbol$h('match');
+
+ var correctIsRegexpLogic = function (METHOD_NAME) {
+ var regexp = /./;
+
+ try {
+ '/./'[METHOD_NAME](regexp);
+ } catch (error1) {
+ try {
+ regexp[MATCH] = false;
+ return '/./'[METHOD_NAME](regexp);
+ } catch (error2) {
+ /* empty */
+ }
+ }
+
+ return false;
+ };
+
+ var $$2n = _export;
+
+ var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;
+
+ var toLength$7 = toLength$d;
+
+ var toString$e = toString$t;
+
+ var notARegExp$2 = notARegexp;
+
+ var requireObjectCoercible$b = requireObjectCoercible$j;
+
+ var correctIsRegExpLogic$2 = correctIsRegexpLogic;
+
+
+ var $endsWith = ''.endsWith;
+ var min$5 = Math.min;
+ var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$2('endsWith'); // https://github.com/zloirock/core-js/pull/702
+
+ var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function () {
+ var descriptor = getOwnPropertyDescriptor$2(String.prototype, 'endsWith');
+ return descriptor && !descriptor.writable;
+ }(); // `String.prototype.endsWith` method
+ // https://tc39.es/ecma262/#sec-string.prototype.endswith
+
+ $$2n({
+ target: 'String',
+ proto: true,
+ forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1
+ }, {
+ endsWith: function endsWith(searchString
+ /* , endPosition = @length */
+ ) {
+ var that = toString$e(requireObjectCoercible$b(this));
+ notARegExp$2(searchString);
+ var endPosition = arguments.length > 1 ? arguments[1] : undefined;
+ var len = that.length;
+ var end = endPosition === undefined ? len : min$5(toLength$7(endPosition), len);
+ var search = toString$e(searchString);
+ return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
+ }
+ });
+
+ var $$2m = _export;
+
+ var toAbsoluteIndex$1 = toAbsoluteIndex$8;
+
+ var fromCharCode$1 = String.fromCharCode; // eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
+
+ var $fromCodePoint = String.fromCodePoint; // length should be 1, old FF problem
+
+ var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1; // `String.fromCodePoint` method
+ // https://tc39.es/ecma262/#sec-string.fromcodepoint
+
+ $$2m({
+ target: 'String',
+ stat: true,
+ forced: INCORRECT_LENGTH
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ fromCodePoint: function fromCodePoint(x) {
+ var elements = [];
+ var length = arguments.length;
+ var i = 0;
+ var code;
+
+ while (length > i) {
+ code = +arguments[i++];
+ if (toAbsoluteIndex$1(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
+ elements.push(code < 0x10000 ? fromCharCode$1(code) : fromCharCode$1(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00));
+ }
+
+ return elements.join('');
+ }
+ });
+
+ var $$2l = _export;
+
+ var notARegExp$1 = notARegexp;
+
+ var requireObjectCoercible$a = requireObjectCoercible$j;
+
+ var toString$d = toString$t;
+
+ var correctIsRegExpLogic$1 = correctIsRegexpLogic; // `String.prototype.includes` method
+ // https://tc39.es/ecma262/#sec-string.prototype.includes
+
+
+ $$2l({
+ target: 'String',
+ proto: true,
+ forced: !correctIsRegExpLogic$1('includes')
+ }, {
+ includes: function includes(searchString
+ /* , position = 0 */
+ ) {
+ return !!~toString$d(requireObjectCoercible$a(this)).indexOf(toString$d(notARegExp$1(searchString)), arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var charAt$3 = stringMultibyte.charAt;
+
+ var toString$c = toString$t;
+
+ var InternalStateModule$d = internalState;
+
+ var defineIterator = defineIterator$3;
+
+ var STRING_ITERATOR$1 = 'String Iterator';
+ var setInternalState$d = InternalStateModule$d.set;
+ var getInternalState$a = InternalStateModule$d.getterFor(STRING_ITERATOR$1); // `String.prototype[@@iterator]` method
+ // https://tc39.es/ecma262/#sec-string.prototype-@@iterator
+
+ defineIterator(String, 'String', function (iterated) {
+ setInternalState$d(this, {
+ type: STRING_ITERATOR$1,
+ string: toString$c(iterated),
+ index: 0
+ }); // `%StringIteratorPrototype%.next` method
+ // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
+ }, function next() {
+ var state = getInternalState$a(this);
+ var string = state.string;
+ var index = state.index;
+ var point;
+ if (index >= string.length) return {
+ value: undefined,
+ done: true
+ };
+ point = charAt$3(string, index);
+ state.index += point.length;
+ return {
+ value: point,
+ done: false
+ };
+ });
+
+ var redefine$5 = redefine$l.exports;
+
+ var regexpExec$2 = regexpExec$3;
+
+ var fails$e = fails$15;
+
+ var wellKnownSymbol$g = wellKnownSymbol$G;
+
+ var createNonEnumerableProperty$7 = createNonEnumerableProperty$h;
+
+ var SPECIES = wellKnownSymbol$g('species');
+ var RegExpPrototype$2 = RegExp.prototype;
+
+ var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
+ var SYMBOL = wellKnownSymbol$g(KEY);
+ var DELEGATES_TO_SYMBOL = !fails$e(function () {
+ // String methods call symbol-named RegEp methods
+ var O = {};
+
+ O[SYMBOL] = function () {
+ return 7;
+ };
+
+ return ''[KEY](O) != 7;
+ });
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$e(function () {
+ // Symbol-named RegExp methods call .exec
+ var execCalled = false;
+ var re = /a/;
+
+ if (KEY === 'split') {
+ // We can't use real regex here since it causes deoptimization
+ // and serious performance degradation in V8
+ // https://github.com/zloirock/core-js/issues/306
+ re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates
+ // a new one. We need to return the patched regex when creating the new one.
+
+ re.constructor = {};
+
+ re.constructor[SPECIES] = function () {
+ return re;
+ };
+
+ re.flags = '';
+ re[SYMBOL] = /./[SYMBOL];
+ }
+
+ re.exec = function () {
+ execCalled = true;
+ return null;
+ };
+
+ re[SYMBOL]('');
+ return !execCalled;
+ });
+
+ if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED) {
+ var nativeRegExpMethod = /./[SYMBOL];
+ var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
+ var $exec = regexp.exec;
+
+ if ($exec === regexpExec$2 || $exec === RegExpPrototype$2.exec) {
+ if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
+ // The native String method already delegates to @@method (this
+ // polyfilled function), leasing to infinite recursion.
+ // We avoid it by directly calling the native @@method method.
+ return {
+ done: true,
+ value: nativeRegExpMethod.call(regexp, str, arg2)
+ };
+ }
+
+ return {
+ done: true,
+ value: nativeMethod.call(str, regexp, arg2)
+ };
+ }
+
+ return {
+ done: false
+ };
+ });
+ redefine$5(String.prototype, KEY, methods[0]);
+ redefine$5(RegExpPrototype$2, SYMBOL, methods[1]);
+ }
+
+ if (SHAM) createNonEnumerableProperty$7(RegExpPrototype$2[SYMBOL], 'sham', true);
+ };
+
+ var charAt$2 = stringMultibyte.charAt; // `AdvanceStringIndex` abstract operation
+ // https://tc39.es/ecma262/#sec-advancestringindex
+
+
+ var advanceStringIndex$4 = function (S, index, unicode) {
+ return index + (unicode ? charAt$2(S, index).length : 1);
+ };
+
+ var anObject$1a = anObject$1C;
+
+ var isCallable$9 = isCallable$z;
+
+ var classof$3 = classofRaw$1;
+
+ var regexpExec$1 = regexpExec$3; // `RegExpExec` abstract operation
+ // https://tc39.es/ecma262/#sec-regexpexec
+
+
+ var regexpExecAbstract = function (R, S) {
+ var exec = R.exec;
+
+ if (isCallable$9(exec)) {
+ var result = exec.call(R, S);
+ if (result !== null) anObject$1a(result);
+ return result;
+ }
+
+ if (classof$3(R) === 'RegExp') return regexpExec$1.call(R, S);
+ throw TypeError('RegExp#exec called on incompatible receiver');
+ };
+
+ var fixRegExpWellKnownSymbolLogic$3 = fixRegexpWellKnownSymbolLogic;
+
+ var anObject$19 = anObject$1C;
+
+ var toLength$6 = toLength$d;
+
+ var toString$b = toString$t;
+
+ var requireObjectCoercible$9 = requireObjectCoercible$j;
+
+ var getMethod$d = getMethod$h;
+
+ var advanceStringIndex$3 = advanceStringIndex$4;
+
+ var regExpExec$3 = regexpExecAbstract; // @@match logic
+
+
+ fixRegExpWellKnownSymbolLogic$3('match', function (MATCH, nativeMatch, maybeCallNative) {
+ return [// `String.prototype.match` method
+ // https://tc39.es/ecma262/#sec-string.prototype.match
+ function match(regexp) {
+ var O = requireObjectCoercible$9(this);
+ var matcher = regexp == undefined ? undefined : getMethod$d(regexp, MATCH);
+ return matcher ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString$b(O));
+ }, // `RegExp.prototype[@@match]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
+ function (string) {
+ var rx = anObject$19(this);
+ var S = toString$b(string);
+ var res = maybeCallNative(nativeMatch, rx, S);
+ if (res.done) return res.value;
+ if (!rx.global) return regExpExec$3(rx, S);
+ var fullUnicode = rx.unicode;
+ rx.lastIndex = 0;
+ var A = [];
+ var n = 0;
+ var result;
+
+ while ((result = regExpExec$3(rx, S)) !== null) {
+ var matchStr = toString$b(result[0]);
+ A[n] = matchStr;
+ if (matchStr === '') rx.lastIndex = advanceStringIndex$3(S, toLength$6(rx.lastIndex), fullUnicode);
+ n++;
+ }
+
+ return n === 0 ? null : A;
+ }];
+ });
+
+ /* eslint-disable es/no-string-prototype-matchall -- safe */
+
+ var $$2k = _export;
+
+ var createIteratorConstructor$5 = createIteratorConstructor$7;
+
+ var requireObjectCoercible$8 = requireObjectCoercible$j;
+
+ var toLength$5 = toLength$d;
+
+ var toString$a = toString$t;
+
+ var anObject$18 = anObject$1C;
+
+ var classof$2 = classofRaw$1;
+
+ var isRegExp$2 = isRegexp;
+
+ var getRegExpFlags$1 = regexpFlags$1;
+
+ var getMethod$c = getMethod$h;
+
+ var redefine$4 = redefine$l.exports;
+
+ var fails$d = fails$15;
+
+ var wellKnownSymbol$f = wellKnownSymbol$G;
+
+ var speciesConstructor$b = speciesConstructor$f;
+
+ var advanceStringIndex$2 = advanceStringIndex$4;
+
+ var regExpExec$2 = regexpExecAbstract;
+
+ var InternalStateModule$c = internalState;
+
+ var IS_PURE$D = isPure;
+
+ var MATCH_ALL = wellKnownSymbol$f('matchAll');
+ var REGEXP_STRING = 'RegExp String';
+ var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
+ var setInternalState$c = InternalStateModule$c.set;
+ var getInternalState$9 = InternalStateModule$c.getterFor(REGEXP_STRING_ITERATOR);
+ var RegExpPrototype$1 = RegExp.prototype;
+ var nativeMatchAll = ''.matchAll;
+ var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails$d(function () {
+ 'a'.matchAll(/./);
+ }); // eslint-disable-next-line max-len -- ignore
+
+ var $RegExpStringIterator = createIteratorConstructor$5(function RegExpStringIterator(regexp, string, global, fullUnicode) {
+ setInternalState$c(this, {
+ type: REGEXP_STRING_ITERATOR,
+ regexp: regexp,
+ string: string,
+ global: global,
+ unicode: fullUnicode,
+ done: false
+ });
+ }, REGEXP_STRING, function next() {
+ var state = getInternalState$9(this);
+ if (state.done) return {
+ value: undefined,
+ done: true
+ };
+ var R = state.regexp;
+ var S = state.string;
+ var match = regExpExec$2(R, S);
+ if (match === null) return {
+ value: undefined,
+ done: state.done = true
+ };
+
+ if (state.global) {
+ if (toString$a(match[0]) === '') R.lastIndex = advanceStringIndex$2(S, toLength$5(R.lastIndex), state.unicode);
+ return {
+ value: match,
+ done: false
+ };
+ }
+
+ state.done = true;
+ return {
+ value: match,
+ done: false
+ };
+ });
+
+ var $matchAll = function (string) {
+ var R = anObject$18(this);
+ var S = toString$a(string);
+ var C, flagsValue, flags, matcher, global, fullUnicode;
+ C = speciesConstructor$b(R, RegExp);
+ flagsValue = R.flags;
+
+ if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$1)) {
+ flagsValue = getRegExpFlags$1.call(R);
+ }
+
+ flags = flagsValue === undefined ? '' : toString$a(flagsValue);
+ matcher = new C(C === RegExp ? R.source : R, flags);
+ global = !!~flags.indexOf('g');
+ fullUnicode = !!~flags.indexOf('u');
+ matcher.lastIndex = toLength$5(R.lastIndex);
+ return new $RegExpStringIterator(matcher, S, global, fullUnicode);
+ }; // `String.prototype.matchAll` method
+ // https://tc39.es/ecma262/#sec-string.prototype.matchall
+
+
+ $$2k({
+ target: 'String',
+ proto: true,
+ forced: WORKS_WITH_NON_GLOBAL_REGEX
+ }, {
+ matchAll: function matchAll(regexp) {
+ var O = requireObjectCoercible$8(this);
+ var flags, S, matcher, rx;
+
+ if (regexp != null) {
+ if (isRegExp$2(regexp)) {
+ flags = toString$a(requireObjectCoercible$8('flags' in RegExpPrototype$1 ? regexp.flags : getRegExpFlags$1.call(regexp)));
+ if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
+ }
+
+ if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+ matcher = getMethod$c(regexp, MATCH_ALL);
+ if (matcher === undefined && IS_PURE$D && classof$2(regexp) == 'RegExp') matcher = $matchAll;
+ if (matcher) return matcher.call(regexp, O);
+ } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+
+ S = toString$a(O);
+ rx = new RegExp(regexp, 'g');
+ return rx[MATCH_ALL](S);
+ }
+ });
+ MATCH_ALL in RegExpPrototype$1 || redefine$4(RegExpPrototype$1, MATCH_ALL, $matchAll);
+
+ // https://github.com/zloirock/core-js/issues/280
+ var userAgent$1 = engineUserAgent;
+
+ var stringPadWebkitBug = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(userAgent$1);
+
+ var $$2j = _export;
+
+ var $padEnd = stringPad.end;
+
+ var WEBKIT_BUG$1 = stringPadWebkitBug; // `String.prototype.padEnd` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padend
+
+
+ $$2j({
+ target: 'String',
+ proto: true,
+ forced: WEBKIT_BUG$1
+ }, {
+ padEnd: function padEnd(maxLength
+ /* , fillString = ' ' */
+ ) {
+ return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$2i = _export;
+
+ var $padStart = stringPad.start;
+
+ var WEBKIT_BUG = stringPadWebkitBug; // `String.prototype.padStart` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padstart
+
+
+ $$2i({
+ target: 'String',
+ proto: true,
+ forced: WEBKIT_BUG
+ }, {
+ padStart: function padStart(maxLength
+ /* , fillString = ' ' */
+ ) {
+ return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ var $$2h = _export;
+
+ var toIndexedObject = toIndexedObject$d;
+
+ var toObject$d = toObject$A;
+
+ var toString$9 = toString$t;
+
+ var lengthOfArrayLike$9 = lengthOfArrayLike$q;
+
+ var ArrayPrototype = Array.prototype;
+ var push$3 = ArrayPrototype.push;
+ var join = ArrayPrototype.join; // `String.raw` method
+ // https://tc39.es/ecma262/#sec-string.raw
+
+ $$2h({
+ target: 'String',
+ stat: true
+ }, {
+ raw: function raw(template) {
+ var rawTemplate = toIndexedObject(toObject$d(template).raw);
+ var literalSegments = lengthOfArrayLike$9(rawTemplate);
+ var argumentsLength = arguments.length;
+ var elements = [];
+ var i = 0;
+
+ while (literalSegments > i) {
+ push$3.call(elements, toString$9(rawTemplate[i++]));
+ if (i === literalSegments) return join.call(elements, '');
+ if (i < argumentsLength) push$3.call(elements, toString$9(arguments[i]));
+ }
+ }
+ });
+
+ var $$2g = _export;
+
+ var repeat = stringRepeat; // `String.prototype.repeat` method
+ // https://tc39.es/ecma262/#sec-string.prototype.repeat
+
+
+ $$2g({
+ target: 'String',
+ proto: true
+ }, {
+ repeat: repeat
+ });
+
+ var toObject$c = toObject$A;
+
+ var floor$3 = Math.floor;
+ var replace$1 = ''.replace;
+ var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
+ var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; // `GetSubstitution` abstract operation
+ // https://tc39.es/ecma262/#sec-getsubstitution
+
+ var getSubstitution$2 = function (matched, str, position, captures, namedCaptures, replacement) {
+ var tailPos = position + matched.length;
+ var m = captures.length;
+ var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
+
+ if (namedCaptures !== undefined) {
+ namedCaptures = toObject$c(namedCaptures);
+ symbols = SUBSTITUTION_SYMBOLS;
+ }
+
+ return replace$1.call(replacement, symbols, function (match, ch) {
+ var capture;
+
+ switch (ch.charAt(0)) {
+ case '$':
+ return '$';
+
+ case '&':
+ return matched;
+
+ case '`':
+ return str.slice(0, position);
+
+ case "'":
+ return str.slice(tailPos);
+
+ case '<':
+ capture = namedCaptures[ch.slice(1, -1)];
+ break;
+
+ default:
+ // \d\d?
+ var n = +ch;
+ if (n === 0) return match;
+
+ if (n > m) {
+ var f = floor$3(n / 10);
+ if (f === 0) return match;
+ if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
+ return match;
+ }
+
+ capture = captures[n - 1];
+ }
+
+ return capture === undefined ? '' : capture;
+ });
+ };
+
+ var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic;
+
+ var fails$c = fails$15;
+
+ var anObject$17 = anObject$1C;
+
+ var isCallable$8 = isCallable$z;
+
+ var toIntegerOrInfinity$4 = toIntegerOrInfinity$i;
+
+ var toLength$4 = toLength$d;
+
+ var toString$8 = toString$t;
+
+ var requireObjectCoercible$7 = requireObjectCoercible$j;
+
+ var advanceStringIndex$1 = advanceStringIndex$4;
+
+ var getMethod$b = getMethod$h;
+
+ var getSubstitution$1 = getSubstitution$2;
+
+ var regExpExec$1 = regexpExecAbstract;
+
+ var wellKnownSymbol$e = wellKnownSymbol$G;
+
+ var REPLACE$1 = wellKnownSymbol$e('replace');
+ var max$3 = Math.max;
+ var min$4 = Math.min;
+
+ var maybeToString = function (it) {
+ return it === undefined ? it : String(it);
+ }; // IE <= 11 replaces $0 with the whole match, as if it was $&
+ // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
+
+
+ var REPLACE_KEEPS_$0 = function () {
+ // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
+ return 'a'.replace(/./, '$0') === '$0';
+ }(); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
+
+
+ var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () {
+ if (/./[REPLACE$1]) {
+ return /./[REPLACE$1]('a', '$0') === '';
+ }
+
+ return false;
+ }();
+
+ var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$c(function () {
+ var re = /./;
+
+ re.exec = function () {
+ var result = [];
+ result.groups = {
+ a: '7'
+ };
+ return result;
+ }; // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
+
+
+ return ''.replace(re, '$') !== '7';
+ }); // @@replace logic
+
+ fixRegExpWellKnownSymbolLogic$2('replace', function (_, nativeReplace, maybeCallNative) {
+ var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
+ return [// `String.prototype.replace` method
+ // https://tc39.es/ecma262/#sec-string.prototype.replace
+ function replace(searchValue, replaceValue) {
+ var O = requireObjectCoercible$7(this);
+ var replacer = searchValue == undefined ? undefined : getMethod$b(searchValue, REPLACE$1);
+ return replacer ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(toString$8(O), searchValue, replaceValue);
+ }, // `RegExp.prototype[@@replace]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
+ function (string, replaceValue) {
+ var rx = anObject$17(this);
+ var S = toString$8(string);
+
+ if (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 && replaceValue.indexOf('$<') === -1) {
+ var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
+ if (res.done) return res.value;
+ }
+
+ var functionalReplace = isCallable$8(replaceValue);
+ if (!functionalReplace) replaceValue = toString$8(replaceValue);
+ var global = rx.global;
+
+ if (global) {
+ var fullUnicode = rx.unicode;
+ rx.lastIndex = 0;
+ }
+
+ var results = [];
+
+ while (true) {
+ var result = regExpExec$1(rx, S);
+ if (result === null) break;
+ results.push(result);
+ if (!global) break;
+ var matchStr = toString$8(result[0]);
+ if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$4(rx.lastIndex), fullUnicode);
+ }
+
+ var accumulatedResult = '';
+ var nextSourcePosition = 0;
+
+ for (var i = 0; i < results.length; i++) {
+ result = results[i];
+ var matched = toString$8(result[0]);
+ var position = max$3(min$4(toIntegerOrInfinity$4(result.index), S.length), 0);
+ var captures = []; // NOTE: This is equivalent to
+ // captures = result.slice(1).map(maybeToString)
+ // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
+ // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
+ // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
+
+ for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
+
+ var namedCaptures = result.groups;
+
+ if (functionalReplace) {
+ var replacerArgs = [matched].concat(captures, position, S);
+ if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
+ var replacement = toString$8(replaceValue.apply(undefined, replacerArgs));
+ } else {
+ replacement = getSubstitution$1(matched, S, position, captures, namedCaptures, replaceValue);
+ }
+
+ if (position >= nextSourcePosition) {
+ accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
+ nextSourcePosition = position + matched.length;
+ }
+ }
+
+ return accumulatedResult + S.slice(nextSourcePosition);
+ }];
+ }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
+
+ var $$2f = _export;
+
+ var requireObjectCoercible$6 = requireObjectCoercible$j;
+
+ var isCallable$7 = isCallable$z;
+
+ var isRegExp$1 = isRegexp;
+
+ var toString$7 = toString$t;
+
+ var getMethod$a = getMethod$h;
+
+ var getRegExpFlags = regexpFlags$1;
+
+ var getSubstitution = getSubstitution$2;
+
+ var wellKnownSymbol$d = wellKnownSymbol$G;
+
+ var REPLACE = wellKnownSymbol$d('replace');
+ var RegExpPrototype = RegExp.prototype;
+ var max$2 = Math.max;
+
+ var stringIndexOf = function (string, searchValue, fromIndex) {
+ if (fromIndex > string.length) return -1;
+ if (searchValue === '') return fromIndex;
+ return string.indexOf(searchValue, fromIndex);
+ }; // `String.prototype.replaceAll` method
+ // https://tc39.es/ecma262/#sec-string.prototype.replaceall
+
+
+ $$2f({
+ target: 'String',
+ proto: true
+ }, {
+ replaceAll: function replaceAll(searchValue, replaceValue) {
+ var O = requireObjectCoercible$6(this);
+ var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;
+ var position = 0;
+ var endOfLastMatch = 0;
+ var result = '';
+
+ if (searchValue != null) {
+ IS_REG_EXP = isRegExp$1(searchValue);
+
+ if (IS_REG_EXP) {
+ flags = toString$7(requireObjectCoercible$6('flags' in RegExpPrototype ? searchValue.flags : getRegExpFlags.call(searchValue)));
+ if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
+ }
+
+ replacer = getMethod$a(searchValue, REPLACE);
+
+ if (replacer) {
+ return replacer.call(searchValue, O, replaceValue);
+ }
+ }
+
+ string = toString$7(O);
+ searchString = toString$7(searchValue);
+ functionalReplace = isCallable$7(replaceValue);
+ if (!functionalReplace) replaceValue = toString$7(replaceValue);
+ searchLength = searchString.length;
+ advanceBy = max$2(1, searchLength);
+ position = stringIndexOf(string, searchString, 0);
+
+ while (position !== -1) {
+ if (functionalReplace) {
+ replacement = toString$7(replaceValue(searchString, position, string));
+ } else {
+ replacement = getSubstitution(searchString, string, position, [], undefined, replaceValue);
+ }
+
+ result += string.slice(endOfLastMatch, position) + replacement;
+ endOfLastMatch = position + searchLength;
+ position = stringIndexOf(string, searchString, position + advanceBy);
+ }
+
+ if (endOfLastMatch < string.length) {
+ result += string.slice(endOfLastMatch);
+ }
+
+ return result;
+ }
+ });
+
+ var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic;
+
+ var anObject$16 = anObject$1C;
+
+ var requireObjectCoercible$5 = requireObjectCoercible$j;
+
+ var sameValue = sameValue$1;
+
+ var toString$6 = toString$t;
+
+ var getMethod$9 = getMethod$h;
+
+ var regExpExec = regexpExecAbstract; // @@search logic
+
+
+ fixRegExpWellKnownSymbolLogic$1('search', function (SEARCH, nativeSearch, maybeCallNative) {
+ return [// `String.prototype.search` method
+ // https://tc39.es/ecma262/#sec-string.prototype.search
+ function search(regexp) {
+ var O = requireObjectCoercible$5(this);
+ var searcher = regexp == undefined ? undefined : getMethod$9(regexp, SEARCH);
+ return searcher ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString$6(O));
+ }, // `RegExp.prototype[@@search]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
+ function (string) {
+ var rx = anObject$16(this);
+ var S = toString$6(string);
+ var res = maybeCallNative(nativeSearch, rx, S);
+ if (res.done) return res.value;
+ var previousLastIndex = rx.lastIndex;
+ if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
+ var result = regExpExec(rx, S);
+ if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
+ return result === null ? -1 : result.index;
+ }];
+ });
+
+ var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
+
+ var isRegExp = isRegexp;
+
+ var anObject$15 = anObject$1C;
+
+ var requireObjectCoercible$4 = requireObjectCoercible$j;
+
+ var speciesConstructor$a = speciesConstructor$f;
+
+ var advanceStringIndex = advanceStringIndex$4;
+
+ var toLength$3 = toLength$d;
+
+ var toString$5 = toString$t;
+
+ var getMethod$8 = getMethod$h;
+
+ var callRegExpExec = regexpExecAbstract;
+
+ var regexpExec = regexpExec$3;
+
+ var stickyHelpers = regexpStickyHelpers;
+
+ var fails$b = fails$15;
+
+ var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
+ var arrayPush = [].push;
+ var min$3 = Math.min;
+ var MAX_UINT32 = 0xFFFFFFFF; // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
+ // Weex JS has frozen built-in prototypes, so use try / catch wrapper
+
+ var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$b(function () {
+ // eslint-disable-next-line regexp/no-empty-group -- required for testing
+ var re = /(?:)/;
+ var originalExec = re.exec;
+
+ re.exec = function () {
+ return originalExec.apply(this, arguments);
+ };
+
+ var result = 'ab'.split(re);
+ return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
+ }); // @@split logic
+
+ fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {
+ var internalSplit;
+
+ if ('abbc'.split(/(b)*/)[1] == 'c' || // eslint-disable-next-line regexp/no-empty-group -- required for testing
+ 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
+ '.'.split(/()()/).length > 1 || ''.split(/.?/).length) {
+ // based on es5-shim implementation, need to rework it
+ internalSplit = function (separator, limit) {
+ var string = toString$5(requireObjectCoercible$4(this));
+ var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+ if (lim === 0) return [];
+ if (separator === undefined) return [string]; // If `separator` is not a regex, use native split
+
+ if (!isRegExp(separator)) {
+ return nativeSplit.call(string, separator, lim);
+ }
+
+ var output = [];
+ var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : '');
+ var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy
+
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
+ var match, lastIndex, lastLength;
+
+ while (match = regexpExec.call(separatorCopy, string)) {
+ lastIndex = separatorCopy.lastIndex;
+
+ if (lastIndex > lastLastIndex) {
+ output.push(string.slice(lastLastIndex, match.index));
+ if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
+ lastLength = match[0].length;
+ lastLastIndex = lastIndex;
+ if (output.length >= lim) break;
+ }
+
+ if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
+ }
+
+ if (lastLastIndex === string.length) {
+ if (lastLength || !separatorCopy.test('')) output.push('');
+ } else output.push(string.slice(lastLastIndex));
+
+ return output.length > lim ? output.slice(0, lim) : output;
+ }; // Chakra, V8
+
+ } else if ('0'.split(undefined, 0).length) {
+ internalSplit = function (separator, limit) {
+ return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
+ };
+ } else internalSplit = nativeSplit;
+
+ return [// `String.prototype.split` method
+ // https://tc39.es/ecma262/#sec-string.prototype.split
+ function split(separator, limit) {
+ var O = requireObjectCoercible$4(this);
+ var splitter = separator == undefined ? undefined : getMethod$8(separator, SPLIT);
+ return splitter ? splitter.call(separator, O, limit) : internalSplit.call(toString$5(O), separator, limit);
+ }, // `RegExp.prototype[@@split]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
+ //
+ // NOTE: This cannot be properly polyfilled in engines that don't support
+ // the 'y' flag.
+ function (string, limit) {
+ var rx = anObject$15(this);
+ var S = toString$5(string);
+ var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
+ if (res.done) return res.value;
+ var C = speciesConstructor$a(rx, RegExp);
+ var unicodeMatching = rx.unicode;
+ var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (UNSUPPORTED_Y ? 'g' : 'y'); // ^(? + rx + ) is needed, in combination with some S slicing, to
+ // simulate the 'y' flag.
+
+ var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
+ var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+ if (lim === 0) return [];
+ if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
+ var p = 0;
+ var q = 0;
+ var A = [];
+
+ while (q < S.length) {
+ splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
+ var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);
+ var e;
+
+ if (z === null || (e = min$3(toLength$3(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p) {
+ q = advanceStringIndex(S, q, unicodeMatching);
+ } else {
+ A.push(S.slice(p, q));
+ if (A.length === lim) return A;
+
+ for (var i = 1; i <= z.length - 1; i++) {
+ A.push(z[i]);
+ if (A.length === lim) return A;
+ }
+
+ q = p = e;
+ }
+ }
+
+ A.push(S.slice(p));
+ return A;
+ }];
+ }, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
+
+ var $$2e = _export;
+
+ var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
+
+ var toLength$2 = toLength$d;
+
+ var toString$4 = toString$t;
+
+ var notARegExp = notARegexp;
+
+ var requireObjectCoercible$3 = requireObjectCoercible$j;
+
+ var correctIsRegExpLogic = correctIsRegexpLogic;
+
+
+ var $startsWith = ''.startsWith;
+ var min$2 = Math.min;
+ var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); // https://github.com/zloirock/core-js/pull/702
+
+ var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () {
+ var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'startsWith');
+ return descriptor && !descriptor.writable;
+ }(); // `String.prototype.startsWith` method
+ // https://tc39.es/ecma262/#sec-string.prototype.startswith
+
+ $$2e({
+ target: 'String',
+ proto: true,
+ forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC
+ }, {
+ startsWith: function startsWith(searchString
+ /* , position = 0 */
+ ) {
+ var that = toString$4(requireObjectCoercible$3(this));
+ notARegExp(searchString);
+ var index = toLength$2(min$2(arguments.length > 1 ? arguments[1] : undefined, that.length));
+ var search = toString$4(searchString);
+ return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
+ }
+ });
+
+ var $$2d = _export;
+
+ var requireObjectCoercible$2 = requireObjectCoercible$j;
+
+ var toIntegerOrInfinity$3 = toIntegerOrInfinity$i;
+
+ var toString$3 = toString$t;
+
+ var slice$1 = ''.slice;
+ var max$1 = Math.max;
+ var min$1 = Math.min; // eslint-disable-next-line unicorn/prefer-string-slice -- required for testing
+
+ var FORCED$8 = !''.substr || 'ab'.substr(-1) !== 'b'; // `String.prototype.substr` method
+ // https://tc39.es/ecma262/#sec-string.prototype.substr
+
+ $$2d({
+ target: 'String',
+ proto: true,
+ forced: FORCED$8
+ }, {
+ substr: function substr(start, length) {
+ var that = toString$3(requireObjectCoercible$2(this));
+ var size = that.length;
+ var intStart = toIntegerOrInfinity$3(start);
+ var intLength, intEnd;
+ if (intStart === Infinity) intStart = 0;
+ if (intStart < 0) intStart = max$1(size + intStart, 0);
+ intLength = length === undefined ? size : toIntegerOrInfinity$3(length);
+ if (intLength <= 0 || intLength === Infinity) return '';
+ intEnd = min$1(intStart + intLength, size);
+ return intStart >= intEnd ? '' : slice$1.call(that, intStart, intEnd);
+ }
+ });
+
+ var PROPER_FUNCTION_NAME$1 = functionName.PROPER;
+
+ var fails$a = fails$15;
+
+ var whitespaces = whitespaces$4;
+
+ var non = '\u200B\u0085\u180E'; // check that a method works with the correct list
+ // of whitespaces and has a correct name
+
+ var stringTrimForced = function (METHOD_NAME) {
+ return fails$a(function () {
+ return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || PROPER_FUNCTION_NAME$1 && whitespaces[METHOD_NAME].name !== METHOD_NAME;
+ });
+ };
+
+ var $$2c = _export;
+
+ var $trim = stringTrim.trim;
+
+ var forcedStringTrimMethod$2 = stringTrimForced; // `String.prototype.trim` method
+ // https://tc39.es/ecma262/#sec-string.prototype.trim
+
+
+ $$2c({
+ target: 'String',
+ proto: true,
+ forced: forcedStringTrimMethod$2('trim')
+ }, {
+ trim: function trim() {
+ return $trim(this);
+ }
+ });
+
+ var $$2b = _export;
+
+ var $trimEnd = stringTrim.end;
+
+ var forcedStringTrimMethod$1 = stringTrimForced;
+
+ var FORCED$7 = forcedStringTrimMethod$1('trimEnd');
+ var trimEnd = FORCED$7 ? function trimEnd() {
+ return $trimEnd(this); // eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+ } : ''.trimEnd; // `String.prototype.{ trimEnd, trimRight }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimend
+ // https://tc39.es/ecma262/#String.prototype.trimright
+
+ $$2b({
+ target: 'String',
+ proto: true,
+ name: 'trimEnd',
+ forced: FORCED$7
+ }, {
+ trimEnd: trimEnd,
+ trimRight: trimEnd
+ });
+
+ var $$2a = _export;
+
+ var $trimStart = stringTrim.start;
+
+ var forcedStringTrimMethod = stringTrimForced;
+
+ var FORCED$6 = forcedStringTrimMethod('trimStart');
+ var trimStart = FORCED$6 ? function trimStart() {
+ return $trimStart(this); // eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+ } : ''.trimStart; // `String.prototype.{ trimStart, trimLeft }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimstart
+ // https://tc39.es/ecma262/#String.prototype.trimleft
+
+ $$2a({
+ target: 'String',
+ proto: true,
+ name: 'trimStart',
+ forced: FORCED$6
+ }, {
+ trimStart: trimStart,
+ trimLeft: trimStart
+ });
+
+ var requireObjectCoercible$1 = requireObjectCoercible$j;
+
+ var toString$2 = toString$t;
+
+ var quot = /"/g; // `CreateHTML` abstract operation
+ // https://tc39.es/ecma262/#sec-createhtml
+
+ var createHtml = function (string, tag, attribute, value) {
+ var S = toString$2(requireObjectCoercible$1(string));
+ var p1 = '<' + tag;
+ if (attribute !== '') p1 += ' ' + attribute + '="' + toString$2(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+ };
+
+ var fails$9 = fails$15; // check the existence of a method, lowercase
+ // of a tag and escaping quotes in arguments
+
+
+ var stringHtmlForced = function (METHOD_NAME) {
+ return fails$9(function () {
+ var test = ''[METHOD_NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ });
+ };
+
+ var $$29 = _export;
+
+ var createHTML$c = createHtml;
+
+ var forcedStringHTMLMethod$c = stringHtmlForced; // `String.prototype.anchor` method
+ // https://tc39.es/ecma262/#sec-string.prototype.anchor
+
+
+ $$29({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$c('anchor')
+ }, {
+ anchor: function anchor(name) {
+ return createHTML$c(this, 'a', 'name', name);
+ }
+ });
+
+ var $$28 = _export;
+
+ var createHTML$b = createHtml;
+
+ var forcedStringHTMLMethod$b = stringHtmlForced; // `String.prototype.big` method
+ // https://tc39.es/ecma262/#sec-string.prototype.big
+
+
+ $$28({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$b('big')
+ }, {
+ big: function big() {
+ return createHTML$b(this, 'big', '', '');
+ }
+ });
+
+ var $$27 = _export;
+
+ var createHTML$a = createHtml;
+
+ var forcedStringHTMLMethod$a = stringHtmlForced; // `String.prototype.blink` method
+ // https://tc39.es/ecma262/#sec-string.prototype.blink
+
+
+ $$27({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$a('blink')
+ }, {
+ blink: function blink() {
+ return createHTML$a(this, 'blink', '', '');
+ }
+ });
+
+ var $$26 = _export;
+
+ var createHTML$9 = createHtml;
+
+ var forcedStringHTMLMethod$9 = stringHtmlForced; // `String.prototype.bold` method
+ // https://tc39.es/ecma262/#sec-string.prototype.bold
+
+
+ $$26({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$9('bold')
+ }, {
+ bold: function bold() {
+ return createHTML$9(this, 'b', '', '');
+ }
+ });
+
+ var $$25 = _export;
+
+ var createHTML$8 = createHtml;
+
+ var forcedStringHTMLMethod$8 = stringHtmlForced; // `String.prototype.fixed` method
+ // https://tc39.es/ecma262/#sec-string.prototype.fixed
+
+
+ $$25({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$8('fixed')
+ }, {
+ fixed: function fixed() {
+ return createHTML$8(this, 'tt', '', '');
+ }
+ });
+
+ var $$24 = _export;
+
+ var createHTML$7 = createHtml;
+
+ var forcedStringHTMLMethod$7 = stringHtmlForced; // `String.prototype.fontcolor` method
+ // https://tc39.es/ecma262/#sec-string.prototype.fontcolor
+
+
+ $$24({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$7('fontcolor')
+ }, {
+ fontcolor: function fontcolor(color) {
+ return createHTML$7(this, 'font', 'color', color);
+ }
+ });
+
+ var $$23 = _export;
+
+ var createHTML$6 = createHtml;
+
+ var forcedStringHTMLMethod$6 = stringHtmlForced; // `String.prototype.fontsize` method
+ // https://tc39.es/ecma262/#sec-string.prototype.fontsize
+
+
+ $$23({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$6('fontsize')
+ }, {
+ fontsize: function fontsize(size) {
+ return createHTML$6(this, 'font', 'size', size);
+ }
+ });
+
+ var $$22 = _export;
+
+ var createHTML$5 = createHtml;
+
+ var forcedStringHTMLMethod$5 = stringHtmlForced; // `String.prototype.italics` method
+ // https://tc39.es/ecma262/#sec-string.prototype.italics
+
+
+ $$22({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$5('italics')
+ }, {
+ italics: function italics() {
+ return createHTML$5(this, 'i', '', '');
+ }
+ });
+
+ var $$21 = _export;
+
+ var createHTML$4 = createHtml;
+
+ var forcedStringHTMLMethod$4 = stringHtmlForced; // `String.prototype.link` method
+ // https://tc39.es/ecma262/#sec-string.prototype.link
+
+
+ $$21({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$4('link')
+ }, {
+ link: function link(url) {
+ return createHTML$4(this, 'a', 'href', url);
+ }
+ });
+
+ var $$20 = _export;
+
+ var createHTML$3 = createHtml;
+
+ var forcedStringHTMLMethod$3 = stringHtmlForced; // `String.prototype.small` method
+ // https://tc39.es/ecma262/#sec-string.prototype.small
+
+
+ $$20({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$3('small')
+ }, {
+ small: function small() {
+ return createHTML$3(this, 'small', '', '');
+ }
+ });
+
+ var $$1$ = _export;
+
+ var createHTML$2 = createHtml;
+
+ var forcedStringHTMLMethod$2 = stringHtmlForced; // `String.prototype.strike` method
+ // https://tc39.es/ecma262/#sec-string.prototype.strike
+
+
+ $$1$({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$2('strike')
+ }, {
+ strike: function strike() {
+ return createHTML$2(this, 'strike', '', '');
+ }
+ });
+
+ var $$1_ = _export;
+
+ var createHTML$1 = createHtml;
+
+ var forcedStringHTMLMethod$1 = stringHtmlForced; // `String.prototype.sub` method
+ // https://tc39.es/ecma262/#sec-string.prototype.sub
+
+
+ $$1_({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$1('sub')
+ }, {
+ sub: function sub() {
+ return createHTML$1(this, 'sub', '', '');
+ }
+ });
+
+ var $$1Z = _export;
+
+ var createHTML = createHtml;
+
+ var forcedStringHTMLMethod = stringHtmlForced; // `String.prototype.sup` method
+ // https://tc39.es/ecma262/#sec-string.prototype.sup
+
+
+ $$1Z({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod('sup')
+ }, {
+ sup: function sup() {
+ return createHTML(this, 'sup', '', '');
+ }
+ });
+
+ var typedArrayConstructor = {exports: {}};
+
+ /* eslint-disable no-new -- required for testing */
+
+ var global$g = global$R;
+
+ var fails$8 = fails$15;
+
+ var checkCorrectnessOfIteration = checkCorrectnessOfIteration$4;
+
+ var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+
+ var ArrayBuffer$2 = global$g.ArrayBuffer;
+ var Int8Array$2 = global$g.Int8Array;
+ var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails$8(function () {
+ Int8Array$2(1);
+ }) || !fails$8(function () {
+ new Int8Array$2(-1);
+ }) || !checkCorrectnessOfIteration(function (iterable) {
+ new Int8Array$2();
+ new Int8Array$2(null);
+ new Int8Array$2(1.5);
+ new Int8Array$2(iterable);
+ }, true) || fails$8(function () {
+ // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill
+ return new Int8Array$2(new ArrayBuffer$2(2), 1, undefined).length !== 1;
+ });
+
+ var toIntegerOrInfinity$2 = toIntegerOrInfinity$i;
+
+ var toPositiveInteger$5 = function (it) {
+ var result = toIntegerOrInfinity$2(it);
+ if (result < 0) throw RangeError("The argument can't be less than 0");
+ return result;
+ };
+
+ var toPositiveInteger$4 = toPositiveInteger$5;
+
+ var toOffset$2 = function (it, BYTES) {
+ var offset = toPositiveInteger$4(it);
+ if (offset % BYTES) throw RangeError('Wrong offset');
+ return offset;
+ };
+
+ var aConstructor$2 = aConstructor$5;
+
+ var toObject$b = toObject$A;
+
+ var lengthOfArrayLike$8 = lengthOfArrayLike$q;
+
+ var getIterator$8 = getIterator$b;
+
+ var getIteratorMethod$5 = getIteratorMethod$9;
+
+ var isArrayIteratorMethod = isArrayIteratorMethod$3;
+
+ var bind$h = functionBindContext;
+
+ var aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor;
+
+ var typedArrayFrom$2 = function from(source
+ /* , mapfn, thisArg */
+ ) {
+ var C = aConstructor$2(this);
+ var O = toObject$b(source);
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var mapping = mapfn !== undefined;
+ var iteratorMethod = getIteratorMethod$5(O);
+ var i, length, result, step, iterator, next;
+
+ if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {
+ iterator = getIterator$8(O, iteratorMethod);
+ next = iterator.next;
+ O = [];
+
+ while (!(step = next.call(iterator)).done) {
+ O.push(step.value);
+ }
+ }
+
+ if (mapping && argumentsLength > 2) {
+ mapfn = bind$h(mapfn, arguments[2], 2);
+ }
+
+ length = lengthOfArrayLike$8(O);
+ result = new (aTypedArrayConstructor$4(C))(length);
+
+ for (i = 0; length > i; i++) {
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+
+ return result;
+ };
+
+ var $$1Y = _export;
+
+ var global$f = global$R;
+
+ var DESCRIPTORS$5 = descriptors;
+
+ var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$3 = typedArrayConstructorsRequireWrappers;
+
+ var ArrayBufferViewCore$w = arrayBufferViewCore;
+
+ var ArrayBufferModule = arrayBuffer;
+
+ var anInstance$6 = anInstance$b;
+
+ var createPropertyDescriptor$1 = createPropertyDescriptor$9;
+
+ var createNonEnumerableProperty$6 = createNonEnumerableProperty$h;
+
+ var isIntegralNumber = isIntegralNumber$3;
+
+ var toLength$1 = toLength$d;
+
+ var toIndex = toIndex$2;
+
+ var toOffset$1 = toOffset$2;
+
+ var toPropertyKey$1 = toPropertyKey$9;
+
+ var hasOwn$6 = hasOwnProperty_1;
+
+ var classof$1 = classof$b;
+
+ var isObject$6 = isObject$C;
+
+ var isSymbol = isSymbol$5;
+
+ var create$6 = objectCreate$1;
+
+ var setPrototypeOf = objectSetPrototypeOf$1;
+
+ var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;
+
+ var typedArrayFrom$1 = typedArrayFrom$2;
+
+ var forEach$1 = arrayIteration.forEach;
+
+ var setSpecies$1 = setSpecies$7;
+
+ var definePropertyModule = objectDefineProperty;
+
+ var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor;
+
+ var InternalStateModule$b = internalState;
+
+ var inheritIfRequired = inheritIfRequired$4;
+
+ var getInternalState$8 = InternalStateModule$b.get;
+ var setInternalState$b = InternalStateModule$b.set;
+ var nativeDefineProperty = definePropertyModule.f;
+ var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+ var round = Math.round;
+ var RangeError$1 = global$f.RangeError;
+ var ArrayBuffer$1 = ArrayBufferModule.ArrayBuffer;
+ var DataView$1 = ArrayBufferModule.DataView;
+ var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore$w.NATIVE_ARRAY_BUFFER_VIEWS;
+ var TYPED_ARRAY_CONSTRUCTOR$1 = ArrayBufferViewCore$w.TYPED_ARRAY_CONSTRUCTOR;
+ var TYPED_ARRAY_TAG = ArrayBufferViewCore$w.TYPED_ARRAY_TAG;
+ var TypedArray = ArrayBufferViewCore$w.TypedArray;
+ var TypedArrayPrototype = ArrayBufferViewCore$w.TypedArrayPrototype;
+ var aTypedArrayConstructor$3 = ArrayBufferViewCore$w.aTypedArrayConstructor;
+ var isTypedArray = ArrayBufferViewCore$w.isTypedArray;
+ var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
+ var WRONG_LENGTH = 'Wrong length';
+
+ var fromList = function (C, list) {
+ var index = 0;
+ var length = list.length;
+ var result = new (aTypedArrayConstructor$3(C))(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+ };
+
+ var addGetter = function (it, key) {
+ nativeDefineProperty(it, key, {
+ get: function () {
+ return getInternalState$8(this)[key];
+ }
+ });
+ };
+
+ var isArrayBuffer = function (it) {
+ var klass;
+ return it instanceof ArrayBuffer$1 || (klass = classof$1(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';
+ };
+
+ var isTypedArrayIndex = function (target, key) {
+ return isTypedArray(target) && !isSymbol(key) && key in target && isIntegralNumber(+key) && key >= 0;
+ };
+
+ var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
+ key = toPropertyKey$1(key);
+ return isTypedArrayIndex(target, key) ? createPropertyDescriptor$1(2, target[key]) : nativeGetOwnPropertyDescriptor(target, key);
+ };
+
+ var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
+ key = toPropertyKey$1(key);
+
+ if (isTypedArrayIndex(target, key) && isObject$6(descriptor) && hasOwn$6(descriptor, 'value') && !hasOwn$6(descriptor, 'get') && !hasOwn$6(descriptor, 'set') // TODO: add validation descriptor w/o calling accessors
+ && !descriptor.configurable && (!hasOwn$6(descriptor, 'writable') || descriptor.writable) && (!hasOwn$6(descriptor, 'enumerable') || descriptor.enumerable)) {
+ target[key] = descriptor.value;
+ return target;
+ }
+
+ return nativeDefineProperty(target, key, descriptor);
+ };
+
+ if (DESCRIPTORS$5) {
+ if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+ getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
+ definePropertyModule.f = wrappedDefineProperty;
+ addGetter(TypedArrayPrototype, 'buffer');
+ addGetter(TypedArrayPrototype, 'byteOffset');
+ addGetter(TypedArrayPrototype, 'byteLength');
+ addGetter(TypedArrayPrototype, 'length');
+ }
+
+ $$1Y({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_ARRAY_BUFFER_VIEWS
+ }, {
+ getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
+ defineProperty: wrappedDefineProperty
+ });
+
+ typedArrayConstructor.exports = function (TYPE, wrapper, CLAMPED) {
+ var BYTES = TYPE.match(/\d+$/)[0] / 8;
+ var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
+ var GETTER = 'get' + TYPE;
+ var SETTER = 'set' + TYPE;
+ var NativeTypedArrayConstructor = global$f[CONSTRUCTOR_NAME];
+ var TypedArrayConstructor = NativeTypedArrayConstructor;
+ var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
+ var exported = {};
+
+ var getter = function (that, index) {
+ var data = getInternalState$8(that);
+ return data.view[GETTER](index * BYTES + data.byteOffset, true);
+ };
+
+ var setter = function (that, index, value) {
+ var data = getInternalState$8(that);
+ if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
+ data.view[SETTER](index * BYTES + data.byteOffset, value, true);
+ };
+
+ var addElement = function (that, index) {
+ nativeDefineProperty(that, index, {
+ get: function () {
+ return getter(this, index);
+ },
+ set: function (value) {
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+
+ if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+ TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
+ anInstance$6(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
+ var index = 0;
+ var byteOffset = 0;
+ var buffer, byteLength, length;
+
+ if (!isObject$6(data)) {
+ length = toIndex(data);
+ byteLength = length * BYTES;
+ buffer = new ArrayBuffer$1(byteLength);
+ } else if (isArrayBuffer(data)) {
+ buffer = data;
+ byteOffset = toOffset$1(offset, BYTES);
+ var $len = data.byteLength;
+
+ if ($length === undefined) {
+ if ($len % BYTES) throw RangeError$1(WRONG_LENGTH);
+ byteLength = $len - byteOffset;
+ if (byteLength < 0) throw RangeError$1(WRONG_LENGTH);
+ } else {
+ byteLength = toLength$1($length) * BYTES;
+ if (byteLength + byteOffset > $len) throw RangeError$1(WRONG_LENGTH);
+ }
+
+ length = byteLength / BYTES;
+ } else if (isTypedArray(data)) {
+ return fromList(TypedArrayConstructor, data);
+ } else {
+ return typedArrayFrom$1.call(TypedArrayConstructor, data);
+ }
+
+ setInternalState$b(that, {
+ buffer: buffer,
+ byteOffset: byteOffset,
+ byteLength: byteLength,
+ length: length,
+ view: new DataView$1(buffer)
+ });
+
+ while (index < length) addElement(that, index++);
+ });
+ if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+ TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create$6(TypedArrayPrototype);
+ } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$3) {
+ TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
+ anInstance$6(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);
+ return inheritIfRequired(function () {
+ if (!isObject$6(data)) return new NativeTypedArrayConstructor(toIndex(data));
+ if (isArrayBuffer(data)) return $length !== undefined ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES), $length) : typedArrayOffset !== undefined ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES)) : new NativeTypedArrayConstructor(data);
+ if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);
+ return typedArrayFrom$1.call(TypedArrayConstructor, data);
+ }(), dummy, TypedArrayConstructor);
+ });
+ if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+ forEach$1(getOwnPropertyNames$1(NativeTypedArrayConstructor), function (key) {
+ if (!(key in TypedArrayConstructor)) {
+ createNonEnumerableProperty$6(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
+ }
+ });
+ TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
+ }
+
+ if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
+ }
+
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR$1, TypedArrayConstructor);
+
+ if (TYPED_ARRAY_TAG) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
+ }
+
+ exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
+ $$1Y({
+ global: true,
+ forced: TypedArrayConstructor != NativeTypedArrayConstructor,
+ sham: !NATIVE_ARRAY_BUFFER_VIEWS
+ }, exported);
+
+ if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
+ createNonEnumerableProperty$6(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
+ }
+
+ if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
+ }
+
+ setSpecies$1(CONSTRUCTOR_NAME);
+ };
+ } else typedArrayConstructor.exports = function () {
+ /* empty */
+ };
+
+ var createTypedArrayConstructor$8 = typedArrayConstructor.exports; // `Float32Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$8('Float32', function (init) {
+ return function Float32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$7 = typedArrayConstructor.exports; // `Float64Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$7('Float64', function (init) {
+ return function Float64Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$6 = typedArrayConstructor.exports; // `Int8Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$6('Int8', function (init) {
+ return function Int8Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$5 = typedArrayConstructor.exports; // `Int16Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$5('Int16', function (init) {
+ return function Int16Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$4 = typedArrayConstructor.exports; // `Int32Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$4('Int32', function (init) {
+ return function Int32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$3 = typedArrayConstructor.exports; // `Uint8Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$3('Uint8', function (init) {
+ return function Uint8Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor$2 = typedArrayConstructor.exports; // `Uint8ClampedArray` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$2('Uint8', function (init) {
+ return function Uint8ClampedArray(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ }, true);
+
+ var createTypedArrayConstructor$1 = typedArrayConstructor.exports; // `Uint16Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor$1('Uint16', function (init) {
+ return function Uint16Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var createTypedArrayConstructor = typedArrayConstructor.exports; // `Uint32Array` constructor
+ // https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+ createTypedArrayConstructor('Uint32', function (init) {
+ return function Uint32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+ var ArrayBufferViewCore$v = arrayBufferViewCore;
+
+ var lengthOfArrayLike$7 = lengthOfArrayLike$q;
+
+ var toIntegerOrInfinity$1 = toIntegerOrInfinity$i;
+
+ var aTypedArray$s = ArrayBufferViewCore$v.aTypedArray;
+ var exportTypedArrayMethod$t = ArrayBufferViewCore$v.exportTypedArrayMethod; // `%TypedArray%.prototype.at` method
+ // https://github.com/tc39/proposal-relative-indexing-method
+
+ exportTypedArrayMethod$t('at', function at(index) {
+ var O = aTypedArray$s(this);
+ var len = lengthOfArrayLike$7(O);
+ var relativeIndex = toIntegerOrInfinity$1(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : O[k];
+ });
+
+ var ArrayBufferViewCore$u = arrayBufferViewCore;
+
+ var $copyWithin = arrayCopyWithin;
+
+ var aTypedArray$r = ArrayBufferViewCore$u.aTypedArray;
+ var exportTypedArrayMethod$s = ArrayBufferViewCore$u.exportTypedArrayMethod; // `%TypedArray%.prototype.copyWithin` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin
+
+ exportTypedArrayMethod$s('copyWithin', function copyWithin(target, start
+ /* , end */
+ ) {
+ return $copyWithin.call(aTypedArray$r(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ });
+
+ var ArrayBufferViewCore$t = arrayBufferViewCore;
+
+ var $every$1 = arrayIteration.every;
+
+ var aTypedArray$q = ArrayBufferViewCore$t.aTypedArray;
+ var exportTypedArrayMethod$r = ArrayBufferViewCore$t.exportTypedArrayMethod; // `%TypedArray%.prototype.every` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.every
+
+ exportTypedArrayMethod$r('every', function every(callbackfn
+ /* , thisArg */
+ ) {
+ return $every$1(aTypedArray$q(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$s = arrayBufferViewCore;
+
+ var $fill = arrayFill$1;
+
+ var aTypedArray$p = ArrayBufferViewCore$s.aTypedArray;
+ var exportTypedArrayMethod$q = ArrayBufferViewCore$s.exportTypedArrayMethod; // `%TypedArray%.prototype.fill` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ exportTypedArrayMethod$q('fill', function fill(value
+ /* , start, end */
+ ) {
+ return $fill.apply(aTypedArray$p(this), arguments);
+ });
+
+ var arrayFromConstructorAndList$3 = function (Constructor, list) {
+ var index = 0;
+ var length = list.length;
+ var result = new Constructor(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+ };
+
+ var ArrayBufferViewCore$r = arrayBufferViewCore;
+
+ var speciesConstructor$9 = speciesConstructor$f;
+
+ var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore$r.TYPED_ARRAY_CONSTRUCTOR;
+ var aTypedArrayConstructor$2 = ArrayBufferViewCore$r.aTypedArrayConstructor; // a part of `TypedArraySpeciesCreate` abstract operation
+ // https://tc39.es/ecma262/#typedarray-species-create
+
+ var typedArraySpeciesConstructor$5 = function (originalArray) {
+ return aTypedArrayConstructor$2(speciesConstructor$9(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));
+ };
+
+ var arrayFromConstructorAndList$2 = arrayFromConstructorAndList$3;
+
+ var typedArraySpeciesConstructor$4 = typedArraySpeciesConstructor$5;
+
+ var typedArrayFromSpeciesAndList = function (instance, list) {
+ return arrayFromConstructorAndList$2(typedArraySpeciesConstructor$4(instance), list);
+ };
+
+ var ArrayBufferViewCore$q = arrayBufferViewCore;
+
+ var $filter = arrayIteration.filter;
+
+ var fromSpeciesAndList$3 = typedArrayFromSpeciesAndList;
+
+ var aTypedArray$o = ArrayBufferViewCore$q.aTypedArray;
+ var exportTypedArrayMethod$p = ArrayBufferViewCore$q.exportTypedArrayMethod; // `%TypedArray%.prototype.filter` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter
+
+ exportTypedArrayMethod$p('filter', function filter(callbackfn
+ /* , thisArg */
+ ) {
+ var list = $filter(aTypedArray$o(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$3(this, list);
+ });
+
+ var ArrayBufferViewCore$p = arrayBufferViewCore;
+
+ var $find$1 = arrayIteration.find;
+
+ var aTypedArray$n = ArrayBufferViewCore$p.aTypedArray;
+ var exportTypedArrayMethod$o = ArrayBufferViewCore$p.exportTypedArrayMethod; // `%TypedArray%.prototype.find` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.find
+
+ exportTypedArrayMethod$o('find', function find(predicate
+ /* , thisArg */
+ ) {
+ return $find$1(aTypedArray$n(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$o = arrayBufferViewCore;
+
+ var $findIndex = arrayIteration.findIndex;
+
+ var aTypedArray$m = ArrayBufferViewCore$o.aTypedArray;
+ var exportTypedArrayMethod$n = ArrayBufferViewCore$o.exportTypedArrayMethod; // `%TypedArray%.prototype.findIndex` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex
+
+ exportTypedArrayMethod$n('findIndex', function findIndex(predicate
+ /* , thisArg */
+ ) {
+ return $findIndex(aTypedArray$m(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$n = arrayBufferViewCore;
+
+ var $forEach$1 = arrayIteration.forEach;
+
+ var aTypedArray$l = ArrayBufferViewCore$n.aTypedArray;
+ var exportTypedArrayMethod$m = ArrayBufferViewCore$n.exportTypedArrayMethod; // `%TypedArray%.prototype.forEach` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach
+
+ exportTypedArrayMethod$m('forEach', function forEach(callbackfn
+ /* , thisArg */
+ ) {
+ $forEach$1(aTypedArray$l(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$2 = typedArrayConstructorsRequireWrappers;
+
+ var exportTypedArrayStaticMethod$2 = arrayBufferViewCore.exportTypedArrayStaticMethod;
+
+ var typedArrayFrom = typedArrayFrom$2; // `%TypedArray%.from` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.from
+
+
+ exportTypedArrayStaticMethod$2('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$2);
+
+ var ArrayBufferViewCore$m = arrayBufferViewCore;
+
+ var $includes = arrayIncludes.includes;
+
+ var aTypedArray$k = ArrayBufferViewCore$m.aTypedArray;
+ var exportTypedArrayMethod$l = ArrayBufferViewCore$m.exportTypedArrayMethod; // `%TypedArray%.prototype.includes` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes
+
+ exportTypedArrayMethod$l('includes', function includes(searchElement
+ /* , fromIndex */
+ ) {
+ return $includes(aTypedArray$k(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$l = arrayBufferViewCore;
+
+ var $indexOf = arrayIncludes.indexOf;
+
+ var aTypedArray$j = ArrayBufferViewCore$l.aTypedArray;
+ var exportTypedArrayMethod$k = ArrayBufferViewCore$l.exportTypedArrayMethod; // `%TypedArray%.prototype.indexOf` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof
+
+ exportTypedArrayMethod$k('indexOf', function indexOf(searchElement
+ /* , fromIndex */
+ ) {
+ return $indexOf(aTypedArray$j(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var global$e = global$R;
+
+ var PROPER_FUNCTION_NAME = functionName.PROPER;
+
+ var ArrayBufferViewCore$k = arrayBufferViewCore;
+
+ var ArrayIterators = es_array_iterator;
+
+ var wellKnownSymbol$c = wellKnownSymbol$G;
+
+ var ITERATOR$3 = wellKnownSymbol$c('iterator');
+ var Uint8Array$1 = global$e.Uint8Array;
+ var arrayValues = ArrayIterators.values;
+ var arrayKeys = ArrayIterators.keys;
+ var arrayEntries = ArrayIterators.entries;
+ var aTypedArray$i = ArrayBufferViewCore$k.aTypedArray;
+ var exportTypedArrayMethod$j = ArrayBufferViewCore$k.exportTypedArrayMethod;
+ var nativeTypedArrayIterator = Uint8Array$1 && Uint8Array$1.prototype[ITERATOR$3];
+ var PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';
+
+ var typedArrayValues = function values() {
+ return arrayValues.call(aTypedArray$i(this));
+ }; // `%TypedArray%.prototype.entries` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries
+
+
+ exportTypedArrayMethod$j('entries', function entries() {
+ return arrayEntries.call(aTypedArray$i(this));
+ }); // `%TypedArray%.prototype.keys` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys
+
+ exportTypedArrayMethod$j('keys', function keys() {
+ return arrayKeys.call(aTypedArray$i(this));
+ }); // `%TypedArray%.prototype.values` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
+
+ exportTypedArrayMethod$j('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME); // `%TypedArray%.prototype[@@iterator]` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
+
+ exportTypedArrayMethod$j(ITERATOR$3, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
+
+ var ArrayBufferViewCore$j = arrayBufferViewCore;
+
+ var aTypedArray$h = ArrayBufferViewCore$j.aTypedArray;
+ var exportTypedArrayMethod$i = ArrayBufferViewCore$j.exportTypedArrayMethod;
+ var $join = [].join; // `%TypedArray%.prototype.join` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.join
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ exportTypedArrayMethod$i('join', function join(separator) {
+ return $join.apply(aTypedArray$h(this), arguments);
+ });
+
+ var ArrayBufferViewCore$i = arrayBufferViewCore;
+
+ var $lastIndexOf = arrayLastIndexOf;
+
+ var aTypedArray$g = ArrayBufferViewCore$i.aTypedArray;
+ var exportTypedArrayMethod$h = ArrayBufferViewCore$i.exportTypedArrayMethod; // `%TypedArray%.prototype.lastIndexOf` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ exportTypedArrayMethod$h('lastIndexOf', function lastIndexOf(searchElement
+ /* , fromIndex */
+ ) {
+ return $lastIndexOf.apply(aTypedArray$g(this), arguments);
+ });
+
+ var ArrayBufferViewCore$h = arrayBufferViewCore;
+
+ var $map = arrayIteration.map;
+
+ var typedArraySpeciesConstructor$3 = typedArraySpeciesConstructor$5;
+
+ var aTypedArray$f = ArrayBufferViewCore$h.aTypedArray;
+ var exportTypedArrayMethod$g = ArrayBufferViewCore$h.exportTypedArrayMethod; // `%TypedArray%.prototype.map` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
+
+ exportTypedArrayMethod$g('map', function map(mapfn
+ /* , thisArg */
+ ) {
+ return $map(aTypedArray$f(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
+ return new (typedArraySpeciesConstructor$3(O))(length);
+ });
+ });
+
+ var ArrayBufferViewCore$g = arrayBufferViewCore;
+
+ var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1 = typedArrayConstructorsRequireWrappers;
+
+ var aTypedArrayConstructor$1 = ArrayBufferViewCore$g.aTypedArrayConstructor;
+ var exportTypedArrayStaticMethod$1 = ArrayBufferViewCore$g.exportTypedArrayStaticMethod; // `%TypedArray%.of` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.of
+
+ exportTypedArrayStaticMethod$1('of', function of() {
+ var index = 0;
+ var length = arguments.length;
+ var result = new (aTypedArrayConstructor$1(this))(length);
+
+ while (length > index) result[index] = arguments[index++];
+
+ return result;
+ }, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1);
+
+ var ArrayBufferViewCore$f = arrayBufferViewCore;
+
+ var $reduce = arrayReduce.left;
+
+ var aTypedArray$e = ArrayBufferViewCore$f.aTypedArray;
+ var exportTypedArrayMethod$f = ArrayBufferViewCore$f.exportTypedArrayMethod; // `%TypedArray%.prototype.reduce` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce
+
+ exportTypedArrayMethod$f('reduce', function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduce(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$e = arrayBufferViewCore;
+
+ var $reduceRight = arrayReduce.right;
+
+ var aTypedArray$d = ArrayBufferViewCore$e.aTypedArray;
+ var exportTypedArrayMethod$e = ArrayBufferViewCore$e.exportTypedArrayMethod; // `%TypedArray%.prototype.reduceRicht` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright
+
+ exportTypedArrayMethod$e('reduceRight', function reduceRight(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduceRight(aTypedArray$d(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$d = arrayBufferViewCore;
+
+ var aTypedArray$c = ArrayBufferViewCore$d.aTypedArray;
+ var exportTypedArrayMethod$d = ArrayBufferViewCore$d.exportTypedArrayMethod;
+ var floor$2 = Math.floor; // `%TypedArray%.prototype.reverse` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse
+
+ exportTypedArrayMethod$d('reverse', function reverse() {
+ var that = this;
+ var length = aTypedArray$c(that).length;
+ var middle = floor$2(length / 2);
+ var index = 0;
+ var value;
+
+ while (index < middle) {
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ }
+
+ return that;
+ });
+
+ var ArrayBufferViewCore$c = arrayBufferViewCore;
+
+ var lengthOfArrayLike$6 = lengthOfArrayLike$q;
+
+ var toOffset = toOffset$2;
+
+ var toObject$a = toObject$A;
+
+ var fails$7 = fails$15;
+
+ var aTypedArray$b = ArrayBufferViewCore$c.aTypedArray;
+ var exportTypedArrayMethod$c = ArrayBufferViewCore$c.exportTypedArrayMethod;
+ var FORCED$5 = fails$7(function () {
+ // eslint-disable-next-line es/no-typed-arrays -- required for testing
+ new Int8Array(1).set({});
+ }); // `%TypedArray%.prototype.set` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.set
+
+ exportTypedArrayMethod$c('set', function set(arrayLike
+ /* , offset */
+ ) {
+ aTypedArray$b(this);
+ var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
+ var length = this.length;
+ var src = toObject$a(arrayLike);
+ var len = lengthOfArrayLike$6(src);
+ var index = 0;
+ if (len + offset > length) throw RangeError('Wrong length');
+
+ while (index < len) this[offset + index] = src[index++];
+ }, FORCED$5);
+
+ var ArrayBufferViewCore$b = arrayBufferViewCore;
+
+ var typedArraySpeciesConstructor$2 = typedArraySpeciesConstructor$5;
+
+ var fails$6 = fails$15;
+
+ var aTypedArray$a = ArrayBufferViewCore$b.aTypedArray;
+ var exportTypedArrayMethod$b = ArrayBufferViewCore$b.exportTypedArrayMethod;
+ var $slice$1 = [].slice;
+ var FORCED$4 = fails$6(function () {
+ // eslint-disable-next-line es/no-typed-arrays -- required for testing
+ new Int8Array(1).slice();
+ }); // `%TypedArray%.prototype.slice` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
+
+ exportTypedArrayMethod$b('slice', function slice(start, end) {
+ var list = $slice$1.call(aTypedArray$a(this), start, end);
+ var C = typedArraySpeciesConstructor$2(this);
+ var index = 0;
+ var length = list.length;
+ var result = new C(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+ }, FORCED$4);
+
+ var ArrayBufferViewCore$a = arrayBufferViewCore;
+
+ var $some$1 = arrayIteration.some;
+
+ var aTypedArray$9 = ArrayBufferViewCore$a.aTypedArray;
+ var exportTypedArrayMethod$a = ArrayBufferViewCore$a.exportTypedArrayMethod; // `%TypedArray%.prototype.some` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.some
+
+ exportTypedArrayMethod$a('some', function some(callbackfn
+ /* , thisArg */
+ ) {
+ return $some$1(aTypedArray$9(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$9 = arrayBufferViewCore;
+
+ var global$d = global$R;
+
+ var fails$5 = fails$15;
+
+ var aCallable$B = aCallable$Q;
+
+ var lengthOfArrayLike$5 = lengthOfArrayLike$q;
+
+ var internalSort = arraySort;
+
+ var FF = engineFfVersion;
+
+ var IE_OR_EDGE = engineIsIeOrEdge;
+
+ var V8 = engineV8Version;
+
+ var WEBKIT = engineWebkitVersion;
+
+ var aTypedArray$8 = ArrayBufferViewCore$9.aTypedArray;
+ var exportTypedArrayMethod$9 = ArrayBufferViewCore$9.exportTypedArrayMethod;
+ var Uint16Array = global$d.Uint16Array;
+ var nativeSort = Uint16Array && Uint16Array.prototype.sort; // WebKit
+
+ var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !fails$5(function () {
+ var array = new Uint16Array(2);
+ array.sort(null);
+ array.sort({});
+ });
+ var STABLE_SORT = !!nativeSort && !fails$5(function () {
+ // feature detection can be too slow, so check engines versions
+ if (V8) return V8 < 74;
+ if (FF) return FF < 67;
+ if (IE_OR_EDGE) return true;
+ if (WEBKIT) return WEBKIT < 602;
+ var array = new Uint16Array(516);
+ var expected = Array(516);
+ var index, mod;
+
+ for (index = 0; index < 516; index++) {
+ mod = index % 4;
+ array[index] = 515 - index;
+ expected[index] = index - 2 * mod + 3;
+ }
+
+ array.sort(function (a, b) {
+ return (a / 4 | 0) - (b / 4 | 0);
+ });
+
+ for (index = 0; index < 516; index++) {
+ if (array[index] !== expected[index]) return true;
+ }
+ });
+
+ var getSortCompare = function (comparefn) {
+ return function (x, y) {
+ if (comparefn !== undefined) return +comparefn(x, y) || 0; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (y !== y) return -1; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (x !== x) return 1;
+ if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;
+ return x > y;
+ };
+ }; // `%TypedArray%.prototype.sort` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
+
+
+ exportTypedArrayMethod$9('sort', function sort(comparefn) {
+ var array = this;
+ if (comparefn !== undefined) aCallable$B(comparefn);
+ if (STABLE_SORT) return nativeSort.call(array, comparefn);
+ aTypedArray$8(array);
+ var arrayLength = lengthOfArrayLike$5(array);
+ var items = Array(arrayLength);
+ var index;
+
+ for (index = 0; index < arrayLength; index++) {
+ items[index] = array[index];
+ }
+
+ items = internalSort(array, getSortCompare(comparefn));
+
+ for (index = 0; index < arrayLength; index++) {
+ array[index] = items[index];
+ }
+
+ return array;
+ }, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);
+
+ var ArrayBufferViewCore$8 = arrayBufferViewCore;
+
+ var toLength = toLength$d;
+
+ var toAbsoluteIndex = toAbsoluteIndex$8;
+
+ var typedArraySpeciesConstructor$1 = typedArraySpeciesConstructor$5;
+
+ var aTypedArray$7 = ArrayBufferViewCore$8.aTypedArray;
+ var exportTypedArrayMethod$8 = ArrayBufferViewCore$8.exportTypedArrayMethod; // `%TypedArray%.prototype.subarray` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray
+
+ exportTypedArrayMethod$8('subarray', function subarray(begin, end) {
+ var O = aTypedArray$7(this);
+ var length = O.length;
+ var beginIndex = toAbsoluteIndex(begin, length);
+ var C = typedArraySpeciesConstructor$1(O);
+ return new C(O.buffer, O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex));
+ });
+
+ var global$c = global$R;
+
+ var ArrayBufferViewCore$7 = arrayBufferViewCore;
+
+ var fails$4 = fails$15;
+
+ var Int8Array$1 = global$c.Int8Array;
+ var aTypedArray$6 = ArrayBufferViewCore$7.aTypedArray;
+ var exportTypedArrayMethod$7 = ArrayBufferViewCore$7.exportTypedArrayMethod;
+ var $toLocaleString = [].toLocaleString;
+ var $slice = [].slice; // iOS Safari 6.x fails here
+
+ var TO_LOCALE_STRING_BUG = !!Int8Array$1 && fails$4(function () {
+ $toLocaleString.call(new Int8Array$1(1));
+ });
+ var FORCED$3 = fails$4(function () {
+ return [1, 2].toLocaleString() != new Int8Array$1([1, 2]).toLocaleString();
+ }) || !fails$4(function () {
+ Int8Array$1.prototype.toLocaleString.call([1, 2]);
+ }); // `%TypedArray%.prototype.toLocaleString` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring
+
+ exportTypedArrayMethod$7('toLocaleString', function toLocaleString() {
+ return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray$6(this)) : aTypedArray$6(this), arguments);
+ }, FORCED$3);
+
+ var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod;
+
+ var fails$3 = fails$15;
+
+ var global$b = global$R;
+
+ var Uint8Array = global$b.Uint8Array;
+ var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};
+ var arrayToString = [].toString;
+ var arrayJoin = [].join;
+
+ if (fails$3(function () {
+ arrayToString.call({});
+ })) {
+ arrayToString = function toString() {
+ return arrayJoin.call(this);
+ };
+ }
+
+ var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; // `%TypedArray%.prototype.toString` method
+ // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring
+
+ exportTypedArrayMethod$6('toString', arrayToString, IS_NOT_ARRAY_METHOD);
+
+ var $$1X = _export;
+
+ var toString$1 = toString$t;
+
+ var fromCharCode = String.fromCharCode;
+ var hex2 = /^[\da-f]{2}$/i;
+ var hex4 = /^[\da-f]{4}$/i; // `unescape` method
+ // https://tc39.es/ecma262/#sec-unescape-string
+
+ $$1X({
+ global: true
+ }, {
+ unescape: function unescape(string) {
+ var str = toString$1(string);
+ var result = '';
+ var length = str.length;
+ var index = 0;
+ var chr, slice;
+
+ while (index < length) {
+ chr = str.charAt(index++);
+
+ if (chr === '%') {
+ if (str.charAt(index) === 'u') {
+ slice = str.slice(index + 1, index + 5);
+
+ if (hex4.test(slice)) {
+ result += fromCharCode(parseInt(slice, 16));
+ index += 5;
+ continue;
+ }
+ } else {
+ slice = str.slice(index, index + 2);
+
+ if (hex2.test(slice)) {
+ result += fromCharCode(parseInt(slice, 16));
+ index += 2;
+ continue;
+ }
+ }
+ }
+
+ result += chr;
+ }
+
+ return result;
+ }
+ });
+
+ var es_weakMap = {exports: {}};
+
+ var redefineAll$6 = redefineAll$a;
+
+ var getWeakData = internalMetadata.exports.getWeakData;
+
+ var anObject$14 = anObject$1C;
+
+ var isObject$5 = isObject$C;
+
+ var anInstance$5 = anInstance$b;
+
+ var iterate$A = iterate$I;
+
+ var ArrayIterationModule = arrayIteration;
+
+ var hasOwn$5 = hasOwnProperty_1;
+
+ var InternalStateModule$a = internalState;
+
+ var setInternalState$a = InternalStateModule$a.set;
+ var internalStateGetterFor = InternalStateModule$a.getterFor;
+ var find$2 = ArrayIterationModule.find;
+ var findIndex = ArrayIterationModule.findIndex;
+ var id = 0; // fallback for uncaught frozen keys
+
+ var uncaughtFrozenStore = function (store) {
+ return store.frozen || (store.frozen = new UncaughtFrozenStore());
+ };
+
+ var UncaughtFrozenStore = function () {
+ this.entries = [];
+ };
+
+ var findUncaughtFrozen = function (store, key) {
+ return find$2(store.entries, function (it) {
+ return it[0] === key;
+ });
+ };
+
+ UncaughtFrozenStore.prototype = {
+ get: function (key) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) return entry[1];
+ },
+ has: function (key) {
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function (key, value) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) entry[1] = value;else this.entries.push([key, value]);
+ },
+ 'delete': function (key) {
+ var index = findIndex(this.entries, function (it) {
+ return it[0] === key;
+ });
+ if (~index) this.entries.splice(index, 1);
+ return !!~index;
+ }
+ };
+ var collectionWeak$2 = {
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance$5(that, C, CONSTRUCTOR_NAME);
+ setInternalState$a(that, {
+ type: CONSTRUCTOR_NAME,
+ id: id++,
+ frozen: undefined
+ });
+ if (iterable != undefined) iterate$A(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ });
+ var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
+
+ var define = function (that, key, value) {
+ var state = getInternalState(that);
+ var data = getWeakData(anObject$14(key), true);
+ if (data === true) uncaughtFrozenStore(state).set(key, value);else data[state.id] = value;
+ return that;
+ };
+
+ redefineAll$6(C.prototype, {
+ // `{ WeakMap, WeakSet }.prototype.delete(key)` methods
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.delete
+ // https://tc39.es/ecma262/#sec-weakset.prototype.delete
+ 'delete': function (key) {
+ var state = getInternalState(this);
+ if (!isObject$5(key)) return false;
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state)['delete'](key);
+ return data && hasOwn$5(data, state.id) && delete data[state.id];
+ },
+ // `{ WeakMap, WeakSet }.prototype.has(key)` methods
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.has
+ // https://tc39.es/ecma262/#sec-weakset.prototype.has
+ has: function has(key) {
+ var state = getInternalState(this);
+ if (!isObject$5(key)) return false;
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state).has(key);
+ return data && hasOwn$5(data, state.id);
+ }
+ });
+ redefineAll$6(C.prototype, IS_MAP ? {
+ // `WeakMap.prototype.get(key)` method
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.get
+ get: function get(key) {
+ var state = getInternalState(this);
+
+ if (isObject$5(key)) {
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state).get(key);
+ return data ? data[state.id] : undefined;
+ }
+ },
+ // `WeakMap.prototype.set(key, value)` method
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.set
+ set: function set(key, value) {
+ return define(this, key, value);
+ }
+ } : {
+ // `WeakSet.prototype.add(value)` method
+ // https://tc39.es/ecma262/#sec-weakset.prototype.add
+ add: function add(value) {
+ return define(this, value, true);
+ }
+ });
+ return C;
+ }
+ };
+
+ var global$a = global$R;
+
+ var redefineAll$5 = redefineAll$a;
+
+ var InternalMetadataModule = internalMetadata.exports;
+
+ var collection$1 = collection$4;
+
+ var collectionWeak$1 = collectionWeak$2;
+
+ var isObject$4 = isObject$C;
+
+ var enforceIternalState = internalState.enforce;
+
+ var NATIVE_WEAK_MAP = nativeWeakMap;
+
+ var IS_IE11 = !global$a.ActiveXObject && 'ActiveXObject' in global$a; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+ var isExtensible = Object.isExtensible;
+ var InternalWeakMap;
+
+ var wrapper = function (init) {
+ return function WeakMap() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+ }; // `WeakMap` constructor
+ // https://tc39.es/ecma262/#sec-weakmap-constructor
+
+
+ var $WeakMap = es_weakMap.exports = collection$1('WeakMap', wrapper, collectionWeak$1); // IE11 WeakMap frozen keys fix
+ // We can't use feature detection because it crash some old IE builds
+ // https://github.com/zloirock/core-js/issues/485
+
+ if (NATIVE_WEAK_MAP && IS_IE11) {
+ InternalWeakMap = collectionWeak$1.getConstructor(wrapper, 'WeakMap', true);
+ InternalMetadataModule.enable();
+ var WeakMapPrototype = $WeakMap.prototype;
+ var nativeDelete = WeakMapPrototype['delete'];
+ var nativeHas = WeakMapPrototype.has;
+ var nativeGet = WeakMapPrototype.get;
+ var nativeSet = WeakMapPrototype.set;
+ redefineAll$5(WeakMapPrototype, {
+ 'delete': function (key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeDelete.call(this, key) || state.frozen['delete'](key);
+ }
+
+ return nativeDelete.call(this, key);
+ },
+ has: function has(key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeHas.call(this, key) || state.frozen.has(key);
+ }
+
+ return nativeHas.call(this, key);
+ },
+ get: function get(key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);
+ }
+
+ return nativeGet.call(this, key);
+ },
+ set: function set(key, value) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);
+ } else nativeSet.call(this, key, value);
+
+ return this;
+ }
+ });
+ }
+
+ var collection = collection$4;
+
+ var collectionWeak = collectionWeak$2; // `WeakSet` constructor
+ // https://tc39.es/ecma262/#sec-weakset-constructor
+
+
+ collection('WeakSet', function (init) {
+ return function WeakSet() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+ }, collectionWeak);
+
+ var global$9 = global$R;
+
+ var shared$1 = sharedStore;
+
+ var isCallable$6 = isCallable$z;
+
+ var getPrototypeOf$4 = objectGetPrototypeOf$1;
+
+ var redefine$3 = redefine$l.exports;
+
+ var wellKnownSymbol$b = wellKnownSymbol$G;
+
+ var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';
+ var ASYNC_ITERATOR$3 = wellKnownSymbol$b('asyncIterator');
+ var AsyncIterator = global$9.AsyncIterator;
+ var PassedAsyncIteratorPrototype = shared$1.AsyncIteratorPrototype;
+ var AsyncIteratorPrototype$4, prototype;
+
+ if (PassedAsyncIteratorPrototype) {
+ AsyncIteratorPrototype$4 = PassedAsyncIteratorPrototype;
+ } else if (isCallable$6(AsyncIterator)) {
+ AsyncIteratorPrototype$4 = AsyncIterator.prototype;
+ } else if (shared$1[USE_FUNCTION_CONSTRUCTOR] || global$9[USE_FUNCTION_CONSTRUCTOR]) {
+ try {
+ // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax
+ prototype = getPrototypeOf$4(getPrototypeOf$4(getPrototypeOf$4(Function('return async function*(){}()')())));
+ if (getPrototypeOf$4(prototype) === Object.prototype) AsyncIteratorPrototype$4 = prototype;
+ } catch (error) {
+ /* empty */
+ }
+ }
+
+ if (!AsyncIteratorPrototype$4) AsyncIteratorPrototype$4 = {};
+
+ if (!isCallable$6(AsyncIteratorPrototype$4[ASYNC_ITERATOR$3])) {
+ redefine$3(AsyncIteratorPrototype$4, ASYNC_ITERATOR$3, function () {
+ return this;
+ });
+ }
+
+ var asyncIteratorPrototype = AsyncIteratorPrototype$4;
+
+ var anObject$13 = anObject$1C;
+
+ var create$5 = objectCreate$1;
+
+ var getMethod$7 = getMethod$h;
+
+ var redefineAll$4 = redefineAll$a;
+
+ var InternalStateModule$9 = internalState;
+
+ var getBuiltIn$j = getBuiltIn$y;
+
+ var AsyncIteratorPrototype$3 = asyncIteratorPrototype;
+
+ var Promise$3 = getBuiltIn$j('Promise');
+ var setInternalState$9 = InternalStateModule$9.set;
+ var getInternalState$7 = InternalStateModule$9.get;
+
+ var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
+ var done = result.done;
+ Promise$3.resolve(result.value).then(function (value) {
+ resolve({
+ done: done,
+ value: value
+ });
+ }, reject);
+ };
+
+ var AsyncFromSyncIterator$3 = function AsyncIterator(iterator) {
+ setInternalState$9(this, {
+ iterator: anObject$13(iterator),
+ next: iterator.next
+ });
+ };
+
+ AsyncFromSyncIterator$3.prototype = redefineAll$4(create$5(AsyncIteratorPrototype$3), {
+ next: function next(arg) {
+ var state = getInternalState$7(this);
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var result = anObject$13(state.next.apply(state.iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ },
+ 'return': function (arg) {
+ var iterator = getInternalState$7(this).iterator;
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var $return = getMethod$7(iterator, 'return');
+ if ($return === undefined) return resolve({
+ done: true,
+ value: arg
+ });
+ var result = anObject$13($return.apply(iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ },
+ 'throw': function (arg) {
+ var iterator = getInternalState$7(this).iterator;
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var $throw = getMethod$7(iterator, 'throw');
+ if ($throw === undefined) return reject(arg);
+ var result = anObject$13($throw.apply(iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ }
+ });
+ var asyncFromSyncIterator = AsyncFromSyncIterator$3;
+
+ var AsyncFromSyncIterator$2 = asyncFromSyncIterator;
+
+ var anObject$12 = anObject$1C;
+
+ var getIterator$7 = getIterator$b;
+
+ var getMethod$6 = getMethod$h;
+
+ var wellKnownSymbol$a = wellKnownSymbol$G;
+
+ var ASYNC_ITERATOR$2 = wellKnownSymbol$a('asyncIterator');
+
+ var getAsyncIterator$3 = function (it, usingIterator) {
+ var method = arguments.length < 2 ? getMethod$6(it, ASYNC_ITERATOR$2) : usingIterator;
+ return method ? anObject$12(method.call(it)) : new AsyncFromSyncIterator$2(getIterator$7(it));
+ };
+
+ var global$8 = global$R;
+
+ var entryVirtual = function (CONSTRUCTOR) {
+ return global$8[CONSTRUCTOR].prototype;
+ };
+
+ // https://github.com/tc39/proposal-array-from-async
+
+ var aCallable$A = aCallable$Q;
+
+ var anObject$11 = anObject$1C;
+
+ var getBuiltIn$i = getBuiltIn$y;
+
+ var getMethod$5 = getMethod$h;
+
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
+
+ var createMethod$1 = function (TYPE) {
+ var IS_TO_ARRAY = TYPE == 0;
+ var IS_FOR_EACH = TYPE == 1;
+ var IS_EVERY = TYPE == 2;
+ var IS_SOME = TYPE == 3;
+ return function (iterator, fn, target) {
+ anObject$11(iterator);
+ var Promise = getBuiltIn$i('Promise');
+ var next = aCallable$A(iterator.next);
+ var index = 0;
+ var MAPPING = fn !== undefined;
+ if (MAPPING || !IS_TO_ARRAY) aCallable$A(fn);
+ return new Promise(function (resolve, reject) {
+ var closeIteration = function (method, argument) {
+ try {
+ var returnMethod = getMethod$5(iterator, 'return');
+
+ if (returnMethod) {
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
+ method(argument);
+ }, function (error) {
+ reject(error);
+ });
+ }
+ } catch (error2) {
+ return reject(error2);
+ }
+
+ method(argument);
+ };
+
+ var onError = function (error) {
+ closeIteration(reject, error);
+ };
+
+ var loop = function () {
+ try {
+ if (IS_TO_ARRAY && index > MAX_SAFE_INTEGER && MAPPING) {
+ throw TypeError('The allowed number of iterations has been exceeded');
+ }
+
+ Promise.resolve(anObject$11(next.call(iterator))).then(function (step) {
+ try {
+ if (anObject$11(step).done) {
+ if (IS_TO_ARRAY) {
+ target.length = index;
+ resolve(target);
+ } else resolve(IS_SOME ? false : IS_EVERY || undefined);
+ } else {
+ var value = step.value;
+
+ if (MAPPING) {
+ Promise.resolve(IS_TO_ARRAY ? fn(value, index) : fn(value)).then(function (result) {
+ if (IS_FOR_EACH) {
+ loop();
+ } else if (IS_EVERY) {
+ result ? loop() : closeIteration(resolve, false);
+ } else if (IS_TO_ARRAY) {
+ target[index++] = result;
+ loop();
+ } else {
+ result ? closeIteration(resolve, IS_SOME || value) : loop();
+ }
+ }, onError);
+ } else {
+ target[index++] = value;
+ loop();
+ }
+ }
+ } catch (error) {
+ onError(error);
+ }
+ }, onError);
+ } catch (error2) {
+ onError(error2);
+ }
+ };
+
+ loop();
+ });
+ };
+ };
+
+ var asyncIteratorIteration = {
+ toArray: createMethod$1(0),
+ forEach: createMethod$1(1),
+ every: createMethod$1(2),
+ some: createMethod$1(3),
+ find: createMethod$1(4)
+ };
+
+ var bind$g = functionBindContext;
+
+ var toObject$9 = toObject$A;
+
+ var isConstructor$1 = isConstructor$7;
+
+ var getAsyncIterator$2 = getAsyncIterator$3;
+
+ var getIterator$6 = getIterator$b;
+
+ var getIteratorMethod$4 = getIteratorMethod$9;
+
+ var getMethod$4 = getMethod$h;
+
+ var getVirtual = entryVirtual;
+
+ var getBuiltIn$h = getBuiltIn$y;
+
+ var wellKnownSymbol$9 = wellKnownSymbol$G;
+
+ var AsyncFromSyncIterator$1 = asyncFromSyncIterator;
+
+ var toArray = asyncIteratorIteration.toArray;
+
+ var ASYNC_ITERATOR$1 = wellKnownSymbol$9('asyncIterator');
+ var arrayIterator = getVirtual('Array').values; // `Array.fromAsync` method implementation
+ // https://github.com/tc39/proposal-array-from-async
+
+ var arrayFromAsync$1 = function fromAsync(asyncItems
+ /* , mapfn = undefined, thisArg = undefined */
+ ) {
+ var C = this;
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+ return new (getBuiltIn$h('Promise'))(function (resolve) {
+ var O = toObject$9(asyncItems);
+ if (mapfn !== undefined) mapfn = bind$g(mapfn, thisArg, 2);
+ var usingAsyncIterator = getMethod$4(O, ASYNC_ITERATOR$1);
+ var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod$4(O) || arrayIterator;
+ var A = isConstructor$1(C) ? new C() : [];
+ var iterator = usingAsyncIterator ? getAsyncIterator$2(O, usingAsyncIterator) : new AsyncFromSyncIterator$1(getIterator$6(O, usingSyncIterator));
+ resolve(toArray(iterator, mapfn, A));
+ });
+ };
+
+ var $$1W = _export;
+
+ var fromAsync = arrayFromAsync$1; // `Array.fromAsync` method
+ // https://github.com/tc39/proposal-array-from-async
+
+
+ $$1W({
+ target: 'Array',
+ stat: true
+ }, {
+ fromAsync: fromAsync
+ });
+
+ var $$1V = _export;
+
+ var $filterReject$3 = arrayIteration.filterReject;
+
+ var addToUnscopables$7 = addToUnscopables$h; // `Array.prototype.filterOut` method
+ // https://github.com/tc39/proposal-array-filtering
+
+
+ $$1V({
+ target: 'Array',
+ proto: true
+ }, {
+ filterOut: function filterOut(callbackfn
+ /* , thisArg */
+ ) {
+ return $filterReject$3(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ addToUnscopables$7('filterOut');
+
+ var $$1U = _export;
+
+ var $filterReject$2 = arrayIteration.filterReject;
+
+ var addToUnscopables$6 = addToUnscopables$h; // `Array.prototype.filterReject` method
+ // https://github.com/tc39/proposal-array-filtering
+
+
+ $$1U({
+ target: 'Array',
+ proto: true
+ }, {
+ filterReject: function filterReject(callbackfn
+ /* , thisArg */
+ ) {
+ return $filterReject$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ addToUnscopables$6('filterReject');
+
+ var bind$f = functionBindContext;
+
+ var IndexedObject$1 = indexedObject;
+
+ var toObject$8 = toObject$A;
+
+ var lengthOfArrayLike$4 = lengthOfArrayLike$q; // `Array.prototype.{ findLast, findLastIndex }` methods implementation
+
+
+ var createMethod = function (TYPE) {
+ var IS_FIND_LAST_INDEX = TYPE == 1;
+ return function ($this, callbackfn, that) {
+ var O = toObject$8($this);
+ var self = IndexedObject$1(O);
+ var boundFunction = bind$f(callbackfn, that, 3);
+ var index = lengthOfArrayLike$4(self);
+ var value, result;
+
+ while (index-- > 0) {
+ value = self[index];
+ result = boundFunction(value, index, O);
+ if (result) switch (TYPE) {
+ case 0:
+ return value;
+ // findLast
+
+ case 1:
+ return index;
+ // findLastIndex
+ }
+ }
+
+ return IS_FIND_LAST_INDEX ? -1 : undefined;
+ };
+ };
+
+ var arrayIterationFromLast = {
+ // `Array.prototype.findLast` method
+ // https://github.com/tc39/proposal-array-find-from-last
+ findLast: createMethod(0),
+ // `Array.prototype.findLastIndex` method
+ // https://github.com/tc39/proposal-array-find-from-last
+ findLastIndex: createMethod(1)
+ };
+
+ var $$1T = _export;
+
+ var $findLast$1 = arrayIterationFromLast.findLast;
+
+ var addToUnscopables$5 = addToUnscopables$h; // `Array.prototype.findLast` method
+ // https://github.com/tc39/proposal-array-find-from-last
+
+
+ $$1T({
+ target: 'Array',
+ proto: true
+ }, {
+ findLast: function findLast(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findLast$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ addToUnscopables$5('findLast');
+
+ var $$1S = _export;
+
+ var $findLastIndex$1 = arrayIterationFromLast.findLastIndex;
+
+ var addToUnscopables$4 = addToUnscopables$h; // `Array.prototype.findLastIndex` method
+ // https://github.com/tc39/proposal-array-find-from-last
+
+
+ $$1S({
+ target: 'Array',
+ proto: true
+ }, {
+ findLastIndex: function findLastIndex(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findLastIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ addToUnscopables$4('findLastIndex');
+
+ var bind$e = functionBindContext;
+
+ var IndexedObject = indexedObject;
+
+ var toObject$7 = toObject$A;
+
+ var toPropertyKey = toPropertyKey$9;
+
+ var lengthOfArrayLike$3 = lengthOfArrayLike$q;
+
+ var objectCreate = objectCreate$1;
+
+ var arrayFromConstructorAndList$1 = arrayFromConstructorAndList$3;
+
+ var push$2 = [].push;
+
+ var arrayGroupBy = function ($this, callbackfn, that, specificConstructor) {
+ var O = toObject$7($this);
+ var self = IndexedObject(O);
+ var boundFunction = bind$e(callbackfn, that, 3);
+ var target = objectCreate(null);
+ var length = lengthOfArrayLike$3(self);
+ var index = 0;
+ var Constructor, key, value;
+
+ for (; length > index; index++) {
+ value = self[index];
+ key = toPropertyKey(boundFunction(value, index, O)); // in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys
+ // but since it's a `null` prototype object, we can safely use `in`
+
+ if (key in target) push$2.call(target[key], value);else target[key] = [value];
+ }
+
+ if (specificConstructor) {
+ Constructor = specificConstructor(O);
+
+ if (Constructor !== Array) {
+ for (key in target) target[key] = arrayFromConstructorAndList$1(Constructor, target[key]);
+ }
+ }
+
+ return target;
+ };
+
+ var $$1R = _export;
+
+ var $groupBy$1 = arrayGroupBy;
+
+ var arraySpeciesConstructor = arraySpeciesConstructor$2;
+
+ var addToUnscopables$3 = addToUnscopables$h; // `Array.prototype.groupBy` method
+ // https://github.com/tc39/proposal-array-grouping
+
+
+ $$1R({
+ target: 'Array',
+ proto: true
+ }, {
+ groupBy: function groupBy(callbackfn
+ /* , thisArg */
+ ) {
+ var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+ return $groupBy$1(this, callbackfn, thisArg, arraySpeciesConstructor);
+ }
+ });
+ addToUnscopables$3('groupBy');
+
+ var $$1Q = _export;
+
+ var isArray = isArray$8; // eslint-disable-next-line es/no-object-isfrozen -- safe
+
+
+ var isFrozen = Object.isFrozen;
+
+ var isFrozenStringArray = function (array, allowUndefined) {
+ if (!isFrozen || !isArray(array) || !isFrozen(array)) return false;
+ var index = 0;
+ var length = array.length;
+ var element;
+
+ while (index < length) {
+ element = array[index++];
+
+ if (!(typeof element === 'string' || allowUndefined && typeof element === 'undefined')) {
+ return false;
+ }
+ }
+
+ return length !== 0;
+ }; // `Array.isTemplateObject` method
+ // https://github.com/tc39/proposal-array-is-template-object
+
+
+ $$1Q({
+ target: 'Array',
+ stat: true
+ }, {
+ isTemplateObject: function isTemplateObject(value) {
+ if (!isFrozenStringArray(value, true)) return false;
+ var raw = value.raw;
+ if (raw.length !== value.length || !isFrozenStringArray(raw, false)) return false;
+ return true;
+ }
+ });
+
+ var DESCRIPTORS$4 = descriptors;
+
+ var addToUnscopables$2 = addToUnscopables$h;
+
+ var toObject$6 = toObject$A;
+
+ var lengthOfArrayLike$2 = lengthOfArrayLike$q;
+
+ var defineProperty$3 = objectDefineProperty.f; // `Array.prototype.lastIndex` getter
+ // https://github.com/keithamus/proposal-array-last
+
+
+ if (DESCRIPTORS$4 && !('lastIndex' in [])) {
+ defineProperty$3(Array.prototype, 'lastIndex', {
+ configurable: true,
+ get: function lastIndex() {
+ var O = toObject$6(this);
+ var len = lengthOfArrayLike$2(O);
+ return len == 0 ? 0 : len - 1;
+ }
+ });
+ addToUnscopables$2('lastIndex');
+ }
+
+ var DESCRIPTORS$3 = descriptors;
+
+ var addToUnscopables$1 = addToUnscopables$h;
+
+ var toObject$5 = toObject$A;
+
+ var lengthOfArrayLike$1 = lengthOfArrayLike$q;
+
+ var defineProperty$2 = objectDefineProperty.f; // `Array.prototype.lastIndex` accessor
+ // https://github.com/keithamus/proposal-array-last
+
+
+ if (DESCRIPTORS$3 && !('lastItem' in [])) {
+ defineProperty$2(Array.prototype, 'lastItem', {
+ configurable: true,
+ get: function lastItem() {
+ var O = toObject$5(this);
+ var len = lengthOfArrayLike$1(O);
+ return len == 0 ? undefined : O[len - 1];
+ },
+ set: function lastItem(value) {
+ var O = toObject$5(this);
+ var len = lengthOfArrayLike$1(O);
+ return O[len == 0 ? 0 : len - 1] = value;
+ }
+ });
+ addToUnscopables$1('lastItem');
+ }
+
+ var aCallable$z = aCallable$Q;
+
+ var lengthOfArrayLike = lengthOfArrayLike$q;
+
+ var toObject$4 = toObject$A;
+
+ var getBuiltIn$g = getBuiltIn$y;
+
+ var arraySpeciesCreate = arraySpeciesCreate$6;
+
+ var push$1 = [].push; // `Array.prototype.uniqueBy` method
+ // https://github.com/tc39/proposal-array-unique
+
+ var arrayUniqueBy$1 = function uniqueBy(resolver) {
+ var that = toObject$4(this);
+ var length = lengthOfArrayLike(that);
+ var result = arraySpeciesCreate(that, 0);
+ var Map = getBuiltIn$g('Map');
+ var map = new Map();
+ var resolverFunction, index, item, key;
+ if (resolver != null) resolverFunction = aCallable$z(resolver);else resolverFunction = function (value) {
+ return value;
+ };
+
+ for (index = 0; index < length; index++) {
+ item = that[index];
+ key = resolverFunction(item);
+ if (!map.has(key)) map.set(key, item);
+ }
+
+ map.forEach(function (value) {
+ push$1.call(result, value);
+ });
+ return result;
+ };
+
+ var $$1P = _export;
+
+ var addToUnscopables = addToUnscopables$h;
+
+ var uniqueBy = arrayUniqueBy$1; // `Array.prototype.uniqueBy` method
+ // https://github.com/tc39/proposal-array-unique
+
+
+ $$1P({
+ target: 'Array',
+ proto: true
+ }, {
+ uniqueBy: uniqueBy
+ });
+ addToUnscopables('uniqueBy');
+
+ var $$1O = _export;
+
+ var anInstance$4 = anInstance$b;
+
+ var createNonEnumerableProperty$5 = createNonEnumerableProperty$h;
+
+ var hasOwn$4 = hasOwnProperty_1;
+
+ var wellKnownSymbol$8 = wellKnownSymbol$G;
+
+ var AsyncIteratorPrototype$2 = asyncIteratorPrototype;
+
+ var IS_PURE$C = isPure;
+
+ var TO_STRING_TAG$4 = wellKnownSymbol$8('toStringTag');
+
+ var AsyncIteratorConstructor = function AsyncIterator() {
+ anInstance$4(this, AsyncIteratorConstructor);
+ };
+
+ AsyncIteratorConstructor.prototype = AsyncIteratorPrototype$2;
+
+ if (!hasOwn$4(AsyncIteratorPrototype$2, TO_STRING_TAG$4)) {
+ createNonEnumerableProperty$5(AsyncIteratorPrototype$2, TO_STRING_TAG$4, 'AsyncIterator');
+ }
+
+ if (!hasOwn$4(AsyncIteratorPrototype$2, 'constructor') || AsyncIteratorPrototype$2.constructor === Object) {
+ createNonEnumerableProperty$5(AsyncIteratorPrototype$2, 'constructor', AsyncIteratorConstructor);
+ }
+
+ $$1O({
+ global: true,
+ forced: IS_PURE$C
+ }, {
+ AsyncIterator: AsyncIteratorConstructor
+ });
+
+ var aCallable$y = aCallable$Q;
+
+ var anObject$10 = anObject$1C;
+
+ var create$4 = objectCreate$1;
+
+ var createNonEnumerableProperty$4 = createNonEnumerableProperty$h;
+
+ var redefineAll$3 = redefineAll$a;
+
+ var wellKnownSymbol$7 = wellKnownSymbol$G;
+
+ var InternalStateModule$8 = internalState;
+
+ var getBuiltIn$f = getBuiltIn$y;
+
+ var getMethod$3 = getMethod$h;
+
+ var AsyncIteratorPrototype$1 = asyncIteratorPrototype;
+
+ var Promise$2 = getBuiltIn$f('Promise');
+ var setInternalState$8 = InternalStateModule$8.set;
+ var getInternalState$6 = InternalStateModule$8.get;
+ var TO_STRING_TAG$3 = wellKnownSymbol$7('toStringTag');
+
+ var asyncIteratorCreateProxy = function (nextHandler, IS_ITERATOR) {
+ var AsyncIteratorProxy = function AsyncIterator(state) {
+ state.next = aCallable$y(state.iterator.next);
+ state.done = false;
+ state.ignoreArgument = !IS_ITERATOR;
+ setInternalState$8(this, state);
+ };
+
+ AsyncIteratorProxy.prototype = redefineAll$3(create$4(AsyncIteratorPrototype$1), {
+ next: function next(arg) {
+ var that = this;
+ var hasArgument = !!arguments.length;
+ return new Promise$2(function (resolve) {
+ var state = getInternalState$6(that);
+ var args = hasArgument ? [state.ignoreArgument ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
+ state.ignoreArgument = false;
+ resolve(state.done ? {
+ done: true,
+ value: undefined
+ } : anObject$10(nextHandler.call(state, Promise$2, args)));
+ });
+ },
+ 'return': function (value) {
+ var that = this;
+ return new Promise$2(function (resolve, reject) {
+ var state = getInternalState$6(that);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$return = getMethod$3(iterator, 'return');
+ if ($$return === undefined) return resolve({
+ done: true,
+ value: value
+ });
+ Promise$2.resolve($$return.call(iterator, value)).then(function (result) {
+ anObject$10(result);
+ resolve({
+ done: true,
+ value: value
+ });
+ }, reject);
+ });
+ },
+ 'throw': function (value) {
+ var that = this;
+ return new Promise$2(function (resolve, reject) {
+ var state = getInternalState$6(that);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$throw = getMethod$3(iterator, 'throw');
+ if ($$throw === undefined) return reject(value);
+ resolve($$throw.call(iterator, value));
+ });
+ }
+ });
+
+ if (!IS_ITERATOR) {
+ createNonEnumerableProperty$4(AsyncIteratorProxy.prototype, TO_STRING_TAG$3, 'Generator');
+ }
+
+ return AsyncIteratorProxy;
+ };
+
+ var $$1N = _export;
+
+ var anObject$$ = anObject$1C;
+
+ var createAsyncIteratorProxy$6 = asyncIteratorCreateProxy;
+
+ var AsyncIteratorProxy$6 = createAsyncIteratorProxy$6(function (Promise, args) {
+ var state = this;
+ var iterator = state.iterator;
+ return Promise.resolve(anObject$$(state.next.apply(iterator, args))).then(function (step) {
+ if (anObject$$(step).done) {
+ state.done = true;
+ return {
+ done: true,
+ value: undefined
+ };
+ }
+
+ return {
+ done: false,
+ value: [state.index++, step.value]
+ };
+ });
+ });
+ $$1N({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ asIndexedPairs: function asIndexedPairs() {
+ return new AsyncIteratorProxy$6({
+ iterator: anObject$$(this),
+ index: 0
+ });
+ }
+ });
+
+ var $$1M = _export;
+
+ var anObject$_ = anObject$1C;
+
+ var toPositiveInteger$3 = toPositiveInteger$5;
+
+ var createAsyncIteratorProxy$5 = asyncIteratorCreateProxy;
+
+ var AsyncIteratorProxy$5 = createAsyncIteratorProxy$5(function (Promise, args) {
+ var state = this;
+ return new Promise(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise.resolve(anObject$_(state.next.apply(state.iterator, state.remaining ? [] : args))).then(function (step) {
+ try {
+ if (anObject$_(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else if (state.remaining) {
+ state.remaining--;
+ loop();
+ } else resolve({
+ done: false,
+ value: step.value
+ });
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+ });
+ $$1M({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ drop: function drop(limit) {
+ return new AsyncIteratorProxy$5({
+ iterator: anObject$_(this),
+ remaining: toPositiveInteger$3(limit)
+ });
+ }
+ });
+
+ var $$1L = _export;
+
+ var $every = asyncIteratorIteration.every;
+
+ $$1L({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ every: function every(fn) {
+ return $every(this, fn);
+ }
+ });
+
+ var $$1K = _export;
+
+ var aCallable$x = aCallable$Q;
+
+ var anObject$Z = anObject$1C;
+
+ var createAsyncIteratorProxy$4 = asyncIteratorCreateProxy;
+
+ var AsyncIteratorProxy$4 = createAsyncIteratorProxy$4(function (Promise, args) {
+ var state = this;
+ var filterer = state.filterer;
+ return new Promise(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise.resolve(anObject$Z(state.next.apply(state.iterator, args))).then(function (step) {
+ try {
+ if (anObject$Z(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else {
+ var value = step.value;
+ Promise.resolve(filterer(value)).then(function (selected) {
+ selected ? resolve({
+ done: false,
+ value: value
+ }) : loop();
+ }, reject);
+ }
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+ });
+ $$1K({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ filter: function filter(filterer) {
+ return new AsyncIteratorProxy$4({
+ iterator: anObject$Z(this),
+ filterer: aCallable$x(filterer)
+ });
+ }
+ });
+
+ var $$1J = _export;
+
+ var $find = asyncIteratorIteration.find;
+
+ $$1J({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ find: function find(fn) {
+ return $find(this, fn);
+ }
+ });
+
+ var $$1I = _export;
+
+ var aCallable$w = aCallable$Q;
+
+ var anObject$Y = anObject$1C;
+
+ var createAsyncIteratorProxy$3 = asyncIteratorCreateProxy;
+
+ var getAsyncIterator$1 = getAsyncIterator$3;
+
+ var AsyncIteratorProxy$3 = createAsyncIteratorProxy$3(function (Promise) {
+ var state = this;
+ var mapper = state.mapper;
+ var innerIterator;
+ return new Promise(function (resolve, reject) {
+ var outerLoop = function () {
+ try {
+ Promise.resolve(anObject$Y(state.next.call(state.iterator))).then(function (step) {
+ try {
+ if (anObject$Y(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else {
+ Promise.resolve(mapper(step.value)).then(function (mapped) {
+ try {
+ state.innerIterator = innerIterator = getAsyncIterator$1(mapped);
+ state.innerNext = aCallable$w(innerIterator.next);
+ return innerLoop();
+ } catch (error2) {
+ reject(error2);
+ }
+ }, reject);
+ }
+ } catch (error1) {
+ reject(error1);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ var innerLoop = function () {
+ if (innerIterator = state.innerIterator) {
+ try {
+ Promise.resolve(anObject$Y(state.innerNext.call(innerIterator))).then(function (result) {
+ try {
+ if (anObject$Y(result).done) {
+ state.innerIterator = state.innerNext = null;
+ outerLoop();
+ } else resolve({
+ done: false,
+ value: result.value
+ });
+ } catch (error1) {
+ reject(error1);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ } else outerLoop();
+ };
+
+ innerLoop();
+ });
+ });
+ $$1I({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ flatMap: function flatMap(mapper) {
+ return new AsyncIteratorProxy$3({
+ iterator: anObject$Y(this),
+ mapper: aCallable$w(mapper),
+ innerIterator: null,
+ innerNext: null
+ });
+ }
+ });
+
+ var $$1H = _export;
+
+ var $forEach = asyncIteratorIteration.forEach;
+
+ $$1H({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ forEach: function forEach(fn) {
+ return $forEach(this, fn);
+ }
+ });
+
+ // https://github.com/tc39/proposal-iterator-helpers
+ var $$1G = _export;
+
+ var anObject$X = anObject$1C;
+
+ var toObject$3 = toObject$A;
+
+ var AsyncIteratorPrototype = asyncIteratorPrototype;
+
+ var createAsyncIteratorProxy$2 = asyncIteratorCreateProxy;
+
+ var getAsyncIterator = getAsyncIterator$3;
+
+ var getIterator$5 = getIterator$b;
+
+ var getIteratorMethod$3 = getIteratorMethod$9;
+
+ var getMethod$2 = getMethod$h;
+
+ var wellKnownSymbol$6 = wellKnownSymbol$G;
+
+ var AsyncFromSyncIterator = asyncFromSyncIterator;
+
+ var ASYNC_ITERATOR = wellKnownSymbol$6('asyncIterator');
+ var isPrototypeOf$1 = {}.isPrototypeOf;
+ var AsyncIteratorProxy$2 = createAsyncIteratorProxy$2(function (Promise, args) {
+ return anObject$X(this.next.apply(this.iterator, args));
+ }, true);
+ $$1G({
+ target: 'AsyncIterator',
+ stat: true
+ }, {
+ from: function from(O) {
+ var object = toObject$3(O);
+ var usingIterator = getMethod$2(object, ASYNC_ITERATOR);
+ var iterator;
+
+ if (usingIterator) {
+ iterator = getAsyncIterator(object, usingIterator);
+ if (isPrototypeOf$1.call(AsyncIteratorPrototype, iterator)) return iterator;
+ }
+
+ if (iterator === undefined) {
+ usingIterator = getIteratorMethod$3(object);
+ if (usingIterator) return new AsyncFromSyncIterator(getIterator$5(object, usingIterator));
+ }
+
+ return new AsyncIteratorProxy$2({
+ iterator: iterator !== undefined ? iterator : object
+ });
+ }
+ });
+
+ var $$1F = _export;
+
+ var aCallable$v = aCallable$Q;
+
+ var anObject$W = anObject$1C;
+
+ var createAsyncIteratorProxy$1 = asyncIteratorCreateProxy;
+
+ var AsyncIteratorProxy$1 = createAsyncIteratorProxy$1(function (Promise, args) {
+ var state = this;
+ var mapper = state.mapper;
+ return Promise.resolve(anObject$W(state.next.apply(state.iterator, args))).then(function (step) {
+ if (anObject$W(step).done) {
+ state.done = true;
+ return {
+ done: true,
+ value: undefined
+ };
+ }
+
+ return Promise.resolve(mapper(step.value)).then(function (value) {
+ return {
+ done: false,
+ value: value
+ };
+ });
+ });
+ });
+ $$1F({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ map: function map(mapper) {
+ return new AsyncIteratorProxy$1({
+ iterator: anObject$W(this),
+ mapper: aCallable$v(mapper)
+ });
+ }
+ });
+
+ var $$1E = _export;
+
+ var aCallable$u = aCallable$Q;
+
+ var anObject$V = anObject$1C;
+
+ var getBuiltIn$e = getBuiltIn$y;
+
+ var Promise$1 = getBuiltIn$e('Promise');
+ $$1E({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ reduce: function reduce(reducer
+ /* , initialValue */
+ ) {
+ var iterator = anObject$V(this);
+ var next = aCallable$u(iterator.next);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$u(reducer);
+ return new Promise$1(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise$1.resolve(anObject$V(next.call(iterator))).then(function (step) {
+ try {
+ if (anObject$V(step).done) {
+ noInitial ? reject(TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator);
+ } else {
+ var value = step.value;
+
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ loop();
+ } else {
+ Promise$1.resolve(reducer(accumulator, value)).then(function (result) {
+ accumulator = result;
+ loop();
+ }, reject);
+ }
+ }
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+ }
+ });
+
+ var $$1D = _export;
+
+ var $some = asyncIteratorIteration.some;
+
+ $$1D({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ some: function some(fn) {
+ return $some(this, fn);
+ }
+ });
+
+ var $$1C = _export;
+
+ var anObject$U = anObject$1C;
+
+ var toPositiveInteger$2 = toPositiveInteger$5;
+
+ var createAsyncIteratorProxy = asyncIteratorCreateProxy;
+
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
+ var iterator = this.iterator;
+ var returnMethod, result;
+
+ if (!this.remaining--) {
+ result = {
+ done: true,
+ value: undefined
+ };
+ this.done = true;
+ returnMethod = iterator['return'];
+
+ if (returnMethod !== undefined) {
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
+ return result;
+ });
+ }
+
+ return result;
+ }
+
+ return this.next.apply(iterator, args);
+ });
+ $$1C({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ take: function take(limit) {
+ return new AsyncIteratorProxy({
+ iterator: anObject$U(this),
+ remaining: toPositiveInteger$2(limit)
+ });
+ }
+ });
+
+ var $$1B = _export;
+
+ var $toArray = asyncIteratorIteration.toArray;
+
+ $$1B({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+ }, {
+ toArray: function toArray() {
+ return $toArray(this, undefined, []);
+ }
+ });
+
+ var InternalStateModule$7 = internalState;
+
+ var createIteratorConstructor$4 = createIteratorConstructor$7;
+
+ var isObject$3 = isObject$C;
+
+ var defineProperties$1 = objectDefineProperties;
+
+ var DESCRIPTORS$2 = descriptors;
+
+ var INCORRECT_RANGE = 'Incorrect Number.range arguments';
+ var NUMERIC_RANGE_ITERATOR = 'NumericRangeIterator';
+ var setInternalState$7 = InternalStateModule$7.set;
+ var getInternalState$5 = InternalStateModule$7.getterFor(NUMERIC_RANGE_ITERATOR);
+ var $RangeIterator = createIteratorConstructor$4(function NumericRangeIterator(start, end, option, type, zero, one) {
+ if (typeof start != type || end !== Infinity && end !== -Infinity && typeof end != type) {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (start === Infinity || start === -Infinity) {
+ throw new RangeError(INCORRECT_RANGE);
+ }
+
+ var ifIncrease = end > start;
+ var inclusiveEnd = false;
+ var step;
+
+ if (option === undefined) {
+ step = undefined;
+ } else if (isObject$3(option)) {
+ step = option.step;
+ inclusiveEnd = !!option.inclusive;
+ } else if (typeof option == type) {
+ step = option;
+ } else {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (step == null) {
+ step = ifIncrease ? one : -one;
+ }
+
+ if (typeof step != type) {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (step === Infinity || step === -Infinity || step === zero && start !== end) {
+ throw new RangeError(INCORRECT_RANGE);
+ } // eslint-disable-next-line no-self-compare -- NaN check
+
+
+ var hitsEnd = start != start || end != end || step != step || end > start !== step > zero;
+ setInternalState$7(this, {
+ type: NUMERIC_RANGE_ITERATOR,
+ start: start,
+ end: end,
+ step: step,
+ inclusiveEnd: inclusiveEnd,
+ hitsEnd: hitsEnd,
+ currentCount: zero,
+ zero: zero
+ });
+
+ if (!DESCRIPTORS$2) {
+ this.start = start;
+ this.end = end;
+ this.step = step;
+ this.inclusive = inclusiveEnd;
+ }
+ }, NUMERIC_RANGE_ITERATOR, function next() {
+ var state = getInternalState$5(this);
+ if (state.hitsEnd) return {
+ value: undefined,
+ done: true
+ };
+ var start = state.start;
+ var end = state.end;
+ var step = state.step;
+ var currentYieldingValue = start + step * state.currentCount++;
+ if (currentYieldingValue === end) state.hitsEnd = true;
+ var inclusiveEnd = state.inclusiveEnd;
+ var endCondition;
+
+ if (end > start) {
+ endCondition = inclusiveEnd ? currentYieldingValue > end : currentYieldingValue >= end;
+ } else {
+ endCondition = inclusiveEnd ? end > currentYieldingValue : end >= currentYieldingValue;
+ }
+
+ if (endCondition) {
+ return {
+ value: undefined,
+ done: state.hitsEnd = true
+ };
+ }
+
+ return {
+ value: currentYieldingValue,
+ done: false
+ };
+ });
+
+ var getter = function (fn) {
+ return {
+ get: fn,
+ set: function () {
+ /* empty */
+ },
+ configurable: true,
+ enumerable: false
+ };
+ };
+
+ if (DESCRIPTORS$2) {
+ defineProperties$1($RangeIterator.prototype, {
+ start: getter(function () {
+ return getInternalState$5(this).start;
+ }),
+ end: getter(function () {
+ return getInternalState$5(this).end;
+ }),
+ inclusive: getter(function () {
+ return getInternalState$5(this).inclusiveEnd;
+ }),
+ step: getter(function () {
+ return getInternalState$5(this).step;
+ })
+ });
+ }
+
+ var numericRangeIterator = $RangeIterator;
+
+ /* eslint-disable es/no-bigint -- safe */
+
+ var $$1A = _export;
+
+ var NumericRangeIterator$1 = numericRangeIterator; // `BigInt.range` method
+ // https://github.com/tc39/proposal-Number.range
+
+
+ if (typeof BigInt == 'function') {
+ $$1A({
+ target: 'BigInt',
+ stat: true
+ }, {
+ range: function range(start, end, option) {
+ return new NumericRangeIterator$1(start, end, option, 'bigint', BigInt(0), BigInt(1));
+ }
+ });
+ }
+
+ // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+ var Map$2 = es_map;
+
+ var WeakMap$1 = es_weakMap.exports;
+
+ var create$3 = objectCreate$1;
+
+ var isObject$2 = isObject$C;
+
+ var Node = function () {
+ // keys
+ this.object = null;
+ this.symbol = null; // child nodes
+
+ this.primitives = null;
+ this.objectsByIndex = create$3(null);
+ };
+
+ Node.prototype.get = function (key, initializer) {
+ return this[key] || (this[key] = initializer());
+ };
+
+ Node.prototype.next = function (i, it, IS_OBJECT) {
+ var store = IS_OBJECT ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new WeakMap$1()) : this.primitives || (this.primitives = new Map$2());
+ var entry = store.get(it);
+ if (!entry) store.set(it, entry = new Node());
+ return entry;
+ };
+
+ var root$1 = new Node();
+
+ var compositeKey = function () {
+ var active = root$1;
+ var length = arguments.length;
+ var i, it; // for prevent leaking, start from objects
+
+ for (i = 0; i < length; i++) {
+ if (isObject$2(it = arguments[i])) active = active.next(i, it, true);
+ }
+
+ if (this === Object && active === root$1) throw TypeError('Composite keys must contain a non-primitive component');
+
+ for (i = 0; i < length; i++) {
+ if (!isObject$2(it = arguments[i])) active = active.next(i, it, false);
+ }
+
+ return active;
+ };
+
+ var $$1z = _export;
+
+ var getCompositeKeyNode$1 = compositeKey;
+
+ var getBuiltIn$d = getBuiltIn$y;
+
+ var create$2 = objectCreate$1;
+
+ var initializer = function () {
+ var freeze = getBuiltIn$d('Object', 'freeze');
+ return freeze ? freeze(create$2(null)) : create$2(null);
+ }; // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+
+
+ $$1z({
+ global: true
+ }, {
+ compositeKey: function compositeKey() {
+ return getCompositeKeyNode$1.apply(Object, arguments).get('object', initializer);
+ }
+ });
+
+ var $$1y = _export;
+
+ var getCompositeKeyNode = compositeKey;
+
+ var getBuiltIn$c = getBuiltIn$y; // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+
+
+ $$1y({
+ global: true
+ }, {
+ compositeSymbol: function compositeSymbol() {
+ if (arguments.length === 1 && typeof arguments[0] === 'string') return getBuiltIn$c('Symbol')['for'](arguments[0]);
+ return getCompositeKeyNode.apply(null, arguments).get('symbol', getBuiltIn$c('Symbol'));
+ }
+ });
+
+ var $$1x = _export;
+
+ var global$7 = global$R;
+
+ var anInstance$3 = anInstance$b;
+
+ var isCallable$5 = isCallable$z;
+
+ var createNonEnumerableProperty$3 = createNonEnumerableProperty$h;
+
+ var fails$2 = fails$15;
+
+ var hasOwn$3 = hasOwnProperty_1;
+
+ var wellKnownSymbol$5 = wellKnownSymbol$G;
+
+ var IteratorPrototype$2 = iteratorsCore.IteratorPrototype;
+
+ var TO_STRING_TAG$2 = wellKnownSymbol$5('toStringTag');
+ var NativeIterator = global$7.Iterator; // FF56- have non-standard global helper `Iterator`
+
+ var FORCED$2 = !isCallable$5(NativeIterator) || NativeIterator.prototype !== IteratorPrototype$2 // FF44- non-standard `Iterator` passes previous tests
+ || !fails$2(function () {
+ NativeIterator({});
+ });
+
+ var IteratorConstructor = function Iterator() {
+ anInstance$3(this, IteratorConstructor);
+ };
+
+ if (!hasOwn$3(IteratorPrototype$2, TO_STRING_TAG$2)) {
+ createNonEnumerableProperty$3(IteratorPrototype$2, TO_STRING_TAG$2, 'Iterator');
+ }
+
+ if (FORCED$2 || !hasOwn$3(IteratorPrototype$2, 'constructor') || IteratorPrototype$2.constructor === Object) {
+ createNonEnumerableProperty$3(IteratorPrototype$2, 'constructor', IteratorConstructor);
+ }
+
+ IteratorConstructor.prototype = IteratorPrototype$2;
+ $$1x({
+ global: true,
+ forced: FORCED$2
+ }, {
+ Iterator: IteratorConstructor
+ });
+
+ var aCallable$t = aCallable$Q;
+
+ var anObject$T = anObject$1C;
+
+ var create$1 = objectCreate$1;
+
+ var createNonEnumerableProperty$2 = createNonEnumerableProperty$h;
+
+ var redefineAll$2 = redefineAll$a;
+
+ var wellKnownSymbol$4 = wellKnownSymbol$G;
+
+ var InternalStateModule$6 = internalState;
+
+ var getMethod$1 = getMethod$h;
+
+ var IteratorPrototype$1 = iteratorsCore.IteratorPrototype;
+
+ var setInternalState$6 = InternalStateModule$6.set;
+ var getInternalState$4 = InternalStateModule$6.get;
+ var TO_STRING_TAG$1 = wellKnownSymbol$4('toStringTag');
+
+ var iteratorCreateProxy = function (nextHandler, IS_ITERATOR) {
+ var IteratorProxy = function Iterator(state) {
+ state.next = aCallable$t(state.iterator.next);
+ state.done = false;
+ state.ignoreArg = !IS_ITERATOR;
+ setInternalState$6(this, state);
+ };
+
+ IteratorProxy.prototype = redefineAll$2(create$1(IteratorPrototype$1), {
+ next: function next(arg) {
+ var state = getInternalState$4(this);
+ var args = arguments.length ? [state.ignoreArg ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
+ state.ignoreArg = false;
+ var result = state.done ? undefined : nextHandler.call(state, args);
+ return {
+ done: state.done,
+ value: result
+ };
+ },
+ 'return': function (value) {
+ var state = getInternalState$4(this);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$return = getMethod$1(iterator, 'return');
+ return {
+ done: true,
+ value: $$return ? anObject$T($$return.call(iterator, value)).value : value
+ };
+ },
+ 'throw': function (value) {
+ var state = getInternalState$4(this);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$throw = getMethod$1(iterator, 'throw');
+ if ($$throw) return $$throw.call(iterator, value);
+ throw value;
+ }
+ });
+
+ if (!IS_ITERATOR) {
+ createNonEnumerableProperty$2(IteratorProxy.prototype, TO_STRING_TAG$1, 'Generator');
+ }
+
+ return IteratorProxy;
+ };
+
+ var $$1w = _export;
+
+ var anObject$S = anObject$1C;
+
+ var createIteratorProxy$6 = iteratorCreateProxy;
+
+ var IteratorProxy$6 = createIteratorProxy$6(function (args) {
+ var result = anObject$S(this.next.apply(this.iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return [this.index++, result.value];
+ });
+ $$1w({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ asIndexedPairs: function asIndexedPairs() {
+ return new IteratorProxy$6({
+ iterator: anObject$S(this),
+ index: 0
+ });
+ }
+ });
+
+ var $$1v = _export;
+
+ var anObject$R = anObject$1C;
+
+ var toPositiveInteger$1 = toPositiveInteger$5;
+
+ var createIteratorProxy$5 = iteratorCreateProxy;
+
+ var IteratorProxy$5 = createIteratorProxy$5(function (args) {
+ var iterator = this.iterator;
+ var next = this.next;
+ var result, done;
+
+ while (this.remaining) {
+ this.remaining--;
+ result = anObject$R(next.call(iterator));
+ done = this.done = !!result.done;
+ if (done) return;
+ }
+
+ result = anObject$R(next.apply(iterator, args));
+ done = this.done = !!result.done;
+ if (!done) return result.value;
+ });
+ $$1v({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ drop: function drop(limit) {
+ return new IteratorProxy$5({
+ iterator: anObject$R(this),
+ remaining: toPositiveInteger$1(limit)
+ });
+ }
+ });
+
+ var $$1u = _export;
+
+ var iterate$z = iterate$I;
+
+ var aCallable$s = aCallable$Q;
+
+ var anObject$Q = anObject$1C;
+
+ $$1u({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ every: function every(fn) {
+ anObject$Q(this);
+ aCallable$s(fn);
+ return !iterate$z(this, function (value, stop) {
+ if (!fn(value)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$1t = _export;
+
+ var aCallable$r = aCallable$Q;
+
+ var anObject$P = anObject$1C;
+
+ var createIteratorProxy$4 = iteratorCreateProxy;
+
+ var callWithSafeIterationClosing$1 = callWithSafeIterationClosing$3;
+
+ var IteratorProxy$4 = createIteratorProxy$4(function (args) {
+ var iterator = this.iterator;
+ var filterer = this.filterer;
+ var next = this.next;
+ var result, done, value;
+
+ while (true) {
+ result = anObject$P(next.apply(iterator, args));
+ done = this.done = !!result.done;
+ if (done) return;
+ value = result.value;
+ if (callWithSafeIterationClosing$1(iterator, filterer, value)) return value;
+ }
+ });
+ $$1t({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ filter: function filter(filterer) {
+ return new IteratorProxy$4({
+ iterator: anObject$P(this),
+ filterer: aCallable$r(filterer)
+ });
+ }
+ });
+
+ var $$1s = _export;
+
+ var iterate$y = iterate$I;
+
+ var aCallable$q = aCallable$Q;
+
+ var anObject$O = anObject$1C;
+
+ $$1s({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ find: function find(fn) {
+ anObject$O(this);
+ aCallable$q(fn);
+ return iterate$y(this, function (value, stop) {
+ if (fn(value)) return stop(value);
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+ });
+
+ var $$1r = _export;
+
+ var aCallable$p = aCallable$Q;
+
+ var anObject$N = anObject$1C;
+
+ var getIteratorMethod$2 = getIteratorMethod$9;
+
+ var createIteratorProxy$3 = iteratorCreateProxy;
+
+ var iteratorClose$1 = iteratorClose$4;
+
+ var IteratorProxy$3 = createIteratorProxy$3(function () {
+ var iterator = this.iterator;
+ var mapper = this.mapper;
+ var result, mapped, iteratorMethod, innerIterator;
+
+ while (true) {
+ try {
+ if (innerIterator = this.innerIterator) {
+ result = anObject$N(this.innerNext.call(innerIterator));
+ if (!result.done) return result.value;
+ this.innerIterator = this.innerNext = null;
+ }
+
+ result = anObject$N(this.next.call(iterator));
+ if (this.done = !!result.done) return;
+ mapped = mapper(result.value);
+ iteratorMethod = getIteratorMethod$2(mapped);
+
+ if (!iteratorMethod) {
+ throw TypeError('.flatMap callback should return an iterable object');
+ }
+
+ this.innerIterator = innerIterator = anObject$N(iteratorMethod.call(mapped));
+ this.innerNext = aCallable$p(innerIterator.next);
+ } catch (error) {
+ iteratorClose$1(iterator, 'throw', error);
+ }
+ }
+ });
+ $$1r({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ flatMap: function flatMap(mapper) {
+ return new IteratorProxy$3({
+ iterator: anObject$N(this),
+ mapper: aCallable$p(mapper),
+ innerIterator: null,
+ innerNext: null
+ });
+ }
+ });
+
+ var $$1q = _export;
+
+ var iterate$x = iterate$I;
+
+ var anObject$M = anObject$1C;
+
+ $$1q({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ forEach: function forEach(fn) {
+ iterate$x(anObject$M(this), fn, {
+ IS_ITERATOR: true
+ });
+ }
+ });
+
+ // https://github.com/tc39/proposal-iterator-helpers
+ var $$1p = _export;
+
+ var anObject$L = anObject$1C;
+
+ var toObject$2 = toObject$A;
+
+ var IteratorPrototype = iteratorsCore.IteratorPrototype;
+
+ var createIteratorProxy$2 = iteratorCreateProxy;
+
+ var getIterator$4 = getIterator$b;
+
+ var getIteratorMethod$1 = getIteratorMethod$9;
+
+ var isPrototypeOf = {}.isPrototypeOf;
+ var IteratorProxy$2 = createIteratorProxy$2(function (args) {
+ var result = anObject$L(this.next.apply(this.iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return result.value;
+ }, true);
+ $$1p({
+ target: 'Iterator',
+ stat: true
+ }, {
+ from: function from(O) {
+ var object = toObject$2(O);
+ var usingIterator = getIteratorMethod$1(object);
+ var iterator;
+
+ if (usingIterator) {
+ iterator = getIterator$4(object, usingIterator);
+ if (isPrototypeOf.call(IteratorPrototype, iterator)) return iterator;
+ } else {
+ iterator = object;
+ }
+
+ return new IteratorProxy$2({
+ iterator: iterator
+ });
+ }
+ });
+
+ var $$1o = _export;
+
+ var aCallable$o = aCallable$Q;
+
+ var anObject$K = anObject$1C;
+
+ var createIteratorProxy$1 = iteratorCreateProxy;
+
+ var callWithSafeIterationClosing = callWithSafeIterationClosing$3;
+
+ var IteratorProxy$1 = createIteratorProxy$1(function (args) {
+ var iterator = this.iterator;
+ var result = anObject$K(this.next.apply(iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value);
+ });
+ $$1o({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ map: function map(mapper) {
+ return new IteratorProxy$1({
+ iterator: anObject$K(this),
+ mapper: aCallable$o(mapper)
+ });
+ }
+ });
+
+ var $$1n = _export;
+
+ var iterate$w = iterate$I;
+
+ var aCallable$n = aCallable$Q;
+
+ var anObject$J = anObject$1C;
+
+ $$1n({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ reduce: function reduce(reducer
+ /* , initialValue */
+ ) {
+ anObject$J(this);
+ aCallable$n(reducer);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ iterate$w(this, function (value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = reducer(accumulator, value);
+ }
+ }, {
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty iterator with no initial value');
+ return accumulator;
+ }
+ });
+
+ var $$1m = _export;
+
+ var iterate$v = iterate$I;
+
+ var aCallable$m = aCallable$Q;
+
+ var anObject$I = anObject$1C;
+
+ $$1m({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ some: function some(fn) {
+ anObject$I(this);
+ aCallable$m(fn);
+ return iterate$v(this, function (value, stop) {
+ if (fn(value)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$1l = _export;
+
+ var anObject$H = anObject$1C;
+
+ var toPositiveInteger = toPositiveInteger$5;
+
+ var createIteratorProxy = iteratorCreateProxy;
+
+ var iteratorClose = iteratorClose$4;
+
+ var IteratorProxy = createIteratorProxy(function (args) {
+ var iterator = this.iterator;
+
+ if (!this.remaining--) {
+ this.done = true;
+ return iteratorClose(iterator, 'normal', undefined);
+ }
+
+ var result = anObject$H(this.next.apply(iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return result.value;
+ });
+ $$1l({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ take: function take(limit) {
+ return new IteratorProxy({
+ iterator: anObject$H(this),
+ remaining: toPositiveInteger(limit)
+ });
+ }
+ });
+
+ var $$1k = _export;
+
+ var iterate$u = iterate$I;
+
+ var anObject$G = anObject$1C;
+
+ var push = [].push;
+ $$1k({
+ target: 'Iterator',
+ proto: true,
+ real: true
+ }, {
+ toArray: function toArray() {
+ var result = [];
+ iterate$u(anObject$G(this), push, {
+ that: result,
+ IS_ITERATOR: true
+ });
+ return result;
+ }
+ });
+
+ var aCallable$l = aCallable$Q;
+
+ var anObject$F = anObject$1C; // https://github.com/tc39/collection-methods
+
+
+ var collectionDeleteAll$4 = function () {
+ var collection = anObject$F(this);
+ var remover = aCallable$l(collection['delete']);
+ var allDeleted = true;
+ var wasDeleted;
+
+ for (var k = 0, len = arguments.length; k < len; k++) {
+ wasDeleted = remover.call(collection, arguments[k]);
+ allDeleted = allDeleted && wasDeleted;
+ }
+
+ return !!allDeleted;
+ };
+
+ var $$1j = _export;
+
+ var IS_PURE$B = isPure;
+
+ var collectionDeleteAll$3 = collectionDeleteAll$4; // `Map.prototype.deleteAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1j({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$B
+ }, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$3.apply(this, arguments);
+ }
+ });
+
+ var anObject$E = anObject$1C; // `Map.prototype.emplace` method
+ // https://github.com/thumbsupep/proposal-upsert
+
+
+ var mapEmplace = function emplace(key, handler) {
+ var map = anObject$E(this);
+ var value = map.has(key) && 'update' in handler ? handler.update(map.get(key), key, map) : handler.insert(key, map);
+ map.set(key, value);
+ return value;
+ };
+
+ var $$1i = _export;
+
+ var IS_PURE$A = isPure;
+
+ var $emplace$1 = mapEmplace; // `Map.prototype.emplace` method
+ // https://github.com/thumbsupep/proposal-upsert
+
+
+ $$1i({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$A
+ }, {
+ emplace: $emplace$1
+ });
+
+ var getMapIterator$a = function (it) {
+ // eslint-disable-next-line es/no-map -- safe
+ return Map.prototype.entries.call(it);
+ };
+
+ var $$1h = _export;
+
+ var IS_PURE$z = isPure;
+
+ var anObject$D = anObject$1C;
+
+ var bind$d = functionBindContext;
+
+ var getMapIterator$9 = getMapIterator$a;
+
+ var iterate$t = iterate$I; // `Map.prototype.every` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1h({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$z
+ }, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$D(this);
+ var iterator = getMapIterator$9(map);
+ var boundFunction = bind$d(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return !iterate$t(iterator, function (key, value, stop) {
+ if (!boundFunction(value, key, map)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$1g = _export;
+
+ var IS_PURE$y = isPure;
+
+ var getBuiltIn$b = getBuiltIn$y;
+
+ var aCallable$k = aCallable$Q;
+
+ var anObject$C = anObject$1C;
+
+ var bind$c = functionBindContext;
+
+ var speciesConstructor$8 = speciesConstructor$f;
+
+ var getMapIterator$8 = getMapIterator$a;
+
+ var iterate$s = iterate$I; // `Map.prototype.filter` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1g({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$y
+ }, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$C(this);
+ var iterator = getMapIterator$8(map);
+ var boundFunction = bind$c(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$8(map, getBuiltIn$b('Map')))();
+ var setter = aCallable$k(newMap.set);
+ iterate$s(iterator, function (key, value) {
+ if (boundFunction(value, key, map)) setter.call(newMap, key, value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+ });
+
+ var $$1f = _export;
+
+ var IS_PURE$x = isPure;
+
+ var anObject$B = anObject$1C;
+
+ var bind$b = functionBindContext;
+
+ var getMapIterator$7 = getMapIterator$a;
+
+ var iterate$r = iterate$I; // `Map.prototype.find` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1f({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$x
+ }, {
+ find: function find(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$B(this);
+ var iterator = getMapIterator$7(map);
+ var boundFunction = bind$b(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$r(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop(value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+ });
+
+ var $$1e = _export;
+
+ var IS_PURE$w = isPure;
+
+ var anObject$A = anObject$1C;
+
+ var bind$a = functionBindContext;
+
+ var getMapIterator$6 = getMapIterator$a;
+
+ var iterate$q = iterate$I; // `Map.prototype.findKey` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1e({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$w
+ }, {
+ findKey: function findKey(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$A(this);
+ var iterator = getMapIterator$6(map);
+ var boundFunction = bind$a(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$q(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop(key);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+ });
+
+ var aCallable$j = aCallable$Q;
+
+ var aConstructor$1 = aConstructor$5;
+
+ var bind$9 = functionBindContext;
+
+ var iterate$p = iterate$I;
+
+ var collectionFrom = function from(source
+ /* , mapFn, thisArg */
+ ) {
+ var length = arguments.length;
+ var mapFn = length > 1 ? arguments[1] : undefined;
+ var mapping, array, n, boundFunction;
+ aConstructor$1(this);
+ mapping = mapFn !== undefined;
+ if (mapping) aCallable$j(mapFn);
+ if (source == undefined) return new this();
+ array = [];
+
+ if (mapping) {
+ n = 0;
+ boundFunction = bind$9(mapFn, length > 2 ? arguments[2] : undefined, 2);
+ iterate$p(source, function (nextItem) {
+ array.push(boundFunction(nextItem, n++));
+ });
+ } else {
+ iterate$p(source, array.push, {
+ that: array
+ });
+ }
+
+ return new this(array);
+ };
+
+ var $$1d = _export;
+
+ var from$4 = collectionFrom; // `Map.from` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
+
+
+ $$1d({
+ target: 'Map',
+ stat: true
+ }, {
+ from: from$4
+ });
+
+ var $$1c = _export;
+
+ var aCallable$i = aCallable$Q;
+
+ var getIterator$3 = getIterator$b;
+
+ var iterate$o = iterate$I; // `Map.groupBy` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1c({
+ target: 'Map',
+ stat: true
+ }, {
+ groupBy: function groupBy(iterable, keyDerivative) {
+ aCallable$i(keyDerivative);
+ var iterator = getIterator$3(iterable);
+ var newMap = new this();
+ var has = aCallable$i(newMap.has);
+ var get = aCallable$i(newMap.get);
+ var set = aCallable$i(newMap.set);
+ iterate$o(iterator, function (element) {
+ var derivedKey = keyDerivative(element);
+ if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]);else get.call(newMap, derivedKey).push(element);
+ }, {
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+ });
+
+ // `SameValueZero` abstract operation
+ // https://tc39.es/ecma262/#sec-samevaluezero
+ var sameValueZero$1 = function (x, y) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return x === y || x != x && y != y;
+ };
+
+ var $$1b = _export;
+
+ var IS_PURE$v = isPure;
+
+ var anObject$z = anObject$1C;
+
+ var getMapIterator$5 = getMapIterator$a;
+
+ var sameValueZero = sameValueZero$1;
+
+ var iterate$n = iterate$I; // `Map.prototype.includes` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1b({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$v
+ }, {
+ includes: function includes(searchElement) {
+ return iterate$n(getMapIterator$5(anObject$z(this)), function (key, value, stop) {
+ if (sameValueZero(value, searchElement)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$1a = _export;
+
+ var iterate$m = iterate$I;
+
+ var aCallable$h = aCallable$Q; // `Map.keyBy` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$1a({
+ target: 'Map',
+ stat: true
+ }, {
+ keyBy: function keyBy(iterable, keyDerivative) {
+ var newMap = new this();
+ aCallable$h(keyDerivative);
+ var setter = aCallable$h(newMap.set);
+ iterate$m(iterable, function (element) {
+ setter.call(newMap, keyDerivative(element), element);
+ });
+ return newMap;
+ }
+ });
+
+ var $$19 = _export;
+
+ var IS_PURE$u = isPure;
+
+ var anObject$y = anObject$1C;
+
+ var getMapIterator$4 = getMapIterator$a;
+
+ var iterate$l = iterate$I; // `Map.prototype.keyOf` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$19({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$u
+ }, {
+ keyOf: function keyOf(searchElement) {
+ return iterate$l(getMapIterator$4(anObject$y(this)), function (key, value, stop) {
+ if (value === searchElement) return stop(key);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+ });
+
+ var $$18 = _export;
+
+ var IS_PURE$t = isPure;
+
+ var getBuiltIn$a = getBuiltIn$y;
+
+ var aCallable$g = aCallable$Q;
+
+ var anObject$x = anObject$1C;
+
+ var bind$8 = functionBindContext;
+
+ var speciesConstructor$7 = speciesConstructor$f;
+
+ var getMapIterator$3 = getMapIterator$a;
+
+ var iterate$k = iterate$I; // `Map.prototype.mapKeys` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$18({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$t
+ }, {
+ mapKeys: function mapKeys(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$x(this);
+ var iterator = getMapIterator$3(map);
+ var boundFunction = bind$8(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$7(map, getBuiltIn$a('Map')))();
+ var setter = aCallable$g(newMap.set);
+ iterate$k(iterator, function (key, value) {
+ setter.call(newMap, boundFunction(value, key, map), value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+ });
+
+ var $$17 = _export;
+
+ var IS_PURE$s = isPure;
+
+ var getBuiltIn$9 = getBuiltIn$y;
+
+ var aCallable$f = aCallable$Q;
+
+ var anObject$w = anObject$1C;
+
+ var bind$7 = functionBindContext;
+
+ var speciesConstructor$6 = speciesConstructor$f;
+
+ var getMapIterator$2 = getMapIterator$a;
+
+ var iterate$j = iterate$I; // `Map.prototype.mapValues` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$17({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$s
+ }, {
+ mapValues: function mapValues(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$w(this);
+ var iterator = getMapIterator$2(map);
+ var boundFunction = bind$7(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$6(map, getBuiltIn$9('Map')))();
+ var setter = aCallable$f(newMap.set);
+ iterate$j(iterator, function (key, value) {
+ setter.call(newMap, key, boundFunction(value, key, map));
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+ });
+
+ var $$16 = _export;
+
+ var IS_PURE$r = isPure;
+
+ var aCallable$e = aCallable$Q;
+
+ var anObject$v = anObject$1C;
+
+ var iterate$i = iterate$I; // `Map.prototype.merge` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$16({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$r
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ merge: function merge(iterable
+ /* ...iterbles */
+ ) {
+ var map = anObject$v(this);
+ var setter = aCallable$e(map.set);
+ var argumentsLength = arguments.length;
+ var i = 0;
+
+ while (i < argumentsLength) {
+ iterate$i(arguments[i++], setter, {
+ that: map,
+ AS_ENTRIES: true
+ });
+ }
+
+ return map;
+ }
+ });
+
+ var collectionOf = function of() {
+ var length = arguments.length;
+ var A = new Array(length);
+
+ while (length--) A[length] = arguments[length];
+
+ return new this(A);
+ };
+
+ var $$15 = _export;
+
+ var of$3 = collectionOf; // `Map.of` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
+
+
+ $$15({
+ target: 'Map',
+ stat: true
+ }, {
+ of: of$3
+ });
+
+ var $$14 = _export;
+
+ var IS_PURE$q = isPure;
+
+ var anObject$u = anObject$1C;
+
+ var aCallable$d = aCallable$Q;
+
+ var getMapIterator$1 = getMapIterator$a;
+
+ var iterate$h = iterate$I; // `Map.prototype.reduce` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$14({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$q
+ }, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ var map = anObject$u(this);
+ var iterator = getMapIterator$1(map);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$d(callbackfn);
+ iterate$h(iterator, function (key, value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = callbackfn(accumulator, value, key, map);
+ }
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty map with no initial value');
+ return accumulator;
+ }
+ });
+
+ var $$13 = _export;
+
+ var IS_PURE$p = isPure;
+
+ var anObject$t = anObject$1C;
+
+ var bind$6 = functionBindContext;
+
+ var getMapIterator = getMapIterator$a;
+
+ var iterate$g = iterate$I; // `Set.prototype.some` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$13({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$p
+ }, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$t(this);
+ var iterator = getMapIterator(map);
+ var boundFunction = bind$6(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$g(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$12 = _export;
+
+ var IS_PURE$o = isPure;
+
+ var anObject$s = anObject$1C;
+
+ var aCallable$c = aCallable$Q; // `Set.prototype.update` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$12({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$o
+ }, {
+ update: function update(key, callback
+ /* , thunk */
+ ) {
+ var map = anObject$s(this);
+ var length = arguments.length;
+ aCallable$c(callback);
+ var isPresentInMap = map.has(key);
+
+ if (!isPresentInMap && length < 3) {
+ throw TypeError('Updating absent value');
+ }
+
+ var value = isPresentInMap ? map.get(key) : aCallable$c(length > 2 ? arguments[2] : undefined)(key, map);
+ map.set(key, callback(value, key, map));
+ return map;
+ }
+ });
+
+ var isCallable$4 = isCallable$z;
+
+ var anObject$r = anObject$1C; // `Map.prototype.upsert` method
+ // https://github.com/thumbsupep/proposal-upsert
+
+
+ var mapUpsert = function upsert(key, updateFn
+ /* , insertFn */
+ ) {
+ var map = anObject$r(this);
+ var insertFn = arguments.length > 2 ? arguments[2] : undefined;
+ var value;
+
+ if (!isCallable$4(updateFn) && !isCallable$4(insertFn)) {
+ throw TypeError('At least one callback required');
+ }
+
+ if (map.has(key)) {
+ value = map.get(key);
+
+ if (isCallable$4(updateFn)) {
+ value = updateFn(value);
+ map.set(key, value);
+ }
+ } else if (isCallable$4(insertFn)) {
+ value = insertFn();
+ map.set(key, value);
+ }
+
+ return value;
+ };
+
+ var $$11 = _export;
+
+ var IS_PURE$n = isPure;
+
+ var $upsert$2 = mapUpsert; // `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)
+ // https://github.com/thumbsupep/proposal-upsert
+
+
+ $$11({
+ target: 'Map',
+ proto: true,
+ real: true,
+ name: 'upsert',
+ forced: IS_PURE$n
+ }, {
+ updateOrInsert: $upsert$2
+ });
+
+ var $$10 = _export;
+
+ var IS_PURE$m = isPure;
+
+ var $upsert$1 = mapUpsert; // `Map.prototype.upsert` method (replaced by `Map.prototype.emplace`)
+ // https://github.com/thumbsupep/proposal-upsert
+
+
+ $$10({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$m
+ }, {
+ upsert: $upsert$1
+ });
+
+ var $$$ = _export;
+
+ var min = Math.min;
+ var max = Math.max; // `Math.clamp` method
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+ $$$({
+ target: 'Math',
+ stat: true
+ }, {
+ clamp: function clamp(x, lower, upper) {
+ return min(upper, max(lower, x));
+ }
+ });
+
+ var $$_ = _export; // `Math.DEG_PER_RAD` constant
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+
+ $$_({
+ target: 'Math',
+ stat: true
+ }, {
+ DEG_PER_RAD: Math.PI / 180
+ });
+
+ var $$Z = _export;
+
+ var RAD_PER_DEG = 180 / Math.PI; // `Math.degrees` method
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+ $$Z({
+ target: 'Math',
+ stat: true
+ }, {
+ degrees: function degrees(radians) {
+ return radians * RAD_PER_DEG;
+ }
+ });
+
+ // `Math.scale` method implementation
+ // https://rwaldron.github.io/proposal-math-extensions/
+ var mathScale = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
+ if (arguments.length === 0
+ /* eslint-disable no-self-compare -- NaN check */
+ || x != x || inLow != inLow || inHigh != inHigh || outLow != outLow || outHigh != outHigh
+ /* eslint-enable no-self-compare -- NaN check */
+ ) return NaN;
+ if (x === Infinity || x === -Infinity) return x;
+ return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
+ };
+
+ var $$Y = _export;
+
+ var scale$1 = mathScale;
+
+ var fround = mathFround; // `Math.fscale` method
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+
+ $$Y({
+ target: 'Math',
+ stat: true
+ }, {
+ fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
+ return fround(scale$1(x, inLow, inHigh, outLow, outHigh));
+ }
+ });
+
+ var $$X = _export; // `Math.iaddh` method
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ // TODO: Remove from `core-js@4`
+
+
+ $$X({
+ target: 'Math',
+ stat: true
+ }, {
+ iaddh: function iaddh(x0, x1, y0, y1) {
+ var $x0 = x0 >>> 0;
+ var $x1 = x1 >>> 0;
+ var $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+ });
+
+ var $$W = _export; // `Math.imulh` method
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ // TODO: Remove from `core-js@4`
+
+
+ $$W({
+ target: 'Math',
+ stat: true
+ }, {
+ imulh: function imulh(u, v) {
+ var UINT16 = 0xFFFF;
+ var $u = +u;
+ var $v = +v;
+ var u0 = $u & UINT16;
+ var v0 = $v & UINT16;
+ var u1 = $u >> 16;
+ var v1 = $v >> 16;
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+ });
+
+ var $$V = _export; // `Math.isubh` method
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ // TODO: Remove from `core-js@4`
+
+
+ $$V({
+ target: 'Math',
+ stat: true
+ }, {
+ isubh: function isubh(x0, x1, y0, y1) {
+ var $x0 = x0 >>> 0;
+ var $x1 = x1 >>> 0;
+ var $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+ });
+
+ var $$U = _export; // `Math.RAD_PER_DEG` constant
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+
+ $$U({
+ target: 'Math',
+ stat: true
+ }, {
+ RAD_PER_DEG: 180 / Math.PI
+ });
+
+ var $$T = _export;
+
+ var DEG_PER_RAD = Math.PI / 180; // `Math.radians` method
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+ $$T({
+ target: 'Math',
+ stat: true
+ }, {
+ radians: function radians(degrees) {
+ return degrees * DEG_PER_RAD;
+ }
+ });
+
+ var $$S = _export;
+
+ var scale = mathScale; // `Math.scale` method
+ // https://rwaldron.github.io/proposal-math-extensions/
+
+
+ $$S({
+ target: 'Math',
+ stat: true
+ }, {
+ scale: scale
+ });
+
+ var $$R = _export;
+
+ var anObject$q = anObject$1C;
+
+ var numberIsFinite = numberIsFinite$2;
+
+ var createIteratorConstructor$3 = createIteratorConstructor$7;
+
+ var InternalStateModule$5 = internalState;
+
+ var SEEDED_RANDOM = 'Seeded Random';
+ var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
+ var setInternalState$5 = InternalStateModule$5.set;
+ var getInternalState$3 = InternalStateModule$5.getterFor(SEEDED_RANDOM_GENERATOR);
+ var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';
+ var $SeededRandomGenerator = createIteratorConstructor$3(function SeededRandomGenerator(seed) {
+ setInternalState$5(this, {
+ type: SEEDED_RANDOM_GENERATOR,
+ seed: seed % 2147483647
+ });
+ }, SEEDED_RANDOM, function next() {
+ var state = getInternalState$3(this);
+ var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647;
+ return {
+ value: (seed & 1073741823) / 1073741823,
+ done: false
+ };
+ }); // `Math.seededPRNG` method
+ // https://github.com/tc39/proposal-seeded-random
+ // based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html
+
+ $$R({
+ target: 'Math',
+ stat: true,
+ forced: true
+ }, {
+ seededPRNG: function seededPRNG(it) {
+ var seed = anObject$q(it).seed;
+ if (!numberIsFinite(seed)) throw TypeError(SEED_TYPE_ERROR);
+ return new $SeededRandomGenerator(seed);
+ }
+ });
+
+ var $$Q = _export; // `Math.signbit` method
+ // https://github.com/tc39/proposal-Math.signbit
+
+
+ $$Q({
+ target: 'Math',
+ stat: true
+ }, {
+ signbit: function signbit(x) {
+ return (x = +x) == x && x == 0 ? 1 / x == -Infinity : x < 0;
+ }
+ });
+
+ var $$P = _export; // `Math.umulh` method
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ // TODO: Remove from `core-js@4`
+
+
+ $$P({
+ target: 'Math',
+ stat: true
+ }, {
+ umulh: function umulh(u, v) {
+ var UINT16 = 0xFFFF;
+ var $u = +u;
+ var $v = +v;
+ var u0 = $u & UINT16;
+ var v0 = $v & UINT16;
+ var u1 = $u >>> 16;
+ var v1 = $v >>> 16;
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+ });
+
+ var $$O = _export;
+
+ var toIntegerOrInfinity = toIntegerOrInfinity$i;
+
+ var parseInt$1 = numberParseInt;
+
+ var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation';
+ var INVALID_RADIX = 'Invalid radix';
+ var valid = /^[\da-z]+$/; // `Number.fromString` method
+ // https://github.com/tc39/proposal-number-fromstring
+
+ $$O({
+ target: 'Number',
+ stat: true
+ }, {
+ fromString: function fromString(string, radix) {
+ var sign = 1;
+ var R, mathNum;
+ if (typeof string != 'string') throw TypeError(INVALID_NUMBER_REPRESENTATION);
+ if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+
+ if (string.charAt(0) == '-') {
+ sign = -1;
+ string = string.slice(1);
+ if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+ }
+
+ R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
+ if (R < 2 || R > 36) throw RangeError(INVALID_RADIX);
+
+ if (!valid.test(string) || (mathNum = parseInt$1(string, R)).toString(R) !== string) {
+ throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+ }
+
+ return sign * mathNum;
+ }
+ });
+
+ var $$N = _export;
+
+ var NumericRangeIterator = numericRangeIterator; // `Number.range` method
+ // https://github.com/tc39/proposal-Number.range
+
+
+ $$N({
+ target: 'Number',
+ stat: true
+ }, {
+ range: function range(start, end, option) {
+ return new NumericRangeIterator(start, end, option, 'number', 0, 1);
+ }
+ });
+
+ var InternalStateModule$4 = internalState;
+
+ var createIteratorConstructor$2 = createIteratorConstructor$7;
+
+ var hasOwn$2 = hasOwnProperty_1;
+
+ var objectKeys = objectKeys$5;
+
+ var toObject$1 = toObject$A;
+
+ var OBJECT_ITERATOR = 'Object Iterator';
+ var setInternalState$4 = InternalStateModule$4.set;
+ var getInternalState$2 = InternalStateModule$4.getterFor(OBJECT_ITERATOR);
+ var objectIterator = createIteratorConstructor$2(function ObjectIterator(source, mode) {
+ var object = toObject$1(source);
+ setInternalState$4(this, {
+ type: OBJECT_ITERATOR,
+ mode: mode,
+ object: object,
+ keys: objectKeys(object),
+ index: 0
+ });
+ }, 'Object', function next() {
+ var state = getInternalState$2(this);
+ var keys = state.keys;
+
+ while (true) {
+ if (keys === null || state.index >= keys.length) {
+ state.object = state.keys = null;
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ var key = keys[state.index++];
+ var object = state.object;
+ if (!hasOwn$2(object, key)) continue;
+
+ switch (state.mode) {
+ case 'keys':
+ return {
+ value: key,
+ done: false
+ };
+
+ case 'values':
+ return {
+ value: object[key],
+ done: false
+ };
+ }
+ /* entries */
+
+
+ return {
+ value: [key, object[key]],
+ done: false
+ };
+ }
+ });
+
+ var $$M = _export;
+
+ var ObjectIterator$2 = objectIterator; // `Object.iterateEntries` method
+ // https://github.com/tc39/proposal-object-iteration
+
+
+ $$M({
+ target: 'Object',
+ stat: true
+ }, {
+ iterateEntries: function iterateEntries(object) {
+ return new ObjectIterator$2(object, 'entries');
+ }
+ });
+
+ var $$L = _export;
+
+ var ObjectIterator$1 = objectIterator; // `Object.iterateKeys` method
+ // https://github.com/tc39/proposal-object-iteration
+
+
+ $$L({
+ target: 'Object',
+ stat: true
+ }, {
+ iterateKeys: function iterateKeys(object) {
+ return new ObjectIterator$1(object, 'keys');
+ }
+ });
+
+ var $$K = _export;
+
+ var ObjectIterator = objectIterator; // `Object.iterateValues` method
+ // https://github.com/tc39/proposal-object-iteration
+
+
+ $$K({
+ target: 'Object',
+ stat: true
+ }, {
+ iterateValues: function iterateValues(object) {
+ return new ObjectIterator(object, 'values');
+ }
+ });
+
+ var $$J = _export;
+
+ var DESCRIPTORS$1 = descriptors;
+
+ var setSpecies = setSpecies$7;
+
+ var aCallable$b = aCallable$Q;
+
+ var isCallable$3 = isCallable$z;
+
+ var isConstructor = isConstructor$7;
+
+ var anObject$p = anObject$1C;
+
+ var isObject$1 = isObject$C;
+
+ var anInstance$2 = anInstance$b;
+
+ var defineProperty$1 = objectDefineProperty.f;
+
+ var redefine$2 = redefine$l.exports;
+
+ var redefineAll$1 = redefineAll$a;
+
+ var getIterator$2 = getIterator$b;
+
+ var getMethod = getMethod$h;
+
+ var iterate$f = iterate$I;
+
+ var hostReportErrors = hostReportErrors$2;
+
+ var wellKnownSymbol$3 = wellKnownSymbol$G;
+
+ var InternalStateModule$3 = internalState;
+
+ var OBSERVABLE = wellKnownSymbol$3('observable');
+ var getInternalState$1 = InternalStateModule$3.get;
+ var setInternalState$3 = InternalStateModule$3.set;
+
+ var cleanupSubscription = function (subscriptionState) {
+ var cleanup = subscriptionState.cleanup;
+
+ if (cleanup) {
+ subscriptionState.cleanup = undefined;
+
+ try {
+ cleanup();
+ } catch (error) {
+ hostReportErrors(error);
+ }
+ }
+ };
+
+ var subscriptionClosed = function (subscriptionState) {
+ return subscriptionState.observer === undefined;
+ };
+
+ var close = function (subscriptionState) {
+ var subscription = subscriptionState.facade;
+
+ if (!DESCRIPTORS$1) {
+ subscription.closed = true;
+ var subscriptionObserver = subscriptionState.subscriptionObserver;
+ if (subscriptionObserver) subscriptionObserver.closed = true;
+ }
+
+ subscriptionState.observer = undefined;
+ };
+
+ var Subscription = function (observer, subscriber) {
+ var subscriptionState = setInternalState$3(this, {
+ cleanup: undefined,
+ observer: anObject$p(observer),
+ subscriptionObserver: undefined
+ });
+ var start;
+ if (!DESCRIPTORS$1) this.closed = false;
+
+ try {
+ if (start = getMethod(observer, 'start')) start.call(observer, this);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+
+ if (subscriptionClosed(subscriptionState)) return;
+ var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(this);
+
+ try {
+ var cleanup = subscriber(subscriptionObserver);
+ var subscription = cleanup;
+ if (cleanup != null) subscriptionState.cleanup = isCallable$3(cleanup.unsubscribe) ? function () {
+ subscription.unsubscribe();
+ } : aCallable$b(cleanup);
+ } catch (error) {
+ subscriptionObserver.error(error);
+ return;
+ }
+
+ if (subscriptionClosed(subscriptionState)) cleanupSubscription(subscriptionState);
+ };
+
+ Subscription.prototype = redefineAll$1({}, {
+ unsubscribe: function unsubscribe() {
+ var subscriptionState = getInternalState$1(this);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ close(subscriptionState);
+ cleanupSubscription(subscriptionState);
+ }
+ }
+ });
+ if (DESCRIPTORS$1) defineProperty$1(Subscription.prototype, 'closed', {
+ configurable: true,
+ get: function () {
+ return subscriptionClosed(getInternalState$1(this));
+ }
+ });
+
+ var SubscriptionObserver = function (subscription) {
+ setInternalState$3(this, {
+ subscription: subscription
+ });
+ if (!DESCRIPTORS$1) this.closed = false;
+ };
+
+ SubscriptionObserver.prototype = redefineAll$1({}, {
+ next: function next(value) {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+
+ try {
+ var nextMethod = getMethod(observer, 'next');
+ if (nextMethod) nextMethod.call(observer, value);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+ }
+ },
+ error: function error(value) {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+ close(subscriptionState);
+
+ try {
+ var errorMethod = getMethod(observer, 'error');
+ if (errorMethod) errorMethod.call(observer, value);else hostReportErrors(value);
+ } catch (err) {
+ hostReportErrors(err);
+ }
+
+ cleanupSubscription(subscriptionState);
+ }
+ },
+ complete: function complete() {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+ close(subscriptionState);
+
+ try {
+ var completeMethod = getMethod(observer, 'complete');
+ if (completeMethod) completeMethod.call(observer);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+
+ cleanupSubscription(subscriptionState);
+ }
+ }
+ });
+ if (DESCRIPTORS$1) defineProperty$1(SubscriptionObserver.prototype, 'closed', {
+ configurable: true,
+ get: function () {
+ return subscriptionClosed(getInternalState$1(getInternalState$1(this).subscription));
+ }
+ });
+
+ var $Observable = function Observable(subscriber) {
+ anInstance$2(this, $Observable, 'Observable');
+ setInternalState$3(this, {
+ subscriber: aCallable$b(subscriber)
+ });
+ };
+
+ redefineAll$1($Observable.prototype, {
+ subscribe: function subscribe(observer) {
+ var length = arguments.length;
+ return new Subscription(isCallable$3(observer) ? {
+ next: observer,
+ error: length > 1 ? arguments[1] : undefined,
+ complete: length > 2 ? arguments[2] : undefined
+ } : isObject$1(observer) ? observer : {}, getInternalState$1(this).subscriber);
+ }
+ });
+ redefineAll$1($Observable, {
+ from: function from(x) {
+ var C = isConstructor(this) ? this : $Observable;
+ var observableMethod = getMethod(anObject$p(x), OBSERVABLE);
+
+ if (observableMethod) {
+ var observable = anObject$p(observableMethod.call(x));
+ return observable.constructor === C ? observable : new C(function (observer) {
+ return observable.subscribe(observer);
+ });
+ }
+
+ var iterator = getIterator$2(x);
+ return new C(function (observer) {
+ iterate$f(iterator, function (it, stop) {
+ observer.next(it);
+ if (observer.closed) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ });
+ observer.complete();
+ });
+ },
+ of: function of() {
+ var C = isConstructor(this) ? this : $Observable;
+ var length = arguments.length;
+ var items = new Array(length);
+ var index = 0;
+
+ while (index < length) items[index] = arguments[index++];
+
+ return new C(function (observer) {
+ for (var i = 0; i < length; i++) {
+ observer.next(items[i]);
+ if (observer.closed) return;
+ }
+
+ observer.complete();
+ });
+ }
+ });
+ redefine$2($Observable.prototype, OBSERVABLE, function () {
+ return this;
+ });
+ $$J({
+ global: true
+ }, {
+ Observable: $Observable
+ });
+ setSpecies('Observable');
+
+ var $$I = _export;
+
+ var newPromiseCapabilityModule = newPromiseCapability$2;
+
+ var perform = perform$4; // `Promise.try` method
+ // https://github.com/tc39/proposal-promise-try
+
+
+ $$I({
+ target: 'Promise',
+ stat: true
+ }, {
+ 'try': function (callbackfn) {
+ var promiseCapability = newPromiseCapabilityModule.f(this);
+ var result = perform(callbackfn);
+ (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
+ return promiseCapability.promise;
+ }
+ });
+
+ // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+ var Map$1 = es_map;
+
+ var WeakMap = es_weakMap.exports;
+
+ var shared = shared$7.exports;
+
+ var metadata = shared('metadata');
+ var store$1 = metadata.store || (metadata.store = new WeakMap());
+
+ var getOrCreateMetadataMap$1 = function (target, targetKey, create) {
+ var targetMetadata = store$1.get(target);
+
+ if (!targetMetadata) {
+ if (!create) return;
+ store$1.set(target, targetMetadata = new Map$1());
+ }
+
+ var keyMetadata = targetMetadata.get(targetKey);
+
+ if (!keyMetadata) {
+ if (!create) return;
+ targetMetadata.set(targetKey, keyMetadata = new Map$1());
+ }
+
+ return keyMetadata;
+ };
+
+ var ordinaryHasOwnMetadata$3 = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap$1(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+ };
+
+ var ordinaryGetOwnMetadata$2 = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap$1(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+ };
+
+ var ordinaryDefineOwnMetadata$2 = function (MetadataKey, MetadataValue, O, P) {
+ getOrCreateMetadataMap$1(O, P, true).set(MetadataKey, MetadataValue);
+ };
+
+ var ordinaryOwnMetadataKeys$2 = function (target, targetKey) {
+ var metadataMap = getOrCreateMetadataMap$1(target, targetKey, false);
+ var keys = [];
+ if (metadataMap) metadataMap.forEach(function (_, key) {
+ keys.push(key);
+ });
+ return keys;
+ };
+
+ var toMetadataKey$9 = function (it) {
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+ };
+
+ var reflectMetadata = {
+ store: store$1,
+ getMap: getOrCreateMetadataMap$1,
+ has: ordinaryHasOwnMetadata$3,
+ get: ordinaryGetOwnMetadata$2,
+ set: ordinaryDefineOwnMetadata$2,
+ keys: ordinaryOwnMetadataKeys$2,
+ toKey: toMetadataKey$9
+ };
+
+ var $$H = _export;
+
+ var ReflectMetadataModule$8 = reflectMetadata;
+
+ var anObject$o = anObject$1C;
+
+ var toMetadataKey$8 = ReflectMetadataModule$8.toKey;
+ var ordinaryDefineOwnMetadata$1 = ReflectMetadataModule$8.set; // `Reflect.defineMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$H({
+ target: 'Reflect',
+ stat: true
+ }, {
+ defineMetadata: function defineMetadata(metadataKey, metadataValue, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 4 ? undefined : toMetadataKey$8(arguments[3]);
+ ordinaryDefineOwnMetadata$1(metadataKey, metadataValue, anObject$o(target), targetKey);
+ }
+ });
+
+ var $$G = _export;
+
+ var ReflectMetadataModule$7 = reflectMetadata;
+
+ var anObject$n = anObject$1C;
+
+ var toMetadataKey$7 = ReflectMetadataModule$7.toKey;
+ var getOrCreateMetadataMap = ReflectMetadataModule$7.getMap;
+ var store = ReflectMetadataModule$7.store; // `Reflect.deleteMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$G({
+ target: 'Reflect',
+ stat: true
+ }, {
+ deleteMetadata: function deleteMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$7(arguments[2]);
+ var metadataMap = getOrCreateMetadataMap(anObject$n(target), targetKey, false);
+ if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
+ if (metadataMap.size) return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+ }
+ });
+
+ var $$F = _export;
+
+ var ReflectMetadataModule$6 = reflectMetadata;
+
+ var anObject$m = anObject$1C;
+
+ var getPrototypeOf$3 = objectGetPrototypeOf$1;
+
+ var ordinaryHasOwnMetadata$2 = ReflectMetadataModule$6.has;
+ var ordinaryGetOwnMetadata$1 = ReflectMetadataModule$6.get;
+ var toMetadataKey$6 = ReflectMetadataModule$6.toKey;
+
+ var ordinaryGetMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata$2(MetadataKey, O, P);
+ if (hasOwn) return ordinaryGetOwnMetadata$1(MetadataKey, O, P);
+ var parent = getPrototypeOf$3(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+ }; // `Reflect.getMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+
+ $$F({
+ target: 'Reflect',
+ stat: true
+ }, {
+ getMetadata: function getMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$6(arguments[2]);
+ return ordinaryGetMetadata(metadataKey, anObject$m(target), targetKey);
+ }
+ });
+
+ var $$E = _export; // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+
+
+ var Set$1 = es_set;
+
+ var ReflectMetadataModule$5 = reflectMetadata;
+
+ var anObject$l = anObject$1C;
+
+ var getPrototypeOf$2 = objectGetPrototypeOf$1;
+
+ var iterate$e = iterate$I;
+
+ var ordinaryOwnMetadataKeys$1 = ReflectMetadataModule$5.keys;
+ var toMetadataKey$5 = ReflectMetadataModule$5.toKey;
+
+ var from$3 = function (iter) {
+ var result = [];
+ iterate$e(iter, result.push, {
+ that: result
+ });
+ return result;
+ };
+
+ var ordinaryMetadataKeys = function (O, P) {
+ var oKeys = ordinaryOwnMetadataKeys$1(O, P);
+ var parent = getPrototypeOf$2(O);
+ if (parent === null) return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from$3(new Set$1(oKeys.concat(pKeys))) : pKeys : oKeys;
+ }; // `Reflect.getMetadataKeys` method
+ // https://github.com/rbuckton/reflect-metadata
+
+
+ $$E({
+ target: 'Reflect',
+ stat: true
+ }, {
+ getMetadataKeys: function getMetadataKeys(target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 2 ? undefined : toMetadataKey$5(arguments[1]);
+ return ordinaryMetadataKeys(anObject$l(target), targetKey);
+ }
+ });
+
+ var $$D = _export;
+
+ var ReflectMetadataModule$4 = reflectMetadata;
+
+ var anObject$k = anObject$1C;
+
+ var ordinaryGetOwnMetadata = ReflectMetadataModule$4.get;
+ var toMetadataKey$4 = ReflectMetadataModule$4.toKey; // `Reflect.getOwnMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$D({
+ target: 'Reflect',
+ stat: true
+ }, {
+ getOwnMetadata: function getOwnMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$4(arguments[2]);
+ return ordinaryGetOwnMetadata(metadataKey, anObject$k(target), targetKey);
+ }
+ });
+
+ var $$C = _export;
+
+ var ReflectMetadataModule$3 = reflectMetadata;
+
+ var anObject$j = anObject$1C;
+
+ var ordinaryOwnMetadataKeys = ReflectMetadataModule$3.keys;
+ var toMetadataKey$3 = ReflectMetadataModule$3.toKey; // `Reflect.getOwnMetadataKeys` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$C({
+ target: 'Reflect',
+ stat: true
+ }, {
+ getOwnMetadataKeys: function getOwnMetadataKeys(target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 2 ? undefined : toMetadataKey$3(arguments[1]);
+ return ordinaryOwnMetadataKeys(anObject$j(target), targetKey);
+ }
+ });
+
+ var $$B = _export;
+
+ var ReflectMetadataModule$2 = reflectMetadata;
+
+ var anObject$i = anObject$1C;
+
+ var getPrototypeOf$1 = objectGetPrototypeOf$1;
+
+ var ordinaryHasOwnMetadata$1 = ReflectMetadataModule$2.has;
+ var toMetadataKey$2 = ReflectMetadataModule$2.toKey;
+
+ var ordinaryHasMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata$1(MetadataKey, O, P);
+ if (hasOwn) return true;
+ var parent = getPrototypeOf$1(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+ }; // `Reflect.hasMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+
+ $$B({
+ target: 'Reflect',
+ stat: true
+ }, {
+ hasMetadata: function hasMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$2(arguments[2]);
+ return ordinaryHasMetadata(metadataKey, anObject$i(target), targetKey);
+ }
+ });
+
+ var $$A = _export;
+
+ var ReflectMetadataModule$1 = reflectMetadata;
+
+ var anObject$h = anObject$1C;
+
+ var ordinaryHasOwnMetadata = ReflectMetadataModule$1.has;
+ var toMetadataKey$1 = ReflectMetadataModule$1.toKey; // `Reflect.hasOwnMetadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$A({
+ target: 'Reflect',
+ stat: true
+ }, {
+ hasOwnMetadata: function hasOwnMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$1(arguments[2]);
+ return ordinaryHasOwnMetadata(metadataKey, anObject$h(target), targetKey);
+ }
+ });
+
+ var $$z = _export;
+
+ var ReflectMetadataModule = reflectMetadata;
+
+ var anObject$g = anObject$1C;
+
+ var toMetadataKey = ReflectMetadataModule.toKey;
+ var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method
+ // https://github.com/rbuckton/reflect-metadata
+
+ $$z({
+ target: 'Reflect',
+ stat: true
+ }, {
+ metadata: function metadata(metadataKey, metadataValue) {
+ return function decorator(target, key) {
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject$g(target), toMetadataKey(key));
+ };
+ }
+ });
+
+ var aCallable$a = aCallable$Q;
+
+ var anObject$f = anObject$1C; // https://github.com/tc39/collection-methods
+
+
+ var collectionAddAll$2 = function () {
+ var set = anObject$f(this);
+ var adder = aCallable$a(set.add);
+
+ for (var k = 0, len = arguments.length; k < len; k++) {
+ adder.call(set, arguments[k]);
+ }
+
+ return set;
+ };
+
+ var $$y = _export;
+
+ var IS_PURE$l = isPure;
+
+ var collectionAddAll$1 = collectionAddAll$2; // `Set.prototype.addAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$y({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$l
+ }, {
+ addAll: function addAll() {
+ return collectionAddAll$1.apply(this, arguments);
+ }
+ });
+
+ var $$x = _export;
+
+ var IS_PURE$k = isPure;
+
+ var collectionDeleteAll$2 = collectionDeleteAll$4; // `Set.prototype.deleteAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$x({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$k
+ }, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$2.apply(this, arguments);
+ }
+ });
+
+ var $$w = _export;
+
+ var IS_PURE$j = isPure;
+
+ var getBuiltIn$8 = getBuiltIn$y;
+
+ var aCallable$9 = aCallable$Q;
+
+ var anObject$e = anObject$1C;
+
+ var speciesConstructor$5 = speciesConstructor$f;
+
+ var iterate$d = iterate$I; // `Set.prototype.difference` method
+ // https://github.com/tc39/proposal-set-methods
+
+
+ $$w({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$j
+ }, {
+ difference: function difference(iterable) {
+ var set = anObject$e(this);
+ var newSet = new (speciesConstructor$5(set, getBuiltIn$8('Set')))(set);
+ var remover = aCallable$9(newSet['delete']);
+ iterate$d(iterable, function (value) {
+ remover.call(newSet, value);
+ });
+ return newSet;
+ }
+ });
+
+ var getSetIterator$7 = function (it) {
+ // eslint-disable-next-line es/no-set -- safe
+ return Set.prototype.values.call(it);
+ };
+
+ var $$v = _export;
+
+ var IS_PURE$i = isPure;
+
+ var anObject$d = anObject$1C;
+
+ var bind$5 = functionBindContext;
+
+ var getSetIterator$6 = getSetIterator$7;
+
+ var iterate$c = iterate$I; // `Set.prototype.every` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$v({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$i
+ }, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$d(this);
+ var iterator = getSetIterator$6(set);
+ var boundFunction = bind$5(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return !iterate$c(iterator, function (value, stop) {
+ if (!boundFunction(value, value, set)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$u = _export;
+
+ var IS_PURE$h = isPure;
+
+ var getBuiltIn$7 = getBuiltIn$y;
+
+ var aCallable$8 = aCallable$Q;
+
+ var anObject$c = anObject$1C;
+
+ var bind$4 = functionBindContext;
+
+ var speciesConstructor$4 = speciesConstructor$f;
+
+ var getSetIterator$5 = getSetIterator$7;
+
+ var iterate$b = iterate$I; // `Set.prototype.filter` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$u({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$h
+ }, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$c(this);
+ var iterator = getSetIterator$5(set);
+ var boundFunction = bind$4(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newSet = new (speciesConstructor$4(set, getBuiltIn$7('Set')))();
+ var adder = aCallable$8(newSet.add);
+ iterate$b(iterator, function (value) {
+ if (boundFunction(value, value, set)) adder.call(newSet, value);
+ }, {
+ IS_ITERATOR: true
+ });
+ return newSet;
+ }
+ });
+
+ var $$t = _export;
+
+ var IS_PURE$g = isPure;
+
+ var anObject$b = anObject$1C;
+
+ var bind$3 = functionBindContext;
+
+ var getSetIterator$4 = getSetIterator$7;
+
+ var iterate$a = iterate$I; // `Set.prototype.find` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$t({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$g
+ }, {
+ find: function find(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$b(this);
+ var iterator = getSetIterator$4(set);
+ var boundFunction = bind$3(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$a(iterator, function (value, stop) {
+ if (boundFunction(value, value, set)) return stop(value);
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+ });
+
+ var $$s = _export;
+
+ var from$2 = collectionFrom; // `Set.from` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
+
+
+ $$s({
+ target: 'Set',
+ stat: true
+ }, {
+ from: from$2
+ });
+
+ var $$r = _export;
+
+ var IS_PURE$f = isPure;
+
+ var getBuiltIn$6 = getBuiltIn$y;
+
+ var aCallable$7 = aCallable$Q;
+
+ var anObject$a = anObject$1C;
+
+ var speciesConstructor$3 = speciesConstructor$f;
+
+ var iterate$9 = iterate$I; // `Set.prototype.intersection` method
+ // https://github.com/tc39/proposal-set-methods
+
+
+ $$r({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$f
+ }, {
+ intersection: function intersection(iterable) {
+ var set = anObject$a(this);
+ var newSet = new (speciesConstructor$3(set, getBuiltIn$6('Set')))();
+ var hasCheck = aCallable$7(set.has);
+ var adder = aCallable$7(newSet.add);
+ iterate$9(iterable, function (value) {
+ if (hasCheck.call(set, value)) adder.call(newSet, value);
+ });
+ return newSet;
+ }
+ });
+
+ var $$q = _export;
+
+ var IS_PURE$e = isPure;
+
+ var aCallable$6 = aCallable$Q;
+
+ var anObject$9 = anObject$1C;
+
+ var iterate$8 = iterate$I; // `Set.prototype.isDisjointFrom` method
+ // https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom
+
+
+ $$q({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$e
+ }, {
+ isDisjointFrom: function isDisjointFrom(iterable) {
+ var set = anObject$9(this);
+ var hasCheck = aCallable$6(set.has);
+ return !iterate$8(iterable, function (value, stop) {
+ if (hasCheck.call(set, value) === true) return stop();
+ }, {
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$p = _export;
+
+ var IS_PURE$d = isPure;
+
+ var getBuiltIn$5 = getBuiltIn$y;
+
+ var aCallable$5 = aCallable$Q;
+
+ var isCallable$2 = isCallable$z;
+
+ var anObject$8 = anObject$1C;
+
+ var getIterator$1 = getIterator$b;
+
+ var iterate$7 = iterate$I; // `Set.prototype.isSubsetOf` method
+ // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf
+
+
+ $$p({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$d
+ }, {
+ isSubsetOf: function isSubsetOf(iterable) {
+ var iterator = getIterator$1(this);
+ var otherSet = anObject$8(iterable);
+ var hasCheck = otherSet.has;
+
+ if (!isCallable$2(hasCheck)) {
+ otherSet = new (getBuiltIn$5('Set'))(iterable);
+ hasCheck = aCallable$5(otherSet.has);
+ }
+
+ return !iterate$7(iterator, function (value, stop) {
+ if (hasCheck.call(otherSet, value) === false) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$o = _export;
+
+ var IS_PURE$c = isPure;
+
+ var aCallable$4 = aCallable$Q;
+
+ var anObject$7 = anObject$1C;
+
+ var iterate$6 = iterate$I; // `Set.prototype.isSupersetOf` method
+ // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf
+
+
+ $$o({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$c
+ }, {
+ isSupersetOf: function isSupersetOf(iterable) {
+ var set = anObject$7(this);
+ var hasCheck = aCallable$4(set.has);
+ return !iterate$6(iterable, function (value, stop) {
+ if (hasCheck.call(set, value) === false) return stop();
+ }, {
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$n = _export;
+
+ var IS_PURE$b = isPure;
+
+ var anObject$6 = anObject$1C;
+
+ var getSetIterator$3 = getSetIterator$7;
+
+ var iterate$5 = iterate$I; // `Set.prototype.join` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$n({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$b
+ }, {
+ join: function join(separator) {
+ var set = anObject$6(this);
+ var iterator = getSetIterator$3(set);
+ var sep = separator === undefined ? ',' : String(separator);
+ var result = [];
+ iterate$5(iterator, result.push, {
+ that: result,
+ IS_ITERATOR: true
+ });
+ return result.join(sep);
+ }
+ });
+
+ var $$m = _export;
+
+ var IS_PURE$a = isPure;
+
+ var getBuiltIn$4 = getBuiltIn$y;
+
+ var aCallable$3 = aCallable$Q;
+
+ var anObject$5 = anObject$1C;
+
+ var bind$2 = functionBindContext;
+
+ var speciesConstructor$2 = speciesConstructor$f;
+
+ var getSetIterator$2 = getSetIterator$7;
+
+ var iterate$4 = iterate$I; // `Set.prototype.map` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$m({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$a
+ }, {
+ map: function map(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$5(this);
+ var iterator = getSetIterator$2(set);
+ var boundFunction = bind$2(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newSet = new (speciesConstructor$2(set, getBuiltIn$4('Set')))();
+ var adder = aCallable$3(newSet.add);
+ iterate$4(iterator, function (value) {
+ adder.call(newSet, boundFunction(value, value, set));
+ }, {
+ IS_ITERATOR: true
+ });
+ return newSet;
+ }
+ });
+
+ var $$l = _export;
+
+ var of$2 = collectionOf; // `Set.of` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
+
+
+ $$l({
+ target: 'Set',
+ stat: true
+ }, {
+ of: of$2
+ });
+
+ var $$k = _export;
+
+ var IS_PURE$9 = isPure;
+
+ var aCallable$2 = aCallable$Q;
+
+ var anObject$4 = anObject$1C;
+
+ var getSetIterator$1 = getSetIterator$7;
+
+ var iterate$3 = iterate$I; // `Set.prototype.reduce` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$k({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$9
+ }, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ var set = anObject$4(this);
+ var iterator = getSetIterator$1(set);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$2(callbackfn);
+ iterate$3(iterator, function (value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = callbackfn(accumulator, value, value, set);
+ }
+ }, {
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty set with no initial value');
+ return accumulator;
+ }
+ });
+
+ var $$j = _export;
+
+ var IS_PURE$8 = isPure;
+
+ var anObject$3 = anObject$1C;
+
+ var bind$1 = functionBindContext;
+
+ var getSetIterator = getSetIterator$7;
+
+ var iterate$2 = iterate$I; // `Set.prototype.some` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$j({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$8
+ }, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$3(this);
+ var iterator = getSetIterator(set);
+ var boundFunction = bind$1(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$2(iterator, function (value, stop) {
+ if (boundFunction(value, value, set)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+ });
+
+ var $$i = _export;
+
+ var IS_PURE$7 = isPure;
+
+ var getBuiltIn$3 = getBuiltIn$y;
+
+ var aCallable$1 = aCallable$Q;
+
+ var anObject$2 = anObject$1C;
+
+ var speciesConstructor$1 = speciesConstructor$f;
+
+ var iterate$1 = iterate$I; // `Set.prototype.symmetricDifference` method
+ // https://github.com/tc39/proposal-set-methods
+
+
+ $$i({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$7
+ }, {
+ symmetricDifference: function symmetricDifference(iterable) {
+ var set = anObject$2(this);
+ var newSet = new (speciesConstructor$1(set, getBuiltIn$3('Set')))(set);
+ var remover = aCallable$1(newSet['delete']);
+ var adder = aCallable$1(newSet.add);
+ iterate$1(iterable, function (value) {
+ remover.call(newSet, value) || adder.call(newSet, value);
+ });
+ return newSet;
+ }
+ });
+
+ var $$h = _export;
+
+ var IS_PURE$6 = isPure;
+
+ var getBuiltIn$2 = getBuiltIn$y;
+
+ var aCallable = aCallable$Q;
+
+ var anObject$1 = anObject$1C;
+
+ var speciesConstructor = speciesConstructor$f;
+
+ var iterate = iterate$I; // `Set.prototype.union` method
+ // https://github.com/tc39/proposal-set-methods
+
+
+ $$h({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$6
+ }, {
+ union: function union(iterable) {
+ var set = anObject$1(this);
+ var newSet = new (speciesConstructor(set, getBuiltIn$2('Set')))(set);
+ iterate(iterable, aCallable(newSet.add), {
+ that: newSet
+ });
+ return newSet;
+ }
+ });
+
+ var $$g = _export;
+
+ var charAt$1 = stringMultibyte.charAt;
+
+ var fails$1 = fails$15;
+
+ var FORCED$1 = fails$1(function () {
+ return '𠮷'.at(0) !== '𠮷';
+ }); // `String.prototype.at` method
+ // https://github.com/mathiasbynens/String.prototype.at
+
+ $$g({
+ target: 'String',
+ proto: true,
+ forced: FORCED$1
+ }, {
+ at: function at(pos) {
+ return charAt$1(this, pos);
+ }
+ });
+
+ var $$f = _export;
+
+ var createIteratorConstructor$1 = createIteratorConstructor$7;
+
+ var requireObjectCoercible = requireObjectCoercible$j;
+
+ var toString = toString$t;
+
+ var InternalStateModule$2 = internalState;
+
+ var StringMultibyteModule = stringMultibyte;
+
+ var codeAt$1 = StringMultibyteModule.codeAt;
+ var charAt = StringMultibyteModule.charAt;
+ var STRING_ITERATOR = 'String Iterator';
+ var setInternalState$2 = InternalStateModule$2.set;
+ var getInternalState = InternalStateModule$2.getterFor(STRING_ITERATOR); // TODO: unify with String#@@iterator
+
+ var $StringIterator = createIteratorConstructor$1(function StringIterator(string) {
+ setInternalState$2(this, {
+ type: STRING_ITERATOR,
+ string: string,
+ index: 0
+ });
+ }, 'String', function next() {
+ var state = getInternalState(this);
+ var string = state.string;
+ var index = state.index;
+ var point;
+ if (index >= string.length) return {
+ value: undefined,
+ done: true
+ };
+ point = charAt(string, index);
+ state.index += point.length;
+ return {
+ value: {
+ codePoint: codeAt$1(point, 0),
+ position: index
+ },
+ done: false
+ };
+ }); // `String.prototype.codePoints` method
+ // https://github.com/tc39/proposal-string-prototype-codepoints
+
+ $$f({
+ target: 'String',
+ proto: true
+ }, {
+ codePoints: function codePoints() {
+ return new $StringIterator(toString(requireObjectCoercible(this)));
+ }
+ });
+
+ var defineWellKnownSymbol$6 = defineWellKnownSymbol$l; // `Symbol.asyncDispose` well-known symbol
+ // https://github.com/tc39/proposal-using-statement
+
+
+ defineWellKnownSymbol$6('asyncDispose');
+
+ var defineWellKnownSymbol$5 = defineWellKnownSymbol$l; // `Symbol.dispose` well-known symbol
+ // https://github.com/tc39/proposal-using-statement
+
+
+ defineWellKnownSymbol$5('dispose');
+
+ var defineWellKnownSymbol$4 = defineWellKnownSymbol$l; // `Symbol.matcher` well-known symbol
+ // https://github.com/tc39/proposal-pattern-matching
+
+
+ defineWellKnownSymbol$4('matcher');
+
+ var defineWellKnownSymbol$3 = defineWellKnownSymbol$l; // `Symbol.metadata` well-known symbol
+ // https://github.com/tc39/proposal-decorators
+
+
+ defineWellKnownSymbol$3('metadata');
+
+ var defineWellKnownSymbol$2 = defineWellKnownSymbol$l; // `Symbol.observable` well-known symbol
+ // https://github.com/tc39/proposal-observable
+
+
+ defineWellKnownSymbol$2('observable');
+
+ // TODO: remove from `core-js@4`
+ var defineWellKnownSymbol$1 = defineWellKnownSymbol$l; // `Symbol.patternMatch` well-known symbol
+ // https://github.com/tc39/proposal-pattern-matching
+
+
+ defineWellKnownSymbol$1('patternMatch');
+
+ // TODO: remove from `core-js@4`
+ var defineWellKnownSymbol = defineWellKnownSymbol$l;
+
+ defineWellKnownSymbol('replaceAll');
+
+ var getBuiltIn$1 = getBuiltIn$y;
+
+ var aConstructor = aConstructor$5;
+
+ var arrayFromAsync = arrayFromAsync$1;
+
+ var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = typedArrayConstructorsRequireWrappers;
+
+ var ArrayBufferViewCore$6 = arrayBufferViewCore;
+
+ var arrayFromConstructorAndList = arrayFromConstructorAndList$3;
+
+ var aTypedArrayConstructor = ArrayBufferViewCore$6.aTypedArrayConstructor;
+ var exportTypedArrayStaticMethod = ArrayBufferViewCore$6.exportTypedArrayStaticMethod; // `%TypedArray%.fromAsync` method
+ // https://github.com/tc39/proposal-array-from-async
+ // eslint-disable-next-line -- required for .length
+
+ exportTypedArrayStaticMethod('fromAsync', function fromAsync(asyncItems
+ /* , mapfn = undefined, thisArg = undefined */
+ ) {
+ var C = this;
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+ return new (getBuiltIn$1('Promise'))(function (resolve) {
+ aConstructor(C);
+ resolve(arrayFromAsync(asyncItems, mapfn, thisArg));
+ }).then(function (list) {
+ return arrayFromConstructorAndList(aTypedArrayConstructor(C), list);
+ });
+ }, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
+
+ var ArrayBufferViewCore$5 = arrayBufferViewCore;
+
+ var $filterReject$1 = arrayIteration.filterReject;
+
+ var fromSpeciesAndList$2 = typedArrayFromSpeciesAndList;
+
+ var aTypedArray$5 = ArrayBufferViewCore$5.aTypedArray;
+ var exportTypedArrayMethod$5 = ArrayBufferViewCore$5.exportTypedArrayMethod; // `%TypedArray%.prototype.filterOut` method
+ // https://github.com/tc39/proposal-array-filtering
+
+ exportTypedArrayMethod$5('filterOut', function filterOut(callbackfn
+ /* , thisArg */
+ ) {
+ var list = $filterReject$1(aTypedArray$5(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$2(this, list);
+ });
+
+ var ArrayBufferViewCore$4 = arrayBufferViewCore;
+
+ var $filterReject = arrayIteration.filterReject;
+
+ var fromSpeciesAndList$1 = typedArrayFromSpeciesAndList;
+
+ var aTypedArray$4 = ArrayBufferViewCore$4.aTypedArray;
+ var exportTypedArrayMethod$4 = ArrayBufferViewCore$4.exportTypedArrayMethod; // `%TypedArray%.prototype.filterReject` method
+ // https://github.com/tc39/proposal-array-filtering
+
+ exportTypedArrayMethod$4('filterReject', function filterReject(callbackfn
+ /* , thisArg */
+ ) {
+ var list = $filterReject(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$1(this, list);
+ });
+
+ var ArrayBufferViewCore$3 = arrayBufferViewCore;
+
+ var $findLast = arrayIterationFromLast.findLast;
+
+ var aTypedArray$3 = ArrayBufferViewCore$3.aTypedArray;
+ var exportTypedArrayMethod$3 = ArrayBufferViewCore$3.exportTypedArrayMethod; // `%TypedArray%.prototype.findLast` method
+ // https://github.com/tc39/proposal-array-find-from-last
+
+ exportTypedArrayMethod$3('findLast', function findLast(predicate
+ /* , thisArg */
+ ) {
+ return $findLast(aTypedArray$3(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$2 = arrayBufferViewCore;
+
+ var $findLastIndex = arrayIterationFromLast.findLastIndex;
+
+ var aTypedArray$2 = ArrayBufferViewCore$2.aTypedArray;
+ var exportTypedArrayMethod$2 = ArrayBufferViewCore$2.exportTypedArrayMethod; // `%TypedArray%.prototype.findLastIndex` method
+ // https://github.com/tc39/proposal-array-find-from-last
+
+ exportTypedArrayMethod$2('findLastIndex', function findLastIndex(predicate
+ /* , thisArg */
+ ) {
+ return $findLastIndex(aTypedArray$2(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ });
+
+ var ArrayBufferViewCore$1 = arrayBufferViewCore;
+
+ var $groupBy = arrayGroupBy;
+
+ var typedArraySpeciesConstructor = typedArraySpeciesConstructor$5;
+
+ var aTypedArray$1 = ArrayBufferViewCore$1.aTypedArray;
+ var exportTypedArrayMethod$1 = ArrayBufferViewCore$1.exportTypedArrayMethod; // `%TypedArray%.prototype.groupBy` method
+ // https://github.com/tc39/proposal-array-grouping
+
+ exportTypedArrayMethod$1('groupBy', function groupBy(callbackfn
+ /* , thisArg */
+ ) {
+ var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+ return $groupBy(aTypedArray$1(this), callbackfn, thisArg, typedArraySpeciesConstructor);
+ });
+
+ var ArrayBufferViewCore = arrayBufferViewCore;
+
+ var arrayUniqueBy = arrayUniqueBy$1;
+
+ var fromSpeciesAndList = typedArrayFromSpeciesAndList;
+
+ var aTypedArray = ArrayBufferViewCore.aTypedArray;
+ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.uniqueBy` method
+ // https://github.com/tc39/proposal-array-unique
+
+ exportTypedArrayMethod('uniqueBy', function uniqueBy(resolver) {
+ return fromSpeciesAndList(this, arrayUniqueBy.call(aTypedArray(this), resolver));
+ });
+
+ var $$e = _export;
+
+ var IS_PURE$5 = isPure;
+
+ var collectionDeleteAll$1 = collectionDeleteAll$4; // `WeakMap.prototype.deleteAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$e({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$5
+ }, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$1.apply(this, arguments);
+ }
+ });
+
+ var $$d = _export;
+
+ var from$1 = collectionFrom; // `WeakMap.from` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
+
+
+ $$d({
+ target: 'WeakMap',
+ stat: true
+ }, {
+ from: from$1
+ });
+
+ var $$c = _export;
+
+ var of$1 = collectionOf; // `WeakMap.of` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
+
+
+ $$c({
+ target: 'WeakMap',
+ stat: true
+ }, {
+ of: of$1
+ });
+
+ var $$b = _export;
+
+ var IS_PURE$4 = isPure;
+
+ var $emplace = mapEmplace; // `WeakMap.prototype.emplace` method
+ // https://github.com/tc39/proposal-upsert
+
+
+ $$b({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$4
+ }, {
+ emplace: $emplace
+ });
+
+ var $$a = _export;
+
+ var IS_PURE$3 = isPure;
+
+ var $upsert = mapUpsert; // `WeakMap.prototype.upsert` method (replaced by `WeakMap.prototype.emplace`)
+ // https://github.com/tc39/proposal-upsert
+
+
+ $$a({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$3
+ }, {
+ upsert: $upsert
+ });
+
+ var $$9 = _export;
+
+ var IS_PURE$2 = isPure;
+
+ var collectionAddAll = collectionAddAll$2; // `WeakSet.prototype.addAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$9({
+ target: 'WeakSet',
+ proto: true,
+ real: true,
+ forced: IS_PURE$2
+ }, {
+ addAll: function addAll() {
+ return collectionAddAll.apply(this, arguments);
+ }
+ });
+
+ var $$8 = _export;
+
+ var IS_PURE$1 = isPure;
+
+ var collectionDeleteAll = collectionDeleteAll$4; // `WeakSet.prototype.deleteAll` method
+ // https://github.com/tc39/proposal-collection-methods
+
+
+ $$8({
+ target: 'WeakSet',
+ proto: true,
+ real: true,
+ forced: IS_PURE$1
+ }, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll.apply(this, arguments);
+ }
+ });
+
+ var $$7 = _export;
+
+ var from = collectionFrom; // `WeakSet.from` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
+
+
+ $$7({
+ target: 'WeakSet',
+ stat: true
+ }, {
+ from: from
+ });
+
+ var $$6 = _export;
+
+ var of = collectionOf; // `WeakSet.of` method
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
+
+
+ $$6({
+ target: 'WeakSet',
+ stat: true
+ }, {
+ of: of
+ });
+
+ // iterable DOM collections
+ // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
+ var domIterables = {
+ CSSRuleList: 0,
+ CSSStyleDeclaration: 0,
+ CSSValueList: 0,
+ ClientRectList: 0,
+ DOMRectList: 0,
+ DOMStringList: 0,
+ DOMTokenList: 1,
+ DataTransferItemList: 0,
+ FileList: 0,
+ HTMLAllCollection: 0,
+ HTMLCollection: 0,
+ HTMLFormElement: 0,
+ HTMLSelectElement: 0,
+ MediaList: 0,
+ MimeTypeArray: 0,
+ NamedNodeMap: 0,
+ NodeList: 1,
+ PaintRequestList: 0,
+ Plugin: 0,
+ PluginArray: 0,
+ SVGLengthList: 0,
+ SVGNumberList: 0,
+ SVGPathSegList: 0,
+ SVGPointList: 0,
+ SVGStringList: 0,
+ SVGTransformList: 0,
+ SourceBufferList: 0,
+ StyleSheetList: 0,
+ TextTrackCueList: 0,
+ TextTrackList: 0,
+ TouchList: 0
+ };
+
+ // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
+ var documentCreateElement = documentCreateElement$2;
+
+ var classList$1 = documentCreateElement('span').classList;
+ var DOMTokenListPrototype$2 = classList$1 && classList$1.constructor && classList$1.constructor.prototype;
+ var domTokenListPrototype = DOMTokenListPrototype$2 === Object.prototype ? undefined : DOMTokenListPrototype$2;
+
+ var global$6 = global$R;
+
+ var DOMIterables$1 = domIterables;
+
+ var DOMTokenListPrototype$1 = domTokenListPrototype;
+
+ var forEach = arrayForEach;
+
+ var createNonEnumerableProperty$1 = createNonEnumerableProperty$h;
+
+ var handlePrototype$1 = function (CollectionPrototype) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
+ createNonEnumerableProperty$1(CollectionPrototype, 'forEach', forEach);
+ } catch (error) {
+ CollectionPrototype.forEach = forEach;
+ }
+ };
+
+ for (var COLLECTION_NAME$1 in DOMIterables$1) {
+ if (DOMIterables$1[COLLECTION_NAME$1]) {
+ handlePrototype$1(global$6[COLLECTION_NAME$1] && global$6[COLLECTION_NAME$1].prototype);
+ }
+ }
+
+ handlePrototype$1(DOMTokenListPrototype$1);
+
+ var global$5 = global$R;
+
+ var DOMIterables = domIterables;
+
+ var DOMTokenListPrototype = domTokenListPrototype;
+
+ var ArrayIteratorMethods = es_array_iterator;
+
+ var createNonEnumerableProperty = createNonEnumerableProperty$h;
+
+ var wellKnownSymbol$2 = wellKnownSymbol$G;
+
+ var ITERATOR$2 = wellKnownSymbol$2('iterator');
+ var TO_STRING_TAG = wellKnownSymbol$2('toStringTag');
+ var ArrayValues = ArrayIteratorMethods.values;
+
+ var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
+ if (CollectionPrototype) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype[ITERATOR$2] !== ArrayValues) try {
+ createNonEnumerableProperty(CollectionPrototype, ITERATOR$2, ArrayValues);
+ } catch (error) {
+ CollectionPrototype[ITERATOR$2] = ArrayValues;
+ }
+
+ if (!CollectionPrototype[TO_STRING_TAG]) {
+ createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
+ }
+
+ if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
+ createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
+ } catch (error) {
+ CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
+ }
+ }
+ }
+ };
+
+ for (var COLLECTION_NAME in DOMIterables) {
+ handlePrototype(global$5[COLLECTION_NAME] && global$5[COLLECTION_NAME].prototype, COLLECTION_NAME);
+ }
+
+ handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
+
+ var $$5 = _export;
+
+ var global$4 = global$R;
+
+ var task = task$2;
+
+ var FORCED = !global$4.setImmediate || !global$4.clearImmediate; // http://w3c.github.io/setImmediate/
+
+ $$5({
+ global: true,
+ bind: true,
+ enumerable: true,
+ forced: FORCED
+ }, {
+ // `setImmediate` method
+ // http://w3c.github.io/setImmediate/#si-setImmediate
+ setImmediate: task.set,
+ // `clearImmediate` method
+ // http://w3c.github.io/setImmediate/#si-clearImmediate
+ clearImmediate: task.clear
+ });
+
+ var $$4 = _export;
+
+ var global$3 = global$R;
+
+ var microtask = microtask$2;
+
+ var IS_NODE = engineIsNode;
+
+ var process = global$3.process; // `queueMicrotask` method
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
+
+ $$4({
+ global: true,
+ enumerable: true,
+ noTargetGet: true
+ }, {
+ queueMicrotask: function queueMicrotask(fn) {
+ var domain = IS_NODE && process.domain;
+ microtask(domain ? domain.bind(fn) : fn);
+ }
+ });
+
+ var $$3 = _export;
+
+ var global$2 = global$R;
+
+ var isCallable$1 = isCallable$z;
+
+ var userAgent = engineUserAgent;
+
+ var slice = [].slice;
+ var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
+
+ var wrap = function (scheduler) {
+ return function (handler, timeout
+ /* , ...arguments */
+ ) {
+ var boundArgs = arguments.length > 2;
+ var args = boundArgs ? slice.call(arguments, 2) : undefined;
+ return scheduler(boundArgs ? function () {
+ // eslint-disable-next-line no-new-func -- spec requirement
+ (isCallable$1(handler) ? handler : Function(handler)).apply(this, args);
+ } : handler, timeout);
+ };
+ }; // ie9- setTimeout & setInterval additional parameters fix
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
+
+
+ $$3({
+ global: true,
+ bind: true,
+ forced: MSIE
+ }, {
+ // `setTimeout` method
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
+ setTimeout: wrap(global$2.setTimeout),
+ // `setInterval` method
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
+ setInterval: wrap(global$2.setInterval)
+ });
+
+ var fails = fails$15;
+
+ var wellKnownSymbol$1 = wellKnownSymbol$G;
+
+ var IS_PURE = isPure;
+
+ var ITERATOR$1 = wellKnownSymbol$1('iterator');
+ var nativeUrl = !fails(function () {
+ var url = new URL('b?a=1&b=2&c=3', 'http://a');
+ var searchParams = url.searchParams;
+ var result = '';
+ url.pathname = 'c%20d';
+ searchParams.forEach(function (value, key) {
+ searchParams['delete']('b');
+ result += key + value;
+ });
+ return IS_PURE && !url.toJSON || !searchParams.sort || url.href !== 'http://a/c%20d?a=1&c=3' || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR$1] // throws in Edge
+ || new URL('https://a@b').username !== 'a' || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' // not punycoded in Edge
+ || new URL('http://тест').host !== 'xn--e1aybc' // not escaped in Chrome 62-
+ || new URL('http://a#б').hash !== '#%D0%B1' // fails in Chrome 66-
+ || result !== 'a1c3' // throws in Safari
+ || new URL('http://x', undefined).host !== 'x';
+ });
+
+ var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
+
+ var base = 36;
+ var tMin = 1;
+ var tMax = 26;
+ var skew = 38;
+ var damp = 700;
+ var initialBias = 72;
+ var initialN = 128; // 0x80
+
+ var delimiter = '-'; // '\x2D'
+
+ var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars
+
+ var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
+
+ var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';
+ var baseMinusTMin = base - tMin;
+ var floor$1 = Math.floor;
+ var stringFromCharCode = String.fromCharCode;
+ /**
+ * Creates an array containing the numeric code points of each Unicode
+ * character in the string. While JavaScript uses UCS-2 internally,
+ * this function will convert a pair of surrogate halves (each of which
+ * UCS-2 exposes as separate characters) into a single code point,
+ * matching UTF-16.
+ */
+
+ var ucs2decode = function (string) {
+ var output = [];
+ var counter = 0;
+ var length = string.length;
+
+ while (counter < length) {
+ var value = string.charCodeAt(counter++);
+
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+ // It's a high surrogate, and there is a next character.
+ var extra = string.charCodeAt(counter++);
+
+ if ((extra & 0xFC00) == 0xDC00) {
+ // Low surrogate.
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+ } else {
+ // It's an unmatched surrogate; only append this code unit, in case the
+ // next code unit is the high surrogate of a surrogate pair.
+ output.push(value);
+ counter--;
+ }
+ } else {
+ output.push(value);
+ }
+ }
+
+ return output;
+ };
+ /**
+ * Converts a digit/integer into a basic code point.
+ */
+
+
+ var digitToBasic = function (digit) {
+ // 0..25 map to ASCII a..z or A..Z
+ // 26..35 map to ASCII 0..9
+ return digit + 22 + 75 * (digit < 26);
+ };
+ /**
+ * Bias adaptation function as per section 3.4 of RFC 3492.
+ * https://tools.ietf.org/html/rfc3492#section-3.4
+ */
+
+
+ var adapt = function (delta, numPoints, firstTime) {
+ var k = 0;
+ delta = firstTime ? floor$1(delta / damp) : delta >> 1;
+ delta += floor$1(delta / numPoints);
+
+ for (; delta > baseMinusTMin * tMax >> 1; k += base) {
+ delta = floor$1(delta / baseMinusTMin);
+ }
+
+ return floor$1(k + (baseMinusTMin + 1) * delta / (delta + skew));
+ };
+ /**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ */
+ // eslint-disable-next-line max-statements -- TODO
+
+
+ var encode = function (input) {
+ var output = []; // Convert the input in UCS-2 to an array of Unicode code points.
+
+ input = ucs2decode(input); // Cache the length.
+
+ var inputLength = input.length; // Initialize the state.
+
+ var n = initialN;
+ var delta = 0;
+ var bias = initialBias;
+ var i, currentValue; // Handle the basic code points.
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue < 0x80) {
+ output.push(stringFromCharCode(currentValue));
+ }
+ }
+
+ var basicLength = output.length; // number of basic code points.
+
+ var handledCPCount = basicLength; // number of code points that have been handled;
+ // Finish the basic string with a delimiter unless it's empty.
+
+ if (basicLength) {
+ output.push(delimiter);
+ } // Main encoding loop:
+
+
+ while (handledCPCount < inputLength) {
+ // All non-basic code points < n have been handled already. Find the next larger one:
+ var m = maxInt;
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue >= n && currentValue < m) {
+ m = currentValue;
+ }
+ } // Increase `delta` enough to advance the decoder's state to , but guard against overflow.
+
+
+ var handledCPCountPlusOne = handledCPCount + 1;
+
+ if (m - n > floor$1((maxInt - delta) / handledCPCountPlusOne)) {
+ throw RangeError(OVERFLOW_ERROR);
+ }
+
+ delta += (m - n) * handledCPCountPlusOne;
+ n = m;
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue < n && ++delta > maxInt) {
+ throw RangeError(OVERFLOW_ERROR);
+ }
+
+ if (currentValue == n) {
+ // Represent delta as a generalized variable-length integer.
+ var q = delta;
+
+ for (var k = base;; k += base) {
+ var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+ if (q < t) break;
+ var qMinusT = q - t;
+ var baseMinusT = base - t;
+ output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
+ q = floor$1(qMinusT / baseMinusT);
+ }
+
+ output.push(stringFromCharCode(digitToBasic(q)));
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
+ delta = 0;
+ ++handledCPCount;
+ }
+ }
+
+ ++delta;
+ ++n;
+ }
+
+ return output.join('');
+ };
+
+ var stringPunycodeToAscii = function (input) {
+ var encoded = [];
+ var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.');
+ var i, label;
+
+ for (i = 0; i < labels.length; i++) {
+ label = labels[i];
+ encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);
+ }
+
+ return encoded.join('.');
+ };
+
+ var $$2 = _export;
+
+ var getBuiltIn = getBuiltIn$y;
+
+ var USE_NATIVE_URL$1 = nativeUrl;
+
+ var redefine$1 = redefine$l.exports;
+
+ var redefineAll = redefineAll$a;
+
+ var setToStringTag$1 = setToStringTag$b;
+
+ var createIteratorConstructor = createIteratorConstructor$7;
+
+ var InternalStateModule$1 = internalState;
+
+ var anInstance$1 = anInstance$b;
+
+ var isCallable = isCallable$z;
+
+ var hasOwn$1 = hasOwnProperty_1;
+
+ var bind = functionBindContext;
+
+ var classof = classof$b;
+
+ var anObject = anObject$1C;
+
+ var isObject = isObject$C;
+
+ var $toString$1 = toString$t;
+
+ var create = objectCreate$1;
+
+ var createPropertyDescriptor = createPropertyDescriptor$9;
+
+ var getIterator = getIterator$b;
+
+ var getIteratorMethod = getIteratorMethod$9;
+
+ var wellKnownSymbol = wellKnownSymbol$G;
+
+ var nativeFetch = getBuiltIn('fetch');
+ var NativeRequest = getBuiltIn('Request');
+ var RequestPrototype = NativeRequest && NativeRequest.prototype;
+ var Headers = getBuiltIn('Headers');
+ var ITERATOR = wellKnownSymbol('iterator');
+ var URL_SEARCH_PARAMS = 'URLSearchParams';
+ var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
+ var setInternalState$1 = InternalStateModule$1.set;
+ var getInternalParamsState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS);
+ var getInternalIteratorState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS_ITERATOR);
+ var plus = /\+/g;
+ var sequences = Array(4);
+
+ var percentSequence = function (bytes) {
+ return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
+ };
+
+ var percentDecode = function (sequence) {
+ try {
+ return decodeURIComponent(sequence);
+ } catch (error) {
+ return sequence;
+ }
+ };
+
+ var deserialize = function (it) {
+ var result = it.replace(plus, ' ');
+ var bytes = 4;
+
+ try {
+ return decodeURIComponent(result);
+ } catch (error) {
+ while (bytes) {
+ result = result.replace(percentSequence(bytes--), percentDecode);
+ }
+
+ return result;
+ }
+ };
+
+ var find$1 = /[!'()~]|%20/g;
+ var replace = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+'
+ };
+
+ var replacer = function (match) {
+ return replace[match];
+ };
+
+ var serialize = function (it) {
+ return encodeURIComponent(it).replace(find$1, replacer);
+ };
+
+ var parseSearchParams = function (result, query) {
+ if (query) {
+ var attributes = query.split('&');
+ var index = 0;
+ var attribute, entry;
+
+ while (index < attributes.length) {
+ attribute = attributes[index++];
+
+ if (attribute.length) {
+ entry = attribute.split('=');
+ result.push({
+ key: deserialize(entry.shift()),
+ value: deserialize(entry.join('='))
+ });
+ }
+ }
+ }
+ };
+
+ var updateSearchParams = function (query) {
+ this.entries.length = 0;
+ parseSearchParams(this.entries, query);
+ };
+
+ var validateArgumentsLength = function (passed, required) {
+ if (passed < required) throw TypeError('Not enough arguments');
+ };
+
+ var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
+ setInternalState$1(this, {
+ type: URL_SEARCH_PARAMS_ITERATOR,
+ iterator: getIterator(getInternalParamsState(params).entries),
+ kind: kind
+ });
+ }, 'Iterator', function next() {
+ var state = getInternalIteratorState(this);
+ var kind = state.kind;
+ var step = state.iterator.next();
+ var entry = step.value;
+
+ if (!step.done) {
+ step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];
+ }
+
+ return step;
+ }); // `URLSearchParams` constructor
+ // https://url.spec.whatwg.org/#interface-urlsearchparams
+
+ var URLSearchParamsConstructor = function URLSearchParams() {
+ anInstance$1(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+ var init = arguments.length > 0 ? arguments[0] : undefined;
+ var that = this;
+ var entries = [];
+ var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;
+ setInternalState$1(that, {
+ type: URL_SEARCH_PARAMS,
+ entries: entries,
+ updateURL: function () {
+ /* empty */
+ },
+ updateSearchParams: updateSearchParams
+ });
+
+ if (init !== undefined) {
+ if (isObject(init)) {
+ iteratorMethod = getIteratorMethod(init);
+
+ if (iteratorMethod) {
+ iterator = getIterator(init, iteratorMethod);
+ next = iterator.next;
+
+ while (!(step = next.call(iterator)).done) {
+ entryIterator = getIterator(anObject(step.value));
+ entryNext = entryIterator.next;
+ if ((first = entryNext.call(entryIterator)).done || (second = entryNext.call(entryIterator)).done || !entryNext.call(entryIterator).done) throw TypeError('Expected sequence with length 2');
+ entries.push({
+ key: $toString$1(first.value),
+ value: $toString$1(second.value)
+ });
+ }
+ } else for (key in init) if (hasOwn$1(init, key)) entries.push({
+ key: key,
+ value: $toString$1(init[key])
+ });
+ } else {
+ parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString$1(init));
+ }
+ }
+ };
+
+ var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
+ redefineAll(URLSearchParamsPrototype, {
+ // `URLSearchParams.prototype.append` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-append
+ append: function append(name, value) {
+ validateArgumentsLength(arguments.length, 2);
+ var state = getInternalParamsState(this);
+ state.entries.push({
+ key: $toString$1(name),
+ value: $toString$1(value)
+ });
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.delete` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
+ 'delete': function (name) {
+ validateArgumentsLength(arguments.length, 1);
+ var state = getInternalParamsState(this);
+ var entries = state.entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ while (index < entries.length) {
+ if (entries[index].key === key) entries.splice(index, 1);else index++;
+ }
+
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.get` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-get
+ get: function get(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ for (; index < entries.length; index++) {
+ if (entries[index].key === key) return entries[index].value;
+ }
+
+ return null;
+ },
+ // `URLSearchParams.prototype.getAll` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
+ getAll: function getAll(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var result = [];
+ var index = 0;
+
+ for (; index < entries.length; index++) {
+ if (entries[index].key === key) result.push(entries[index].value);
+ }
+
+ return result;
+ },
+ // `URLSearchParams.prototype.has` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-has
+ has: function has(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ while (index < entries.length) {
+ if (entries[index++].key === key) return true;
+ }
+
+ return false;
+ },
+ // `URLSearchParams.prototype.set` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-set
+ set: function set(name, value) {
+ validateArgumentsLength(arguments.length, 1);
+ var state = getInternalParamsState(this);
+ var entries = state.entries;
+ var found = false;
+ var key = $toString$1(name);
+ var val = $toString$1(value);
+ var index = 0;
+ var entry;
+
+ for (; index < entries.length; index++) {
+ entry = entries[index];
+
+ if (entry.key === key) {
+ if (found) entries.splice(index--, 1);else {
+ found = true;
+ entry.value = val;
+ }
+ }
+ }
+
+ if (!found) entries.push({
+ key: key,
+ value: val
+ });
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.sort` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
+ sort: function sort() {
+ var state = getInternalParamsState(this);
+ var entries = state.entries; // Array#sort is not stable in some engines
+
+ var slice = entries.slice();
+ var entry, entriesIndex, sliceIndex;
+ entries.length = 0;
+
+ for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {
+ entry = slice[sliceIndex];
+
+ for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {
+ if (entries[entriesIndex].key > entry.key) {
+ entries.splice(entriesIndex, 0, entry);
+ break;
+ }
+ }
+
+ if (entriesIndex === sliceIndex) entries.push(entry);
+ }
+
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.forEach` method
+ forEach: function forEach(callback
+ /* , thisArg */
+ ) {
+ var entries = getInternalParamsState(this).entries;
+ var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var index = 0;
+ var entry;
+
+ while (index < entries.length) {
+ entry = entries[index++];
+ boundFunction(entry.value, entry.key, this);
+ }
+ },
+ // `URLSearchParams.prototype.keys` method
+ keys: function keys() {
+ return new URLSearchParamsIterator(this, 'keys');
+ },
+ // `URLSearchParams.prototype.values` method
+ values: function values() {
+ return new URLSearchParamsIterator(this, 'values');
+ },
+ // `URLSearchParams.prototype.entries` method
+ entries: function entries() {
+ return new URLSearchParamsIterator(this, 'entries');
+ }
+ }, {
+ enumerable: true
+ }); // `URLSearchParams.prototype[@@iterator]` method
+
+ redefine$1(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, {
+ name: 'entries'
+ }); // `URLSearchParams.prototype.toString` method
+ // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
+
+ redefine$1(URLSearchParamsPrototype, 'toString', function toString() {
+ var entries = getInternalParamsState(this).entries;
+ var result = [];
+ var index = 0;
+ var entry;
+
+ while (index < entries.length) {
+ entry = entries[index++];
+ result.push(serialize(entry.key) + '=' + serialize(entry.value));
+ }
+
+ return result.join('&');
+ }, {
+ enumerable: true
+ });
+ setToStringTag$1(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+ $$2({
+ global: true,
+ forced: !USE_NATIVE_URL$1
+ }, {
+ URLSearchParams: URLSearchParamsConstructor
+ }); // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`
+
+ if (!USE_NATIVE_URL$1 && isCallable(Headers)) {
+ var wrapRequestOptions = function (init) {
+ if (isObject(init)) {
+ var body = init.body;
+ var headers;
+
+ if (classof(body) === URL_SEARCH_PARAMS) {
+ headers = init.headers ? new Headers(init.headers) : new Headers();
+
+ if (!headers.has('content-type')) {
+ headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+ }
+
+ return create(init, {
+ body: createPropertyDescriptor(0, String(body)),
+ headers: createPropertyDescriptor(0, headers)
+ });
+ }
+ }
+
+ return init;
+ };
+
+ if (isCallable(nativeFetch)) {
+ $$2({
+ global: true,
+ enumerable: true,
+ forced: true
+ }, {
+ fetch: function fetch(input
+ /* , init */
+ ) {
+ return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+ }
+ });
+ }
+
+ if (isCallable(NativeRequest)) {
+ var RequestConstructor = function Request(input
+ /* , init */
+ ) {
+ anInstance$1(this, RequestConstructor, 'Request');
+ return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+ };
+
+ RequestPrototype.constructor = RequestConstructor;
+ RequestConstructor.prototype = RequestPrototype;
+ $$2({
+ global: true,
+ forced: true
+ }, {
+ Request: RequestConstructor
+ });
+ }
+ }
+
+ var web_urlSearchParams = {
+ URLSearchParams: URLSearchParamsConstructor,
+ getState: getInternalParamsState
+ };
+
+ var $$1 = _export;
+
+ var DESCRIPTORS = descriptors;
+
+ var USE_NATIVE_URL = nativeUrl;
+
+ var global$1 = global$R;
+
+ var defineProperties = objectDefineProperties;
+
+ var redefine = redefine$l.exports;
+
+ var anInstance = anInstance$b;
+
+ var hasOwn = hasOwnProperty_1;
+
+ var assign$3 = objectAssign$1;
+
+ var arrayFrom = arrayFrom$1;
+
+ var codeAt = stringMultibyte.codeAt;
+
+ var toASCII = stringPunycodeToAscii;
+
+ var $toString = toString$t;
+
+ var setToStringTag = setToStringTag$b;
+
+ var URLSearchParamsModule = web_urlSearchParams;
+
+ var InternalStateModule = internalState;
+
+ var NativeURL = global$1.URL;
+ var URLSearchParams$1 = URLSearchParamsModule.URLSearchParams;
+ var getInternalSearchParamsState = URLSearchParamsModule.getState;
+ var setInternalState = InternalStateModule.set;
+ var getInternalURLState = InternalStateModule.getterFor('URL');
+ var floor = Math.floor;
+ var pow = Math.pow;
+ var INVALID_AUTHORITY = 'Invalid authority';
+ var INVALID_SCHEME = 'Invalid scheme';
+ var INVALID_HOST = 'Invalid host';
+ var INVALID_PORT = 'Invalid port';
+ var ALPHA = /[a-z]/i; // eslint-disable-next-line regexp/no-obscure-range -- safe
+
+ var ALPHANUMERIC = /[\d+-.a-z]/i;
+ var DIGIT = /\d/;
+ var HEX_START = /^0x/i;
+ var OCT = /^[0-7]+$/;
+ var DEC = /^\d+$/;
+ var HEX = /^[\da-f]+$/i;
+ /* eslint-disable regexp/no-control-character -- safe */
+
+ var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/;
+ var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/;
+ var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g;
+ var TAB_AND_NEW_LINE = /[\t\n\r]/g;
+ /* eslint-enable regexp/no-control-character -- safe */
+
+ var EOF;
+
+ var parseHost = function (url, input) {
+ var result, codePoints, index;
+
+ if (input.charAt(0) == '[') {
+ if (input.charAt(input.length - 1) != ']') return INVALID_HOST;
+ result = parseIPv6(input.slice(1, -1));
+ if (!result) return INVALID_HOST;
+ url.host = result; // opaque host
+ } else if (!isSpecial(url)) {
+ if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;
+ result = '';
+ codePoints = arrayFrom(input);
+
+ for (index = 0; index < codePoints.length; index++) {
+ result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);
+ }
+
+ url.host = result;
+ } else {
+ input = toASCII(input);
+ if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;
+ result = parseIPv4(input);
+ if (result === null) return INVALID_HOST;
+ url.host = result;
+ }
+ };
+
+ var parseIPv4 = function (input) {
+ var parts = input.split('.');
+ var partsLength, numbers, index, part, radix, number, ipv4;
+
+ if (parts.length && parts[parts.length - 1] == '') {
+ parts.pop();
+ }
+
+ partsLength = parts.length;
+ if (partsLength > 4) return input;
+ numbers = [];
+
+ for (index = 0; index < partsLength; index++) {
+ part = parts[index];
+ if (part == '') return input;
+ radix = 10;
+
+ if (part.length > 1 && part.charAt(0) == '0') {
+ radix = HEX_START.test(part) ? 16 : 8;
+ part = part.slice(radix == 8 ? 1 : 2);
+ }
+
+ if (part === '') {
+ number = 0;
+ } else {
+ if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;
+ number = parseInt(part, radix);
+ }
+
+ numbers.push(number);
+ }
+
+ for (index = 0; index < partsLength; index++) {
+ number = numbers[index];
+
+ if (index == partsLength - 1) {
+ if (number >= pow(256, 5 - partsLength)) return null;
+ } else if (number > 255) return null;
+ }
+
+ ipv4 = numbers.pop();
+
+ for (index = 0; index < numbers.length; index++) {
+ ipv4 += numbers[index] * pow(256, 3 - index);
+ }
+
+ return ipv4;
+ }; // eslint-disable-next-line max-statements -- TODO
+
+
+ var parseIPv6 = function (input) {
+ var address = [0, 0, 0, 0, 0, 0, 0, 0];
+ var pieceIndex = 0;
+ var compress = null;
+ var pointer = 0;
+ var value, length, numbersSeen, ipv4Piece, number, swaps, swap;
+
+ var chr = function () {
+ return input.charAt(pointer);
+ };
+
+ if (chr() == ':') {
+ if (input.charAt(1) != ':') return;
+ pointer += 2;
+ pieceIndex++;
+ compress = pieceIndex;
+ }
+
+ while (chr()) {
+ if (pieceIndex == 8) return;
+
+ if (chr() == ':') {
+ if (compress !== null) return;
+ pointer++;
+ pieceIndex++;
+ compress = pieceIndex;
+ continue;
+ }
+
+ value = length = 0;
+
+ while (length < 4 && HEX.test(chr())) {
+ value = value * 16 + parseInt(chr(), 16);
+ pointer++;
+ length++;
+ }
+
+ if (chr() == '.') {
+ if (length == 0) return;
+ pointer -= length;
+ if (pieceIndex > 6) return;
+ numbersSeen = 0;
+
+ while (chr()) {
+ ipv4Piece = null;
+
+ if (numbersSeen > 0) {
+ if (chr() == '.' && numbersSeen < 4) pointer++;else return;
+ }
+
+ if (!DIGIT.test(chr())) return;
+
+ while (DIGIT.test(chr())) {
+ number = parseInt(chr(), 10);
+ if (ipv4Piece === null) ipv4Piece = number;else if (ipv4Piece == 0) return;else ipv4Piece = ipv4Piece * 10 + number;
+ if (ipv4Piece > 255) return;
+ pointer++;
+ }
+
+ address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
+ numbersSeen++;
+ if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
+ }
+
+ if (numbersSeen != 4) return;
+ break;
+ } else if (chr() == ':') {
+ pointer++;
+ if (!chr()) return;
+ } else if (chr()) return;
+
+ address[pieceIndex++] = value;
+ }
+
+ if (compress !== null) {
+ swaps = pieceIndex - compress;
+ pieceIndex = 7;
+
+ while (pieceIndex != 0 && swaps > 0) {
+ swap = address[pieceIndex];
+ address[pieceIndex--] = address[compress + swaps - 1];
+ address[compress + --swaps] = swap;
+ }
+ } else if (pieceIndex != 8) return;
+
+ return address;
+ };
+
+ var findLongestZeroSequence = function (ipv6) {
+ var maxIndex = null;
+ var maxLength = 1;
+ var currStart = null;
+ var currLength = 0;
+ var index = 0;
+
+ for (; index < 8; index++) {
+ if (ipv6[index] !== 0) {
+ if (currLength > maxLength) {
+ maxIndex = currStart;
+ maxLength = currLength;
+ }
+
+ currStart = null;
+ currLength = 0;
+ } else {
+ if (currStart === null) currStart = index;
+ ++currLength;
+ }
+ }
+
+ if (currLength > maxLength) {
+ maxIndex = currStart;
+ maxLength = currLength;
+ }
+
+ return maxIndex;
+ };
+
+ var serializeHost = function (host) {
+ var result, index, compress, ignore0; // ipv4
+
+ if (typeof host == 'number') {
+ result = [];
+
+ for (index = 0; index < 4; index++) {
+ result.unshift(host % 256);
+ host = floor(host / 256);
+ }
+
+ return result.join('.'); // ipv6
+ } else if (typeof host == 'object') {
+ result = '';
+ compress = findLongestZeroSequence(host);
+
+ for (index = 0; index < 8; index++) {
+ if (ignore0 && host[index] === 0) continue;
+ if (ignore0) ignore0 = false;
+
+ if (compress === index) {
+ result += index ? ':' : '::';
+ ignore0 = true;
+ } else {
+ result += host[index].toString(16);
+ if (index < 7) result += ':';
+ }
+ }
+
+ return '[' + result + ']';
+ }
+
+ return host;
+ };
+
+ var C0ControlPercentEncodeSet = {};
+ var fragmentPercentEncodeSet = assign$3({}, C0ControlPercentEncodeSet, {
+ ' ': 1,
+ '"': 1,
+ '<': 1,
+ '>': 1,
+ '`': 1
+ });
+ var pathPercentEncodeSet = assign$3({}, fragmentPercentEncodeSet, {
+ '#': 1,
+ '?': 1,
+ '{': 1,
+ '}': 1
+ });
+ var userinfoPercentEncodeSet = assign$3({}, pathPercentEncodeSet, {
+ '/': 1,
+ ':': 1,
+ ';': 1,
+ '=': 1,
+ '@': 1,
+ '[': 1,
+ '\\': 1,
+ ']': 1,
+ '^': 1,
+ '|': 1
+ });
+
+ var percentEncode = function (chr, set) {
+ var code = codeAt(chr, 0);
+ return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);
+ };
+
+ var specialSchemes = {
+ ftp: 21,
+ file: null,
+ http: 80,
+ https: 443,
+ ws: 80,
+ wss: 443
+ };
+
+ var isSpecial = function (url) {
+ return hasOwn(specialSchemes, url.scheme);
+ };
+
+ var includesCredentials = function (url) {
+ return url.username != '' || url.password != '';
+ };
+
+ var cannotHaveUsernamePasswordPort = function (url) {
+ return !url.host || url.cannotBeABaseURL || url.scheme == 'file';
+ };
+
+ var isWindowsDriveLetter = function (string, normalized) {
+ var second;
+ return string.length == 2 && ALPHA.test(string.charAt(0)) && ((second = string.charAt(1)) == ':' || !normalized && second == '|');
+ };
+
+ var startsWithWindowsDriveLetter = function (string) {
+ var third;
+ return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (string.length == 2 || (third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#');
+ };
+
+ var shortenURLsPath = function (url) {
+ var path = url.path;
+ var pathSize = path.length;
+
+ if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {
+ path.pop();
+ }
+ };
+
+ var isSingleDot = function (segment) {
+ return segment === '.' || segment.toLowerCase() === '%2e';
+ };
+
+ var isDoubleDot = function (segment) {
+ segment = segment.toLowerCase();
+ return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';
+ }; // States:
+
+
+ var SCHEME_START = {};
+ var SCHEME = {};
+ var NO_SCHEME = {};
+ var SPECIAL_RELATIVE_OR_AUTHORITY = {};
+ var PATH_OR_AUTHORITY = {};
+ var RELATIVE = {};
+ var RELATIVE_SLASH = {};
+ var SPECIAL_AUTHORITY_SLASHES = {};
+ var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
+ var AUTHORITY = {};
+ var HOST = {};
+ var HOSTNAME = {};
+ var PORT = {};
+ var FILE = {};
+ var FILE_SLASH = {};
+ var FILE_HOST = {};
+ var PATH_START = {};
+ var PATH = {};
+ var CANNOT_BE_A_BASE_URL_PATH = {};
+ var QUERY = {};
+ var FRAGMENT = {}; // eslint-disable-next-line max-statements -- TODO
+
+ var parseURL = function (url, input, stateOverride, base) {
+ var state = stateOverride || SCHEME_START;
+ var pointer = 0;
+ var buffer = '';
+ var seenAt = false;
+ var seenBracket = false;
+ var seenPasswordToken = false;
+ var codePoints, chr, bufferCodePoints, failure;
+
+ if (!stateOverride) {
+ url.scheme = '';
+ url.username = '';
+ url.password = '';
+ url.host = null;
+ url.port = null;
+ url.path = [];
+ url.query = null;
+ url.fragment = null;
+ url.cannotBeABaseURL = false;
+ input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');
+ }
+
+ input = input.replace(TAB_AND_NEW_LINE, '');
+ codePoints = arrayFrom(input);
+
+ while (pointer <= codePoints.length) {
+ chr = codePoints[pointer];
+
+ switch (state) {
+ case SCHEME_START:
+ if (chr && ALPHA.test(chr)) {
+ buffer += chr.toLowerCase();
+ state = SCHEME;
+ } else if (!stateOverride) {
+ state = NO_SCHEME;
+ continue;
+ } else return INVALID_SCHEME;
+
+ break;
+
+ case SCHEME:
+ if (chr && (ALPHANUMERIC.test(chr) || chr == '+' || chr == '-' || chr == '.')) {
+ buffer += chr.toLowerCase();
+ } else if (chr == ':') {
+ if (stateOverride && (isSpecial(url) != hasOwn(specialSchemes, buffer) || buffer == 'file' && (includesCredentials(url) || url.port !== null) || url.scheme == 'file' && !url.host)) return;
+ url.scheme = buffer;
+
+ if (stateOverride) {
+ if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;
+ return;
+ }
+
+ buffer = '';
+
+ if (url.scheme == 'file') {
+ state = FILE;
+ } else if (isSpecial(url) && base && base.scheme == url.scheme) {
+ state = SPECIAL_RELATIVE_OR_AUTHORITY;
+ } else if (isSpecial(url)) {
+ state = SPECIAL_AUTHORITY_SLASHES;
+ } else if (codePoints[pointer + 1] == '/') {
+ state = PATH_OR_AUTHORITY;
+ pointer++;
+ } else {
+ url.cannotBeABaseURL = true;
+ url.path.push('');
+ state = CANNOT_BE_A_BASE_URL_PATH;
+ }
+ } else if (!stateOverride) {
+ buffer = '';
+ state = NO_SCHEME;
+ pointer = 0;
+ continue;
+ } else return INVALID_SCHEME;
+
+ break;
+
+ case NO_SCHEME:
+ if (!base || base.cannotBeABaseURL && chr != '#') return INVALID_SCHEME;
+
+ if (base.cannotBeABaseURL && chr == '#') {
+ url.scheme = base.scheme;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ url.cannotBeABaseURL = true;
+ state = FRAGMENT;
+ break;
+ }
+
+ state = base.scheme == 'file' ? FILE : RELATIVE;
+ continue;
+
+ case SPECIAL_RELATIVE_OR_AUTHORITY:
+ if (chr == '/' && codePoints[pointer + 1] == '/') {
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ pointer++;
+ } else {
+ state = RELATIVE;
+ continue;
+ }
+
+ break;
+
+ case PATH_OR_AUTHORITY:
+ if (chr == '/') {
+ state = AUTHORITY;
+ break;
+ } else {
+ state = PATH;
+ continue;
+ }
+
+ case RELATIVE:
+ url.scheme = base.scheme;
+
+ if (chr == EOF) {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = base.query;
+ } else if (chr == '/' || chr == '\\' && isSpecial(url)) {
+ state = RELATIVE_SLASH;
+ } else if (chr == '?') {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ state = FRAGMENT;
+ } else {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.path.pop();
+ state = PATH;
+ continue;
+ }
+
+ break;
+
+ case RELATIVE_SLASH:
+ if (isSpecial(url) && (chr == '/' || chr == '\\')) {
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ } else if (chr == '/') {
+ state = AUTHORITY;
+ } else {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ state = PATH;
+ continue;
+ }
+
+ break;
+
+ case SPECIAL_AUTHORITY_SLASHES:
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ if (chr != '/' || buffer.charAt(pointer + 1) != '/') continue;
+ pointer++;
+ break;
+
+ case SPECIAL_AUTHORITY_IGNORE_SLASHES:
+ if (chr != '/' && chr != '\\') {
+ state = AUTHORITY;
+ continue;
+ }
+
+ break;
+
+ case AUTHORITY:
+ if (chr == '@') {
+ if (seenAt) buffer = '%40' + buffer;
+ seenAt = true;
+ bufferCodePoints = arrayFrom(buffer);
+
+ for (var i = 0; i < bufferCodePoints.length; i++) {
+ var codePoint = bufferCodePoints[i];
+
+ if (codePoint == ':' && !seenPasswordToken) {
+ seenPasswordToken = true;
+ continue;
+ }
+
+ var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
+ if (seenPasswordToken) url.password += encodedCodePoints;else url.username += encodedCodePoints;
+ }
+
+ buffer = '';
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url)) {
+ if (seenAt && buffer == '') return INVALID_AUTHORITY;
+ pointer -= arrayFrom(buffer).length + 1;
+ buffer = '';
+ state = HOST;
+ } else buffer += chr;
+
+ break;
+
+ case HOST:
+ case HOSTNAME:
+ if (stateOverride && url.scheme == 'file') {
+ state = FILE_HOST;
+ continue;
+ } else if (chr == ':' && !seenBracket) {
+ if (buffer == '') return INVALID_HOST;
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ buffer = '';
+ state = PORT;
+ if (stateOverride == HOSTNAME) return;
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url)) {
+ if (isSpecial(url) && buffer == '') return INVALID_HOST;
+ if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ buffer = '';
+ state = PATH_START;
+ if (stateOverride) return;
+ continue;
+ } else {
+ if (chr == '[') seenBracket = true;else if (chr == ']') seenBracket = false;
+ buffer += chr;
+ }
+
+ break;
+
+ case PORT:
+ if (DIGIT.test(chr)) {
+ buffer += chr;
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url) || stateOverride) {
+ if (buffer != '') {
+ var port = parseInt(buffer, 10);
+ if (port > 0xFFFF) return INVALID_PORT;
+ url.port = isSpecial(url) && port === specialSchemes[url.scheme] ? null : port;
+ buffer = '';
+ }
+
+ if (stateOverride) return;
+ state = PATH_START;
+ continue;
+ } else return INVALID_PORT;
+
+ break;
+
+ case FILE:
+ url.scheme = 'file';
+ if (chr == '/' || chr == '\\') state = FILE_SLASH;else if (base && base.scheme == 'file') {
+ if (chr == EOF) {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = base.query;
+ } else if (chr == '?') {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ state = FRAGMENT;
+ } else {
+ if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+ url.host = base.host;
+ url.path = base.path.slice();
+ shortenURLsPath(url);
+ }
+
+ state = PATH;
+ continue;
+ }
+ } else {
+ state = PATH;
+ continue;
+ }
+ break;
+
+ case FILE_SLASH:
+ if (chr == '/' || chr == '\\') {
+ state = FILE_HOST;
+ break;
+ }
+
+ if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+ if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);else url.host = base.host;
+ }
+
+ state = PATH;
+ continue;
+
+ case FILE_HOST:
+ if (chr == EOF || chr == '/' || chr == '\\' || chr == '?' || chr == '#') {
+ if (!stateOverride && isWindowsDriveLetter(buffer)) {
+ state = PATH;
+ } else if (buffer == '') {
+ url.host = '';
+ if (stateOverride) return;
+ state = PATH_START;
+ } else {
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ if (url.host == 'localhost') url.host = '';
+ if (stateOverride) return;
+ buffer = '';
+ state = PATH_START;
+ }
+
+ continue;
+ } else buffer += chr;
+
+ break;
+
+ case PATH_START:
+ if (isSpecial(url)) {
+ state = PATH;
+ if (chr != '/' && chr != '\\') continue;
+ } else if (!stateOverride && chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (!stateOverride && chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ state = PATH;
+ if (chr != '/') continue;
+ }
+
+ break;
+
+ case PATH:
+ if (chr == EOF || chr == '/' || chr == '\\' && isSpecial(url) || !stateOverride && (chr == '?' || chr == '#')) {
+ if (isDoubleDot(buffer)) {
+ shortenURLsPath(url);
+
+ if (chr != '/' && !(chr == '\\' && isSpecial(url))) {
+ url.path.push('');
+ }
+ } else if (isSingleDot(buffer)) {
+ if (chr != '/' && !(chr == '\\' && isSpecial(url))) {
+ url.path.push('');
+ }
+ } else {
+ if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
+ if (url.host) url.host = '';
+ buffer = buffer.charAt(0) + ':'; // normalize windows drive letter
+ }
+
+ url.path.push(buffer);
+ }
+
+ buffer = '';
+
+ if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {
+ while (url.path.length > 1 && url.path[0] === '') {
+ url.path.shift();
+ }
+ }
+
+ if (chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ }
+ } else {
+ buffer += percentEncode(chr, pathPercentEncodeSet);
+ }
+
+ break;
+
+ case CANNOT_BE_A_BASE_URL_PATH:
+ if (chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);
+ }
+
+ break;
+
+ case QUERY:
+ if (!stateOverride && chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ if (chr == "'" && isSpecial(url)) url.query += '%27';else if (chr == '#') url.query += '%23';else url.query += percentEncode(chr, C0ControlPercentEncodeSet);
+ }
+
+ break;
+
+ case FRAGMENT:
+ if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
+ break;
+ }
+
+ pointer++;
+ }
+ }; // `URL` constructor
+ // https://url.spec.whatwg.org/#url-class
+
+
+ var URLConstructor = function URL(url
+ /* , base */
+ ) {
+ var that = anInstance(this, URLConstructor, 'URL');
+ var base = arguments.length > 1 ? arguments[1] : undefined;
+ var urlString = $toString(url);
+ var state = setInternalState(that, {
+ type: 'URL'
+ });
+ var baseState, failure;
+
+ if (base !== undefined) {
+ if (base instanceof URLConstructor) baseState = getInternalURLState(base);else {
+ failure = parseURL(baseState = {}, $toString(base));
+ if (failure) throw TypeError(failure);
+ }
+ }
+
+ failure = parseURL(state, urlString, null, baseState);
+ if (failure) throw TypeError(failure);
+ var searchParams = state.searchParams = new URLSearchParams$1();
+ var searchParamsState = getInternalSearchParamsState(searchParams);
+ searchParamsState.updateSearchParams(state.query);
+
+ searchParamsState.updateURL = function () {
+ state.query = String(searchParams) || null;
+ };
+
+ if (!DESCRIPTORS) {
+ that.href = serializeURL.call(that);
+ that.origin = getOrigin.call(that);
+ that.protocol = getProtocol.call(that);
+ that.username = getUsername.call(that);
+ that.password = getPassword.call(that);
+ that.host = getHost.call(that);
+ that.hostname = getHostname.call(that);
+ that.port = getPort.call(that);
+ that.pathname = getPathname.call(that);
+ that.search = getSearch.call(that);
+ that.searchParams = getSearchParams.call(that);
+ that.hash = getHash.call(that);
+ }
+ };
+
+ var URLPrototype = URLConstructor.prototype;
+
+ var serializeURL = function () {
+ var url = getInternalURLState(this);
+ var scheme = url.scheme;
+ var username = url.username;
+ var password = url.password;
+ var host = url.host;
+ var port = url.port;
+ var path = url.path;
+ var query = url.query;
+ var fragment = url.fragment;
+ var output = scheme + ':';
+
+ if (host !== null) {
+ output += '//';
+
+ if (includesCredentials(url)) {
+ output += username + (password ? ':' + password : '') + '@';
+ }
+
+ output += serializeHost(host);
+ if (port !== null) output += ':' + port;
+ } else if (scheme == 'file') output += '//';
+
+ output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+ if (query !== null) output += '?' + query;
+ if (fragment !== null) output += '#' + fragment;
+ return output;
+ };
+
+ var getOrigin = function () {
+ var url = getInternalURLState(this);
+ var scheme = url.scheme;
+ var port = url.port;
+ if (scheme == 'blob') try {
+ return new URLConstructor(scheme.path[0]).origin;
+ } catch (error) {
+ return 'null';
+ }
+ if (scheme == 'file' || !isSpecial(url)) return 'null';
+ return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');
+ };
+
+ var getProtocol = function () {
+ return getInternalURLState(this).scheme + ':';
+ };
+
+ var getUsername = function () {
+ return getInternalURLState(this).username;
+ };
+
+ var getPassword = function () {
+ return getInternalURLState(this).password;
+ };
+
+ var getHost = function () {
+ var url = getInternalURLState(this);
+ var host = url.host;
+ var port = url.port;
+ return host === null ? '' : port === null ? serializeHost(host) : serializeHost(host) + ':' + port;
+ };
+
+ var getHostname = function () {
+ var host = getInternalURLState(this).host;
+ return host === null ? '' : serializeHost(host);
+ };
+
+ var getPort = function () {
+ var port = getInternalURLState(this).port;
+ return port === null ? '' : String(port);
+ };
+
+ var getPathname = function () {
+ var url = getInternalURLState(this);
+ var path = url.path;
+ return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+ };
+
+ var getSearch = function () {
+ var query = getInternalURLState(this).query;
+ return query ? '?' + query : '';
+ };
+
+ var getSearchParams = function () {
+ return getInternalURLState(this).searchParams;
+ };
+
+ var getHash = function () {
+ var fragment = getInternalURLState(this).fragment;
+ return fragment ? '#' + fragment : '';
+ };
+
+ var accessorDescriptor = function (getter, setter) {
+ return {
+ get: getter,
+ set: setter,
+ configurable: true,
+ enumerable: true
+ };
+ };
+
+ if (DESCRIPTORS) {
+ defineProperties(URLPrototype, {
+ // `URL.prototype.href` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-href
+ href: accessorDescriptor(serializeURL, function (href) {
+ var url = getInternalURLState(this);
+ var urlString = $toString(href);
+ var failure = parseURL(url, urlString);
+ if (failure) throw TypeError(failure);
+ getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+ }),
+ // `URL.prototype.origin` getter
+ // https://url.spec.whatwg.org/#dom-url-origin
+ origin: accessorDescriptor(getOrigin),
+ // `URL.prototype.protocol` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-protocol
+ protocol: accessorDescriptor(getProtocol, function (protocol) {
+ var url = getInternalURLState(this);
+ parseURL(url, $toString(protocol) + ':', SCHEME_START);
+ }),
+ // `URL.prototype.username` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-username
+ username: accessorDescriptor(getUsername, function (username) {
+ var url = getInternalURLState(this);
+ var codePoints = arrayFrom($toString(username));
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ url.username = '';
+
+ for (var i = 0; i < codePoints.length; i++) {
+ url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+ }
+ }),
+ // `URL.prototype.password` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-password
+ password: accessorDescriptor(getPassword, function (password) {
+ var url = getInternalURLState(this);
+ var codePoints = arrayFrom($toString(password));
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ url.password = '';
+
+ for (var i = 0; i < codePoints.length; i++) {
+ url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+ }
+ }),
+ // `URL.prototype.host` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-host
+ host: accessorDescriptor(getHost, function (host) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ parseURL(url, $toString(host), HOST);
+ }),
+ // `URL.prototype.hostname` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-hostname
+ hostname: accessorDescriptor(getHostname, function (hostname) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ parseURL(url, $toString(hostname), HOSTNAME);
+ }),
+ // `URL.prototype.port` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-port
+ port: accessorDescriptor(getPort, function (port) {
+ var url = getInternalURLState(this);
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ port = $toString(port);
+ if (port == '') url.port = null;else parseURL(url, port, PORT);
+ }),
+ // `URL.prototype.pathname` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-pathname
+ pathname: accessorDescriptor(getPathname, function (pathname) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ url.path = [];
+ parseURL(url, $toString(pathname), PATH_START);
+ }),
+ // `URL.prototype.search` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-search
+ search: accessorDescriptor(getSearch, function (search) {
+ var url = getInternalURLState(this);
+ search = $toString(search);
+
+ if (search == '') {
+ url.query = null;
+ } else {
+ if ('?' == search.charAt(0)) search = search.slice(1);
+ url.query = '';
+ parseURL(url, search, QUERY);
+ }
+
+ getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+ }),
+ // `URL.prototype.searchParams` getter
+ // https://url.spec.whatwg.org/#dom-url-searchparams
+ searchParams: accessorDescriptor(getSearchParams),
+ // `URL.prototype.hash` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-hash
+ hash: accessorDescriptor(getHash, function (hash) {
+ var url = getInternalURLState(this);
+ hash = $toString(hash);
+
+ if (hash == '') {
+ url.fragment = null;
+ return;
+ }
+
+ if ('#' == hash.charAt(0)) hash = hash.slice(1);
+ url.fragment = '';
+ parseURL(url, hash, FRAGMENT);
+ })
+ });
+ } // `URL.prototype.toJSON` method
+ // https://url.spec.whatwg.org/#dom-url-tojson
+
+
+ redefine(URLPrototype, 'toJSON', function toJSON() {
+ return serializeURL.call(this);
+ }, {
+ enumerable: true
+ }); // `URL.prototype.toString` method
+ // https://url.spec.whatwg.org/#URL-stringification-behavior
+
+ redefine(URLPrototype, 'toString', function toString() {
+ return serializeURL.call(this);
+ }, {
+ enumerable: true
+ });
+
+ if (NativeURL) {
+ var nativeCreateObjectURL = NativeURL.createObjectURL;
+ var nativeRevokeObjectURL = NativeURL.revokeObjectURL; // `URL.createObjectURL` method
+ // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {
+ return nativeCreateObjectURL.apply(NativeURL, arguments);
+ }); // `URL.revokeObjectURL` method
+ // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {
+ return nativeRevokeObjectURL.apply(NativeURL, arguments);
+ });
+ }
+
+ setToStringTag(URLConstructor, 'URL');
+ $$1({
+ global: true,
+ forced: !USE_NATIVE_URL,
+ sham: !DESCRIPTORS
+ }, {
+ URL: URLConstructor
+ });
+
+ var $ = _export; // `URL.prototype.toJSON` method
+ // https://url.spec.whatwg.org/#dom-url-tojson
+
+
+ $({
+ target: 'URL',
+ proto: true,
+ enumerable: true
+ }, {
+ toJSON: function toJSON() {
+ return URL.prototype.toString.call(this);
+ }
+ });
+
+ var propTypes = {exports: {}};
+
+ var reactIs$1 = {exports: {}};
+
+ var reactIs_development = {};
+
+ /** @license React v16.13.1
+ * react-is.development.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ {
+ (function () {
+ // nor polyfill, then a plain number is used for performance.
+
+ var hasSymbol = typeof Symbol === 'function' && Symbol.for;
+ var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
+ var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
+ var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
+ var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
+ var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
+ var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
+ var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
+ // (unstable) APIs that have been removed. Can we remove the symbols?
+
+ var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
+ var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
+ var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
+ var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
+ var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
+ var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
+ var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
+ var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
+ var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
+ var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
+ var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
+
+ function isValidElementType(type) {
+ return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
+ type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
+ }
+
+ function typeOf(object) {
+ if (typeof object === 'object' && object !== null) {
+ var $$typeof = object.$$typeof;
+
+ switch ($$typeof) {
+ case REACT_ELEMENT_TYPE:
+ var type = object.type;
+
+ switch (type) {
+ case REACT_ASYNC_MODE_TYPE:
+ case REACT_CONCURRENT_MODE_TYPE:
+ case REACT_FRAGMENT_TYPE:
+ case REACT_PROFILER_TYPE:
+ case REACT_STRICT_MODE_TYPE:
+ case REACT_SUSPENSE_TYPE:
+ return type;
+
+ default:
+ var $$typeofType = type && type.$$typeof;
+
+ switch ($$typeofType) {
+ case REACT_CONTEXT_TYPE:
+ case REACT_FORWARD_REF_TYPE:
+ case REACT_LAZY_TYPE:
+ case REACT_MEMO_TYPE:
+ case REACT_PROVIDER_TYPE:
+ return $$typeofType;
+
+ default:
+ return $$typeof;
+ }
+
+ }
+
+ case REACT_PORTAL_TYPE:
+ return $$typeof;
+ }
+ }
+
+ return undefined;
+ } // AsyncMode is deprecated along with isAsyncMode
+
+
+ var AsyncMode = REACT_ASYNC_MODE_TYPE;
+ var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
+ var ContextConsumer = REACT_CONTEXT_TYPE;
+ var ContextProvider = REACT_PROVIDER_TYPE;
+ var Element = REACT_ELEMENT_TYPE;
+ var ForwardRef = REACT_FORWARD_REF_TYPE;
+ var Fragment = REACT_FRAGMENT_TYPE;
+ var Lazy = REACT_LAZY_TYPE;
+ var Memo = REACT_MEMO_TYPE;
+ var Portal = REACT_PORTAL_TYPE;
+ var Profiler = REACT_PROFILER_TYPE;
+ var StrictMode = REACT_STRICT_MODE_TYPE;
+ var Suspense = REACT_SUSPENSE_TYPE;
+ var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
+
+ function isAsyncMode(object) {
+ {
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
+ hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
+
+ console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
+ }
+ }
+ return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
+ }
+
+ function isConcurrentMode(object) {
+ return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
+ }
+
+ function isContextConsumer(object) {
+ return typeOf(object) === REACT_CONTEXT_TYPE;
+ }
+
+ function isContextProvider(object) {
+ return typeOf(object) === REACT_PROVIDER_TYPE;
+ }
+
+ function isElement(object) {
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
+ }
+
+ function isForwardRef(object) {
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
+ }
+
+ function isFragment(object) {
+ return typeOf(object) === REACT_FRAGMENT_TYPE;
+ }
+
+ function isLazy(object) {
+ return typeOf(object) === REACT_LAZY_TYPE;
+ }
+
+ function isMemo(object) {
+ return typeOf(object) === REACT_MEMO_TYPE;
+ }
+
+ function isPortal(object) {
+ return typeOf(object) === REACT_PORTAL_TYPE;
+ }
+
+ function isProfiler(object) {
+ return typeOf(object) === REACT_PROFILER_TYPE;
+ }
+
+ function isStrictMode(object) {
+ return typeOf(object) === REACT_STRICT_MODE_TYPE;
+ }
+
+ function isSuspense(object) {
+ return typeOf(object) === REACT_SUSPENSE_TYPE;
+ }
+
+ reactIs_development.AsyncMode = AsyncMode;
+ reactIs_development.ConcurrentMode = ConcurrentMode;
+ reactIs_development.ContextConsumer = ContextConsumer;
+ reactIs_development.ContextProvider = ContextProvider;
+ reactIs_development.Element = Element;
+ reactIs_development.ForwardRef = ForwardRef;
+ reactIs_development.Fragment = Fragment;
+ reactIs_development.Lazy = Lazy;
+ reactIs_development.Memo = Memo;
+ reactIs_development.Portal = Portal;
+ reactIs_development.Profiler = Profiler;
+ reactIs_development.StrictMode = StrictMode;
+ reactIs_development.Suspense = Suspense;
+ reactIs_development.isAsyncMode = isAsyncMode;
+ reactIs_development.isConcurrentMode = isConcurrentMode;
+ reactIs_development.isContextConsumer = isContextConsumer;
+ reactIs_development.isContextProvider = isContextProvider;
+ reactIs_development.isElement = isElement;
+ reactIs_development.isForwardRef = isForwardRef;
+ reactIs_development.isFragment = isFragment;
+ reactIs_development.isLazy = isLazy;
+ reactIs_development.isMemo = isMemo;
+ reactIs_development.isPortal = isPortal;
+ reactIs_development.isProfiler = isProfiler;
+ reactIs_development.isStrictMode = isStrictMode;
+ reactIs_development.isSuspense = isSuspense;
+ reactIs_development.isValidElementType = isValidElementType;
+ reactIs_development.typeOf = typeOf;
+ })();
+ }
+
+ {
+ reactIs$1.exports = reactIs_development;
+ }
+
+ /*
+ object-assign
+ (c) Sindre Sorhus
+ @license MIT
+ */
+ /* eslint-disable no-unused-vars */
+
+ var getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+ function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
+
+ return Object(val);
+ }
+
+ function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ } // Detect buggy property enumeration order in older V8 versions.
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+
+
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+
+ test1[5] = 'de';
+
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test2 = {};
+
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+
+ if (order2.join('') !== '0123456789') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+
+ if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+ }
+
+ var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols$1) {
+ symbols = getOwnPropertySymbols$1(from);
+
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
+ };
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ var ReactPropTypesSecret$2 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
+ var ReactPropTypesSecret_1 = ReactPropTypesSecret$2;
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ var printWarning$2 = function () {};
+
+ {
+ var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;
+
+ var loggedTypeFailures = {};
+ var has$1 = Function.call.bind(Object.prototype.hasOwnProperty);
+
+ printWarning$2 = function (text) {
+ var message = 'Warning: ' + text;
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+ }
+ /**
+ * Assert that the values match with the type specs.
+ * Error messages are memorized and will only be shown once.
+ *
+ * @param {object} typeSpecs Map of name to a ReactPropType
+ * @param {object} values Runtime values that need to be type-checked
+ * @param {string} location e.g. "prop", "context", "child context"
+ * @param {string} componentName Name of the component for error messages.
+ * @param {?Function} getStack Returns the component stack.
+ * @private
+ */
+
+
+ function checkPropTypes$1(typeSpecs, values, location, componentName, getStack) {
+ {
+ for (var typeSpecName in typeSpecs) {
+ if (has$1(typeSpecs, typeSpecName)) {
+ var error; // Prop type validation may throw. In case they do, we don't want to
+ // fail the render phase where it didn't fail before. So we log it.
+ // After these have been cleaned up, we'll let them throw.
+
+ try {
+ // This is intentionally an invariant that gets caught. It's the same
+ // behavior as without this statement except with a better message.
+ if (typeof typeSpecs[typeSpecName] !== 'function') {
+ var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.');
+ err.name = 'Invariant Violation';
+ throw err;
+ }
+
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);
+ } catch (ex) {
+ error = ex;
+ }
+
+ if (error && !(error instanceof Error)) {
+ printWarning$2((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');
+ }
+
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
+ // Only monitor this failure once because there tends to be a lot of the
+ // same error.
+ loggedTypeFailures[error.message] = true;
+ var stack = getStack ? getStack() : '';
+ printWarning$2('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));
+ }
+ }
+ }
+ }
+ }
+ /**
+ * Resets warning cache when testing.
+ *
+ * @private
+ */
+
+
+ checkPropTypes$1.resetWarningCache = function () {
+ {
+ loggedTypeFailures = {};
+ }
+ };
+
+ var checkPropTypes_1 = checkPropTypes$1;
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ var ReactIs$1 = reactIs$1.exports;
+
+ var assign$2 = objectAssign;
+
+ var ReactPropTypesSecret = ReactPropTypesSecret_1;
+
+ var checkPropTypes = checkPropTypes_1;
+
+ var has = Function.call.bind(Object.prototype.hasOwnProperty);
+
+ var printWarning$1 = function () {};
+
+ {
+ printWarning$1 = function (text) {
+ var message = 'Warning: ' + text;
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+ }
+
+ function emptyFunctionThatReturnsNull() {
+ return null;
+ }
+
+ var factoryWithTypeCheckers = function (isValidElement, throwOnDirectAccess) {
+ /* global Symbol */
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
+
+ /**
+ * Returns the iterator method function contained on the iterable object.
+ *
+ * Be sure to invoke the function with the iterable as context:
+ *
+ * var iteratorFn = getIteratorFn(myIterable);
+ * if (iteratorFn) {
+ * var iterator = iteratorFn.call(myIterable);
+ * ...
+ * }
+ *
+ * @param {?object} maybeIterable
+ * @return {?function}
+ */
+
+ function getIteratorFn(maybeIterable) {
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
+
+ if (typeof iteratorFn === 'function') {
+ return iteratorFn;
+ }
+ }
+ /**
+ * Collection of methods that allow declaration and validation of props that are
+ * supplied to React components. Example usage:
+ *
+ * var Props = require('ReactPropTypes');
+ * var MyArticle = React.createClass({
+ * propTypes: {
+ * // An optional string prop named "description".
+ * description: Props.string,
+ *
+ * // A required enum prop named "category".
+ * category: Props.oneOf(['News','Photos']).isRequired,
+ *
+ * // A prop named "dialog" that requires an instance of Dialog.
+ * dialog: Props.instanceOf(Dialog).isRequired
+ * },
+ * render: function() { ... }
+ * });
+ *
+ * A more formal specification of how these methods are used:
+ *
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
+ * decl := ReactPropTypes.{type}(.isRequired)?
+ *
+ * Each and every declaration produces a function with the same signature. This
+ * allows the creation of custom validation functions. For example:
+ *
+ * var MyLink = React.createClass({
+ * propTypes: {
+ * // An optional string or URI prop named "href".
+ * href: function(props, propName, componentName) {
+ * var propValue = props[propName];
+ * if (propValue != null && typeof propValue !== 'string' &&
+ * !(propValue instanceof URI)) {
+ * return new Error(
+ * 'Expected a string or an URI for ' + propName + ' in ' +
+ * componentName
+ * );
+ * }
+ * }
+ * },
+ * render: function() {...}
+ * });
+ *
+ * @internal
+ */
+
+
+ var ANONYMOUS = '<>'; // Important!
+ // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
+
+ var ReactPropTypes = {
+ array: createPrimitiveTypeChecker('array'),
+ bool: createPrimitiveTypeChecker('boolean'),
+ func: createPrimitiveTypeChecker('function'),
+ number: createPrimitiveTypeChecker('number'),
+ object: createPrimitiveTypeChecker('object'),
+ string: createPrimitiveTypeChecker('string'),
+ symbol: createPrimitiveTypeChecker('symbol'),
+ any: createAnyTypeChecker(),
+ arrayOf: createArrayOfTypeChecker,
+ element: createElementTypeChecker(),
+ elementType: createElementTypeTypeChecker(),
+ instanceOf: createInstanceTypeChecker,
+ node: createNodeChecker(),
+ objectOf: createObjectOfTypeChecker,
+ oneOf: createEnumTypeChecker,
+ oneOfType: createUnionTypeChecker,
+ shape: createShapeTypeChecker,
+ exact: createStrictShapeTypeChecker
+ };
+ /**
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
+ */
+
+ /*eslint-disable no-self-compare*/
+
+ function is(x, y) {
+ // SameValue algorithm
+ if (x === y) {
+ // Steps 1-5, 7-10
+ // Steps 6.b-6.e: +0 != -0
+ return x !== 0 || 1 / x === 1 / y;
+ } else {
+ // Step 6.a: NaN == NaN
+ return x !== x && y !== y;
+ }
+ }
+ /*eslint-enable no-self-compare*/
+
+ /**
+ * We use an Error-like object for backward compatibility as people may call
+ * PropTypes directly and inspect their output. However, we don't use real
+ * Errors anymore. We don't inspect their stack anyway, and creating them
+ * is prohibitively expensive if they are created too often, such as what
+ * happens in oneOfType() for any type before the one that matched.
+ */
+
+
+ function PropTypeError(message) {
+ this.message = message;
+ this.stack = '';
+ } // Make `instanceof Error` still work for returned errors.
+
+
+ PropTypeError.prototype = Error.prototype;
+
+ function createChainableTypeChecker(validate) {
+ {
+ var manualPropTypeCallCache = {};
+ var manualPropTypeWarningCount = 0;
+ }
+
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
+ componentName = componentName || ANONYMOUS;
+ propFullName = propFullName || propName;
+
+ if (secret !== ReactPropTypesSecret) {
+ if (throwOnDirectAccess) {
+ // New behavior only for users of `prop-types` package
+ var err = 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');
+ err.name = 'Invariant Violation';
+ throw err;
+ } else if (typeof console !== 'undefined') {
+ // Old behavior for people using React.PropTypes
+ var cacheKey = componentName + ':' + propName;
+
+ if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors
+ manualPropTypeWarningCount < 3) {
+ printWarning$1('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');
+ manualPropTypeCallCache[cacheKey] = true;
+ manualPropTypeWarningCount++;
+ }
+ }
+ }
+
+ if (props[propName] == null) {
+ if (isRequired) {
+ if (props[propName] === null) {
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
+ }
+
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
+ }
+
+ return null;
+ } else {
+ return validate(props, propName, componentName, location, propFullName);
+ }
+ }
+
+ var chainedCheckType = checkType.bind(null, false);
+ chainedCheckType.isRequired = checkType.bind(null, true);
+ return chainedCheckType;
+ }
+
+ function createPrimitiveTypeChecker(expectedType) {
+ function validate(props, propName, componentName, location, propFullName, secret) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== expectedType) {
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
+ // check, but we can offer a more precise error message here rather than
+ // 'of type `object`'.
+ var preciseType = getPreciseType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createAnyTypeChecker() {
+ return createChainableTypeChecker(emptyFunctionThatReturnsNull);
+ }
+
+ function createArrayOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
+ }
+
+ var propValue = props[propName];
+
+ if (!Array.isArray(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
+ }
+
+ for (var i = 0; i < propValue.length; i++) {
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
+
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createElementTypeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ if (!isValidElement(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createElementTypeTypeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ if (!ReactIs$1.isValidElementType(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createInstanceTypeChecker(expectedClass) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!(props[propName] instanceof expectedClass)) {
+ var expectedClassName = expectedClass.name || ANONYMOUS;
+ var actualClassName = getClassName(props[propName]);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createEnumTypeChecker(expectedValues) {
+ if (!Array.isArray(expectedValues)) {
+ {
+ if (arguments.length > 1) {
+ printWarning$1('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');
+ } else {
+ printWarning$1('Invalid argument supplied to oneOf, expected an array.');
+ }
+ }
+
+ return emptyFunctionThatReturnsNull;
+ }
+
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ for (var i = 0; i < expectedValues.length; i++) {
+ if (is(propValue, expectedValues[i])) {
+ return null;
+ }
+ }
+
+ var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
+ var type = getPreciseType(value);
+
+ if (type === 'symbol') {
+ return String(value);
+ }
+
+ return value;
+ });
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createObjectOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
+ }
+
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
+ }
+
+ for (var key in propValue) {
+ if (has(propValue, key)) {
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
+ if (!Array.isArray(arrayOfTypeCheckers)) {
+ printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') ;
+ return emptyFunctionThatReturnsNull;
+ }
+
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+
+ if (typeof checker !== 'function') {
+ printWarning$1('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');
+ return emptyFunctionThatReturnsNull;
+ }
+ }
+
+ function validate(props, propName, componentName, location, propFullName) {
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+
+ if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
+ return null;
+ }
+ }
+
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createNodeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!isNode(props[propName])) {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ }
+
+ for (var key in shapeTypes) {
+ var checker = shapeTypes[key];
+
+ if (!checker) {
+ continue;
+ }
+
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createStrictShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ } // We need to check all keys in case some are required but missing from
+ // props.
+
+
+ var allKeys = assign$2({}, props[propName], shapeTypes);
+
+ for (var key in allKeys) {
+ var checker = shapeTypes[key];
+
+ if (!checker) {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));
+ }
+
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function isNode(propValue) {
+ switch (typeof propValue) {
+ case 'number':
+ case 'string':
+ case 'undefined':
+ return true;
+
+ case 'boolean':
+ return !propValue;
+
+ case 'object':
+ if (Array.isArray(propValue)) {
+ return propValue.every(isNode);
+ }
+
+ if (propValue === null || isValidElement(propValue)) {
+ return true;
+ }
+
+ var iteratorFn = getIteratorFn(propValue);
+
+ if (iteratorFn) {
+ var iterator = iteratorFn.call(propValue);
+ var step;
+
+ if (iteratorFn !== propValue.entries) {
+ while (!(step = iterator.next()).done) {
+ if (!isNode(step.value)) {
+ return false;
+ }
+ }
+ } else {
+ // Iterator will provide entry [k,v] tuples rather than values.
+ while (!(step = iterator.next()).done) {
+ var entry = step.value;
+
+ if (entry) {
+ if (!isNode(entry[1])) {
+ return false;
+ }
+ }
+ }
+ }
+ } else {
+ return false;
+ }
+
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isSymbol(propType, propValue) {
+ // Native Symbol.
+ if (propType === 'symbol') {
+ return true;
+ } // falsy value can't be a Symbol
+
+
+ if (!propValue) {
+ return false;
+ } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
+
+
+ if (propValue['@@toStringTag'] === 'Symbol') {
+ return true;
+ } // Fallback for non-spec compliant Symbols which are polyfilled.
+
+
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
+ return true;
+ }
+
+ return false;
+ } // Equivalent of `typeof` but with special handling for array and regexp.
+
+
+ function getPropType(propValue) {
+ var propType = typeof propValue;
+
+ if (Array.isArray(propValue)) {
+ return 'array';
+ }
+
+ if (propValue instanceof RegExp) {
+ // Old webkits (at least until Android 4.0) return 'function' rather than
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
+ // passes PropTypes.object.
+ return 'object';
+ }
+
+ if (isSymbol(propType, propValue)) {
+ return 'symbol';
+ }
+
+ return propType;
+ } // This handles more types than `getPropType`. Only used for error messages.
+ // See `createPrimitiveTypeChecker`.
+
+
+ function getPreciseType(propValue) {
+ if (typeof propValue === 'undefined' || propValue === null) {
+ return '' + propValue;
+ }
+
+ var propType = getPropType(propValue);
+
+ if (propType === 'object') {
+ if (propValue instanceof Date) {
+ return 'date';
+ } else if (propValue instanceof RegExp) {
+ return 'regexp';
+ }
+ }
+
+ return propType;
+ } // Returns a string that is postfixed to a warning about an invalid type.
+ // For example, "undefined" or "of type array"
+
+
+ function getPostfixForTypeWarning(value) {
+ var type = getPreciseType(value);
+
+ switch (type) {
+ case 'array':
+ case 'object':
+ return 'an ' + type;
+
+ case 'boolean':
+ case 'date':
+ case 'regexp':
+ return 'a ' + type;
+
+ default:
+ return type;
+ }
+ } // Returns class name of the object, if any.
+
+
+ function getClassName(propValue) {
+ if (!propValue.constructor || !propValue.constructor.name) {
+ return ANONYMOUS;
+ }
+
+ return propValue.constructor.name;
+ }
+
+ ReactPropTypes.checkPropTypes = checkPropTypes;
+ ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
+ ReactPropTypes.PropTypes = ReactPropTypes;
+ return ReactPropTypes;
+ };
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+ {
+ var ReactIs = reactIs$1.exports; // By explicitly using `prop-types` you are opting into new development behavior.
+ // http://fb.me/prop-types-in-prod
+
+
+ var throwOnDirectAccess = true;
+ propTypes.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);
+ }
+
+ var _pt = propTypes.exports;
+
+ var lib = {};
+
+ /*:: type Attr = { [key: string]: string | number } */
+
+ /*:: type Opts = { preserveNumbers: ?boolean } */
+
+ /*
+
+ style-attr
+ ====
+
+ Very simple parsing and stringifying of style attributes.
+
+ `parse`
+ ----
+
+ Convert a style attribute string to an object.
+
+ */
+
+ /*:: declare function parse (raw: string, opts: ?Opts): Attr */
+ function parse(raw, opts) {
+ opts = opts || {};
+ var preserveNumbers = opts.preserveNumbers;
+
+ var trim = function (s) {
+ return s.trim();
+ };
+
+ var obj = {};
+ getKeyValueChunks(raw).map(trim).filter(Boolean).forEach(function (item) {
+ // split with `.indexOf` rather than `.split` because the value may also contain colons.
+ var pos = item.indexOf(':');
+ var key = item.substr(0, pos).trim();
+ var val = item.substr(pos + 1).trim();
+
+ if (preserveNumbers && isNumeric(val)) {
+ val = Number(val);
+ }
+
+ obj[key] = val;
+ });
+ return obj;
+ }
+ /*
+
+ `isNumeric`
+ ----
+
+ Check if a value is numeric.
+ Via: https://stackoverflow.com/a/1830844/9324
+
+ */
+
+ /*:: declare function isNumeric (n: any): boolean */
+
+
+ function isNumeric(n) {
+ return !isNaN(parseFloat(n)) && isFinite(n);
+ }
+ /*
+
+ `getKeyValueChunks`
+ ----
+
+ Split a string into chunks matching `: `
+
+ */
+
+ /*:: declare function getKeyValueChunks (raw: string): Array */
+
+
+ function getKeyValueChunks(raw) {
+ var chunks = [];
+ var offset = 0;
+ var sep = ';';
+ var hasUnclosedUrl = /url\([^\)]+$/;
+ var chunk = '';
+ var nextSplit;
+
+ while (offset < raw.length) {
+ nextSplit = raw.indexOf(sep, offset);
+
+ if (nextSplit === -1) {
+ nextSplit = raw.length;
+ }
+
+ chunk += raw.substring(offset, nextSplit); // data URIs can contain semicolons, so make sure we get the whole thing
+
+ if (hasUnclosedUrl.test(chunk)) {
+ chunk += ';';
+ offset = nextSplit + 1;
+ continue;
+ }
+
+ chunks.push(chunk);
+ chunk = '';
+ offset = nextSplit + 1;
+ }
+
+ return chunks;
+ }
+ /*
+
+ `stringify`
+ ----
+
+ Convert an object into an attribute string
+
+ */
+
+ /*:: declare function stringify (obj: Attr): string */
+
+
+ function stringify(obj) {
+ return Object.keys(obj).map(function (key) {
+ return key + ':' + obj[key];
+ }).join(';');
+ }
+ /*
+
+ `normalize`
+ ----
+
+ Normalize an attribute string (eg. collapse duplicates)
+
+ */
+
+ /*:: declare function normalize (str: string, opts: ?Opts): string */
+
+
+ function normalize(str, opts) {
+ return stringify(parse(str, opts));
+ }
+
+ lib.parse = parse;
+ lib.stringify = stringify;
+ lib.normalize = normalize;
+
+ var util$2 = {exports: {}};
+
+ /**
+ * attr fix for old ie
+ * @author yiminghe@gmail.com
+ */
+
+ var R_BOOLEAN = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ R_FOCUSABLE = /^(?:button|input|object|select|textarea)$/i,
+ R_CLICKABLE = /^a(?:rea)?$/i,
+ R_INVALID_CHAR = /:|^on/;
+ var attrFix = {},
+ propFix,
+ attrHooks = {
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ tabindex: {
+ get: function (el) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ var attributeNode = el.getAttributeNode('tabindex');
+ return attributeNode && attributeNode.specified ? parseInt(attributeNode.value, 10) : R_FOCUSABLE.test(el.nodeName) || R_CLICKABLE.test(el.nodeName) && el.href ? 0 : undefined;
+ }
+ }
+ },
+ boolHook = {
+ get: function (elem, name) {
+ // 转发到 prop 方法
+ return elem[propFix[name] || name] ? // 根据 w3c attribute , true 时返回属性名字符串
+ name.toLowerCase() : undefined;
+ }
+ },
+ attrNodeHook = {};
+ attrHooks.style = {
+ get: function (el) {
+ return el.style.cssText;
+ }
+ };
+ propFix = {
+ hidefocus: 'hideFocus',
+ tabindex: 'tabIndex',
+ readonly: 'readOnly',
+ 'for': 'htmlFor',
+ 'class': 'className',
+ maxlength: 'maxLength',
+ cellspacing: 'cellSpacing',
+ cellpadding: 'cellPadding',
+ rowspan: 'rowSpan',
+ colspan: 'colSpan',
+ usemap: 'useMap',
+ frameborder: 'frameBorder',
+ contenteditable: 'contentEditable'
+ };
+ var ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';
+ var doc = typeof document !== 'undefined' ? document : {};
+
+ function numberify(s) {
+ var c = 0; // convert '1.2.3.4' to 1.234
+
+ return parseFloat(s.replace(/\./g, function () {
+ return c++ === 0 ? '.' : '';
+ }));
+ }
+
+ function ieVersion() {
+ var m, v;
+
+ if ((m = ua.match(/MSIE ([^;]*)|Trident.*; rv(?:\s|:)?([0-9.]+)/)) && (v = m[1] || m[2])) {
+ return doc.documentMode || numberify(v);
+ }
+ }
+
+ function mix(s, t) {
+ for (var p in t) {
+ s[p] = t[p];
+ }
+ }
+
+ function each(arr, fn) {
+ var i = 0,
+ l = arr.length;
+
+ for (; i < l; i++) {
+ if (fn(arr[i], i) === false) {
+ break;
+ }
+ }
+ }
+
+ var ie = ieVersion();
+
+ if (ie && ie < 8) {
+ attrHooks.style.set = function (el, val) {
+ el.style.cssText = val;
+ }; // get attribute value from attribute node for ie
+
+
+ mix(attrNodeHook, {
+ get: function (elem, name) {
+ var ret = elem.getAttributeNode(name); // Return undefined if attribute node specified by user
+
+ return ret && ( // fix #100
+ ret.specified || ret.nodeValue) ? ret.nodeValue : undefined;
+ }
+ }); // ie6,7 不区分 attribute 与 property
+
+ mix(attrFix, propFix); // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+
+ attrHooks.tabIndex = attrHooks.tabindex; // 不光是 href, src, 还有 rowspan 等非 mapping 属性,也需要用第 2 个参数来获取原始值
+ // 注意 colSpan rowSpan 已经由 propFix 转为大写
+
+ each(['href', 'src', 'width', 'height', 'colSpan', 'rowSpan'], function (name) {
+ attrHooks[name] = {
+ get: function (elem) {
+ var ret = elem.getAttribute(name, 2);
+ return ret === null ? undefined : ret;
+ }
+ };
+ });
+ attrHooks.placeholder = {
+ get: function (elem, name) {
+ return elem[name] || attrNodeHook.get(elem, name);
+ }
+ };
+ }
+
+ if (ie) {
+ var hrefFix = attrHooks.href = attrHooks.href || {};
+
+ hrefFix.set = function (el, val, name) {
+ var childNodes = el.childNodes,
+ b,
+ len = childNodes.length,
+ allText = len > 0;
+
+ for (len = len - 1; len >= 0; len--) {
+ if (childNodes[len].nodeType !== 3) {
+ allText = 0;
+ }
+ }
+
+ if (allText) {
+ b = el.ownerDocument.createElement('b');
+ b.style.display = 'none';
+ el.appendChild(b);
+ }
+
+ el.setAttribute(name, '' + val);
+
+ if (b) {
+ el.removeChild(b);
+ }
+ };
+ }
+
+ var RE_TRIM = /^[\s\xa0]+|[\s\xa0]+$/g,
+ trim = String.prototype.trim;
+ var SPACE = ' ';
+ var getElementsByTagName;
+
+ getElementsByTagName = function (name, context) {
+ return context.getElementsByTagName(name);
+ };
+
+ if (doc.createElement) {
+ var div = doc.createElement('div');
+ div.appendChild(document.createComment(''));
+
+ if (div.getElementsByTagName('*').length) {
+ getElementsByTagName = function (name, context) {
+ var nodes = context.getElementsByTagName(name),
+ needsFilter = name === '*'; //
+
+ if (needsFilter || typeof nodes.length !== 'number') {
+ var ret = [],
+ i = 0,
+ el;
+
+ while (el = nodes[i++]) {
+ if (!needsFilter || el.nodeType === 1) {
+ ret.push(el);
+ }
+ }
+
+ return ret;
+ } else {
+ return nodes;
+ }
+ };
+ }
+ }
+
+ var compareNodeOrder = 'sourceIndex' in (doc && doc.documentElement || {}) ? function (a, b) {
+ return a.sourceIndex - b.sourceIndex;
+ } : function (a, b) {
+ if (!a.compareDocumentPosition || !b.compareDocumentPosition) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ var bit = a.compareDocumentPosition(b) & 4;
+ return bit ? -1 : 1;
+ };
+ var util$1 = util$2.exports = {
+ ie: ie,
+ unique: function () {
+ var hasDuplicate,
+ baseHasDuplicate = true; // Here we check if the JavaScript engine is using some sort of
+ // optimization where it does not always call our comparison
+ // function. If that is the case, discard the hasDuplicate value.
+ // Thus far that includes Google Chrome.
+
+ [0, 0].sort(function () {
+ baseHasDuplicate = false;
+ return 0;
+ });
+
+ function sortOrder(a, b) {
+ if (a === b) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ return compareNodeOrder(a, b);
+ } // 排序去重
+
+
+ return function (elements) {
+ hasDuplicate = baseHasDuplicate;
+ elements.sort(sortOrder);
+
+ if (hasDuplicate) {
+ var i = 1,
+ len = elements.length;
+
+ while (i < len) {
+ if (elements[i] === elements[i - 1]) {
+ elements.splice(i, 1);
+ --len;
+ } else {
+ i++;
+ }
+ }
+ }
+
+ return elements;
+ };
+ }(),
+ getElementsByTagName: getElementsByTagName,
+ getSimpleAttr: function (el, name) {
+ var ret = el && el.getAttributeNode(name);
+
+ if (ret && ret.specified) {
+ return 'value' in ret ? ret.value : ret.nodeValue;
+ }
+
+ return undefined;
+ },
+ contains: ie ? function (a, b) {
+ if (a.nodeType === 9) {
+ a = a.documentElement;
+ } // !a.contains => a===document || text
+ // 注意原生 contains 判断时 a===b 也返回 true
+
+
+ b = b.parentNode;
+
+ if (a === b) {
+ return true;
+ } // when b is document, a.contains(b) 不支持的接口 in ie
+
+
+ if (b && b.nodeType === 1) {
+ return a.contains && a.contains(b);
+ } else {
+ return false;
+ }
+ } : function (a, b) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ },
+ isTag: function (el, value) {
+ return value === '*' || el.nodeName.toLowerCase() === value.toLowerCase();
+ },
+ hasSingleClass: function (el, cls) {
+ // consider xml
+ // https://github.com/kissyteam/kissy/issues/532
+ var className = el && util$1.getSimpleAttr(el, 'class');
+ return className && (className = className.replace(/[\r\t\n]/g, SPACE)) && (SPACE + className + SPACE).indexOf(SPACE + cls + SPACE) > -1;
+ },
+ startsWith: function (str, prefix) {
+ return str.lastIndexOf(prefix, 0) === 0;
+ },
+ endsWith: function (str, suffix) {
+ var ind = str.length - suffix.length;
+ return ind >= 0 && str.indexOf(suffix, ind) === ind;
+ },
+ trim: trim ? function (str) {
+ return str == null ? '' : trim.call(str);
+ } : function (str) {
+ return str == null ? '' : (str + '').replace(RE_TRIM, '');
+ },
+ attr: function (el, name) {
+ var attrNormalizer, ret; // scrollLeft
+
+ name = name.toLowerCase(); // custom attrs
+
+ name = attrFix[name] || name;
+
+ if (R_BOOLEAN.test(name)) {
+ attrNormalizer = boolHook;
+ } else if (R_INVALID_CHAR.test(name)) {
+ // only old ie?
+ attrNormalizer = attrNodeHook;
+ } else {
+ attrNormalizer = attrHooks[name];
+ }
+
+ if (el && el.nodeType === 1) {
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if (el.nodeName.toLowerCase() === 'form') {
+ attrNormalizer = attrNodeHook;
+ }
+
+ if (attrNormalizer && attrNormalizer.get) {
+ return attrNormalizer.get(el, name);
+ }
+
+ ret = el.getAttribute(name);
+
+ if (ret === '') {
+ var attrNode = el.getAttributeNode(name);
+
+ if (!attrNode || !attrNode.specified) {
+ return undefined;
+ }
+ } // standard browser non-existing attribute return null
+ // ie<8 will return undefined , because it return property
+ // so norm to undefined
+
+
+ return ret === null ? undefined : ret;
+ }
+ }
+ };
+
+ var parser$1 = {exports: {}};
+
+ /*
+ Generated by kison.*/
+
+ (function (module) {
+ var parser = function (undefined$1) {
+ /*jshint quotmark:false, loopfunc:true, indent:false, unused:false, asi:true, boss:true*/
+
+ /* Generated by kison */
+ var parser = {},
+ GrammarConst = {
+ 'SHIFT_TYPE': 1,
+ 'REDUCE_TYPE': 2,
+ 'ACCEPT_TYPE': 0,
+ 'TYPE_INDEX': 0,
+ 'PRODUCTION_INDEX': 1,
+ 'TO_INDEX': 2
+ };
+ /*jslint quotmark: false*/
+
+ function mix(to, from) {
+ for (var f in from) {
+ to[f] = from[f];
+ }
+ }
+
+ function isArray(obj) {
+ return '[object Array]' === Object.prototype.toString.call(obj);
+ }
+
+ function each(object, fn, context) {
+ if (object) {
+ var key,
+ val,
+ length,
+ i = 0;
+ context = context || null;
+
+ if (!isArray(object)) {
+ for (key in object) {
+ // can not use hasOwnProperty
+ if (fn.call(context, object[key], key, object) === false) {
+ break;
+ }
+ }
+ } else {
+ length = object.length;
+
+ for (val = object[0]; i < length; val = object[++i]) {
+ if (fn.call(context, val, i, object) === false) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ function inArray(item, arr) {
+ for (var i = 0, l = arr.length; i < l; i++) {
+ if (arr[i] === item) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ var Lexer = function Lexer(cfg) {
+ var self = this;
+ /*
+ lex rules.
+ @type {Object[]}
+ @example
+ [
+ {
+ regexp:'\\w+',
+ state:['xx'],
+ token:'c',
+ // this => lex
+ action:function(){}
+ }
+ ]
+ */
+
+ self.rules = [];
+ mix(self, cfg);
+ /*
+ Input languages
+ @type {String}
+ */
+
+ self.resetInput(self.input);
+ };
+
+ Lexer.prototype = {
+ 'resetInput': function (input) {
+ mix(this, {
+ input: input,
+ matched: '',
+ stateStack: [Lexer.STATIC.INITIAL],
+ match: '',
+ text: '',
+ firstLine: 1,
+ lineNumber: 1,
+ lastLine: 1,
+ firstColumn: 1,
+ lastColumn: 1
+ });
+ },
+ 'getCurrentRules': function () {
+ var self = this,
+ currentState = self.stateStack[self.stateStack.length - 1],
+ rules = []; //#JSCOVERAGE_IF
+
+ if (self.mapState) {
+ currentState = self.mapState(currentState);
+ }
+
+ each(self.rules, function (r) {
+ var state = r.state || r[3];
+
+ if (!state) {
+ if (currentState === Lexer.STATIC.INITIAL) {
+ rules.push(r);
+ }
+ } else if (inArray(currentState, state)) {
+ rules.push(r);
+ }
+ });
+ return rules;
+ },
+ 'pushState': function (state) {
+ this.stateStack.push(state);
+ },
+ 'popState': function (num) {
+ num = num || 1;
+ var ret;
+
+ while (num--) {
+ ret = this.stateStack.pop();
+ }
+
+ return ret;
+ },
+ 'showDebugInfo': function () {
+ var self = this,
+ DEBUG_CONTEXT_LIMIT = Lexer.STATIC.DEBUG_CONTEXT_LIMIT,
+ matched = self.matched,
+ match = self.match,
+ input = self.input;
+ matched = matched.slice(0, matched.length - match.length); //#JSCOVERAGE_IF 0
+
+ var past = (matched.length > DEBUG_CONTEXT_LIMIT ? '...' : '') + matched.slice(0 - DEBUG_CONTEXT_LIMIT).replace(/\n/, ' '),
+ next = match + input; //#JSCOVERAGE_ENDIF
+
+ next = next.slice(0, DEBUG_CONTEXT_LIMIT) + (next.length > DEBUG_CONTEXT_LIMIT ? '...' : '');
+ return past + next + '\n' + new Array(past.length + 1).join('-') + '^';
+ },
+ 'mapSymbol': function mapSymbolForCodeGen(t) {
+ return this.symbolMap[t];
+ },
+ 'mapReverseSymbol': function (rs) {
+ var self = this,
+ symbolMap = self.symbolMap,
+ i,
+ reverseSymbolMap = self.reverseSymbolMap;
+
+ if (!reverseSymbolMap && symbolMap) {
+ reverseSymbolMap = self.reverseSymbolMap = {};
+
+ for (i in symbolMap) {
+ reverseSymbolMap[symbolMap[i]] = i;
+ }
+ } //#JSCOVERAGE_IF
+
+
+ if (reverseSymbolMap) {
+ return reverseSymbolMap[rs];
+ } else {
+ return rs;
+ }
+ },
+ 'lex': function () {
+ var self = this,
+ input = self.input,
+ i,
+ rule,
+ m,
+ ret,
+ lines,
+ rules = self.getCurrentRules();
+ self.match = self.text = '';
+
+ if (!input) {
+ return self.mapSymbol(Lexer.STATIC.END_TAG);
+ }
+
+ for (i = 0; i < rules.length; i++) {
+ rule = rules[i]; //#JSCOVERAGE_IF 0
+
+ var regexp = rule.regexp || rule[1],
+ token = rule.token || rule[0],
+ action = rule.action || rule[2] || undefined$1; //#JSCOVERAGE_ENDIF
+
+ if (m = input.match(regexp)) {
+ lines = m[0].match(/\n.*/g);
+
+ if (lines) {
+ self.lineNumber += lines.length;
+ }
+
+ mix(self, {
+ firstLine: self.lastLine,
+ lastLine: self.lineNumber + 1,
+ firstColumn: self.lastColumn,
+ lastColumn: lines ? lines[lines.length - 1].length - 1 : self.lastColumn + m[0].length
+ });
+ var match; // for error report
+
+ match = self.match = m[0]; // all matches
+
+ self.matches = m; // may change by user
+
+ self.text = match; // matched content utils now
+
+ self.matched += match;
+ ret = action && action.call(self);
+
+ if (ret === undefined$1) {
+ ret = token;
+ } else {
+ ret = self.mapSymbol(ret);
+ }
+
+ input = input.slice(match.length);
+ self.input = input;
+
+ if (ret) {
+ return ret;
+ } else {
+ // ignore
+ return self.lex();
+ }
+ }
+ }
+ }
+ };
+ Lexer.STATIC = {
+ 'INITIAL': 'I',
+ 'DEBUG_CONTEXT_LIMIT': 20,
+ 'END_TAG': '$EOF'
+ };
+ var lexer = new Lexer({
+ 'rules': [['b', /^\[(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['c', /^(?:[\t\r\n\f\x20]*)\]/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['d', /^(?:[\t\r\n\f\x20]*)~=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['e', /^(?:[\t\r\n\f\x20]*)\|=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['f', /^(?:[\t\r\n\f\x20]*)\^=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['g', /^(?:[\t\r\n\f\x20]*)\$=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['h', /^(?:[\t\r\n\f\x20]*)\*=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['i', /^(?:[\t\r\n\f\x20]*)\=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['j', /^(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)\(/, function () {
+ this.text = this.yy.trim(this.text).slice(0, -1);
+ this.pushState('fn');
+ }], ['k', /^[^\)]*/, function () {
+ this.popState();
+ }, ['fn']], ['l', /^(?:[\t\r\n\f\x20]*)\)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['m', /^:not\((?:[\t\r\n\f\x20]*)/i, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['n', /^(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)/, function () {
+ this.text = this.yy.unEscape(this.text);
+ }], ['o', /^"(\\"|[^"])*"/, function () {
+ this.text = this.yy.unEscapeStr(this.text);
+ }], ['o', /^'(\\'|[^'])*'/, function () {
+ this.text = this.yy.unEscapeStr(this.text);
+ }], ['p', /^#(?:(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))+)/, function () {
+ this.text = this.yy.unEscape(this.text.slice(1));
+ }], ['q', /^\.(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)/, function () {
+ this.text = this.yy.unEscape(this.text.slice(1));
+ }], ['r', /^(?:[\t\r\n\f\x20]*),(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['s', /^::?/, 0], ['t', /^(?:[\t\r\n\f\x20]*)\+(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['u', /^(?:[\t\r\n\f\x20]*)>(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['v', /^(?:[\t\r\n\f\x20]*)~(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['w', /^\*/, 0], ['x', /^(?:[\t\r\n\f\x20]+)/, 0], ['y', /^./, 0]]
+ });
+ parser.lexer = lexer;
+ lexer.symbolMap = {
+ '$EOF': 'a',
+ 'LEFT_BRACKET': 'b',
+ 'RIGHT_BRACKET': 'c',
+ 'INCLUDES': 'd',
+ 'DASH_MATCH': 'e',
+ 'PREFIX_MATCH': 'f',
+ 'SUFFIX_MATCH': 'g',
+ 'SUBSTRING_MATCH': 'h',
+ 'ALL_MATCH': 'i',
+ 'FUNCTION': 'j',
+ 'PARAMETER': 'k',
+ 'RIGHT_PARENTHESES': 'l',
+ 'NOT': 'm',
+ 'IDENT': 'n',
+ 'STRING': 'o',
+ 'HASH': 'p',
+ 'CLASS': 'q',
+ 'COMMA': 'r',
+ 'COLON': 's',
+ 'PLUS': 't',
+ 'GREATER': 'u',
+ 'TILDE': 'v',
+ 'UNIVERSAL': 'w',
+ 'S': 'x',
+ 'INVALID': 'y',
+ '$START': 'z',
+ 'selectors_group': 'aa',
+ 'selector': 'ab',
+ 'simple_selector_sequence': 'ac',
+ 'combinator': 'ad',
+ 'type_selector': 'ae',
+ 'id_selector': 'af',
+ 'class_selector': 'ag',
+ 'attrib_match': 'ah',
+ 'attrib': 'ai',
+ 'attrib_val': 'aj',
+ 'pseudo': 'ak',
+ 'negation': 'al',
+ 'negation_arg': 'am',
+ 'suffix_selector': 'an',
+ 'suffix_selectors': 'ao'
+ };
+ parser.productions = [['z', ['aa']], ['aa', ['ab'], function () {
+ return [this.$1];
+ }], ['aa', ['aa', 'r', 'ab'], function () {
+ this.$1.push(this.$3);
+ }], ['ab', ['ac']], ['ab', ['ab', 'ad', 'ac'], function () {
+ // LinkedList
+ this.$1.nextCombinator = this.$3.prevCombinator = this.$2;
+ var order;
+ order = this.$1.order = this.$1.order || 0;
+ this.$3.order = order + 1;
+ this.$3.prev = this.$1;
+ this.$1.next = this.$3;
+ return this.$3;
+ }], ['ad', ['t']], ['ad', ['u']], ['ad', ['v']], ['ad', ['x'], function () {
+ return ' ';
+ }], ['ae', ['n'], function () {
+ return {
+ t: 'tag',
+ value: this.$1
+ };
+ }], ['ae', ['w'], function () {
+ return {
+ t: 'tag',
+ value: this.$1
+ };
+ }], ['af', ['p'], function () {
+ return {
+ t: 'id',
+ value: this.$1
+ };
+ }], ['ag', ['q'], function () {
+ return {
+ t: 'cls',
+ value: this.$1
+ };
+ }], ['ah', ['f']], ['ah', ['g']], ['ah', ['h']], ['ah', ['i']], ['ah', ['d']], ['ah', ['e']], ['ai', ['b', 'n', 'c'], function () {
+ return {
+ t: 'attrib',
+ value: {
+ ident: this.$2
+ }
+ };
+ }], ['aj', ['n']], ['aj', ['o']], ['ai', ['b', 'n', 'ah', 'aj', 'c'], function () {
+ return {
+ t: 'attrib',
+ value: {
+ ident: this.$2,
+ match: this.$3,
+ value: this.$4
+ }
+ };
+ }], ['ak', ['s', 'j', 'k', 'l'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ fn: this.$2.toLowerCase(),
+ param: this.$3
+ }
+ };
+ }], ['ak', ['s', 'n'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ ident: this.$2.toLowerCase()
+ }
+ };
+ }], ['al', ['m', 'am', 'l'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ fn: 'not',
+ param: this.$2
+ }
+ };
+ }], ['am', ['ae']], ['am', ['af']], ['am', ['ag']], ['am', ['ai']], ['am', ['ak']], ['an', ['af']], ['an', ['ag']], ['an', ['ai']], ['an', ['ak']], ['an', ['al']], ['ao', ['an'], function () {
+ return [this.$1];
+ }], ['ao', ['ao', 'an'], function () {
+ this.$1.push(this.$2);
+ }], ['ac', ['ae']], ['ac', ['ao'], function () {
+ return {
+ suffix: this.$1
+ };
+ }], ['ac', ['ae', 'ao'], function () {
+ return {
+ t: 'tag',
+ value: this.$1.value,
+ suffix: this.$2
+ };
+ }]];
+ parser.table = {
+ 'gotos': {
+ '0': {
+ 'aa': 8,
+ 'ab': 9,
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 18
+ },
+ '2': {
+ 'ae': 20,
+ 'af': 21,
+ 'ag': 22,
+ 'ai': 23,
+ 'ak': 24,
+ 'am': 25
+ },
+ '9': {
+ 'ad': 33
+ },
+ '10': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 34
+ },
+ '17': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 35
+ },
+ '19': {
+ 'ah': 43
+ },
+ '28': {
+ 'ab': 46,
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 18
+ },
+ '33': {
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 47
+ },
+ '34': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 35
+ },
+ '43': {
+ 'aj': 50
+ },
+ '46': {
+ 'ad': 33
+ }
+ },
+ 'action': {
+ '0': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '1': {
+ 'n': [1, undefined$1, 19]
+ },
+ '2': {
+ 'b': [1, undefined$1, 1],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '3': {
+ 'a': [2, 9],
+ 'r': [2, 9],
+ 't': [2, 9],
+ 'u': [2, 9],
+ 'v': [2, 9],
+ 'x': [2, 9],
+ 'p': [2, 9],
+ 'q': [2, 9],
+ 'b': [2, 9],
+ 's': [2, 9],
+ 'm': [2, 9],
+ 'l': [2, 9]
+ },
+ '4': {
+ 'a': [2, 11],
+ 'r': [2, 11],
+ 't': [2, 11],
+ 'u': [2, 11],
+ 'v': [2, 11],
+ 'x': [2, 11],
+ 'p': [2, 11],
+ 'q': [2, 11],
+ 'b': [2, 11],
+ 's': [2, 11],
+ 'm': [2, 11],
+ 'l': [2, 11]
+ },
+ '5': {
+ 'a': [2, 12],
+ 'r': [2, 12],
+ 't': [2, 12],
+ 'u': [2, 12],
+ 'v': [2, 12],
+ 'x': [2, 12],
+ 'p': [2, 12],
+ 'q': [2, 12],
+ 'b': [2, 12],
+ 's': [2, 12],
+ 'm': [2, 12],
+ 'l': [2, 12]
+ },
+ '6': {
+ 'j': [1, undefined$1, 26],
+ 'n': [1, undefined$1, 27]
+ },
+ '7': {
+ 'a': [2, 10],
+ 'r': [2, 10],
+ 't': [2, 10],
+ 'u': [2, 10],
+ 'v': [2, 10],
+ 'x': [2, 10],
+ 'p': [2, 10],
+ 'q': [2, 10],
+ 'b': [2, 10],
+ 's': [2, 10],
+ 'm': [2, 10],
+ 'l': [2, 10]
+ },
+ '8': {
+ 'a': [0],
+ 'r': [1, undefined$1, 28]
+ },
+ '9': {
+ 'a': [2, 1],
+ 'r': [2, 1],
+ 't': [1, undefined$1, 29],
+ 'u': [1, undefined$1, 30],
+ 'v': [1, undefined$1, 31],
+ 'x': [1, undefined$1, 32]
+ },
+ '10': {
+ 'a': [2, 38],
+ 'r': [2, 38],
+ 't': [2, 38],
+ 'u': [2, 38],
+ 'v': [2, 38],
+ 'x': [2, 38],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '11': {
+ 'a': [2, 31],
+ 'r': [2, 31],
+ 't': [2, 31],
+ 'u': [2, 31],
+ 'v': [2, 31],
+ 'x': [2, 31],
+ 'p': [2, 31],
+ 'q': [2, 31],
+ 'b': [2, 31],
+ 's': [2, 31],
+ 'm': [2, 31]
+ },
+ '12': {
+ 'a': [2, 32],
+ 'r': [2, 32],
+ 't': [2, 32],
+ 'u': [2, 32],
+ 'v': [2, 32],
+ 'x': [2, 32],
+ 'p': [2, 32],
+ 'q': [2, 32],
+ 'b': [2, 32],
+ 's': [2, 32],
+ 'm': [2, 32]
+ },
+ '13': {
+ 'a': [2, 33],
+ 'r': [2, 33],
+ 't': [2, 33],
+ 'u': [2, 33],
+ 'v': [2, 33],
+ 'x': [2, 33],
+ 'p': [2, 33],
+ 'q': [2, 33],
+ 'b': [2, 33],
+ 's': [2, 33],
+ 'm': [2, 33]
+ },
+ '14': {
+ 'a': [2, 34],
+ 'r': [2, 34],
+ 't': [2, 34],
+ 'u': [2, 34],
+ 'v': [2, 34],
+ 'x': [2, 34],
+ 'p': [2, 34],
+ 'q': [2, 34],
+ 'b': [2, 34],
+ 's': [2, 34],
+ 'm': [2, 34]
+ },
+ '15': {
+ 'a': [2, 35],
+ 'r': [2, 35],
+ 't': [2, 35],
+ 'u': [2, 35],
+ 'v': [2, 35],
+ 'x': [2, 35],
+ 'p': [2, 35],
+ 'q': [2, 35],
+ 'b': [2, 35],
+ 's': [2, 35],
+ 'm': [2, 35]
+ },
+ '16': {
+ 'a': [2, 36],
+ 'r': [2, 36],
+ 't': [2, 36],
+ 'u': [2, 36],
+ 'v': [2, 36],
+ 'x': [2, 36],
+ 'p': [2, 36],
+ 'q': [2, 36],
+ 'b': [2, 36],
+ 's': [2, 36],
+ 'm': [2, 36]
+ },
+ '17': {
+ 'a': [2, 39],
+ 'r': [2, 39],
+ 't': [2, 39],
+ 'u': [2, 39],
+ 'v': [2, 39],
+ 'x': [2, 39],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '18': {
+ 'a': [2, 3],
+ 'r': [2, 3],
+ 't': [2, 3],
+ 'u': [2, 3],
+ 'v': [2, 3],
+ 'x': [2, 3]
+ },
+ '19': {
+ 'c': [1, undefined$1, 36],
+ 'd': [1, undefined$1, 37],
+ 'e': [1, undefined$1, 38],
+ 'f': [1, undefined$1, 39],
+ 'g': [1, undefined$1, 40],
+ 'h': [1, undefined$1, 41],
+ 'i': [1, undefined$1, 42]
+ },
+ '20': {
+ 'l': [2, 26]
+ },
+ '21': {
+ 'l': [2, 27]
+ },
+ '22': {
+ 'l': [2, 28]
+ },
+ '23': {
+ 'l': [2, 29]
+ },
+ '24': {
+ 'l': [2, 30]
+ },
+ '25': {
+ 'l': [1, undefined$1, 44]
+ },
+ '26': {
+ 'k': [1, undefined$1, 45]
+ },
+ '27': {
+ 'a': [2, 24],
+ 'r': [2, 24],
+ 't': [2, 24],
+ 'u': [2, 24],
+ 'v': [2, 24],
+ 'x': [2, 24],
+ 'p': [2, 24],
+ 'q': [2, 24],
+ 'b': [2, 24],
+ 's': [2, 24],
+ 'm': [2, 24],
+ 'l': [2, 24]
+ },
+ '28': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '29': {
+ 'n': [2, 5],
+ 'w': [2, 5],
+ 'p': [2, 5],
+ 'q': [2, 5],
+ 'b': [2, 5],
+ 's': [2, 5],
+ 'm': [2, 5]
+ },
+ '30': {
+ 'n': [2, 6],
+ 'w': [2, 6],
+ 'p': [2, 6],
+ 'q': [2, 6],
+ 'b': [2, 6],
+ 's': [2, 6],
+ 'm': [2, 6]
+ },
+ '31': {
+ 'n': [2, 7],
+ 'w': [2, 7],
+ 'p': [2, 7],
+ 'q': [2, 7],
+ 'b': [2, 7],
+ 's': [2, 7],
+ 'm': [2, 7]
+ },
+ '32': {
+ 'n': [2, 8],
+ 'w': [2, 8],
+ 'p': [2, 8],
+ 'q': [2, 8],
+ 'b': [2, 8],
+ 's': [2, 8],
+ 'm': [2, 8]
+ },
+ '33': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '34': {
+ 'a': [2, 40],
+ 'r': [2, 40],
+ 't': [2, 40],
+ 'u': [2, 40],
+ 'v': [2, 40],
+ 'x': [2, 40],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '35': {
+ 'a': [2, 37],
+ 'r': [2, 37],
+ 't': [2, 37],
+ 'u': [2, 37],
+ 'v': [2, 37],
+ 'x': [2, 37],
+ 'p': [2, 37],
+ 'q': [2, 37],
+ 'b': [2, 37],
+ 's': [2, 37],
+ 'm': [2, 37]
+ },
+ '36': {
+ 'a': [2, 19],
+ 'r': [2, 19],
+ 't': [2, 19],
+ 'u': [2, 19],
+ 'v': [2, 19],
+ 'x': [2, 19],
+ 'p': [2, 19],
+ 'q': [2, 19],
+ 'b': [2, 19],
+ 's': [2, 19],
+ 'm': [2, 19],
+ 'l': [2, 19]
+ },
+ '37': {
+ 'n': [2, 17],
+ 'o': [2, 17]
+ },
+ '38': {
+ 'n': [2, 18],
+ 'o': [2, 18]
+ },
+ '39': {
+ 'n': [2, 13],
+ 'o': [2, 13]
+ },
+ '40': {
+ 'n': [2, 14],
+ 'o': [2, 14]
+ },
+ '41': {
+ 'n': [2, 15],
+ 'o': [2, 15]
+ },
+ '42': {
+ 'n': [2, 16],
+ 'o': [2, 16]
+ },
+ '43': {
+ 'n': [1, undefined$1, 48],
+ 'o': [1, undefined$1, 49]
+ },
+ '44': {
+ 'a': [2, 25],
+ 'r': [2, 25],
+ 't': [2, 25],
+ 'u': [2, 25],
+ 'v': [2, 25],
+ 'x': [2, 25],
+ 'p': [2, 25],
+ 'q': [2, 25],
+ 'b': [2, 25],
+ 's': [2, 25],
+ 'm': [2, 25]
+ },
+ '45': {
+ 'l': [1, undefined$1, 51]
+ },
+ '46': {
+ 'a': [2, 2],
+ 'r': [2, 2],
+ 't': [1, undefined$1, 29],
+ 'u': [1, undefined$1, 30],
+ 'v': [1, undefined$1, 31],
+ 'x': [1, undefined$1, 32]
+ },
+ '47': {
+ 'a': [2, 4],
+ 'r': [2, 4],
+ 't': [2, 4],
+ 'u': [2, 4],
+ 'v': [2, 4],
+ 'x': [2, 4]
+ },
+ '48': {
+ 'c': [2, 20]
+ },
+ '49': {
+ 'c': [2, 21]
+ },
+ '50': {
+ 'c': [1, undefined$1, 52]
+ },
+ '51': {
+ 'a': [2, 23],
+ 'r': [2, 23],
+ 't': [2, 23],
+ 'u': [2, 23],
+ 'v': [2, 23],
+ 'x': [2, 23],
+ 'p': [2, 23],
+ 'q': [2, 23],
+ 'b': [2, 23],
+ 's': [2, 23],
+ 'm': [2, 23],
+ 'l': [2, 23]
+ },
+ '52': {
+ 'a': [2, 22],
+ 'r': [2, 22],
+ 't': [2, 22],
+ 'u': [2, 22],
+ 'v': [2, 22],
+ 'x': [2, 22],
+ 'p': [2, 22],
+ 'q': [2, 22],
+ 'b': [2, 22],
+ 's': [2, 22],
+ 'm': [2, 22],
+ 'l': [2, 22]
+ }
+ }
+ };
+
+ parser.parse = function parse(input, filename) {
+ var self = this,
+ lexer = self.lexer,
+ state,
+ symbol,
+ action,
+ table = self.table,
+ gotos = table.gotos,
+ tableAction = table.action,
+ productions = self.productions,
+ valueStack = [null],
+ // for debug info
+ prefix = filename ? 'in file: ' + filename + ' ' : '',
+ stack = [0];
+ lexer.resetInput(input);
+
+ while (1) {
+ // retrieve state number from top of stack
+ state = stack[stack.length - 1];
+
+ if (!symbol) {
+ symbol = lexer.lex();
+ }
+
+ if (symbol) {
+ // read action for current state and first input
+ action = tableAction[state] && tableAction[state][symbol];
+ } else {
+ action = null;
+ }
+
+ if (!action) {
+ var expected = [],
+ error; //#JSCOVERAGE_IF
+
+ if (tableAction[state]) {
+ for (var symbolForState in tableAction[state]) {
+ expected.push(self.lexer.mapReverseSymbol(symbolForState));
+ }
+ }
+
+ error = prefix + 'syntax error at line ' + lexer.lineNumber + ':\n' + lexer.showDebugInfo() + '\n' + 'expect ' + expected.join(', ');
+ throw new Error(error);
+ }
+
+ switch (action[GrammarConst.TYPE_INDEX]) {
+ case GrammarConst.SHIFT_TYPE:
+ stack.push(symbol);
+ valueStack.push(lexer.text); // push state
+
+ stack.push(action[GrammarConst.TO_INDEX]); // allow to read more
+
+ symbol = null;
+ break;
+
+ case GrammarConst.REDUCE_TYPE:
+ var production = productions[action[GrammarConst.PRODUCTION_INDEX]],
+ reducedSymbol = production.symbol || production[0],
+ reducedAction = production.action || production[2],
+ reducedRhs = production.rhs || production[1],
+ len = reducedRhs.length,
+ i = 0,
+ ret,
+ $$ = valueStack[valueStack.length - len]; // default to $$ = $1
+
+ ret = undefined$1;
+ self.$$ = $$;
+
+ for (; i < len; i++) {
+ self['$' + (len - i)] = valueStack[valueStack.length - 1 - i];
+ }
+
+ if (reducedAction) {
+ ret = reducedAction.call(self);
+ }
+
+ if (ret !== undefined$1) {
+ $$ = ret;
+ } else {
+ $$ = self.$$;
+ }
+
+ stack = stack.slice(0, -1 * len * 2);
+ valueStack = valueStack.slice(0, -1 * len);
+ stack.push(reducedSymbol);
+ valueStack.push($$);
+ var newState = gotos[stack[stack.length - 2]][stack[stack.length - 1]];
+ stack.push(newState);
+ break;
+
+ case GrammarConst.ACCEPT_TYPE:
+ return $$;
+ }
+ }
+ };
+
+ return parser;
+ }();
+
+ {
+ module.exports = parser;
+ }
+ }(parser$1));
+
+ /**
+ * @ignore
+ * css3 selector engine for ie6-8
+ * @author yiminghe@gmail.com
+ */
+
+ var util = util$2.exports;
+
+ var parser = parser$1.exports;
+
+ var EXPANDO_SELECTOR_KEY = '_ks_data_selector_id_',
+ caches = {},
+ isContextXML,
+ uuid = 0,
+ subMatchesCache = {},
+ getAttr = function (el, name) {
+ if (isContextXML) {
+ return util.getSimpleAttr(el, name);
+ } else {
+ return util.attr(el, name);
+ }
+ },
+ hasSingleClass = util.hasSingleClass,
+ isTag = util.isTag,
+ aNPlusB = /^(([+-]?(?:\d+)?)?n)?([+-]?\d+)?$/; // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+
+
+ var unescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
+ unescapeFn = function (_, escaped) {
+ var high = '0x' + escaped - 0x10000; // NaN means non-codepoint
+
+ return isNaN(high) ? escaped : // BMP codepoint
+ high < 0 ? String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
+ };
+
+ var matchExpr;
+ var pseudoFnExpr = {
+ 'nth-child': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ count = 0,
+ child,
+ ret,
+ len = childNodes.length;
+
+ for (; count < len; count++) {
+ child = childNodes[count];
+
+ if (child.nodeType === 1) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-last-child': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ len = childNodes.length,
+ count = len - 1,
+ child,
+ ret;
+
+ for (; count >= 0; count--) {
+ child = childNodes[count];
+
+ if (child.nodeType === 1) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-of-type': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ elType = el.tagName,
+ count = 0,
+ child,
+ ret,
+ len = childNodes.length;
+
+ for (; count < len; count++) {
+ child = childNodes[count];
+
+ if (child.tagName === elType) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-last-of-type': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ len = childNodes.length,
+ elType = el.tagName,
+ count = len - 1,
+ child,
+ ret;
+
+ for (; count >= 0; count--) {
+ child = childNodes[count];
+
+ if (child.tagName === elType) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ lang: function (el, lang) {
+ var elLang;
+ lang = unEscape(lang.toLowerCase());
+
+ do {
+ if (elLang = isContextXML ? el.getAttribute('xml:lang') || el.getAttribute('lang') : el.lang) {
+ elLang = elLang.toLowerCase();
+ return elLang === lang || elLang.indexOf(lang + '-') === 0;
+ }
+ } while ((el = el.parentNode) && el.nodeType === 1);
+
+ return false;
+ },
+ not: function (el, negationArg) {
+ return !matchExpr[negationArg.t](el, negationArg.value);
+ }
+ };
+ var pseudoIdentExpr = {
+ empty: function (el) {
+ var childNodes = el.childNodes,
+ index = 0,
+ len = childNodes.length - 1,
+ child,
+ nodeType;
+
+ for (; index < len; index++) {
+ child = childNodes[index];
+ nodeType = child.nodeType; // only element nodes and content nodes
+ // (such as Dom [Dom-LEVEL-3-CORE] text nodes,
+ // CDATA nodes, and entity references
+
+ if (nodeType === 1 || nodeType === 3 || nodeType === 4 || nodeType === 5) {
+ return 0;
+ }
+ }
+
+ return 1;
+ },
+ root: function (el) {
+ if (el.nodeType === 9) {
+ return true;
+ }
+
+ return el.ownerDocument && el === el.ownerDocument.documentElement;
+ },
+ 'first-child': function (el) {
+ return pseudoFnExpr['nth-child'](el, 1);
+ },
+ 'last-child': function (el) {
+ return pseudoFnExpr['nth-last-child'](el, 1);
+ },
+ 'first-of-type': function (el) {
+ return pseudoFnExpr['nth-of-type'](el, 1);
+ },
+ 'last-of-type': function (el) {
+ return pseudoFnExpr['nth-last-of-type'](el, 1);
+ },
+ 'only-child': function (el) {
+ return pseudoIdentExpr['first-child'](el) && pseudoIdentExpr['last-child'](el);
+ },
+ 'only-of-type': function (el) {
+ return pseudoIdentExpr['first-of-type'](el) && pseudoIdentExpr['last-of-type'](el);
+ },
+ focus: function (el) {
+ var doc = el.ownerDocument;
+ return doc && el === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(el.type || el.href || el.tabIndex >= 0);
+ },
+ target: function (el) {
+ var hash = location.hash;
+ return hash && hash.slice(1) === getAttr(el, 'id');
+ },
+ enabled: function (el) {
+ return !el.disabled;
+ },
+ disabled: function (el) {
+ return el.disabled;
+ },
+ checked: function (el) {
+ var nodeName = el.nodeName.toLowerCase();
+ return nodeName === 'input' && el.checked || nodeName === 'option' && el.selected;
+ }
+ };
+ var attributeExpr = {
+ '~=': function (elValue, value) {
+ if (!value || value.indexOf(' ') > -1) {
+ return 0;
+ }
+
+ return (' ' + elValue + ' ').indexOf(' ' + value + ' ') !== -1;
+ },
+ '|=': function (elValue, value) {
+ return (' ' + elValue).indexOf(' ' + value + '-') !== -1;
+ },
+ '^=': function (elValue, value) {
+ return value && util.startsWith(elValue, value);
+ },
+ '$=': function (elValue, value) {
+ return value && util.endsWith(elValue, value);
+ },
+ '*=': function (elValue, value) {
+ return value && elValue.indexOf(value) !== -1;
+ },
+ '=': function (elValue, value) {
+ return elValue === value;
+ }
+ };
+ var relativeExpr = {
+ '>': {
+ dir: 'parentNode',
+ immediate: 1
+ },
+ ' ': {
+ dir: 'parentNode'
+ },
+ '+': {
+ dir: 'previousSibling',
+ immediate: 1
+ },
+ '~': {
+ dir: 'previousSibling'
+ }
+ };
+ matchExpr = {
+ tag: isTag,
+ cls: hasSingleClass,
+ id: function (el, value) {
+ return getAttr(el, 'id') === value;
+ },
+ attrib: function (el, value) {
+ var name = value.ident;
+
+ if (!isContextXML) {
+ name = name.toLowerCase();
+ }
+
+ var elValue = getAttr(el, name);
+ var match = value.match;
+
+ if (!match && elValue !== undefined) {
+ return 1;
+ } else if (match) {
+ if (elValue === undefined) {
+ return 0;
+ }
+
+ var matchFn = attributeExpr[match];
+
+ if (matchFn) {
+ return matchFn(elValue + '', value.value + '');
+ }
+ }
+
+ return 0;
+ },
+ pseudo: function (el, value) {
+ var fn, fnStr, ident;
+
+ if (fnStr = value.fn) {
+ if (!(fn = pseudoFnExpr[fnStr])) {
+ throw new SyntaxError('Syntax error: not support pseudo: ' + fnStr);
+ }
+
+ return fn(el, value.param);
+ }
+
+ if (ident = value.ident) {
+ if (!pseudoIdentExpr[ident]) {
+ throw new SyntaxError('Syntax error: not support pseudo: ' + ident);
+ }
+
+ return pseudoIdentExpr[ident](el);
+ }
+
+ return 0;
+ }
+ };
+
+ function unEscape(str) {
+ return str.replace(unescape, unescapeFn);
+ }
+
+ parser.lexer.yy = {
+ trim: util.trim,
+ unEscape: unEscape,
+ unEscapeStr: function (str) {
+ return this.unEscape(str.slice(1, -1));
+ }
+ };
+
+ function resetStatus() {
+ subMatchesCache = {};
+ }
+
+ function dir(el, direction) {
+ do {
+ el = el[direction];
+ } while (el && el.nodeType !== 1);
+
+ return el;
+ }
+
+ function getAb(param) {
+ var a = 0,
+ match,
+ b = 0;
+
+ if (typeof param === 'number') {
+ b = param;
+ } else if (param === 'odd') {
+ a = 2;
+ b = 1;
+ } else if (param === 'even') {
+ a = 2;
+ b = 0;
+ } else if (match = param.replace(/\s/g, '').match(aNPlusB)) {
+ if (match[1]) {
+ a = parseInt(match[2], 10);
+
+ if (isNaN(a)) {
+ if (match[2] === '-') {
+ a = -1;
+ } else {
+ a = 1;
+ }
+ }
+ } else {
+ a = 0;
+ }
+
+ b = parseInt(match[3], 10) || 0;
+ }
+
+ return {
+ a: a,
+ b: b
+ };
+ }
+
+ function matchIndexByAb(index, a, b, eq) {
+ if (a === 0) {
+ if (index === b) {
+ return eq;
+ }
+ } else {
+ if ((index - b) / a >= 0 && (index - b) % a === 0 && eq) {
+ return 1;
+ }
+ }
+
+ return undefined;
+ }
+
+ function isXML(elem) {
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName.toLowerCase() !== 'html' : false;
+ }
+
+ function matches(str, seeds) {
+ return select$1(str, null, seeds);
+ }
+
+ function singleMatch(el, match) {
+ if (!match) {
+ return true;
+ }
+
+ if (!el) {
+ return false;
+ }
+
+ if (el.nodeType === 9) {
+ return false;
+ }
+
+ var matched = 1,
+ matchSuffix = match.suffix,
+ matchSuffixLen,
+ matchSuffixIndex;
+
+ if (match.t === 'tag') {
+ matched &= matchExpr.tag(el, match.value);
+ }
+
+ if (matched && matchSuffix) {
+ matchSuffixLen = matchSuffix.length;
+ matchSuffixIndex = 0;
+
+ for (; matched && matchSuffixIndex < matchSuffixLen; matchSuffixIndex++) {
+ var singleMatchSuffix = matchSuffix[matchSuffixIndex],
+ singleMatchSuffixType = singleMatchSuffix.t;
+
+ if (matchExpr[singleMatchSuffixType]) {
+ matched &= matchExpr[singleMatchSuffixType](el, singleMatchSuffix.value);
+ }
+ }
+ }
+
+ return matched;
+ } // match by adjacent immediate single selector match
+
+
+ function matchImmediate(el, match) {
+ var matched = 1,
+ startEl = el,
+ relativeOp,
+ startMatch = match;
+
+ do {
+ matched &= singleMatch(el, match);
+
+ if (matched) {
+ // advance
+ match = match && match.prev;
+
+ if (!match) {
+ return true;
+ }
+
+ relativeOp = relativeExpr[match.nextCombinator];
+ el = dir(el, relativeOp.dir);
+
+ if (!relativeOp.immediate) {
+ return {
+ // advance for non-immediate
+ el: el,
+ match: match
+ };
+ }
+ } else {
+ relativeOp = relativeExpr[match.nextCombinator];
+
+ if (relativeOp.immediate) {
+ // retreat but advance startEl
+ return {
+ el: dir(startEl, relativeExpr[startMatch.nextCombinator].dir),
+ match: startMatch
+ };
+ } else {
+ // advance (before immediate match + jump unmatched)
+ return {
+ el: el && dir(el, relativeOp.dir),
+ match: match
+ };
+ }
+ }
+ } while (el); // only occur when match immediate
+
+
+ return {
+ el: dir(startEl, relativeExpr[startMatch.nextCombinator].dir),
+ match: startMatch
+ };
+ } // find fixed part, fixed with seeds
+
+
+ function findFixedMatchFromHead(el, head) {
+ var relativeOp,
+ cur = head;
+
+ do {
+ if (!singleMatch(el, cur)) {
+ return null;
+ }
+
+ cur = cur.prev;
+
+ if (!cur) {
+ return true;
+ }
+
+ relativeOp = relativeExpr[cur.nextCombinator];
+ el = dir(el, relativeOp.dir);
+ } while (el && relativeOp.immediate);
+
+ if (!el) {
+ return null;
+ }
+
+ return {
+ el: el,
+ match: cur
+ };
+ }
+
+ function genId(el) {
+ var selectorId;
+
+ if (isContextXML) {
+ if (!(selectorId = el.getAttribute(EXPANDO_SELECTOR_KEY))) {
+ el.setAttribute(EXPANDO_SELECTOR_KEY, selectorId = +new Date() + '_' + ++uuid);
+ }
+ } else {
+ if (!(selectorId = el[EXPANDO_SELECTOR_KEY])) {
+ selectorId = el[EXPANDO_SELECTOR_KEY] = +new Date() + '_' + ++uuid;
+ }
+ }
+
+ return selectorId;
+ }
+
+ function matchSub(el, match) {
+ var selectorId = genId(el),
+ matchKey;
+ matchKey = selectorId + '_' + (match.order || 0);
+
+ if (matchKey in subMatchesCache) {
+ return subMatchesCache[matchKey];
+ }
+
+ subMatchesCache[matchKey] = matchSubInternal(el, match);
+ return subMatchesCache[matchKey];
+ } // recursive match by sub selector string from right to left
+ // grouped by immediate selectors
+
+
+ function matchSubInternal(el, match) {
+ var matchImmediateRet = matchImmediate(el, match);
+
+ if (matchImmediateRet === true) {
+ return true;
+ } else {
+ el = matchImmediateRet.el;
+ match = matchImmediateRet.match;
+
+ while (el) {
+ if (matchSub(el, match)) {
+ return true;
+ }
+
+ el = dir(el, relativeExpr[match.nextCombinator].dir);
+ }
+
+ return false;
+ }
+ }
+
+ function select$1(str, context, seeds) {
+ if (!caches[str]) {
+ caches[str] = parser.parse(str);
+ }
+
+ var selector = caches[str],
+ groupIndex = 0,
+ groupLen = selector.length,
+ contextDocument,
+ group,
+ ret = [];
+
+ if (seeds) {
+ context = context || seeds[0].ownerDocument;
+ }
+
+ contextDocument = context && context.ownerDocument || typeof document !== 'undefined' && document;
+
+ if (context && context.nodeType === 9 && !contextDocument) {
+ contextDocument = context;
+ }
+
+ context = context || contextDocument;
+ isContextXML = isXML(context);
+
+ for (; groupIndex < groupLen; groupIndex++) {
+ resetStatus();
+ group = selector[groupIndex];
+ var suffix = group.suffix,
+ suffixIndex,
+ suffixLen,
+ seedsIndex,
+ mySeeds = seeds,
+ seedsLen,
+ id = null;
+
+ if (!mySeeds) {
+ if (suffix && !isContextXML) {
+ suffixIndex = 0;
+ suffixLen = suffix.length;
+
+ for (; suffixIndex < suffixLen; suffixIndex++) {
+ var singleSuffix = suffix[suffixIndex];
+
+ if (singleSuffix.t === 'id') {
+ id = singleSuffix.value;
+ break;
+ }
+ }
+ }
+
+ if (id) {
+ // http://yiminghe.github.io/lab/playground/fragment-selector/selector.html
+ var doesNotHasById = !context.getElementById,
+ contextInDom = util.contains(contextDocument, context),
+ tmp = doesNotHasById ? contextInDom ? contextDocument.getElementById(id) : null : context.getElementById(id); // id bug
+ // https://github.com/kissyteam/kissy/issues/67
+
+ if (!tmp && doesNotHasById || tmp && getAttr(tmp, 'id') !== id) {
+ var tmps = util.getElementsByTagName('*', context),
+ tmpLen = tmps.length,
+ tmpI = 0;
+
+ for (; tmpI < tmpLen; tmpI++) {
+ tmp = tmps[tmpI];
+
+ if (getAttr(tmp, 'id') === id) {
+ mySeeds = [tmp];
+ break;
+ }
+ }
+
+ if (tmpI === tmpLen) {
+ mySeeds = [];
+ }
+ } else {
+ if (contextInDom && tmp && context !== contextDocument) {
+ tmp = util.contains(context, tmp) ? tmp : null;
+ }
+
+ mySeeds = tmp ? [tmp] : [];
+ }
+ } else {
+ mySeeds = util.getElementsByTagName(group.value || '*', context);
+ }
+ }
+
+ seedsIndex = 0;
+ seedsLen = mySeeds.length;
+
+ if (!seedsLen) {
+ continue;
+ }
+
+ for (; seedsIndex < seedsLen; seedsIndex++) {
+ var seed = mySeeds[seedsIndex];
+ var matchHead = findFixedMatchFromHead(seed, group);
+
+ if (matchHead === true) {
+ ret.push(seed);
+ } else if (matchHead) {
+ if (matchSub(matchHead.el, matchHead.match)) {
+ ret.push(seed);
+ }
+ }
+ }
+ }
+
+ if (groupLen > 1) {
+ ret = util.unique(ret);
+ }
+
+ return ret;
+ }
+
+ var querySelector$1 = select$1;
+
+ select$1.parse = function (str) {
+ return parser.parse(str);
+ };
+
+ select$1.matches = matches;
+ select$1.util = util;
+ select$1.version = '@VERSION@';
+
+ var querySelector = querySelector$1;
+
+ var hyphenExpression = /-+([a-z])/gi;
+
+ function upperCaseFirstMatch(match, c, offset) {
+ if (offset !== 0) {
+ return c.toUpperCase();
+ } else {
+ return c;
+ }
+ }
+
+ function camelCase$2(str) {
+ var camelCased = str.replace(hyphenExpression, upperCaseFirstMatch);
+ hyphenExpression.lastIndex = 0;
+ return camelCased;
+ }
+
+ var camelCase_1 = camelCase$2;
+
+ function isString$1(value) {
+ return typeof value === 'string';
+ }
+
+ var isString_1 = isString$1;
+
+ function isUndefined$1(value) {
+ return typeof value === 'undefined';
+ }
+
+ var isUndefined_1 = isUndefined$1;
+
+ function assign$1(dest) {
+ var args = arguments;
+ var source;
+
+ for (var i = 1; i < args.length; i++) {
+ source = args[i];
+
+ for (var key in source) {
+ dest[key] = source[key];
+ }
+ }
+
+ return dest;
+ }
+
+ var assign_1 = assign$1;
+
+ function mapValues$2(source, fn) {
+ var destination = {};
+
+ for (var key in source) {
+ if (source.hasOwnProperty(key)) {
+ destination[key] = fn(source[key]);
+ }
+ }
+
+ return destination;
+ }
+
+ var mapValues_1 = mapValues$2;
+
+ var camelCase$1 = camelCase_1;
+
+ function styleCamelCase$1(name) {
+ var camel = camelCase$1(name); // Detect if the style property is already camelCased
+ // To not convert Webkit*, Moz* and O* to lowercase
+
+ if (camel.charAt(0).toUpperCase() === name.charAt(0)) {
+ return name.charAt(0) + camel.slice(1);
+ }
+
+ if (name.charAt(0) === '-') {
+ return camel.indexOf('ms') === 0 ? camel : camel.charAt(0).toUpperCase() + camel.slice(1);
+ } else {
+ return camel;
+ }
+ }
+
+ var styleCamelCase_1 = styleCamelCase$1;
+
+ var React$2 = require('react');
+
+ var styleAttr = lib;
+
+ var querySelectorAll = querySelector;
+
+ var camelCase = camelCase_1;
+
+ var isString = isString_1;
+
+ var isUndefined = isUndefined_1;
+
+ var assign = assign_1;
+
+ var mapValues$1 = mapValues_1;
+
+ var styleCamelCase = styleCamelCase_1;
+
+ function element$1() {
+ function Element(nodeName, parentNode) {
+ this.nodeName = nodeName;
+ this.parentNode = parentNode;
+ this.childNodes = [];
+ this.eventListeners = {};
+ this.text = '';
+ var self = this;
+ var props = this.props = {
+ ref: function (component) {
+ self.component = component;
+ },
+ style: {
+ setProperty: function (name, value) {
+ props.style[styleCamelCase(name)] = value;
+ },
+ getProperty: function (name) {
+ return props.style[styleCamelCase(name)] || '';
+ },
+ getPropertyValue: function (name) {
+ return props.style.getProperty(name);
+ },
+ removeProperty: function (name) {
+ delete props.style[styleCamelCase(name)];
+ }
+ }
+ };
+ this.style = props.style;
+ }
+
+ Element.ELEMENT_NODE = 1;
+ Element.DOCUMENT_POSITION_DISCONNECTED = 1;
+ Element.DOCUMENT_POSITION_PRECEDING = 2;
+ Element.DOCUMENT_POSITION_FOLLOWING = 4;
+ Element.DOCUMENT_POSITION_CONTAINS = 8;
+ Element.DOCUMENT_POSITION_CONTAINED_BY = 16;
+ Element.prototype.nodeType = 1; // This was easy to do with Vim.
+ // Just saying.
+
+ Element.prototype.eventNameMappings = {
+ 'blur': 'onBlur',
+ 'change': 'onChange',
+ 'click': 'onClick',
+ 'contextmenu': 'onContextMenu',
+ 'copy': 'onCopy',
+ 'cut': 'onCut',
+ 'doubleclick': 'onDoubleClick',
+ 'drag': 'onDrag',
+ 'dragend': 'onDragEnd',
+ 'dragenter': 'onDragEnter',
+ 'dragexit': 'onDragExit',
+ 'dragleave': 'onDragLeave',
+ 'dragover': 'onDragOver',
+ 'dragstart': 'onDragStart',
+ 'drop': 'onDrop',
+ 'error': 'onError',
+ 'focus': 'onFocus',
+ 'input': 'onInput',
+ 'keydown': 'onKeyDown',
+ 'keypress': 'onKeyPress',
+ 'keyup': 'onKeyUp',
+ 'load': 'onLoad',
+ 'mousedown': 'onMouseDown',
+ 'mouseenter': 'onMouseEnter',
+ 'mouseleave': 'onMouseLeave',
+ 'mousemove': 'onMouseMove',
+ 'mouseout': 'onMouseOut',
+ 'mouseover': 'onMouseOver',
+ 'mouseup': 'onMouseUp',
+ 'paste': 'onPaste',
+ 'scroll': 'onScroll',
+ 'submit': 'onSubmit',
+ 'touchcancel': 'onTouchCancel',
+ 'touchend': 'onTouchEnd',
+ 'touchmove': 'onTouchMove',
+ 'touchstart': 'onTouchStart',
+ 'wheel': 'onWheel'
+ };
+ Element.prototype.skipNameTransformationExpressions = [/^data-/, /^aria-/];
+ Element.prototype.attributeNameMappings = {
+ 'class': 'className'
+ };
+
+ Element.prototype.attributeToPropName = function (name) {
+ var skipTransformMatches = this.skipNameTransformationExpressions.map(function (expr) {
+ return expr.test(name);
+ });
+
+ if (skipTransformMatches.some(Boolean)) {
+ return name;
+ } else {
+ return this.attributeNameMappings[name] || camelCase(name);
+ }
+ };
+
+ Element.prototype.setAttribute = function (name, value) {
+ if (name === 'style' && isString(value)) {
+ var styles = styleAttr.parse(value);
+
+ for (var key in styles) {
+ this.style.setProperty(key, styles[key]);
+ }
+ } else {
+ this.props[this.attributeToPropName(name)] = value;
+ }
+ };
+
+ Element.prototype.getAttribute = function (name) {
+ return this.props[this.attributeToPropName(name)];
+ };
+
+ Element.prototype.getAttributeNode = function (name) {
+ var value = this.getAttribute(name);
+
+ if (!isUndefined(value)) {
+ return {
+ value: value,
+ specified: true
+ };
+ }
+ };
+
+ Element.prototype.removeAttribute = function (name) {
+ delete this.props[this.attributeToPropName(name)];
+ };
+
+ Element.prototype.eventToPropName = function (name) {
+ return this.eventNameMappings[name] || name;
+ };
+
+ Element.prototype.addEventListener = function (name, fn) {
+ var prop = this.eventToPropName(name);
+ this.eventListeners[prop] = this.eventListeners[prop] || [];
+ this.eventListeners[prop].push(fn);
+ };
+
+ Element.prototype.removeEventListener = function (name, fn) {
+ var listeners = this.eventListeners[this.eventToPropName(name)];
+
+ if (listeners) {
+ var match = listeners.indexOf(fn);
+
+ if (match !== -1) {
+ listeners.splice(match, 1);
+ }
+ }
+ };
+
+ Element.prototype.appendChild = function (el) {
+ if (el instanceof Element) {
+ el.parentNode = this;
+ }
+
+ this.childNodes.push(el);
+ return el;
+ };
+
+ Element.prototype.insertBefore = function (el, before) {
+ var index = this.childNodes.indexOf(before);
+ el.parentNode = this;
+
+ if (index !== -1) {
+ this.childNodes.splice(index, 0, el);
+ } else {
+ this.childNodes.push(el);
+ }
+
+ return el;
+ };
+
+ Element.prototype.removeChild = function (child) {
+ var target = this.childNodes.indexOf(child);
+ this.childNodes.splice(target, 1);
+ };
+
+ Element.prototype.querySelector = function () {
+ return this.querySelectorAll.apply(this, arguments)[0] || null;
+ };
+
+ Element.prototype.querySelectorAll = function (selector) {
+ if (!selector) {
+ throw new Error('Not enough arguments');
+ }
+
+ return querySelectorAll(selector, this);
+ };
+
+ Element.prototype.getElementsByTagName = function (nodeName) {
+ var children = this.children;
+
+ if (children.length === 0) {
+ return [];
+ } else {
+ var matches;
+
+ if (nodeName !== '*') {
+ matches = children.filter(function (el) {
+ return el.nodeName === nodeName;
+ });
+ } else {
+ matches = children;
+ }
+
+ var childMatches = children.map(function (el) {
+ return el.getElementsByTagName(nodeName);
+ });
+ return matches.concat.apply(matches, childMatches);
+ }
+ };
+
+ Element.prototype.getElementById = function (id) {
+ var children = this.children;
+
+ if (children.length === 0) {
+ return null;
+ } else {
+ var match = children.filter(function (el) {
+ return el.getAttribute('id') === id;
+ })[0];
+
+ if (match) {
+ return match;
+ } else {
+ var childMatches = children.map(function (el) {
+ return el.getElementById(id);
+ });
+ return childMatches.filter(function (match) {
+ return match !== null;
+ })[0] || null;
+ }
+ }
+ };
+
+ Element.prototype.getBoundingClientRect = function () {
+ if (!this.component) {
+ return undefined;
+ }
+
+ return this.component.getBoundingClientRect();
+ };
+
+ Element.prototype.cloneNode = function (deep) {
+ // if deep is not provided, it default to true
+ if (deep === undefined) {
+ deep = true;
+ }
+
+ var el = new Element(this.nodeName, this.parentNode); // copy nodeType
+
+ if (this.nodeType) {
+ el.nodeType = this.nodeType;
+ }
+
+ var k; // copy the props
+
+ for (k in this.props) {
+ if (this.props.hasOwnProperty(k) && k !== 'ref' && k !== 'style') {
+ el.props[k] = this.props[k];
+ }
+ } // copy the styles
+
+
+ for (k in this.style) {
+ if (this.style.hasOwnProperty(k) && ['setProperty', 'getProperty', 'getPropertyValue', 'removeProperty'].indexOf(k) === -1) {
+ el.style[k] = this.style[k];
+ }
+ }
+
+ if (deep) {
+ el.childNodes = this.childNodes.map(function (childEl) {
+ if (!childEl.nodeType) {
+ // It's a React element, let React clone it
+ return React$2.cloneElement(childEl);
+ } // either Element or true dom element
+
+
+ childEl = childEl.cloneNode(true); // if a faux dom element, modify parentNode
+
+ if (childEl instanceof Element) {
+ childEl.parentNode = el;
+ }
+
+ return childEl;
+ });
+ }
+
+ return el;
+ };
+
+ Element.prototype.toReact = function (index) {
+ index = index || 0;
+ var props = assign({}, this.props);
+ props.style = assign({}, props.style);
+ var originalElement = this;
+
+ function uniqueKey() {
+ return 'faux-dom-' + index;
+ }
+
+ if (isUndefined(props.key)) {
+ props.key = uniqueKey();
+ }
+
+ delete props.style.setProperty;
+ delete props.style.getProperty;
+ delete props.style.getPropertyValue;
+ delete props.style.removeProperty;
+ assign(props, mapValues$1(this.eventListeners, function (listeners) {
+ return function (syntheticEvent) {
+ var event;
+
+ if (syntheticEvent) {
+ event = syntheticEvent.nativeEvent;
+ event.syntheticEvent = syntheticEvent;
+ }
+
+ mapValues$1(listeners, function (listener) {
+ listener.call(originalElement, event);
+ });
+ };
+ }));
+ return React$2.createElement(this.nodeName, props, this.text || this.children.map(function (el, i) {
+ if (el instanceof Element) {
+ return el.toReact(i);
+ } else {
+ return el;
+ }
+ }));
+ };
+
+ Element.prototype.compareDocumentPosition = function (other) {
+ function getFirstNodeByOrder(nodes, nodeOne, nodeTwo) {
+ return nodes.reduce(function (result, node) {
+ if (result !== false) {
+ return result;
+ } else if (node === nodeOne) {
+ return nodeOne;
+ } else if (node === nodeTwo) {
+ return nodeTwo;
+ } else if (node.childNodes) {
+ return getFirstNodeByOrder(node.childNodes, nodeOne, nodeTwo);
+ } else {
+ return false;
+ }
+ }, false);
+ }
+
+ function isAncestor(source, target) {
+ while (target.parentNode) {
+ target = target.parentNode;
+
+ if (target === source) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function eitherContains(left, right) {
+ return isAncestor(left, right) ? Element.DOCUMENT_POSITION_CONTAINED_BY + Element.DOCUMENT_POSITION_FOLLOWING : isAncestor(right, left) ? Element.DOCUMENT_POSITION_CONTAINS + Element.DOCUMENT_POSITION_PRECEDING : false;
+ }
+
+ function getRootNode(node) {
+ while (node.parentNode) {
+ node = node.parentNode;
+ }
+
+ return node;
+ }
+
+ if (this === other) {
+ return 0;
+ }
+
+ var referenceRoot = getRootNode(this);
+ var otherRoot = getRootNode(other);
+
+ if (referenceRoot !== otherRoot) {
+ return Element.DOCUMENT_POSITION_DISCONNECTED;
+ }
+
+ var result = eitherContains(this, other);
+
+ if (result) {
+ return result;
+ }
+
+ var first = getFirstNodeByOrder([referenceRoot], this, other);
+ return first === this ? Element.DOCUMENT_POSITION_FOLLOWING : first === other ? Element.DOCUMENT_POSITION_PRECEDING : Element.DOCUMENT_POSITION_DISCONNECTED;
+ };
+
+ Object.defineProperties(Element.prototype, {
+ nextSibling: {
+ get: function () {
+ var siblings = this.parentNode.children;
+ var me = siblings.indexOf(this);
+ return siblings[me + 1];
+ }
+ },
+ previousSibling: {
+ get: function () {
+ var siblings = this.parentNode.children;
+ var me = siblings.indexOf(this);
+ return siblings[me - 1];
+ }
+ },
+ innerHTML: {
+ get: function () {
+ return this.text;
+ },
+ set: function (text) {
+ this.text = text;
+ }
+ },
+ textContent: {
+ get: function () {
+ return this.text;
+ },
+ set: function (text) {
+ this.text = text;
+ }
+ },
+ children: {
+ get: function () {
+ // So far nodes created by this library are all of nodeType 1 (elements),
+ // but this could change in the future.
+ return this.childNodes.filter(function (el) {
+ if (!el.nodeType) {
+ // It's a React element, we always add it
+ return true;
+ } // It's a HTML node. We want to filter to have only nodes with type 1
+
+
+ return el.nodeType === 1;
+ });
+ }
+ }
+ }); // These NS methods are called by things like D3 if it spots a namespace.
+ // Like xlink:href. I don't care about namespaces, so these functions have NS aliases created.
+
+ var namespaceMethods = ['setAttribute', 'getAttribute', 'getAttributeNode', 'removeAttribute', 'getElementsByTagName', 'getElementById'];
+ namespaceMethods.forEach(function (name) {
+ var fn = Element.prototype[name];
+
+ Element.prototype[name + 'NS'] = function () {
+ return fn.apply(this, Array.prototype.slice.call(arguments, 1));
+ };
+ });
+ return Element;
+ }
+
+ var _element = element$1;
+
+ function window$2() {
+ var Window = {
+ getComputedStyle: function (node) {
+ return {
+ getPropertyValue: node.style.getProperty
+ };
+ }
+ };
+ return Window;
+ }
+
+ var _window = window$2;
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+ var _assign = objectAssign; // -- Inlined from fbjs --
+
+
+ var emptyObject = {};
+
+ {
+ Object.freeze(emptyObject);
+ }
+
+ var validateFormat = function validateFormat(format) {};
+
+ {
+ validateFormat = function validateFormat(format) {
+ if (format === undefined) {
+ throw new Error('invariant requires an error message argument');
+ }
+ };
+ }
+
+ function _invariant(condition, format, a, b, c, d, e, f) {
+ validateFormat(format);
+
+ if (!condition) {
+ var error;
+
+ if (format === undefined) {
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
+ } else {
+ var args = [a, b, c, d, e, f];
+ var argIndex = 0;
+ error = new Error(format.replace(/%s/g, function () {
+ return args[argIndex++];
+ }));
+ error.name = 'Invariant Violation';
+ }
+
+ error.framesToPop = 1; // we don't care about invariant's own frame
+
+ throw error;
+ }
+ }
+
+ var warning = function () {};
+
+ {
+ var printWarning = function printWarning(format) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ var argIndex = 0;
+ var message = 'Warning: ' + format.replace(/%s/g, function () {
+ return args[argIndex++];
+ });
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+
+ warning = function warning(condition, format) {
+ if (format === undefined) {
+ throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
+ }
+
+ if (format.indexOf('Failed Composite propType: ') === 0) {
+ return; // Ignore CompositeComponent proptype check.
+ }
+
+ if (!condition) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ printWarning.apply(undefined, [format].concat(args));
+ }
+ };
+ } // /-- Inlined from fbjs --
+
+
+ var MIXINS_KEY = 'mixins'; // Helper function to allow the creation of anonymous functions which do not
+ // have .name set to the name of the variable being assigned to.
+
+ function identity(fn) {
+ return fn;
+ }
+
+ var ReactPropTypeLocationNames;
+
+ {
+ ReactPropTypeLocationNames = {
+ prop: 'prop',
+ context: 'context',
+ childContext: 'child context'
+ };
+ }
+
+ function factory$3(ReactComponent, isValidElement, ReactNoopUpdateQueue) {
+ /**
+ * Policies that describe methods in `ReactClassInterface`.
+ */
+ var injectedMixins = [];
+ /**
+ * Composite components are higher-level components that compose other composite
+ * or host components.
+ *
+ * To create a new type of `ReactClass`, pass a specification of
+ * your new class to `React.createClass`. The only requirement of your class
+ * specification is that you implement a `render` method.
+ *
+ * var MyComponent = React.createClass({
+ * render: function() {
+ * return Hello World
;
+ * }
+ * });
+ *
+ * The class specification supports a specific protocol of methods that have
+ * special meaning (e.g. `render`). See `ReactClassInterface` for
+ * more the comprehensive protocol. Any other properties and methods in the
+ * class specification will be available on the prototype.
+ *
+ * @interface ReactClassInterface
+ * @internal
+ */
+
+ var ReactClassInterface = {
+ /**
+ * An array of Mixin objects to include when defining your component.
+ *
+ * @type {array}
+ * @optional
+ */
+ mixins: 'DEFINE_MANY',
+
+ /**
+ * An object containing properties and methods that should be defined on
+ * the component's constructor instead of its prototype (static methods).
+ *
+ * @type {object}
+ * @optional
+ */
+ statics: 'DEFINE_MANY',
+
+ /**
+ * Definition of prop types for this component.
+ *
+ * @type {object}
+ * @optional
+ */
+ propTypes: 'DEFINE_MANY',
+
+ /**
+ * Definition of context types for this component.
+ *
+ * @type {object}
+ * @optional
+ */
+ contextTypes: 'DEFINE_MANY',
+
+ /**
+ * Definition of context types this component sets for its children.
+ *
+ * @type {object}
+ * @optional
+ */
+ childContextTypes: 'DEFINE_MANY',
+ // ==== Definition methods ====
+
+ /**
+ * Invoked when the component is mounted. Values in the mapping will be set on
+ * `this.props` if that prop is not specified (i.e. using an `in` check).
+ *
+ * This method is invoked before `getInitialState` and therefore cannot rely
+ * on `this.state` or use `this.setState`.
+ *
+ * @return {object}
+ * @optional
+ */
+ getDefaultProps: 'DEFINE_MANY_MERGED',
+
+ /**
+ * Invoked once before the component is mounted. The return value will be used
+ * as the initial value of `this.state`.
+ *
+ * getInitialState: function() {
+ * return {
+ * isOn: false,
+ * fooBaz: new BazFoo()
+ * }
+ * }
+ *
+ * @return {object}
+ * @optional
+ */
+ getInitialState: 'DEFINE_MANY_MERGED',
+
+ /**
+ * @return {object}
+ * @optional
+ */
+ getChildContext: 'DEFINE_MANY_MERGED',
+
+ /**
+ * Uses props from `this.props` and state from `this.state` to render the
+ * structure of the component.
+ *
+ * No guarantees are made about when or how often this method is invoked, so
+ * it must not have side effects.
+ *
+ * render: function() {
+ * var name = this.props.name;
+ * return Hello, {name}!
;
+ * }
+ *
+ * @return {ReactComponent}
+ * @required
+ */
+ render: 'DEFINE_ONCE',
+ // ==== Delegate methods ====
+
+ /**
+ * Invoked when the component is initially created and about to be mounted.
+ * This may have side effects, but any external subscriptions or data created
+ * by this method must be cleaned up in `componentWillUnmount`.
+ *
+ * @optional
+ */
+ componentWillMount: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component has been mounted and has a DOM representation.
+ * However, there is no guarantee that the DOM node is in the document.
+ *
+ * Use this as an opportunity to operate on the DOM when the component has
+ * been mounted (initialized and rendered) for the first time.
+ *
+ * @param {DOMElement} rootNode DOM element representing the component.
+ * @optional
+ */
+ componentDidMount: 'DEFINE_MANY',
+
+ /**
+ * Invoked before the component receives new props.
+ *
+ * Use this as an opportunity to react to a prop transition by updating the
+ * state using `this.setState`. Current props are accessed via `this.props`.
+ *
+ * componentWillReceiveProps: function(nextProps, nextContext) {
+ * this.setState({
+ * likesIncreasing: nextProps.likeCount > this.props.likeCount
+ * });
+ * }
+ *
+ * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
+ * transition may cause a state change, but the opposite is not true. If you
+ * need it, you are probably looking for `componentWillUpdate`.
+ *
+ * @param {object} nextProps
+ * @optional
+ */
+ componentWillReceiveProps: 'DEFINE_MANY',
+
+ /**
+ * Invoked while deciding if the component should be updated as a result of
+ * receiving new props, state and/or context.
+ *
+ * Use this as an opportunity to `return false` when you're certain that the
+ * transition to the new props/state/context will not require a component
+ * update.
+ *
+ * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
+ * return !equal(nextProps, this.props) ||
+ * !equal(nextState, this.state) ||
+ * !equal(nextContext, this.context);
+ * }
+ *
+ * @param {object} nextProps
+ * @param {?object} nextState
+ * @param {?object} nextContext
+ * @return {boolean} True if the component should update.
+ * @optional
+ */
+ shouldComponentUpdate: 'DEFINE_ONCE',
+
+ /**
+ * Invoked when the component is about to update due to a transition from
+ * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
+ * and `nextContext`.
+ *
+ * Use this as an opportunity to perform preparation before an update occurs.
+ *
+ * NOTE: You **cannot** use `this.setState()` in this method.
+ *
+ * @param {object} nextProps
+ * @param {?object} nextState
+ * @param {?object} nextContext
+ * @param {ReactReconcileTransaction} transaction
+ * @optional
+ */
+ componentWillUpdate: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component's DOM representation has been updated.
+ *
+ * Use this as an opportunity to operate on the DOM when the component has
+ * been updated.
+ *
+ * @param {object} prevProps
+ * @param {?object} prevState
+ * @param {?object} prevContext
+ * @param {DOMElement} rootNode DOM element representing the component.
+ * @optional
+ */
+ componentDidUpdate: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component is about to be removed from its parent and have
+ * its DOM representation destroyed.
+ *
+ * Use this as an opportunity to deallocate any external resources.
+ *
+ * NOTE: There is no `componentDidUnmount` since your component will have been
+ * destroyed by that point.
+ *
+ * @optional
+ */
+ componentWillUnmount: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillMount`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillMount: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillReceiveProps`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillUpdate`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillUpdate: 'DEFINE_MANY',
+ // ==== Advanced methods ====
+
+ /**
+ * Updates the component's currently mounted DOM representation.
+ *
+ * By default, this implements React's rendering and reconciliation algorithm.
+ * Sophisticated clients may wish to override this.
+ *
+ * @param {ReactReconcileTransaction} transaction
+ * @internal
+ * @overridable
+ */
+ updateComponent: 'OVERRIDE_BASE'
+ };
+ /**
+ * Similar to ReactClassInterface but for static methods.
+ */
+
+ var ReactClassStaticInterface = {
+ /**
+ * This method is invoked after a component is instantiated and when it
+ * receives new props. Return an object to update state in response to
+ * prop changes. Return null to indicate no change to state.
+ *
+ * If an object is returned, its keys will be merged into the existing state.
+ *
+ * @return {object || null}
+ * @optional
+ */
+ getDerivedStateFromProps: 'DEFINE_MANY_MERGED'
+ };
+ /**
+ * Mapping from class specification keys to special processing functions.
+ *
+ * Although these are declared like instance properties in the specification
+ * when defining classes using `React.createClass`, they are actually static
+ * and are accessible on the constructor instead of the prototype. Despite
+ * being static, they must be defined outside of the "statics" key under
+ * which all other static methods are defined.
+ */
+
+ var RESERVED_SPEC_KEYS = {
+ displayName: function (Constructor, displayName) {
+ Constructor.displayName = displayName;
+ },
+ mixins: function (Constructor, mixins) {
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ mixSpecIntoComponent(Constructor, mixins[i]);
+ }
+ }
+ },
+ childContextTypes: function (Constructor, childContextTypes) {
+ {
+ validateTypeDef(Constructor, childContextTypes, 'childContext');
+ }
+
+ Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
+ },
+ contextTypes: function (Constructor, contextTypes) {
+ {
+ validateTypeDef(Constructor, contextTypes, 'context');
+ }
+
+ Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
+ },
+
+ /**
+ * Special case getDefaultProps which should move into statics but requires
+ * automatic merging.
+ */
+ getDefaultProps: function (Constructor, getDefaultProps) {
+ if (Constructor.getDefaultProps) {
+ Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
+ } else {
+ Constructor.getDefaultProps = getDefaultProps;
+ }
+ },
+ propTypes: function (Constructor, propTypes) {
+ {
+ validateTypeDef(Constructor, propTypes, 'prop');
+ }
+
+ Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
+ },
+ statics: function (Constructor, statics) {
+ mixStaticSpecIntoComponent(Constructor, statics);
+ },
+ autobind: function () {}
+ };
+
+ function validateTypeDef(Constructor, typeDef, location) {
+ for (var propName in typeDef) {
+ if (typeDef.hasOwnProperty(propName)) {
+ // use a warning instead of an _invariant so components
+ // don't show up in prod but only in __DEV__
+ {
+ warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName);
+ }
+ }
+ }
+ }
+
+ function validateMethodOverride(isAlreadyDefined, name) {
+ var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; // Disallow overriding of base class methods unless explicitly allowed.
+
+ if (ReactClassMixin.hasOwnProperty(name)) {
+ _invariant(specPolicy === 'OVERRIDE_BASE', 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name);
+ } // Disallow defining methods more than once unless explicitly allowed.
+
+
+ if (isAlreadyDefined) {
+ _invariant(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED', 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name);
+ }
+ }
+ /**
+ * Mixin helper which handles policy validation and reserved
+ * specification keys when building React classes.
+ */
+
+
+ function mixSpecIntoComponent(Constructor, spec) {
+ if (!spec) {
+ {
+ var typeofSpec = typeof spec;
+ var isMixinValid = typeofSpec === 'object' && spec !== null;
+
+ {
+ warning(isMixinValid, "%s: You're attempting to include a mixin that is either null " + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec);
+ }
+ }
+
+ return;
+ }
+
+ _invariant(typeof spec !== 'function', "ReactClass: You're attempting to " + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.');
+
+ _invariant(!isValidElement(spec), "ReactClass: You're attempting to " + 'use a component as a mixin. Instead, just use a regular object.');
+
+ var proto = Constructor.prototype;
+ var autoBindPairs = proto.__reactAutoBindPairs; // By handling mixins before any other properties, we ensure the same
+ // chaining order is applied to methods with DEFINE_MANY policy, whether
+ // mixins are listed before or after these methods in the spec.
+
+ if (spec.hasOwnProperty(MIXINS_KEY)) {
+ RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
+ }
+
+ for (var name in spec) {
+ if (!spec.hasOwnProperty(name)) {
+ continue;
+ }
+
+ if (name === MIXINS_KEY) {
+ // We have already handled mixins in a special case above.
+ continue;
+ }
+
+ var property = spec[name];
+ var isAlreadyDefined = proto.hasOwnProperty(name);
+ validateMethodOverride(isAlreadyDefined, name);
+
+ if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
+ RESERVED_SPEC_KEYS[name](Constructor, property);
+ } else {
+ // Setup methods on prototype:
+ // The following member methods should not be automatically bound:
+ // 1. Expected ReactClass methods (in the "interface").
+ // 2. Overridden methods (that were mixed in).
+ var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
+ var isFunction = typeof property === 'function';
+ var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
+
+ if (shouldAutoBind) {
+ autoBindPairs.push(name, property);
+ proto[name] = property;
+ } else {
+ if (isAlreadyDefined) {
+ var specPolicy = ReactClassInterface[name]; // These cases should already be caught by validateMethodOverride.
+
+ _invariant(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY'), 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name); // For methods which are defined more than once, call the existing
+ // methods before calling the new property, merging if appropriate.
+
+
+ if (specPolicy === 'DEFINE_MANY_MERGED') {
+ proto[name] = createMergedResultFunction(proto[name], property);
+ } else if (specPolicy === 'DEFINE_MANY') {
+ proto[name] = createChainedFunction(proto[name], property);
+ }
+ } else {
+ proto[name] = property;
+
+ {
+ // Add verbose displayName to the function, which helps when looking
+ // at profiling tools.
+ if (typeof property === 'function' && spec.displayName) {
+ proto[name].displayName = spec.displayName + '_' + name;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function mixStaticSpecIntoComponent(Constructor, statics) {
+ if (!statics) {
+ return;
+ }
+
+ for (var name in statics) {
+ var property = statics[name];
+
+ if (!statics.hasOwnProperty(name)) {
+ continue;
+ }
+
+ var isReserved = (name in RESERVED_SPEC_KEYS);
+
+ _invariant(!isReserved, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name);
+
+ var isAlreadyDefined = (name in Constructor);
+
+ if (isAlreadyDefined) {
+ var specPolicy = ReactClassStaticInterface.hasOwnProperty(name) ? ReactClassStaticInterface[name] : null;
+
+ _invariant(specPolicy === 'DEFINE_MANY_MERGED', 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name);
+
+ Constructor[name] = createMergedResultFunction(Constructor[name], property);
+ return;
+ }
+
+ Constructor[name] = property;
+ }
+ }
+ /**
+ * Merge two objects, but throw if both contain the same key.
+ *
+ * @param {object} one The first object, which is mutated.
+ * @param {object} two The second object
+ * @return {object} one after it has been mutated to contain everything in two.
+ */
+
+
+ function mergeIntoWithNoDuplicateKeys(one, two) {
+ _invariant(one && two && typeof one === 'object' && typeof two === 'object', 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.');
+
+ for (var key in two) {
+ if (two.hasOwnProperty(key)) {
+ _invariant(one[key] === undefined, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key);
+
+ one[key] = two[key];
+ }
+ }
+
+ return one;
+ }
+ /**
+ * Creates a function that invokes two functions and merges their return values.
+ *
+ * @param {function} one Function to invoke first.
+ * @param {function} two Function to invoke second.
+ * @return {function} Function that invokes the two argument functions.
+ * @private
+ */
+
+
+ function createMergedResultFunction(one, two) {
+ return function mergedResult() {
+ var a = one.apply(this, arguments);
+ var b = two.apply(this, arguments);
+
+ if (a == null) {
+ return b;
+ } else if (b == null) {
+ return a;
+ }
+
+ var c = {};
+ mergeIntoWithNoDuplicateKeys(c, a);
+ mergeIntoWithNoDuplicateKeys(c, b);
+ return c;
+ };
+ }
+ /**
+ * Creates a function that invokes two functions and ignores their return vales.
+ *
+ * @param {function} one Function to invoke first.
+ * @param {function} two Function to invoke second.
+ * @return {function} Function that invokes the two argument functions.
+ * @private
+ */
+
+
+ function createChainedFunction(one, two) {
+ return function chainedFunction() {
+ one.apply(this, arguments);
+ two.apply(this, arguments);
+ };
+ }
+ /**
+ * Binds a method to the component.
+ *
+ * @param {object} component Component whose method is going to be bound.
+ * @param {function} method Method to be bound.
+ * @return {function} The bound method.
+ */
+
+
+ function bindAutoBindMethod(component, method) {
+ var boundMethod = method.bind(component);
+
+ {
+ boundMethod.__reactBoundContext = component;
+ boundMethod.__reactBoundMethod = method;
+ boundMethod.__reactBoundArguments = null;
+ var componentName = component.constructor.displayName;
+ var _bind = boundMethod.bind;
+
+ boundMethod.bind = function (newThis) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ } // User is trying to bind() an autobound method; we effectively will
+ // ignore the value of "this" that the user is trying to use, so
+ // let's warn.
+
+
+ if (newThis !== component && newThis !== null) {
+ {
+ warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName);
+ }
+ } else if (!args.length) {
+ {
+ warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName);
+ }
+
+ return boundMethod;
+ }
+
+ var reboundMethod = _bind.apply(boundMethod, arguments);
+
+ reboundMethod.__reactBoundContext = component;
+ reboundMethod.__reactBoundMethod = method;
+ reboundMethod.__reactBoundArguments = args;
+ return reboundMethod;
+ };
+ }
+
+ return boundMethod;
+ }
+ /**
+ * Binds all auto-bound methods in a component.
+ *
+ * @param {object} component Component whose method is going to be bound.
+ */
+
+
+ function bindAutoBindMethods(component) {
+ var pairs = component.__reactAutoBindPairs;
+
+ for (var i = 0; i < pairs.length; i += 2) {
+ var autoBindKey = pairs[i];
+ var method = pairs[i + 1];
+ component[autoBindKey] = bindAutoBindMethod(component, method);
+ }
+ }
+
+ var IsMountedPreMixin = {
+ componentDidMount: function () {
+ this.__isMounted = true;
+ }
+ };
+ var IsMountedPostMixin = {
+ componentWillUnmount: function () {
+ this.__isMounted = false;
+ }
+ };
+ /**
+ * Add more to the ReactClass base class. These are all legacy features and
+ * therefore not already part of the modern ReactComponent.
+ */
+
+ var ReactClassMixin = {
+ /**
+ * TODO: This will be deprecated because state should always keep a consistent
+ * type signature and the only use case for this, is to avoid that.
+ */
+ replaceState: function (newState, callback) {
+ this.updater.enqueueReplaceState(this, newState, callback);
+ },
+
+ /**
+ * Checks whether or not this composite component is mounted.
+ * @return {boolean} True if mounted, false otherwise.
+ * @protected
+ * @final
+ */
+ isMounted: function () {
+ {
+ warning(this.__didWarnIsMounted, '%s: isMounted is deprecated. Instead, make sure to clean up ' + 'subscriptions and pending requests in componentWillUnmount to ' + 'prevent memory leaks.', this.constructor && this.constructor.displayName || this.name || 'Component');
+ this.__didWarnIsMounted = true;
+ }
+
+ return !!this.__isMounted;
+ }
+ };
+
+ var ReactClassComponent = function () {};
+
+ _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
+ /**
+ * Creates a composite component class given a class specification.
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
+ *
+ * @param {object} spec Class specification (which must define `render`).
+ * @return {function} Component constructor function.
+ * @public
+ */
+
+
+ function createClass(spec) {
+ // To keep our warnings more understandable, we'll use a little hack here to
+ // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
+ // unnecessarily identify a class without displayName as 'Constructor'.
+ var Constructor = identity(function (props, context, updater) {
+ // This constructor gets overridden by mocks. The argument is used
+ // by mocks to assert on what gets mounted.
+ {
+ warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory');
+ } // Wire up auto-binding
+
+
+ if (this.__reactAutoBindPairs.length) {
+ bindAutoBindMethods(this);
+ }
+
+ this.props = props;
+ this.context = context;
+ this.refs = emptyObject;
+ this.updater = updater || ReactNoopUpdateQueue;
+ this.state = null; // ReactClasses doesn't have constructors. Instead, they use the
+ // getInitialState and componentWillMount methods for initialization.
+
+ var initialState = this.getInitialState ? this.getInitialState() : null;
+
+ {
+ // We allow auto-mocks to proceed as if they're returning null.
+ if (initialState === undefined && this.getInitialState._isMockFunction) {
+ // This is probably bad practice. Consider warning here and
+ // deprecating this convenience.
+ initialState = null;
+ }
+ }
+
+ _invariant(typeof initialState === 'object' && !Array.isArray(initialState), '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent');
+
+ this.state = initialState;
+ });
+ Constructor.prototype = new ReactClassComponent();
+ Constructor.prototype.constructor = Constructor;
+ Constructor.prototype.__reactAutoBindPairs = [];
+ injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
+ mixSpecIntoComponent(Constructor, IsMountedPreMixin);
+ mixSpecIntoComponent(Constructor, spec);
+ mixSpecIntoComponent(Constructor, IsMountedPostMixin); // Initialize the defaultProps property after all mixins have been merged.
+
+ if (Constructor.getDefaultProps) {
+ Constructor.defaultProps = Constructor.getDefaultProps();
+ }
+
+ {
+ // This is a tag to indicate that the use of these method names is ok,
+ // since it's used with createClass. If it's not, then it's likely a
+ // mistake so we'll warn you to use the static property, property
+ // initializer or constructor respectively.
+ if (Constructor.getDefaultProps) {
+ Constructor.getDefaultProps.isReactClassApproved = {};
+ }
+
+ if (Constructor.prototype.getInitialState) {
+ Constructor.prototype.getInitialState.isReactClassApproved = {};
+ }
+ }
+
+ _invariant(Constructor.prototype.render, 'createClass(...): Class specification must implement a `render` method.');
+
+ {
+ warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component');
+ warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component');
+ warning(!Constructor.prototype.UNSAFE_componentWillRecieveProps, '%s has a method called UNSAFE_componentWillRecieveProps(). ' + 'Did you mean UNSAFE_componentWillReceiveProps()?', spec.displayName || 'A component');
+ } // Reduce time spent doing lookups by setting these on the prototype.
+
+
+ for (var methodName in ReactClassInterface) {
+ if (!Constructor.prototype[methodName]) {
+ Constructor.prototype[methodName] = null;
+ }
+ }
+
+ return Constructor;
+ }
+
+ return createClass;
+ }
+
+ var factory_1$1 = factory$3;
+
+ /**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+ var React$1 = require('react');
+
+ var factory$2 = factory_1$1;
+
+ if (typeof React$1 === 'undefined') {
+ throw Error('create-react-class could not find the React object. If you are using script tags, ' + 'make sure that React is being loaded before create-react-class.');
+ } // Hack to grab NoopUpdateQueue from isomorphic React
+
+
+ var ReactNoopUpdateQueue = new React$1.Component().updater;
+ var createReactClass$1 = factory$2(React$1.Component, React$1.isValidElement, ReactNoopUpdateQueue);
+
+ var reactIs = reactIs$1.exports;
+ /**
+ * Copyright 2015, Yahoo! Inc.
+ * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+
+
+ var REACT_STATICS = {
+ childContextTypes: true,
+ contextType: true,
+ contextTypes: true,
+ defaultProps: true,
+ displayName: true,
+ getDefaultProps: true,
+ getDerivedStateFromError: true,
+ getDerivedStateFromProps: true,
+ mixins: true,
+ propTypes: true,
+ type: true
+ };
+ var KNOWN_STATICS = {
+ name: true,
+ length: true,
+ prototype: true,
+ caller: true,
+ callee: true,
+ arguments: true,
+ arity: true
+ };
+ var FORWARD_REF_STATICS = {
+ '$$typeof': true,
+ render: true,
+ defaultProps: true,
+ displayName: true,
+ propTypes: true
+ };
+ var MEMO_STATICS = {
+ '$$typeof': true,
+ compare: true,
+ defaultProps: true,
+ displayName: true,
+ propTypes: true,
+ type: true
+ };
+ var TYPE_STATICS = {};
+ TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
+ TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
+
+ function getStatics(component) {
+ // React v16.11 and below
+ if (reactIs.isMemo(component)) {
+ return MEMO_STATICS;
+ } // React v16.12 and above
+
+
+ return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;
+ }
+
+ var defineProperty = Object.defineProperty;
+ var getOwnPropertyNames = Object.getOwnPropertyNames;
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+ var getPrototypeOf = Object.getPrototypeOf;
+ var objectPrototype = Object.prototype;
+
+ function hoistNonReactStatics$1(targetComponent, sourceComponent, blacklist) {
+ if (typeof sourceComponent !== 'string') {
+ // don't hoist over string (html) components
+ if (objectPrototype) {
+ var inheritedComponent = getPrototypeOf(sourceComponent);
+
+ if (inheritedComponent && inheritedComponent !== objectPrototype) {
+ hoistNonReactStatics$1(targetComponent, inheritedComponent, blacklist);
+ }
+ }
+
+ var keys = getOwnPropertyNames(sourceComponent);
+
+ if (getOwnPropertySymbols) {
+ keys = keys.concat(getOwnPropertySymbols(sourceComponent));
+ }
+
+ var targetStatics = getStatics(targetComponent);
+ var sourceStatics = getStatics(sourceComponent);
+
+ for (var i = 0; i < keys.length; ++i) {
+ var key = keys[i];
+
+ if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
+ var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
+
+ try {
+ // Avoid failures from read-only properties
+ defineProperty(targetComponent, key, descriptor);
+ } catch (e) {}
+ }
+ }
+ }
+
+ return targetComponent;
+ }
+
+ var hoistNonReactStatics_cjs = hoistNonReactStatics$1;
+
+ var React = require('react');
+
+ var createReactClass = createReactClass$1;
+
+ var mapValues = mapValues_1;
+
+ var hoistNonReactStatics = hoistNonReactStatics_cjs;
+
+ function withFauxDOMFactory(Element) {
+ function withFauxDOM(WrappedComponent) {
+ var WithFauxDOM = createReactClass({
+ componentWillMount: function () {
+ this.connectedFauxDOM = {};
+ this.animateFauxDOMUntil = 0;
+ },
+ componentWillUnmount: function () {
+ this.stopAnimatingFauxDOM();
+ this.stopDrawFauxDOM();
+ },
+ connectFauxDOM: function (node, name, discardNode) {
+ if (!this.connectedFauxDOM[name] || discardNode) {
+ this.connectedFauxDOM[name] = typeof node !== 'string' ? node : new Element(node);
+ this.drawFauxDOMTimeout = setTimeout(this.drawFauxDOM);
+ }
+
+ return this.connectedFauxDOM[name];
+ },
+ drawFauxDOM: function () {
+ var virtualDOM = mapValues(this.connectedFauxDOM, function (n) {
+ return n.toReact();
+ });
+ this.setState(virtualDOM);
+ },
+ animateFauxDOM: function (duration) {
+ this.animateFauxDOMUntil = Math.max(Date.now() + duration, this.animateFauxDOMUntil);
+
+ if (!this.fauxDOMAnimationInterval) {
+ this.fauxDOMAnimationInterval = setInterval(function () {
+ if (Date.now() < this.animateFauxDOMUntil) {
+ this.drawFauxDOM();
+ } else {
+ this.stopAnimatingFauxDOM();
+ }
+ }.bind(this), 16);
+ }
+ },
+ stopAnimatingFauxDOM: function () {
+ this.fauxDOMAnimationInterval = clearInterval(this.fauxDOMAnimationInterval);
+ this.animateFauxDOMUntil = 0;
+ },
+ stopDrawFauxDOM: function () {
+ this.drawFauxDOMTimeout = clearTimeout(this.drawFauxDOMTimeout);
+ },
+ isAnimatingFauxDOM: function () {
+ return !!this.fauxDOMAnimationInterval;
+ },
+ render: function () {
+ var props = Object.assign({}, this.props, this.state, {
+ connectFauxDOM: this.connectFauxDOM,
+ drawFauxDOM: this.drawFauxDOM,
+ animateFauxDOM: this.animateFauxDOM,
+ stopAnimatingFauxDOM: this.stopAnimatingFauxDOM,
+ isAnimatingFauxDOM: this.isAnimatingFauxDOM
+ });
+ return React.createElement(WrappedComponent, props);
+ }
+ });
+ WithFauxDOM.displayName = 'WithFauxDOM(' + getDisplayName(WrappedComponent) + ')';
+ hoistNonReactStatics(WithFauxDOM, WrappedComponent);
+ return WithFauxDOM;
+ }
+
+ return withFauxDOM;
+ }
+
+ function getDisplayName(WrappedComponent) {
+ return WrappedComponent.displayName || WrappedComponent.name || 'Component';
+ }
+
+ var _withFauxDOM = withFauxDOMFactory;
+
+ var element = _element;
+
+ var window$1 = _window;
+
+ var withFauxDOM = _withFauxDOM;
+
+ function factory$1() {
+ var Element = element();
+ var Window = window$1();
+ var ReactFauxDOM = {
+ Element: Element,
+ defaultView: Window,
+ withFauxDOM: withFauxDOM(Element),
+ createElement: function (nodeName) {
+ return new Element(nodeName);
+ },
+ createElementNS: function (namespace, nodeName) {
+ return this.createElement(nodeName);
+ },
+ compareDocumentPosition: function () {
+ // The selector engine tries to validate with this, but we don't care.
+ // 8 = DOCUMENT_POSITION_CONTAINS, so we say all nodes are in this document.
+ return 8;
+ }
+ };
+ Element.prototype.ownerDocument = ReactFauxDOM;
+ return ReactFauxDOM;
+ }
+
+ var factory_1 = factory$1;
+
+ var factory = factory_1;
+
+ var ReactFauxDOM = factory();
+
+ var noop = {
+ value: function () {}
+ };
+
+ function dispatch$1() {
+ for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
+ if (!(t = arguments[i] + "") || t in _ || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
+ _[t] = [];
+ }
+
+ return new Dispatch(_);
+ }
+
+ function Dispatch(_) {
+ this._ = _;
+ }
+
+ function parseTypenames$1(typenames, types) {
+ return typenames.trim().split(/^|\s+/).map(function (t) {
+ var name = "",
+ i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+ return {
+ type: t,
+ name: name
+ };
+ });
+ }
+
+ Dispatch.prototype = dispatch$1.prototype = {
+ constructor: Dispatch,
+ on: function (typename, callback) {
+ var _ = this._,
+ T = parseTypenames$1(typename + "", _),
+ t,
+ i = -1,
+ n = T.length; // If no callback was specified, return the callback of the given type and name.
+
+ if (arguments.length < 2) {
+ while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
+
+ return;
+ } // If a type was specified, set the callback for the given type and name.
+ // Otherwise, if a null callback was specified, remove callbacks of the given name.
+
+
+ if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
+
+ while (++i < n) {
+ if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
+ }
+
+ return this;
+ },
+ copy: function () {
+ var copy = {},
+ _ = this._;
+
+ for (var t in _) copy[t] = _[t].slice();
+
+ return new Dispatch(copy);
+ },
+ call: function (type, that) {
+ if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+
+ for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ },
+ apply: function (type, that, args) {
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+
+ for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ }
+ };
+
+ function get(type, name) {
+ for (var i = 0, n = type.length, c; i < n; ++i) {
+ if ((c = type[i]).name === name) {
+ return c.value;
+ }
+ }
+ }
+
+ function set(type, name, callback) {
+ for (var i = 0, n = type.length; i < n; ++i) {
+ if (type[i].name === name) {
+ type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
+ break;
+ }
+ }
+
+ if (callback != null) type.push({
+ name: name,
+ value: callback
+ });
+ return type;
+ }
+
+ var src = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ dispatch: dispatch$1
+ });
+
+ // Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/
+ // Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf
+ var dispatch = src.dispatch;
+
+ var cloudRadians = Math.PI / 180,
+ cw = 1 << 11 >> 5,
+ ch = 1 << 11;
+
+ var d3Cloud = function () {
+ var size = [256, 256],
+ text = cloudText,
+ font = cloudFont,
+ fontSize = cloudFontSize,
+ fontStyle = cloudFontNormal,
+ fontWeight = cloudFontNormal,
+ rotate = cloudRotate,
+ padding = cloudPadding,
+ spiral = archimedeanSpiral,
+ words = [],
+ timeInterval = Infinity,
+ event = dispatch("word", "end"),
+ timer = null,
+ random = Math.random,
+ cloud = {},
+ canvas = cloudCanvas;
+
+ cloud.canvas = function (_) {
+ return arguments.length ? (canvas = functor(_), cloud) : canvas;
+ };
+
+ cloud.start = function () {
+ var contextAndRatio = getContext(canvas()),
+ board = zeroArray((size[0] >> 5) * size[1]),
+ bounds = null,
+ n = words.length,
+ i = -1,
+ tags = [],
+ data = words.map(function (d, i) {
+ d.text = text.call(this, d, i);
+ d.font = font.call(this, d, i);
+ d.style = fontStyle.call(this, d, i);
+ d.weight = fontWeight.call(this, d, i);
+ d.rotate = rotate.call(this, d, i);
+ d.size = ~~fontSize.call(this, d, i);
+ d.padding = padding.call(this, d, i);
+ return d;
+ }).sort(function (a, b) {
+ return b.size - a.size;
+ });
+ if (timer) clearInterval(timer);
+ timer = setInterval(step, 0);
+ step();
+ return cloud;
+
+ function step() {
+ var start = Date.now();
+
+ while (Date.now() - start < timeInterval && ++i < n && timer) {
+ var d = data[i];
+ d.x = size[0] * (random() + .5) >> 1;
+ d.y = size[1] * (random() + .5) >> 1;
+ cloudSprite(contextAndRatio, d, data, i);
+
+ if (d.hasText && place(board, d, bounds)) {
+ tags.push(d);
+ event.call("word", cloud, d);
+ if (bounds) cloudBounds(bounds, d);else bounds = [{
+ x: d.x + d.x0,
+ y: d.y + d.y0
+ }, {
+ x: d.x + d.x1,
+ y: d.y + d.y1
+ }]; // Temporary hack
+
+ d.x -= size[0] >> 1;
+ d.y -= size[1] >> 1;
+ }
+ }
+
+ if (i >= n) {
+ cloud.stop();
+ event.call("end", cloud, tags, bounds);
+ }
+ }
+ };
+
+ cloud.stop = function () {
+ if (timer) {
+ clearInterval(timer);
+ timer = null;
+ }
+
+ return cloud;
+ };
+
+ function getContext(canvas) {
+ canvas.width = canvas.height = 1;
+ var ratio = Math.sqrt(canvas.getContext("2d").getImageData(0, 0, 1, 1).data.length >> 2);
+ canvas.width = (cw << 5) / ratio;
+ canvas.height = ch / ratio;
+ var context = canvas.getContext("2d");
+ context.fillStyle = context.strokeStyle = "red";
+ context.textAlign = "center";
+ return {
+ context: context,
+ ratio: ratio
+ };
+ }
+
+ function place(board, tag, bounds) {
+ [{
+ x: 0,
+ y: 0
+ }, {
+ x: size[0],
+ y: size[1]
+ }];
+ var startX = tag.x,
+ startY = tag.y,
+ maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),
+ s = spiral(size),
+ dt = random() < .5 ? 1 : -1,
+ t = -dt,
+ dxdy,
+ dx,
+ dy;
+
+ while (dxdy = s(t += dt)) {
+ dx = ~~dxdy[0];
+ dy = ~~dxdy[1];
+ if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;
+ tag.x = startX + dx;
+ tag.y = startY + dy;
+ if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue; // TODO only check for collisions within current bounds.
+
+ if (!bounds || !cloudCollide(tag, board, size[0])) {
+ if (!bounds || collideRects(tag, bounds)) {
+ var sprite = tag.sprite,
+ w = tag.width >> 5,
+ sw = size[0] >> 5,
+ lx = tag.x - (w << 4),
+ sx = lx & 0x7f,
+ msx = 32 - sx,
+ h = tag.y1 - tag.y0,
+ x = (tag.y + tag.y0) * sw + (lx >> 5),
+ last;
+
+ for (var j = 0; j < h; j++) {
+ last = 0;
+
+ for (var i = 0; i <= w; i++) {
+ board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);
+ }
+
+ x += sw;
+ }
+
+ delete tag.sprite;
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ cloud.timeInterval = function (_) {
+ return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;
+ };
+
+ cloud.words = function (_) {
+ return arguments.length ? (words = _, cloud) : words;
+ };
+
+ cloud.size = function (_) {
+ return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;
+ };
+
+ cloud.font = function (_) {
+ return arguments.length ? (font = functor(_), cloud) : font;
+ };
+
+ cloud.fontStyle = function (_) {
+ return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;
+ };
+
+ cloud.fontWeight = function (_) {
+ return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;
+ };
+
+ cloud.rotate = function (_) {
+ return arguments.length ? (rotate = functor(_), cloud) : rotate;
+ };
+
+ cloud.text = function (_) {
+ return arguments.length ? (text = functor(_), cloud) : text;
+ };
+
+ cloud.spiral = function (_) {
+ return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;
+ };
+
+ cloud.fontSize = function (_) {
+ return arguments.length ? (fontSize = functor(_), cloud) : fontSize;
+ };
+
+ cloud.padding = function (_) {
+ return arguments.length ? (padding = functor(_), cloud) : padding;
+ };
+
+ cloud.random = function (_) {
+ return arguments.length ? (random = _, cloud) : random;
+ };
+
+ cloud.on = function () {
+ var value = event.on.apply(event, arguments);
+ return value === event ? cloud : value;
+ };
+
+ return cloud;
+ };
+
+ function cloudText(d) {
+ return d.text;
+ }
+
+ function cloudFont() {
+ return "serif";
+ }
+
+ function cloudFontNormal() {
+ return "normal";
+ }
+
+ function cloudFontSize(d) {
+ return Math.sqrt(d.value);
+ }
+
+ function cloudRotate() {
+ return (~~(Math.random() * 6) - 3) * 30;
+ }
+
+ function cloudPadding() {
+ return 1;
+ } // Fetches a monochrome sprite bitmap for the specified text.
+ // Load in batches for speed.
+
+
+ function cloudSprite(contextAndRatio, d, data, di) {
+ if (d.sprite) return;
+ var c = contextAndRatio.context,
+ ratio = contextAndRatio.ratio;
+ c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);
+ var x = 0,
+ y = 0,
+ maxh = 0,
+ n = data.length;
+ --di;
+
+ while (++di < n) {
+ d = data[di];
+ c.save();
+ c.font = d.style + " " + d.weight + " " + ~~((d.size + 1) / ratio) + "px " + d.font;
+ var w = c.measureText(d.text + "m").width * ratio,
+ h = d.size << 1;
+
+ if (d.rotate) {
+ var sr = Math.sin(d.rotate * cloudRadians),
+ cr = Math.cos(d.rotate * cloudRadians),
+ wcr = w * cr,
+ wsr = w * sr,
+ hcr = h * cr,
+ hsr = h * sr;
+ w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;
+ h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));
+ } else {
+ w = w + 0x1f >> 5 << 5;
+ }
+
+ if (h > maxh) maxh = h;
+
+ if (x + w >= cw << 5) {
+ x = 0;
+ y += maxh;
+ maxh = 0;
+ }
+
+ if (y + h >= ch) break;
+ c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);
+ if (d.rotate) c.rotate(d.rotate * cloudRadians);
+ c.fillText(d.text, 0, 0);
+ if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);
+ c.restore();
+ d.width = w;
+ d.height = h;
+ d.xoff = x;
+ d.yoff = y;
+ d.x1 = w >> 1;
+ d.y1 = h >> 1;
+ d.x0 = -d.x1;
+ d.y0 = -d.y1;
+ d.hasText = true;
+ x += w;
+ }
+
+ var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,
+ sprite = [];
+
+ while (--di >= 0) {
+ d = data[di];
+ if (!d.hasText) continue;
+ var w = d.width,
+ w32 = w >> 5,
+ h = d.y1 - d.y0; // Zero the buffer
+
+ for (var i = 0; i < h * w32; i++) sprite[i] = 0;
+
+ x = d.xoff;
+ if (x == null) return;
+ y = d.yoff;
+ var seen = 0,
+ seenRow = -1;
+
+ for (var j = 0; j < h; j++) {
+ for (var i = 0; i < w; i++) {
+ var k = w32 * j + (i >> 5),
+ m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;
+ sprite[k] |= m;
+ seen |= m;
+ }
+
+ if (seen) seenRow = j;else {
+ d.y0++;
+ h--;
+ j--;
+ y++;
+ }
+ }
+
+ d.y1 = d.y0 + seenRow;
+ d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);
+ }
+ } // Use mask-based collision detection.
+
+
+ function cloudCollide(tag, board, sw) {
+ sw >>= 5;
+ var sprite = tag.sprite,
+ w = tag.width >> 5,
+ lx = tag.x - (w << 4),
+ sx = lx & 0x7f,
+ msx = 32 - sx,
+ h = tag.y1 - tag.y0,
+ x = (tag.y + tag.y0) * sw + (lx >> 5),
+ last;
+
+ for (var j = 0; j < h; j++) {
+ last = 0;
+
+ for (var i = 0; i <= w; i++) {
+ if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;
+ }
+
+ x += sw;
+ }
+
+ return false;
+ }
+
+ function cloudBounds(bounds, d) {
+ var b0 = bounds[0],
+ b1 = bounds[1];
+ if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;
+ if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;
+ if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;
+ if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;
+ }
+
+ function collideRects(a, b) {
+ return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;
+ }
+
+ function archimedeanSpiral(size) {
+ var e = size[0] / size[1];
+ return function (t) {
+ return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];
+ };
+ }
+
+ function rectangularSpiral(size) {
+ var dy = 4,
+ dx = dy * size[0] / size[1],
+ x = 0,
+ y = 0;
+ return function (t) {
+ var sign = t < 0 ? -1 : 1; // See triangular numbers: T_n = n * (n + 1) / 2.
+
+ switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {
+ case 0:
+ x += dx;
+ break;
+
+ case 1:
+ y += dy;
+ break;
+
+ case 2:
+ x -= dx;
+ break;
+
+ default:
+ y -= dy;
+ break;
+ }
+
+ return [x, y];
+ };
+ } // TODO reuse arrays?
+
+
+ function zeroArray(n) {
+ var a = [],
+ i = -1;
+
+ while (++i < n) a[i] = 0;
+
+ return a;
+ }
+
+ function cloudCanvas() {
+ return document.createElement("canvas");
+ }
+
+ function functor(d) {
+ return typeof d === "function" ? d : function () {
+ return d;
+ };
+ }
+
+ var spirals = {
+ archimedean: archimedeanSpiral,
+ rectangular: rectangularSpiral
+ };
+
+ /* global Map:readonly, Set:readonly, ArrayBuffer:readonly */
+
+ var hasElementType = typeof Element !== 'undefined';
+ var hasMap = typeof Map === 'function';
+ var hasSet = typeof Set === 'function';
+ var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js
+
+ function equal(a, b) {
+ // START: fast-deep-equal es6/index.js 3.1.1
+ if (a === b) return true;
+
+ if (a && b && typeof a == 'object' && typeof b == 'object') {
+ if (a.constructor !== b.constructor) return false;
+ var length, i, keys;
+
+ if (Array.isArray(a)) {
+ length = a.length;
+ if (length != b.length) return false;
+
+ for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;
+
+ return true;
+ } // START: Modifications:
+ // 1. Extra `has &&` helpers in initial condition allow es6 code
+ // to co-exist with es5.
+ // 2. Replace `for of` with es5 compliant iteration using `for`.
+ // Basically, take:
+ //
+ // ```js
+ // for (i of a.entries())
+ // if (!b.has(i[0])) return false;
+ // ```
+ //
+ // ... and convert to:
+ //
+ // ```js
+ // it = a.entries();
+ // while (!(i = it.next()).done)
+ // if (!b.has(i.value[0])) return false;
+ // ```
+ //
+ // **Note**: `i` access switches to `i.value`.
+
+
+ var it;
+
+ if (hasMap && a instanceof Map && b instanceof Map) {
+ if (a.size !== b.size) return false;
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;
+
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;
+
+ return true;
+ }
+
+ if (hasSet && a instanceof Set && b instanceof Set) {
+ if (a.size !== b.size) return false;
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;
+
+ return true;
+ } // END: Modifications
+
+
+ if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
+ length = a.length;
+ if (length != b.length) return false;
+
+ for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;
+
+ return true;
+ }
+
+ if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
+ if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
+ if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
+ keys = Object.keys(a);
+ length = keys.length;
+ if (length !== Object.keys(b).length) return false;
+
+ for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; // END: fast-deep-equal
+ // START: react-fast-compare
+ // custom handling for DOM elements
+
+
+ if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact
+
+ for (i = length; i-- !== 0;) {
+ if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {
+ // React-specific: avoid traversing React elements' _owner
+ // Preact-specific: avoid traversing Preact elements' __v and __o
+ // __v = $_original / $_vnode
+ // __o = $_owner
+ // These properties contain circular references and are not needed when
+ // comparing the actual elements (and not their owners)
+ // .$$typeof and ._store on just reasonable markers of elements
+ continue;
+ } // all other properties should be traversed as usual
+
+
+ if (!equal(a[keys[i]], b[keys[i]])) return false;
+ } // END: react-fast-compare
+ // START: fast-deep-equal
+
+
+ return true;
+ }
+
+ return a !== a && b !== b;
+ } // end fast-deep-equal
+
+
+ var reactFastCompare = function isEqual(a, b) {
+ try {
+ return equal(a, b);
+ } catch (error) {
+ if ((error.message || '').match(/stack|recursion/i)) {
+ // warn on circular references, don't crash
+ // browsers give this different errors name and messages:
+ // chrome/safari: "RangeError", "Maximum call stack size exceeded"
+ // firefox: "InternalError", too much recursion"
+ // edge: "Error", "Out of stack space"
+ console.warn('react-fast-compare cannot handle circular refs');
+ return false;
+ } // some other error. we should definitely know about these
+
+
+ throw error;
+ }
+ };
+
+ var xhtml = "http://www.w3.org/1999/xhtml";
+ var namespaces = {
+ svg: "http://www.w3.org/2000/svg",
+ xhtml: xhtml,
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/"
+ };
+
+ function namespace (name) {
+ var prefix = name += "",
+ i = prefix.indexOf(":");
+ if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
+ return namespaces.hasOwnProperty(prefix) ? {
+ space: namespaces[prefix],
+ local: name
+ } : name; // eslint-disable-line no-prototype-builtins
+ }
+
+ function creatorInherit(name) {
+ return function () {
+ var document = this.ownerDocument,
+ uri = this.namespaceURI;
+ return uri === xhtml && document.documentElement.namespaceURI === xhtml ? document.createElement(name) : document.createElementNS(uri, name);
+ };
+ }
+
+ function creatorFixed(fullname) {
+ return function () {
+ return this.ownerDocument.createElementNS(fullname.space, fullname.local);
+ };
+ }
+
+ function creator (name) {
+ var fullname = namespace(name);
+ return (fullname.local ? creatorFixed : creatorInherit)(fullname);
+ }
+
+ function none() {}
+
+ function selector (selector) {
+ return selector == null ? none : function () {
+ return this.querySelector(selector);
+ };
+ }
+
+ function selection_select (select) {
+ if (typeof select !== "function") select = selector(select);
+
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+ if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+ if ("__data__" in node) subnode.__data__ = node.__data__;
+ subgroup[i] = subnode;
+ }
+ }
+ }
+
+ return new Selection(subgroups, this._parents);
+ }
+
+ function array (x) {
+ return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like
+ : Array.from(x); // Map, Set, iterable, string, or anything else
+ }
+
+ function empty() {
+ return [];
+ }
+
+ function selectorAll (selector) {
+ return selector == null ? empty : function () {
+ return this.querySelectorAll(selector);
+ };
+ }
+
+ function arrayAll(select) {
+ return function () {
+ var group = select.apply(this, arguments);
+ return group == null ? [] : array(group);
+ };
+ }
+
+ function selection_selectAll (select) {
+ if (typeof select === "function") select = arrayAll(select);else select = selectorAll(select);
+
+ for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ subgroups.push(select.call(node, node.__data__, i, group));
+ parents.push(node);
+ }
+ }
+ }
+
+ return new Selection(subgroups, parents);
+ }
+
+ function matcher (selector) {
+ return function () {
+ return this.matches(selector);
+ };
+ }
+ function childMatcher(selector) {
+ return function (node) {
+ return node.matches(selector);
+ };
+ }
+
+ var find = Array.prototype.find;
+
+ function childFind(match) {
+ return function () {
+ return find.call(this.children, match);
+ };
+ }
+
+ function childFirst() {
+ return this.firstElementChild;
+ }
+
+ function selection_selectChild (match) {
+ return this.select(match == null ? childFirst : childFind(typeof match === "function" ? match : childMatcher(match)));
+ }
+
+ var filter = Array.prototype.filter;
+
+ function children() {
+ return this.children;
+ }
+
+ function childrenFilter(match) {
+ return function () {
+ return filter.call(this.children, match);
+ };
+ }
+
+ function selection_selectChildren (match) {
+ return this.selectAll(match == null ? children : childrenFilter(typeof match === "function" ? match : childMatcher(match)));
+ }
+
+ function selection_filter (match) {
+ if (typeof match !== "function") match = matcher(match);
+
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+ if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+ subgroup.push(node);
+ }
+ }
+ }
+
+ return new Selection(subgroups, this._parents);
+ }
+
+ function sparse (update) {
+ return new Array(update.length);
+ }
+
+ function selection_enter () {
+ return new Selection(this._enter || this._groups.map(sparse), this._parents);
+ }
+ function EnterNode(parent, datum) {
+ this.ownerDocument = parent.ownerDocument;
+ this.namespaceURI = parent.namespaceURI;
+ this._next = null;
+ this._parent = parent;
+ this.__data__ = datum;
+ }
+ EnterNode.prototype = {
+ constructor: EnterNode,
+ appendChild: function (child) {
+ return this._parent.insertBefore(child, this._next);
+ },
+ insertBefore: function (child, next) {
+ return this._parent.insertBefore(child, next);
+ },
+ querySelector: function (selector) {
+ return this._parent.querySelector(selector);
+ },
+ querySelectorAll: function (selector) {
+ return this._parent.querySelectorAll(selector);
+ }
+ };
+
+ function constant (x) {
+ return function () {
+ return x;
+ };
+ }
+
+ function bindIndex(parent, group, enter, update, exit, data) {
+ var i = 0,
+ node,
+ groupLength = group.length,
+ dataLength = data.length; // Put any non-null nodes that fit into update.
+ // Put any null nodes into enter.
+ // Put any remaining data into enter.
+
+ for (; i < dataLength; ++i) {
+ if (node = group[i]) {
+ node.__data__ = data[i];
+ update[i] = node;
+ } else {
+ enter[i] = new EnterNode(parent, data[i]);
+ }
+ } // Put any non-null nodes that don’t fit into exit.
+
+
+ for (; i < groupLength; ++i) {
+ if (node = group[i]) {
+ exit[i] = node;
+ }
+ }
+ }
+
+ function bindKey(parent, group, enter, update, exit, data, key) {
+ var i,
+ node,
+ nodeByKeyValue = new Map(),
+ groupLength = group.length,
+ dataLength = data.length,
+ keyValues = new Array(groupLength),
+ keyValue; // Compute the key for each node.
+ // If multiple nodes have the same key, the duplicates are added to exit.
+
+ for (i = 0; i < groupLength; ++i) {
+ if (node = group[i]) {
+ keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + "";
+
+ if (nodeByKeyValue.has(keyValue)) {
+ exit[i] = node;
+ } else {
+ nodeByKeyValue.set(keyValue, node);
+ }
+ }
+ } // Compute the key for each datum.
+ // If there a node associated with this key, join and add it to update.
+ // If there is not (or the key is a duplicate), add it to enter.
+
+
+ for (i = 0; i < dataLength; ++i) {
+ keyValue = key.call(parent, data[i], i, data) + "";
+
+ if (node = nodeByKeyValue.get(keyValue)) {
+ update[i] = node;
+ node.__data__ = data[i];
+ nodeByKeyValue.delete(keyValue);
+ } else {
+ enter[i] = new EnterNode(parent, data[i]);
+ }
+ } // Add any remaining nodes that were not bound to data to exit.
+
+
+ for (i = 0; i < groupLength; ++i) {
+ if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {
+ exit[i] = node;
+ }
+ }
+ }
+
+ function datum(node) {
+ return node.__data__;
+ }
+
+ function selection_data (value, key) {
+ if (!arguments.length) return Array.from(this, datum);
+ var bind = key ? bindKey : bindIndex,
+ parents = this._parents,
+ groups = this._groups;
+ if (typeof value !== "function") value = constant(value);
+
+ for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
+ var parent = parents[j],
+ group = groups[j],
+ groupLength = group.length,
+ data = array(value.call(parent, parent && parent.__data__, j, parents)),
+ dataLength = data.length,
+ enterGroup = enter[j] = new Array(dataLength),
+ updateGroup = update[j] = new Array(dataLength),
+ exitGroup = exit[j] = new Array(groupLength);
+ bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); // Now connect the enter nodes to their following update node, such that
+ // appendChild can insert the materialized enter node before this node,
+ // rather than at the end of the parent node.
+
+ for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
+ if (previous = enterGroup[i0]) {
+ if (i0 >= i1) i1 = i0 + 1;
+
+ while (!(next = updateGroup[i1]) && ++i1 < dataLength);
+
+ previous._next = next || null;
+ }
+ }
+ }
+
+ update = new Selection(update, parents);
+ update._enter = enter;
+ update._exit = exit;
+ return update;
+ }
+
+ function selection_exit () {
+ return new Selection(this._exit || this._groups.map(sparse), this._parents);
+ }
+
+ function selection_join (onenter, onupdate, onexit) {
+ var enter = this.enter(),
+ update = this,
+ exit = this.exit();
+ enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
+ if (onupdate != null) update = onupdate(update);
+ if (onexit == null) exit.remove();else onexit(exit);
+ return enter && update ? enter.merge(update).order() : update;
+ }
+
+ function selection_merge (selection) {
+ if (!(selection instanceof Selection)) throw new Error("invalid merge");
+
+ for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
+ for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group0[i] || group1[i]) {
+ merge[i] = node;
+ }
+ }
+ }
+
+ for (; j < m0; ++j) {
+ merges[j] = groups0[j];
+ }
+
+ return new Selection(merges, this._parents);
+ }
+
+ function selection_order () {
+ for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
+ for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
+ if (node = group[i]) {
+ if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
+ next = node;
+ }
+ }
+ }
+
+ return this;
+ }
+
+ function selection_sort (compare) {
+ if (!compare) compare = ascending;
+
+ function compareNode(a, b) {
+ return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+ }
+
+ for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ sortgroup[i] = node;
+ }
+ }
+
+ sortgroup.sort(compareNode);
+ }
+
+ return new Selection(sortgroups, this._parents).order();
+ }
+
+ function ascending(a, b) {
+ return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+ }
+
+ function selection_call () {
+ var callback = arguments[0];
+ arguments[0] = this;
+ callback.apply(null, arguments);
+ return this;
+ }
+
+ function selection_nodes () {
+ return Array.from(this);
+ }
+
+ function selection_node () {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
+ var node = group[i];
+ if (node) return node;
+ }
+ }
+
+ return null;
+ }
+
+ function selection_size () {
+ let size = 0;
+
+ for (const node of this) ++size; // eslint-disable-line no-unused-vars
+
+
+ return size;
+ }
+
+ function selection_empty () {
+ return !this.node();
+ }
+
+ function selection_each (callback) {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+ if (node = group[i]) callback.call(node, node.__data__, i, group);
+ }
+ }
+
+ return this;
+ }
+
+ function attrRemove(name) {
+ return function () {
+ this.removeAttribute(name);
+ };
+ }
+
+ function attrRemoveNS(fullname) {
+ return function () {
+ this.removeAttributeNS(fullname.space, fullname.local);
+ };
+ }
+
+ function attrConstant(name, value) {
+ return function () {
+ this.setAttribute(name, value);
+ };
+ }
+
+ function attrConstantNS(fullname, value) {
+ return function () {
+ this.setAttributeNS(fullname.space, fullname.local, value);
+ };
+ }
+
+ function attrFunction(name, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttribute(name);else this.setAttribute(name, v);
+ };
+ }
+
+ function attrFunctionNS(fullname, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttributeNS(fullname.space, fullname.local);else this.setAttributeNS(fullname.space, fullname.local, v);
+ };
+ }
+
+ function selection_attr (name, value) {
+ var fullname = namespace(name);
+
+ if (arguments.length < 2) {
+ var node = this.node();
+ return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);
+ }
+
+ return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === "function" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value));
+ }
+
+ function defaultView (node) {
+ return node.ownerDocument && node.ownerDocument.defaultView // node is a Node
+ || node.document && node // node is a Window
+ || node.defaultView; // node is a Document
+ }
+
+ function styleRemove(name) {
+ return function () {
+ this.style.removeProperty(name);
+ };
+ }
+
+ function styleConstant(name, value, priority) {
+ return function () {
+ this.style.setProperty(name, value, priority);
+ };
+ }
+
+ function styleFunction(name, value, priority) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.style.removeProperty(name);else this.style.setProperty(name, v, priority);
+ };
+ }
+
+ function selection_style (name, value, priority) {
+ return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === "function" ? styleFunction : styleConstant)(name, value, priority == null ? "" : priority)) : styleValue(this.node(), name);
+ }
+ function styleValue(node, name) {
+ return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
+ }
+
+ function propertyRemove(name) {
+ return function () {
+ delete this[name];
+ };
+ }
+
+ function propertyConstant(name, value) {
+ return function () {
+ this[name] = value;
+ };
+ }
+
+ function propertyFunction(name, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) delete this[name];else this[name] = v;
+ };
+ }
+
+ function selection_property (name, value) {
+ return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === "function" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];
+ }
+
+ function classArray(string) {
+ return string.trim().split(/^|\s+/);
+ }
+
+ function classList(node) {
+ return node.classList || new ClassList(node);
+ }
+
+ function ClassList(node) {
+ this._node = node;
+ this._names = classArray(node.getAttribute("class") || "");
+ }
+
+ ClassList.prototype = {
+ add: function (name) {
+ var i = this._names.indexOf(name);
+
+ if (i < 0) {
+ this._names.push(name);
+
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ remove: function (name) {
+ var i = this._names.indexOf(name);
+
+ if (i >= 0) {
+ this._names.splice(i, 1);
+
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ contains: function (name) {
+ return this._names.indexOf(name) >= 0;
+ }
+ };
+
+ function classedAdd(node, names) {
+ var list = classList(node),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) list.add(names[i]);
+ }
+
+ function classedRemove(node, names) {
+ var list = classList(node),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) list.remove(names[i]);
+ }
+
+ function classedTrue(names) {
+ return function () {
+ classedAdd(this, names);
+ };
+ }
+
+ function classedFalse(names) {
+ return function () {
+ classedRemove(this, names);
+ };
+ }
+
+ function classedFunction(names, value) {
+ return function () {
+ (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
+ };
+ }
+
+ function selection_classed (name, value) {
+ var names = classArray(name + "");
+
+ if (arguments.length < 2) {
+ var list = classList(this.node()),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) if (!list.contains(names[i])) return false;
+
+ return true;
+ }
+
+ return this.each((typeof value === "function" ? classedFunction : value ? classedTrue : classedFalse)(names, value));
+ }
+
+ function textRemove() {
+ this.textContent = "";
+ }
+
+ function textConstant(value) {
+ return function () {
+ this.textContent = value;
+ };
+ }
+
+ function textFunction(value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ this.textContent = v == null ? "" : v;
+ };
+ }
+
+ function selection_text (value) {
+ return arguments.length ? this.each(value == null ? textRemove : (typeof value === "function" ? textFunction : textConstant)(value)) : this.node().textContent;
+ }
+
+ function htmlRemove() {
+ this.innerHTML = "";
+ }
+
+ function htmlConstant(value) {
+ return function () {
+ this.innerHTML = value;
+ };
+ }
+
+ function htmlFunction(value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ this.innerHTML = v == null ? "" : v;
+ };
+ }
+
+ function selection_html (value) {
+ return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === "function" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;
+ }
+
+ function raise() {
+ if (this.nextSibling) this.parentNode.appendChild(this);
+ }
+
+ function selection_raise () {
+ return this.each(raise);
+ }
+
+ function lower() {
+ if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
+ }
+
+ function selection_lower () {
+ return this.each(lower);
+ }
+
+ function selection_append (name) {
+ var create = typeof name === "function" ? name : creator(name);
+ return this.select(function () {
+ return this.appendChild(create.apply(this, arguments));
+ });
+ }
+
+ function constantNull() {
+ return null;
+ }
+
+ function selection_insert (name, before) {
+ var create = typeof name === "function" ? name : creator(name),
+ select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
+ return this.select(function () {
+ return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
+ });
+ }
+
+ function remove() {
+ var parent = this.parentNode;
+ if (parent) parent.removeChild(this);
+ }
+
+ function selection_remove () {
+ return this.each(remove);
+ }
+
+ function selection_cloneShallow() {
+ var clone = this.cloneNode(false),
+ parent = this.parentNode;
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+ }
+
+ function selection_cloneDeep() {
+ var clone = this.cloneNode(true),
+ parent = this.parentNode;
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+ }
+
+ function selection_clone (deep) {
+ return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
+ }
+
+ function selection_datum (value) {
+ return arguments.length ? this.property("__data__", value) : this.node().__data__;
+ }
+
+ function contextListener(listener) {
+ return function (event) {
+ listener.call(this, event, this.__data__);
+ };
+ }
+
+ function parseTypenames(typenames) {
+ return typenames.trim().split(/^|\s+/).map(function (t) {
+ var name = "",
+ i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ return {
+ type: t,
+ name: name
+ };
+ });
+ }
+
+ function onRemove(typename) {
+ return function () {
+ var on = this.__on;
+ if (!on) return;
+
+ for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
+ if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.options);
+ } else {
+ on[++i] = o;
+ }
+ }
+
+ if (++i) on.length = i;else delete this.__on;
+ };
+ }
+
+ function onAdd(typename, value, options) {
+ return function () {
+ var on = this.__on,
+ o,
+ listener = contextListener(value);
+ if (on) for (var j = 0, m = on.length; j < m; ++j) {
+ if ((o = on[j]).type === typename.type && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.options);
+ this.addEventListener(o.type, o.listener = listener, o.options = options);
+ o.value = value;
+ return;
+ }
+ }
+ this.addEventListener(typename.type, listener, options);
+ o = {
+ type: typename.type,
+ name: typename.name,
+ value: value,
+ listener: listener,
+ options: options
+ };
+ if (!on) this.__on = [o];else on.push(o);
+ };
+ }
+
+ function selection_on (typename, value, options) {
+ var typenames = parseTypenames(typename + ""),
+ i,
+ n = typenames.length,
+ t;
+
+ if (arguments.length < 2) {
+ var on = this.node().__on;
+
+ if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
+ for (i = 0, o = on[j]; i < n; ++i) {
+ if ((t = typenames[i]).type === o.type && t.name === o.name) {
+ return o.value;
+ }
+ }
+ }
+ return;
+ }
+
+ on = value ? onAdd : onRemove;
+
+ for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));
+
+ return this;
+ }
+
+ function dispatchEvent(node, type, params) {
+ var window = defaultView(node),
+ event = window.CustomEvent;
+
+ if (typeof event === "function") {
+ event = new event(type, params);
+ } else {
+ event = window.document.createEvent("Event");
+ if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;else event.initEvent(type, false, false);
+ }
+
+ node.dispatchEvent(event);
+ }
+
+ function dispatchConstant(type, params) {
+ return function () {
+ return dispatchEvent(this, type, params);
+ };
+ }
+
+ function dispatchFunction(type, params) {
+ return function () {
+ return dispatchEvent(this, type, params.apply(this, arguments));
+ };
+ }
+
+ function selection_dispatch (type, params) {
+ return this.each((typeof params === "function" ? dispatchFunction : dispatchConstant)(type, params));
+ }
+
+ function* selection_iterator () {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+ if (node = group[i]) yield node;
+ }
+ }
+ }
+
+ var root = [null];
+ function Selection(groups, parents) {
+ this._groups = groups;
+ this._parents = parents;
+ }
+
+ function selection_selection() {
+ return this;
+ }
+
+ Selection.prototype = {
+ constructor: Selection,
+ select: selection_select,
+ selectAll: selection_selectAll,
+ selectChild: selection_selectChild,
+ selectChildren: selection_selectChildren,
+ filter: selection_filter,
+ data: selection_data,
+ enter: selection_enter,
+ exit: selection_exit,
+ join: selection_join,
+ merge: selection_merge,
+ selection: selection_selection,
+ order: selection_order,
+ sort: selection_sort,
+ call: selection_call,
+ nodes: selection_nodes,
+ node: selection_node,
+ size: selection_size,
+ empty: selection_empty,
+ each: selection_each,
+ attr: selection_attr,
+ style: selection_style,
+ property: selection_property,
+ classed: selection_classed,
+ text: selection_text,
+ html: selection_html,
+ raise: selection_raise,
+ lower: selection_lower,
+ append: selection_append,
+ insert: selection_insert,
+ remove: selection_remove,
+ clone: selection_clone,
+ datum: selection_datum,
+ on: selection_on,
+ dispatch: selection_dispatch,
+ [Symbol.iterator]: selection_iterator
+ };
+
+ function select (selector) {
+ return typeof selector === "string" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root);
+ }
+
+ function initRange(domain, range) {
+ switch (arguments.length) {
+ case 0:
+ break;
+
+ case 1:
+ this.range(domain);
+ break;
+
+ default:
+ this.range(range).domain(domain);
+ break;
+ }
+
+ return this;
+ }
+
+ const implicit = Symbol("implicit");
+ function ordinal() {
+ var index = new Map(),
+ domain = [],
+ range = [],
+ unknown = implicit;
+
+ function scale(d) {
+ var key = d + "",
+ i = index.get(key);
+
+ if (!i) {
+ if (unknown !== implicit) return unknown;
+ index.set(key, i = domain.push(d));
+ }
+
+ return range[(i - 1) % range.length];
+ }
+
+ scale.domain = function (_) {
+ if (!arguments.length) return domain.slice();
+ domain = [], index = new Map();
+
+ for (const value of _) {
+ const key = value + "";
+ if (index.has(key)) continue;
+ index.set(key, domain.push(value));
+ }
+
+ return scale;
+ };
+
+ scale.range = function (_) {
+ return arguments.length ? (range = Array.from(_), scale) : range.slice();
+ };
+
+ scale.unknown = function (_) {
+ return arguments.length ? (unknown = _, scale) : unknown;
+ };
+
+ scale.copy = function () {
+ return ordinal(domain, range).unknown(unknown);
+ };
+
+ initRange.apply(scale, arguments);
+ return scale;
+ }
+
+ function colors (specifier) {
+ var n = specifier.length / 6 | 0,
+ colors = new Array(n),
+ i = 0;
+
+ while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6);
+
+ return colors;
+ }
+
+ var schemeCategory10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf");
+
+ function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
+ }
+
+ function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+
+ function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+ }
+
+ function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ }
+
+ function _iterableToArrayLimit(arr, i) {
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
+
+ if (_i == null) return;
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+
+ var _s, _e;
+
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+ }
+
+ function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+ }
+ var defaultScaleOrdinal = ordinal(schemeCategory10);
+
+ function WordCloud(_ref) {
+ var data = _ref.data,
+ _ref$width = _ref.width,
+ width = _ref$width === void 0 ? 700 : _ref$width,
+ _ref$height = _ref.height,
+ height = _ref$height === void 0 ? 600 : _ref$height,
+ _ref$font = _ref.font,
+ font = _ref$font === void 0 ? 'serif' : _ref$font,
+ _ref$fontStyle = _ref.fontStyle,
+ fontStyle = _ref$fontStyle === void 0 ? 'normal' : _ref$fontStyle,
+ _ref$fontWeight = _ref.fontWeight,
+ fontWeight = _ref$fontWeight === void 0 ? 'normal' : _ref$fontWeight,
+ _ref$fontSize = _ref.fontSize,
+ fontSize = _ref$fontSize === void 0 ? function (d) {
+ return Math.sqrt(d.value);
+ } : _ref$fontSize,
+ _ref$rotate = _ref.rotate,
+ rotate = _ref$rotate === void 0 ? function () {
+ return (~~(Math.random() * 6) - 3) * 30;
+ } : _ref$rotate,
+ _ref$spiral = _ref.spiral,
+ spiral = _ref$spiral === void 0 ? 'archimedean' : _ref$spiral,
+ _ref$padding = _ref.padding,
+ padding = _ref$padding === void 0 ? 1 : _ref$padding,
+ _ref$random = _ref.random,
+ random = _ref$random === void 0 ? Math.random : _ref$random,
+ _ref$fill = _ref.fill,
+ fill = _ref$fill === void 0 ? function (_, i) {
+ return defaultScaleOrdinal(i);
+ } : _ref$fill,
+ onWordClick = _ref.onWordClick,
+ onWordMouseOver = _ref.onWordMouseOver,
+ onWordMouseOut = _ref.onWordMouseOut;
+ var elementRef = React$3.useRef();
+
+ if (!elementRef.current) {
+ elementRef.current = ReactFauxDOM.createElement('div');
+ }
+
+ var el = elementRef.current; // clear old words
+
+ select(el).selectAll('*').remove(); // render based on new data
+
+ var layout = d3Cloud().words(data).size([width, height]).font(font).fontStyle(fontStyle).fontWeight(fontWeight).fontSize(fontSize).rotate(rotate).spiral(spiral).padding(padding).random(random).on('end', function (words) {
+ var _layout$size = layout.size(),
+ _layout$size2 = _slicedToArray(_layout$size, 2),
+ w = _layout$size2[0],
+ h = _layout$size2[1];
+
+ var texts = select(el).append('svg').attr('viewBox', "0 0 ".concat(w, " ").concat(h)).attr('preserveAspectRatio', 'xMinYMin meet').append('g').attr('transform', "translate(".concat(w / 2, ",").concat(h / 2, ")")).selectAll('text').data(words).enter().append('text').style('font-family', function (d) {
+ return d.font;
+ }).style('font-style', function (d) {
+ return d.style;
+ }).style('font-weight', function (d) {
+ return d.weight;
+ }).style('font-size', function (d) {
+ return "".concat(d.size, "px");
+ }).style('fill', fill).attr('text-anchor', 'middle').attr('transform', function (d) {
+ return "translate(".concat([d.x, d.y], ")rotate(").concat(d.rotate, ")");
+ }).text(function (d) {
+ return d.text;
+ });
+
+ if (onWordClick) {
+ texts.on('click', onWordClick);
+ }
+
+ if (onWordMouseOver) {
+ texts.on('mouseover', onWordMouseOver);
+ }
+
+ if (onWordMouseOut) {
+ texts.on('mouseout', onWordMouseOut);
+ }
+ });
+ layout.start();
+ return el.toReact();
+ }
+
+ WordCloud.propTypes = {
+ data: _pt.arrayOf(_pt.shape({
+ text: _pt.string.isRequired,
+ value: _pt.number.isRequired
+ })).isRequired,
+ width: _pt.number,
+ height: _pt.number,
+ font: _pt.oneOfType([_pt.string, _pt.func]),
+ fontStyle: _pt.oneOfType([_pt.string, _pt.func]),
+ fontWeight: _pt.oneOfType([_pt.string, _pt.number, _pt.func]),
+ fontSize: _pt.oneOfType([_pt.number, _pt.func]),
+ rotate: _pt.oneOfType([_pt.number, _pt.func]),
+ spiral: _pt.oneOfType([_pt.oneOf(['archimedean']), _pt.oneOf(['rectangular']), _pt.func]),
+ padding: _pt.oneOfType([_pt.number, _pt.func]),
+ random: _pt.func,
+ onWordClick: _pt.func,
+ onWordMouseOver: _pt.func,
+ onWordMouseOut: _pt.func
+ };
+ var WordCloud$1 = /*#__PURE__*/React__default["default"].memo(WordCloud, reactFastCompare);
+
+ function WordCloudWidgetComponent(props) {
+ const data = props.inputData;
+
+ const fontSizeMapper = word => Math.log2(word.value) * 5;
+
+ const rotate = word => Math.floor(Math.random() * 2) * 90;
+
+ const onClickHandle = text => {
+ props.onClickAction.canExecute && !props.onClickAction.isExecuting;
+ {
+ props.chosenWord.setValue(text);
+ props.onClickAction.execute();
+ }
+ };
+
+ return React$3.createElement(WordCloud$1, {
+ data: data,
+ fontSizeMapper: fontSizeMapper,
+ rotate: rotate,
+ onWordClick: (event, word) => onClickHandle(word.text)
+ });
+ }
+
+ class WordCloudWidget extends React$3.Component {
+ shouldComponentUpdate(nextProps) {
+ return nextProps.dataSource !== this.props.dataSource;
+ }
+
+ render() {
+ var dataToRender = [];
+
+ if (this.props.dataSource.status === "available" && this.props.dataSource.items) {
+ var i = 0;
+
+ for (i = 0; i < this.props.dataSource.items.length; i++) {
+ dataToRender.push({
+ text: this.props.textAttrib.get(this.props.dataSource.items[i]).value,
+ value: this.props.intAttrib.get(this.props.dataSource.items[i]).value
+ });
+ }
+ }
+
+ return React$3.createElement(WordCloudWidgetComponent, {
+ inputData: dataToRender,
+ chosenWord: this.props.chosenWord,
+ onClickAction: this.props.onClickAction
+ });
+ }
+
+ }
+
+ return WordCloudWidget;
+
+}));
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29yZENsb3VkLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuZGVzY3JpcHRpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmhhcy1pbnN0YW5jZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmlzLWNvbmNhdC1zcHJlYWRhYmxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5tYXRjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLm1hdGNoLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLnJlcGxhY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5zZWFyY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5zcGVjaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuc3BsaXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC50by1wcmltaXRpdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC50by1zdHJpbmctdGFnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wudW5zY29wYWJsZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5hdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1jb3B5LXdpdGhpbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29weS13aXRoaW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZXZlcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZmlsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZsYXR0ZW4taW50by1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmxhdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmxhdC1tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5kZXgtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmlzLWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWxhc3QtaW5kZXgtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkub2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktcmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS1yaWdodC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmV2ZXJzZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc29ydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtZmYtdmVyc2lvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtd2Via2l0LXZlcnNpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXNwZWNpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwZWNpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zY29wYWJsZXMuZmxhdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zY29wYWJsZXMuZmxhdC1tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLW5hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWVlZTc1NC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LWJ1ZmZlci5jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuaXMtdmlldy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LWJ1ZmZlci5zbGljZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0YS12aWV3LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5kYXRlLmdldC15ZWFyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5kYXRlLm5vdy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS5zZXQteWVhci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS50by1nbXQtc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1yZXBlYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXBhZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kYXRlLXRvLWlzby1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUudG8taXNvLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS50by1qc29uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RhdGUtdG8tcHJpbWl0aXZlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5kYXRlLnRvLXByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS50by1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmVzY2FwZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5iaW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5oYXMtaW5zdGFuY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmdsb2JhbC10aGlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuanNvbi50by1zdHJpbmctdGFnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZyZWV6aW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLXN0cm9uZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtbG9nMXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguYWNvc2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguYXNpbmguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguYXRhbmguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC1zaWduLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmNicnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguY2x6MzIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC1leHBtMS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5jb3NoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmV4cG0xLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtZnJvdW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmZyb3VuZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5oeXBvdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5pbXVsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmxvZzEwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmxvZzFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmxvZzIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguc2lnbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5zaW5oLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLnRhbmguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGgudG8tc3RyaW5nLXRhZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC50cnVuYy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93aGl0ZXNwYWNlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuZXBzaWxvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItaXMtZmluaXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuaXMtZmluaXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWludGVncmFsLW51bWJlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmlzLWludGVnZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5pcy1uYW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5pcy1zYWZlLWludGVnZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIubWluLXNhZmUtaW50ZWdlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5wYXJzZS1mbG9hdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItcGFyc2UtaW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIucGFyc2UtaW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci50by1wcmVjaXNpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvdG90eXBlLWFjY2Vzc29ycy1mb3JjZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtZ2V0dGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5kZWZpbmUtc2V0dGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC10by1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmVudHJpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5mcmVlemUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5mcm9tLWVudHJpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5oYXMtb3duLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NhbWUtdmFsdWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5pcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmlzLWV4dGVuc2libGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5pcy1mcm96ZW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5pcy1zZWFsZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QubG9va3VwLWdldHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0Lmxvb2t1cC1zZXR0ZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5zZWFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudmFsdWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wYXJzZS1mbG9hdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1wcm9taXNlLWNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGFzay5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLXBlYmJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtd2Vib3Mtd2Via2l0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21pY3JvdGFzay5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGVyZm9ybS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3Nlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5hcHBseS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5jb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1kYXRhLWRlc2NyaXB0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuZ2V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0Lmhhcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0Lm93bi1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5zZXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC50by1zdHJpbmctdGFnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZmxhZ3MuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmRvdC1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZmxhZ3MuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5zdGlja3kuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5hdC1hbHRlcm5hdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuY29kZS1wb2ludC1hdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3QtYS1yZWdleHAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5lbmRzLXdpdGguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5mcm9tLWNvZGUtcG9pbnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pbmNsdWRlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLm1hdGNoLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcGFkLXdlYmtpdC1idWcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5wYWQtZW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucGFkLXN0YXJ0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmF3LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwZWF0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1zdWJzdGl0dXRpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3Vic3RyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLWVuZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0tc3RhcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWh0bWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYW5jaG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYmlnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYmxpbmsuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5ib2xkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZml4ZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5mb250Y29sb3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5mb250c2l6ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0YWxpY3MuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5saW5rLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc21hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdHJpa2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdWIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3JzLXJlcXVpcmUtd3JhcHBlcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vZmZzZXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmxvYXQzMi1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmxvYXQ2NC1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW50OC1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW50MTYtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDMyLWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50OC1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtY2xhbXBlZC1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDE2LWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50MzItYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmF0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5jb3B5LXdpdGhpbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZXZlcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20tc3BlY2llcy1hbmQtbGlzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maW5kLWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5mb3ItZWFjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW5jbHVkZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmluZGV4LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuam9pbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkubGFzdC1pbmRleC1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkubWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5yZWR1Y2UtcmlnaHQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnJldmVyc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNldC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuc2xpY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNvbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnN1YmFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1sb2NhbGUtc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnVuZXNjYXBlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24td2Vhay5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMud2Vhay1tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLndlYWstc2V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLXByb3RvdHlwZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hc3luYy1mcm9tLXN5bmMtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWFzeW5jLWl0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudHJ5LXZpcnR1YWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItaXRlcmF0aW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20tYXN5bmMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5mcm9tLWFzeW5jLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXJyYXkuZmlsdGVyLW91dC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5LmZpbHRlci1yZWplY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5LmZpbmQtbGFzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5LmZpbmQtbGFzdC1pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1ncm91cC1ieS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5Lmdyb3VwLWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXJyYXkuaXMtdGVtcGxhdGUtb2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXJyYXkubGFzdC1pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5Lmxhc3QtaXRlbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS11bmlxdWUtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS51bmlxdWUtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci5hcy1pbmRleGVkLXBhaXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuZHJvcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmV2ZXJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuZmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmZsYXQtbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuZm9yLWVhY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci5mcm9tLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IubWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3Iuc29tZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLnRha2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci50by1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1lcmljLXJhbmdlLWl0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYmlnaW50LnJhbmdlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbXBvc2l0ZS1rZXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5jb21wb3NpdGUta2V5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuY29tcG9zaXRlLXN5bWJvbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1wcm94eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmFzLWluZGV4ZWQtcGFpcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5kcm9wLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZXZlcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmxhdC1tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mb3ItZWFjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5yZWR1Y2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5zb21lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IudGFrZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLnRvLWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24tZGVsZXRlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5kZWxldGUtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hcC1lbXBsYWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmVtcGxhY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5ldmVyeS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5maWx0ZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5maW5kLWtleS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLWZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5ncm91cC1ieS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zYW1lLXZhbHVlLXplcm8uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuaW5jbHVkZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAua2V5LWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmtleS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5tYXAta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5tYXAtdmFsdWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLm1lcmdlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24tb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAub2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLnNvbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAudXBkYXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hcC11cHNlcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAudXBkYXRlLW9yLWluc2VydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC51cHNlcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLmNsYW1wLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5kZWctcGVyLXJhZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguZGVncmVlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXNjYWxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5mc2NhbGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLmlhZGRoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5pbXVsaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguaXN1YmguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLnJhZC1wZXItZGVnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5yYWRpYW5zLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5zY2FsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguc2VlZGVkLXBybmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLnNpZ25iaXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLnVtdWxoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubnVtYmVyLmZyb20tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubnVtYmVyLnJhbmdlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm9iamVjdC5pdGVyYXRlLWVudHJpZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5vYmplY3QuaXRlcmF0ZS1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQub2JqZWN0Lml0ZXJhdGUtdmFsdWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQub2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2UudHJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QuZGVsZXRlLW1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5nZXQtbWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0Lmhhcy1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QuaGFzLW93bi1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QubWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi1hZGQtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmFkZC1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuZGVsZXRlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5kaWZmZXJlbmNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuZXZlcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmZpbmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5pbnRlcnNlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaXMtZGlzam9pbnQtZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5pcy1zdWJzZXQtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaXMtc3VwZXJzZXQtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuam9pbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQub2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LnNvbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQudW5pb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zdHJpbmcuYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zdHJpbmcuY29kZS1wb2ludHMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuYXN5bmMtZGlzcG9zZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5kaXNwb3NlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3ltYm9sLm1hdGNoZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zeW1ib2wubWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5wYXR0ZXJuLW1hdGNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3ltYm9sLnJlcGxhY2UtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkuZnJvbS1hc3luYy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnR5cGVkLWFycmF5LmZpbHRlci1vdXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC50eXBlZC1hcnJheS5maWx0ZXItcmVqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkuZmluZC1sYXN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkuZmluZC1sYXN0LWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkuZ3JvdXAtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC50eXBlZC1hcnJheS51bmlxdWUtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLW1hcC5kZWxldGUtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQud2Vhay1tYXAuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstbWFwLm9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQud2Vhay1tYXAuZW1wbGFjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstbWFwLnVwc2VydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstc2V0LmFkZC1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLXNldC5kZWxldGUtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQud2Vhay1zZXQuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstc2V0Lm9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLXRva2VuLWxpc3QtcHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuaW1tZWRpYXRlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIucXVldWUtbWljcm90YXNrLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS11cmwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXB1bnljb2RlLXRvLWFzY2lpLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwudG8tanNvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvb2JqZWN0LWFzc2lnbi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5cGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1hdHRyL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9xdWVyeS1zZWxlY3Rvci9saWIvcXVlcnktc2VsZWN0b3IvdXRpbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9xdWVyeS1zZWxlY3Rvci9saWIvcXVlcnktc2VsZWN0b3IvcGFyc2VyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3F1ZXJ5LXNlbGVjdG9yL2xpYi9xdWVyeS1zZWxlY3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9xdWVyeS1zZWxlY3Rvci9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvdXRpbHMvY2FtZWxDYXNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi91dGlscy9pc1N0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvdXRpbHMvaXNVbmRlZmluZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL3V0aWxzL2Fzc2lnbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvdXRpbHMvbWFwVmFsdWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi91dGlscy9zdHlsZUNhbWVsQ2FzZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvX2VsZW1lbnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL193aW5kb3cuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJlYWN0LWNsYXNzL2ZhY3RvcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJlYWN0LWNsYXNzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi9fd2l0aEZhdXhET00uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL2ZhY3RvcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL1JlYWN0RmF1eERPTS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kaXNwYXRjaC9zcmMvZGlzcGF0Y2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY2xvdWQvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmFzdC1jb21wYXJlL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbmFtZXNwYWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NyZWF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3RvckFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0QWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL21hdGNoZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdENoaWxkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RDaGlsZHJlbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zcGFyc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VudGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9kYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9leGl0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9qb2luLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9tZXJnZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb3JkZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NhbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL25vZGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2RlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zaXplLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9lbXB0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZWFjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vYXR0ci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy93aW5kb3cuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3N0eWxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2xhc3NlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vdGV4dC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaHRtbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcmFpc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2xvd2VyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hcHBlbmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luc2VydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcmVtb3ZlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9jbG9uZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGF0dW0uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9kaXNwYXRjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9vcmRpbmFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2NvbG9ycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jYXRlZ29yaWNhbC9jYXRlZ29yeTEwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL2xpYi9lc20vV29yZENsb3VkLmpzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvV29yZENsb3VkV2lkZ2V0Q29tcG9uZW50LmpzeCIsIi4uLy4uLy4uLy4uLy4uL3NyYy9Xb3JkQ2xvdWQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsIi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCduYXZpZ2F0b3InLCAndXNlckFnZW50JykgfHwgJyc7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWwuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPCA0ID8gMSA6IG1hdGNoWzBdICsgbWF0Y2hbMV07XG59IGVsc2UgaWYgKHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9IG1hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbiAmJiArdmVyc2lvbjtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIHJldHVybiAhU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIE9iamVjdChpdCkgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwidmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCJ2YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwidmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlO1xuIiwidmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMTguMycsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAyMSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJ2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpIHx8ICEoTkFUSVZFX1NZTUJPTCB8fCB0eXBlb2YgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID09ICdzdHJpbmcnKSkge1xuICAgIGlmIChOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpKSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBTeW1ib2xbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgICB9XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGV4b3RpY1RvUHJpbS5jYWxsKGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwidmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IFN0cmluZyhrZXkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWllZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gRnVuY3Rpb24udG9TdHJpbmc7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmICh3bWhhcy5jYWxsKHN0b3JlLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zICYmIG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICB2YXIgc3RhdGU7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkge1xuICAgIGlmIChTdHJpbmcobmFtZSkuc2xpY2UoMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgICAgbmFtZSA9ICdbJyArIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sICckMScpICsgJ10nO1xuICAgIH1cbiAgICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCBuYW1lKTtcbiAgICB9XG4gICAgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gICAgaWYgKCFzdGF0ZS5zb3VyY2UpIHtcbiAgICAgIHN0YXRlLnNvdXJjZSA9IFRFTVBMQVRFLmpvaW4odHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICAgIH1cbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCF1bnNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICB9IGVsc2UgaWYgKCFub1RhcmdldEdldCAmJiBPW2tleV0pIHtcbiAgICBzaW1wbGUgPSB0cnVlO1xuICB9XG4gIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0pO1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gc2FmZVxuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IChudW1iZXIgPiAwID8gZmxvb3IgOiBjZWlsKShudW1iZXIpO1xufTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsInZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwidmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1pc2FycmF5IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZ3VtZW50KSB7XG4gIHJldHVybiBjbGFzc29mKGFyZ3VtZW50KSA9PSAnQXJyYXknO1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuIiwidmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiBpc0NhbGxhYmxlKE8uY2FsbGVlKSA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGNsYXNzb2YoYXJndW1lbnQpID09PSAnU3ltYm9sJykgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTtcbn07XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1rZXlzIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnRpZXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwiLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgLS0gb2xkIElFLCBXU0ggKi9cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcblxudmFyIEdUID0gJz4nO1xudmFyIExUID0gJzwnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFNDUklQVCA9ICdzY3JpcHQnO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgRW1wdHlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxudmFyIHNjcmlwdFRhZyA9IGZ1bmN0aW9uIChjb250ZW50KSB7XG4gIHJldHVybiBMVCArIFNDUklQVCArIEdUICsgY29udGVudCArIExUICsgJy8nICsgU0NSSVBUICsgR1Q7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgQWN0aXZlWCBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVggPSBmdW5jdGlvbiAoYWN0aXZlWERvY3VtZW50KSB7XG4gIGFjdGl2ZVhEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJycpKTtcbiAgYWN0aXZlWERvY3VtZW50LmNsb3NlKCk7XG4gIHZhciB0ZW1wID0gYWN0aXZlWERvY3VtZW50LnBhcmVudFdpbmRvdy5PYmplY3Q7XG4gIGFjdGl2ZVhEb2N1bWVudCA9IG51bGw7IC8vIGF2b2lkIG1lbW9yeSBsZWFrXG4gIHJldHVybiB0ZW1wO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUlGcmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBKUyA9ICdqYXZhJyArIFNDUklQVCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNDc1XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoSlMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnZG9jdW1lbnQuRj1PYmplY3QnKSk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIHJldHVybiBpZnJhbWVEb2N1bWVudC5GO1xufTtcblxuLy8gQ2hlY2sgZm9yIGRvY3VtZW50LmRvbWFpbiBhbmQgYWN0aXZlIHggc3VwcG9ydFxuLy8gTm8gbmVlZCB0byB1c2UgYWN0aXZlIHggYXBwcm9hY2ggd2hlbiBkb2N1bWVudC5kb21haW4gaXMgbm90IHNldFxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9pc3N1ZXMvMTUwXG4vLyB2YXJpYXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tpdGNhbWJyaWRnZS9lczUtc2hpbS9jb21taXQvNGY3MzhhYzA2NjM0NlxuLy8gYXZvaWQgSUUgR0MgYnVnXG52YXIgYWN0aXZlWERvY3VtZW50O1xudmFyIE51bGxQcm90b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBhY3RpdmVYRG9jdW1lbnQgPSBuZXcgQWN0aXZlWE9iamVjdCgnaHRtbGZpbGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogaWdub3JlICovIH1cbiAgTnVsbFByb3RvT2JqZWN0ID0gdHlwZW9mIGRvY3VtZW50ICE9ICd1bmRlZmluZWQnXG4gICAgPyBkb2N1bWVudC5kb21haW4gJiYgYWN0aXZlWERvY3VtZW50XG4gICAgICA/IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KSAvLyBvbGQgSUVcbiAgICAgIDogTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lKClcbiAgICA6IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KTsgLy8gV1NIXG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIE51bGxQcm90b09iamVjdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gTnVsbFByb3RvT2JqZWN0KCk7XG59O1xuXG5oaWRkZW5LZXlzW0lFX1BST1RPXSA9IHRydWU7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5Q29uc3RydWN0b3IoKTtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IE51bGxQcm90b09iamVjdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmUgKi9cbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpLmY7XG5cbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nXG4gICAgPyBnZXRXaW5kb3dOYW1lcyhpdClcbiAgICA6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChpdCkpO1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuZXhwb3J0cy5mID0gd2VsbEtub3duU3ltYm9sO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWw7XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkge1xuICB2YXIgU3ltYm9sID0gcGF0aC5TeW1ib2wgfHwgKHBhdGguU3ltYm9sID0ge30pO1xuICBpZiAoIWhhc093bihTeW1ib2wsIE5BTUUpKSBkZWZpbmVQcm9wZXJ0eShTeW1ib2wsIE5BTUUsIHtcbiAgICB2YWx1ZTogd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZS5mKE5BTUUpXG4gIH0pO1xufTtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzT3duKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwidmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhQ2FsbGFibGUoZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCk7XG4gICAgfTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBlbXB0eSA9IFtdO1xudmFyIGNvbnN0cnVjdCA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnY29uc3RydWN0Jyk7XG52YXIgY29uc3RydWN0b3JSZWdFeHAgPSAvXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvO1xudmFyIGV4ZWMgPSBjb25zdHJ1Y3RvclJlZ0V4cC5leGVjO1xudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSAhY29uc3RydWN0b3JSZWdFeHAuZXhlYyhmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuXG52YXIgaXNDb25zdHJ1Y3Rvck1vZGVybiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3RydWN0KE9iamVjdCwgZW1wdHksIGFyZ3VtZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBpc0NvbnN0cnVjdG9yTGVnYWN5ID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChjbGFzc29mKGFyZ3VtZW50KSkge1xuICAgIGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0dlbmVyYXRvckZ1bmN0aW9uJzpcbiAgICBjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzogcmV0dXJuIGZhbHNlO1xuICAgIC8vIHdlIGNhbid0IGNoZWNrIC5wcm90b3R5cGUgc2luY2UgY29uc3RydWN0b3JzIHByb2R1Y2VkIGJ5IC5iaW5kIGhhdmVuJ3QgaXRcbiAgfSByZXR1cm4gSU5DT1JSRUNUX1RPX1NUUklORyB8fCAhIWV4ZWMuY2FsbChjb25zdHJ1Y3RvclJlZ0V4cCwgaW5zcGVjdFNvdXJjZShhcmd1bWVudCkpO1xufTtcblxuLy8gYElzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9ICFjb25zdHJ1Y3QgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGVkO1xuICByZXR1cm4gaXNDb25zdHJ1Y3Rvck1vZGVybihpc0NvbnN0cnVjdG9yTW9kZXJuLmNhbGwpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oT2JqZWN0KVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKGZ1bmN0aW9uICgpIHsgY2FsbGVkID0gdHJ1ZTsgfSlcbiAgICB8fCBjYWxsZWQ7XG59KSA/IGlzQ29uc3RydWN0b3JMZWdhY3kgOiBpc0NvbnN0cnVjdG9yTW9kZXJuO1xuIiwidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGEgcGFydCBvZiBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5KSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKGlzQ29uc3RydWN0b3IoQykgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQztcbn07XG4iLCJ2YXIgYXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5LCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoYXJyYXlTcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWxBcnJheSkpKGxlbmd0aCA9PT0gMCA/IDAgOiBsZW5ndGgpO1xufTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyUmVqZWN0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIElTX0ZJTFRFUl9SRUpFQ1QgPSBUWVBFID09IDc7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSIHx8IElTX0ZJTFRFUl9SRUpFQ1QgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlclxuICAgICAgICB9IGVsc2Ugc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIC8vIGV2ZXJ5XG4gICAgICAgICAgY2FzZSA3OiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlclJlamVjdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcbiAgZmluZEluZGV4OiBjcmVhdGVNZXRob2QoNiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyUmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4gIGZpbHRlclJlamVjdDogY3JlYXRlTWV0aG9kKDcpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBuYXRpdmVPYmplY3RDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQnKTtcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZm9yRWFjaDtcblxudmFyIEhJRERFTiA9IHNoYXJlZEtleSgnaGlkZGVuJyk7XG52YXIgU1lNQk9MID0gJ1N5bWJvbCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoU1lNQk9MKTtcbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkc3RyaW5naWZ5ID0gZ2V0QnVpbHRJbignSlNPTicsICdzdHJpbmdpZnknKTtcbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyA9IGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbC5mO1xudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0gcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZjtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIFN0cmluZ1RvU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N0cmluZy10by1zeW1ib2wtcmVnaXN0cnknKTtcbnZhciBTeW1ib2xUb1N0cmluZ1JlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtdG8tc3RyaW5nLXJlZ2lzdHJ5Jyk7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBVU0VfU0VUVEVSID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdENyZWF0ZShuYXRpdmVEZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoTywgUCwgQXR0cmlidXRlcykge1xuICB2YXIgT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciA9IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3RQcm90b3R5cGUsIFApO1xuICBpZiAoT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvcikgZGVsZXRlIE9iamVjdFByb3RvdHlwZVtQXTtcbiAgbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIGlmIChPYmplY3RQcm90b3R5cGVEZXNjcmlwdG9yICYmIE8gIT09IE9iamVjdFByb3RvdHlwZSkge1xuICAgIG5hdGl2ZURlZmluZVByb3BlcnR5KE9iamVjdFByb3RvdHlwZSwgUCwgT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvcik7XG4gIH1cbn0gOiBuYXRpdmVEZWZpbmVQcm9wZXJ0eTtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnLCBkZXNjcmlwdGlvbikge1xuICB2YXIgc3ltYm9sID0gQWxsU3ltYm9sc1t0YWddID0gbmF0aXZlT2JqZWN0Q3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHNldEludGVybmFsU3RhdGUoc3ltYm9sLCB7XG4gICAgdHlwZTogU1lNQk9MLFxuICAgIHRhZzogdGFnLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvblxuICB9KTtcbiAgaWYgKCFERVNDUklQVE9SUykgc3ltYm9sLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gIHJldHVybiBzeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBpZiAoTyA9PT0gT2JqZWN0UHJvdG90eXBlKSAkZGVmaW5lUHJvcGVydHkoT2JqZWN0UHJvdG90eXBlU3ltYm9scywgUCwgQXR0cmlidXRlcyk7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5ID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChoYXNPd24oQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghQXR0cmlidXRlcy5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhc093bihPLCBISURERU4pKSBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPLCBISURERU4sIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB7fSkpO1xuICAgICAgT1tISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzT3duKE8sIEhJRERFTikgJiYgT1tISURERU5dW2tleV0pIE9bSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBBdHRyaWJ1dGVzID0gbmF0aXZlT2JqZWN0Q3JlYXRlKEF0dHJpYnV0ZXMsIHsgZW51bWVyYWJsZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjcmlwdG9yKE8sIGtleSwgQXR0cmlidXRlcyk7XG4gIH0gcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIGtleSwgQXR0cmlidXRlcyk7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBwcm9wZXJ0aWVzID0gdG9JbmRleGVkT2JqZWN0KFByb3BlcnRpZXMpO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMocHJvcGVydGllcykuY29uY2F0KCRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMocHJvcGVydGllcykpO1xuICAkZm9yRWFjaChrZXlzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFERVNDUklQVE9SUyB8fCAkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChwcm9wZXJ0aWVzLCBrZXkpKSAkZGVmaW5lUHJvcGVydHkoTywga2V5LCBwcm9wZXJ0aWVzW2tleV0pO1xuICB9KTtcbiAgcmV0dXJuIE87XG59O1xuXG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyBuYXRpdmVPYmplY3RDcmVhdGUoTykgOiAkZGVmaW5lUHJvcGVydGllcyhuYXRpdmVPYmplY3RDcmVhdGUoTyksIFByb3BlcnRpZXMpO1xufTtcblxudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIFAgPSB0b1Byb3BlcnR5S2V5KFYpO1xuICB2YXIgZW51bWVyYWJsZSA9IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGhpcywgUCk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzT3duKEFsbFN5bWJvbHMsIFApICYmICFoYXNPd24oT2JqZWN0UHJvdG90eXBlU3ltYm9scywgUCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGVudW1lcmFibGUgfHwgIWhhc093bih0aGlzLCBQKSB8fCAhaGFzT3duKEFsbFN5bWJvbHMsIFApIHx8IGhhc093bih0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtQXVxuICAgID8gZW51bWVyYWJsZSA6IHRydWU7XG59O1xuXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIHZhciBpdCA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgdmFyIGtleSA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG90eXBlICYmIGhhc093bihBbGxTeW1ib2xzLCBrZXkpICYmICFoYXNPd24oT2JqZWN0UHJvdG90eXBlU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgZGVzY3JpcHRvciA9IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTtcbiAgaWYgKGRlc2NyaXB0b3IgJiYgaGFzT3duKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXNPd24oaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkge1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59O1xuXG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgdmFyIG5hbWVzID0gbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyh0b0luZGV4ZWRPYmplY3QoTykpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gICRmb3JFYWNoKG5hbWVzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFoYXNPd24oQWxsU3ltYm9scywga2V5KSAmJiAhaGFzT3duKGhpZGRlbktleXMsIGtleSkpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTykge1xuICB2YXIgSVNfT0JKRUNUX1BST1RPVFlQRSA9IE8gPT09IE9iamVjdFByb3RvdHlwZTtcbiAgdmFyIG5hbWVzID0gbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyhJU19PQkpFQ1RfUFJPVE9UWVBFID8gT2JqZWN0UHJvdG90eXBlU3ltYm9scyA6IHRvSW5kZXhlZE9iamVjdChPKSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgJGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoaGFzT3duKEFsbFN5bWJvbHMsIGtleSkgJiYgKCFJU19PQkpFQ1RfUFJPVE9UWVBFIHx8IGhhc093bihPYmplY3RQcm90b3R5cGUsIGtleSkpKSB7XG4gICAgICByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBgU3ltYm9sYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wtY29uc3RydWN0b3JcbmlmICghTkFUSVZFX1NZTUJPTCkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSAhYXJndW1lbnRzLmxlbmd0aCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICR0b1N0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgIHZhciB0YWcgPSB1aWQoZGVzY3JpcHRpb24pO1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUpIHNldHRlci5jYWxsKE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXNPd24odGhpcywgSElEREVOKSAmJiBoYXNPd24odGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzY3JpcHRvcih0aGlzLCB0YWcsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIFVTRV9TRVRURVIpIHNldFN5bWJvbERlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6IHNldHRlciB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcsIGRlc2NyaXB0aW9uKTtcbiAgfTtcblxuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnRhZztcbiAgfSk7XG5cbiAgcmVkZWZpbmUoJFN5bWJvbCwgJ3dpdGhvdXRTZXR0ZXInLCBmdW5jdGlvbiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gd3JhcCh1aWQoZGVzY3JpcHRpb24pLCBkZXNjcmlwdGlvbik7XG4gIH0pO1xuXG4gIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mID0gZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsLmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2VsbEtub3duU3ltYm9sKG5hbWUpLCBuYW1lKTtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1TeW1ib2wtZGVzY3JpcHRpb25cbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eSgkU3ltYm9sW1BST1RPVFlQRV0sICdkZXNjcmlwdGlvbicsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghSVNfUFVSRSkge1xuICAgICAgcmVkZWZpbmUoT2JqZWN0UHJvdG90eXBlLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MLCBzaGFtOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIFN5bWJvbDogJFN5bWJvbFxufSk7XG5cbiRmb3JFYWNoKG9iamVjdEtleXMoV2VsbEtub3duU3ltYm9sc1N0b3JlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgZGVmaW5lV2VsbEtub3duU3ltYm9sKG5hbWUpO1xufSk7XG5cbiQoeyB0YXJnZXQ6IFNZTUJPTCwgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIC8vIGBTeW1ib2wuZm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuZm9yXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHN0cmluZyA9ICR0b1N0cmluZyhrZXkpO1xuICAgIGlmIChoYXNPd24oU3RyaW5nVG9TeW1ib2xSZWdpc3RyeSwgc3RyaW5nKSkgcmV0dXJuIFN0cmluZ1RvU3ltYm9sUmVnaXN0cnlbc3RyaW5nXTtcbiAgICB2YXIgc3ltYm9sID0gJFN5bWJvbChzdHJpbmcpO1xuICAgIFN0cmluZ1RvU3ltYm9sUmVnaXN0cnlbc3RyaW5nXSA9IHN5bWJvbDtcbiAgICBTeW1ib2xUb1N0cmluZ1JlZ2lzdHJ5W3N5bWJvbF0gPSBzdHJpbmc7XG4gICAgcmV0dXJuIHN5bWJvbDtcbiAgfSxcbiAgLy8gYFN5bWJvbC5rZXlGb3JgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5rZXlmb3JcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2wnKTtcbiAgICBpZiAoaGFzT3duKFN5bWJvbFRvU3RyaW5nUmVnaXN0cnksIHN5bSkpIHJldHVybiBTeW1ib2xUb1N0cmluZ1JlZ2lzdHJ5W3N5bV07XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBVU0VfU0VUVEVSID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IFVTRV9TRVRURVIgPSBmYWxzZTsgfVxufSk7XG5cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICAvLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yXG59KTtcblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wgfSwge1xuICAvLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyBgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5c3ltYm9sc1xuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyBDaHJvbWUgMzggYW5kIDM5IGBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzYCBmYWlscyBvbiBwcmltaXRpdmVzXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNDQzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBmYWlscyhmdW5jdGlvbiAoKSB7IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mKDEpOyB9KSB9LCB7XG4gIGdldE93blByb3BlcnR5U3ltYm9sczogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gICAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuXG4vLyBgSlNPTi5zdHJpbmdpZnlgIG1ldGhvZCBiZWhhdmlvciB3aXRoIHN5bWJvbHNcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtanNvbi5zdHJpbmdpZnlcbmlmICgkc3RyaW5naWZ5KSB7XG4gIHZhciBGT1JDRURfSlNPTl9TVFJJTkdJRlkgPSAhTkFUSVZFX1NZTUJPTCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woKTtcbiAgICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAgIHJldHVybiAkc3RyaW5naWZ5KFtzeW1ib2xdKSAhPSAnW251bGxdJ1xuICAgICAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gICAgICB8fCAkc3RyaW5naWZ5KHsgYTogc3ltYm9sIH0pICE9ICd7fSdcbiAgICAgIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gICAgICB8fCAkc3RyaW5naWZ5KE9iamVjdChzeW1ib2wpKSAhPSAne30nO1xuICB9KTtcblxuICAkKHsgdGFyZ2V0OiAnSlNPTicsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX0pTT05fU1RSSU5HSUZZIH0sIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0LCByZXBsYWNlciwgc3BhY2UpIHtcbiAgICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICAgIHZhciBpbmRleCA9IDE7XG4gICAgICB2YXIgJHJlcGxhY2VyO1xuICAgICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpbmRleCkgYXJncy5wdXNoKGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgICAkcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQ2FsbGFibGUoJHJlcGxhY2VyKSkgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgICByZXR1cm4gJHN0cmluZ2lmeS5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUtQEB0b3ByaW1pdGl2ZVxuaWYgKCEkU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSkge1xuICB2YXIgdmFsdWVPZiA9ICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mO1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB2YWx1ZU9mLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH0pO1xufVxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11gIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUtQEB0b3N0cmluZ3RhZ1xuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgU1lNQk9MKTtcblxuaGlkZGVuS2V5c1tISURERU5dID0gdHJ1ZTtcbiIsIi8vIGBTeW1ib2wucHJvdG90eXBlLmRlc2NyaXB0aW9uYCBnZXR0ZXJcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnByb3RvdHlwZS5kZXNjcmlwdGlvblxuJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcblxudmFyIE5hdGl2ZVN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG5cbmlmIChERVNDUklQVE9SUyAmJiBpc0NhbGxhYmxlKE5hdGl2ZVN5bWJvbCkgJiYgKCEoJ2Rlc2NyaXB0aW9uJyBpbiBOYXRpdmVTeW1ib2wucHJvdG90eXBlKSB8fFxuICAvLyBTYWZhcmkgMTIgYnVnXG4gIE5hdGl2ZVN5bWJvbCgpLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWRcbikpIHtcbiAgdmFyIEVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZSA9IHt9O1xuICAvLyB3cmFwIFN5bWJvbCBjb25zdHJ1Y3RvciBmb3IgY29ycmVjdCB3b3JrIHdpdGggdW5kZWZpbmVkIGRlc2NyaXB0aW9uXG4gIHZhciBTeW1ib2xXcmFwcGVyID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAxIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogU3RyaW5nKGFyZ3VtZW50c1swXSk7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMgaW5zdGFuY2VvZiBTeW1ib2xXcmFwcGVyXG4gICAgICA/IG5ldyBOYXRpdmVTeW1ib2woZGVzY3JpcHRpb24pXG4gICAgICAvLyBpbiBFZGdlIDEzLCBTdHJpbmcoU3ltYm9sKHVuZGVmaW5lZCkpID09PSAnU3ltYm9sKHVuZGVmaW5lZCknXG4gICAgICA6IGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQgPyBOYXRpdmVTeW1ib2woKSA6IE5hdGl2ZVN5bWJvbChkZXNjcmlwdGlvbik7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSAnJykgRW1wdHlTdHJpbmdEZXNjcmlwdGlvblN0b3JlW3Jlc3VsdF0gPSB0cnVlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoU3ltYm9sV3JhcHBlciwgTmF0aXZlU3ltYm9sKTtcbiAgdmFyIHN5bWJvbFByb3RvdHlwZSA9IFN5bWJvbFdyYXBwZXIucHJvdG90eXBlID0gTmF0aXZlU3ltYm9sLnByb3RvdHlwZTtcbiAgc3ltYm9sUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ltYm9sV3JhcHBlcjtcblxuICB2YXIgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90b3R5cGUudG9TdHJpbmc7XG4gIHZhciBuYXRpdmVTeW1ib2wgPSBTdHJpbmcoTmF0aXZlU3ltYm9sKCd0ZXN0JykpID09ICdTeW1ib2wodGVzdCknO1xuICB2YXIgcmVnZXhwID0gL15TeW1ib2xcXCgoLiopXFwpW14pXSskLztcbiAgZGVmaW5lUHJvcGVydHkoc3ltYm9sUHJvdG90eXBlLCAnZGVzY3JpcHRpb24nLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZGVzY3JpcHRpb24oKSB7XG4gICAgICB2YXIgc3ltYm9sID0gaXNPYmplY3QodGhpcykgPyB0aGlzLnZhbHVlT2YoKSA6IHRoaXM7XG4gICAgICB2YXIgc3RyaW5nID0gc3ltYm9sVG9TdHJpbmcuY2FsbChzeW1ib2wpO1xuICAgICAgaWYgKGhhc093bihFbXB0eVN0cmluZ0Rlc2NyaXB0aW9uU3RvcmUsIHN5bWJvbCkpIHJldHVybiAnJztcbiAgICAgIHZhciBkZXNjID0gbmF0aXZlU3ltYm9sID8gc3RyaW5nLnNsaWNlKDcsIC0xKSA6IHN0cmluZy5yZXBsYWNlKHJlZ2V4cCwgJyQxJyk7XG4gICAgICByZXR1cm4gZGVzYyA9PT0gJycgPyB1bmRlZmluZWQgOiBkZXNjO1xuICAgIH1cbiAgfSk7XG5cbiAgJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICBTeW1ib2w6IFN5bWJvbFdyYXBwZXJcbiAgfSk7XG59XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLmFzeW5jSXRlcmF0b3JgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5hc3luY2l0ZXJhdG9yXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2FzeW5jSXRlcmF0b3InKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wuaGFzSW5zdGFuY2VgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5oYXNpbnN0YW5jZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdoYXNJbnN0YW5jZScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5pc2NvbmNhdHNwcmVhZGFibGVcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLml0ZXJhdG9yYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuaXRlcmF0b3JcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wubWF0Y2hgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5tYXRjaFxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5tYXRjaEFsbGAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLm1hdGNoYWxsXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ21hdGNoQWxsJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnJlcGxhY2VgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5yZXBsYWNlXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3JlcGxhY2UnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wuc2VhcmNoYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuc2VhcmNoXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3NlYXJjaCcpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5zcGVjaWVzYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuc3BlY2llc1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnNwbGl0YCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuc3BsaXRcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnc3BsaXQnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wudG9QcmltaXRpdmVgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC50b3ByaW1pdGl2ZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC50b1N0cmluZ1RhZ2Agd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnRvc3RyaW5ndGFnXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnVuc2NvcGFibGVzYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wudW5zY29wYWJsZXNcbmRlZmluZVdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYoKSkgIT09IEYucHJvdG90eXBlO1xufSk7XG4iLCJ2YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuXG4vLyBgT2JqZWN0LmdldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldHByb3RvdHlwZW9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgdmFyIG9iamVjdCA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzT3duKG9iamVjdCwgSUVfUFJPVE8pKSByZXR1cm4gb2JqZWN0W0lFX1BST1RPXTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBpZiAoaXNDYWxsYWJsZShjb25zdHJ1Y3RvcikgJiYgb2JqZWN0IGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90b3R5cGUgOiBudWxsO1xufTtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmICh0eXBlb2YgYXJndW1lbnQgPT09ICdvYmplY3QnIHx8IGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhhcmd1bWVudCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gLS0gc2FmZSAqL1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICBhbk9iamVjdChPKTtcbiAgICBhUG9zc2libGVQcm90b3R5cGUocHJvdG8pO1xuICAgIGlmIChDT1JSRUNUX1NFVFRFUikgc2V0dGVyLmNhbGwoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG4vLyBgSW5zdGFsbEVycm9yQ2F1c2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWVycm9yLWNhdXNlLyNzZWMtZXJyb3JvYmplY3RzLWluc3RhbGwtZXJyb3ItY2F1c2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIG9wdGlvbnMpIHtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjYXVzZScgaW4gb3B0aW9ucykge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCAnY2F1c2UnLCBvcHRpb25zLmNhdXNlKTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG90eXBlW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gZ2V0TWV0aG9kKGl0LCBJVEVSQVRPUilcbiAgICB8fCBnZXRNZXRob2QoaXQsICdAQGl0ZXJhdG9yJylcbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsInZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQsIHVzaW5nSXRlcmF0b3IpIHtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBnZXRJdGVyYXRvck1ldGhvZChhcmd1bWVudCkgOiB1c2luZ0l0ZXJhdG9yO1xuICBpZiAoYUNhbGxhYmxlKGl0ZXJhdG9yTWV0aG9kKSkgcmV0dXJuIGFuT2JqZWN0KGl0ZXJhdG9yTWV0aG9kLmNhbGwoYXJndW1lbnQpKTtcbiAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgdmFyIGlubmVyUmVzdWx0LCBpbm5lckVycm9yO1xuICBhbk9iamVjdChpdGVyYXRvcik7XG4gIHRyeSB7XG4gICAgaW5uZXJSZXN1bHQgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0KSB7XG4gICAgICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlubmVyUmVzdWx0ID0gaW5uZXJSZXN1bHQuY2FsbChpdGVyYXRvcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5uZXJFcnJvciA9IHRydWU7XG4gICAgaW5uZXJSZXN1bHQgPSBlcnJvcjtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gIGlmIChpbm5lckVycm9yKSB0aHJvdyBpbm5lclJlc3VsdDtcbiAgYW5PYmplY3QoaW5uZXJSZXN1bHQpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxudmFyIFJlc3VsdCA9IGZ1bmN0aW9uIChzdG9wcGVkLCByZXN1bHQpIHtcbiAgdGhpcy5zdG9wcGVkID0gc3RvcHBlZDtcbiAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgdW5ib3VuZEZ1bmN0aW9uLCBvcHRpb25zKSB7XG4gIHZhciB0aGF0ID0gb3B0aW9ucyAmJiBvcHRpb25zLnRoYXQ7XG4gIHZhciBBU19FTlRSSUVTID0gISEob3B0aW9ucyAmJiBvcHRpb25zLkFTX0VOVFJJRVMpO1xuICB2YXIgSVNfSVRFUkFUT1IgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfSVRFUkFUT1IpO1xuICB2YXIgSU5URVJSVVBURUQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSU5URVJSVVBURUQpO1xuICB2YXIgZm4gPSBiaW5kKHVuYm91bmRGdW5jdGlvbiwgdGhhdCwgMSArIEFTX0VOVFJJRVMgKyBJTlRFUlJVUFRFRCk7XG4gIHZhciBpdGVyYXRvciwgaXRlckZuLCBpbmRleCwgbGVuZ3RoLCByZXN1bHQsIG5leHQsIHN0ZXA7XG5cbiAgdmFyIHN0b3AgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7XG4gICAgaWYgKGl0ZXJhdG9yKSBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgY29uZGl0aW9uKTtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh0cnVlLCBjb25kaXRpb24pO1xuICB9O1xuXG4gIHZhciBjYWxsRm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoQVNfRU5UUklFUykge1xuICAgICAgYW5PYmplY3QodmFsdWUpO1xuICAgICAgcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWVbMF0sIHZhbHVlWzFdLCBzdG9wKSA6IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XG4gICAgfSByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZSwgc3RvcCkgOiBmbih2YWx1ZSk7XG4gIH07XG5cbiAgaWYgKElTX0lURVJBVE9SKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyRm4gPSBnZXRJdGVyYXRvck1ldGhvZChpdGVyYWJsZSk7XG4gICAgaWYgKCFpdGVyRm4pIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXRlcmFibGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbiAgICAvLyBvcHRpbWlzYXRpb24gZm9yIGFycmF5IGl0ZXJhdG9yc1xuICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGl0ZXJhYmxlKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbEZuKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgICAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG4gICAgfVxuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUsIGl0ZXJGbik7XG4gIH1cblxuICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgd2hpbGUgKCEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmUpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gY2FsbEZuKHN0ZXAudmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAndGhyb3cnLCBlcnJvcik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiByZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGluc3RhbGxFcnJvckNhdXNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcblxudmFyICRBZ2dyZWdhdGVFcnJvciA9IGZ1bmN0aW9uIEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSAvKiAsIG9wdGlvbnMgKi8pIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICBpZiAoISh0aGF0IGluc3RhbmNlb2YgJEFnZ3JlZ2F0ZUVycm9yKSkgcmV0dXJuIG5ldyAkQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBtZXNzYWdlLCBvcHRpb25zKTtcbiAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vZXJyb3ItbWVzc2FnZSAtLSBleHBlY3RlZFxuICAgIHRoYXQgPSBzZXRQcm90b3R5cGVPZihuZXcgRXJyb3IodW5kZWZpbmVkKSwgZ2V0UHJvdG90eXBlT2YodGhhdCkpO1xuICB9XG4gIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCAnbWVzc2FnZScsIHRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgaW5zdGFsbEVycm9yQ2F1c2UodGhhdCwgb3B0aW9ucyk7XG4gIHZhciBlcnJvcnNBcnJheSA9IFtdO1xuICBpdGVyYXRlKGVycm9ycywgZXJyb3JzQXJyYXkucHVzaCwgeyB0aGF0OiBlcnJvcnNBcnJheSB9KTtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdlcnJvcnMnLCBlcnJvcnNBcnJheSk7XG4gIHJldHVybiB0aGF0O1xufTtcblxuaWYgKHNldFByb3RvdHlwZU9mKSBzZXRQcm90b3R5cGVPZigkQWdncmVnYXRlRXJyb3IsIEVycm9yKTtcbmVsc2UgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcygkQWdncmVnYXRlRXJyb3IsIEVycm9yKTtcblxuJEFnZ3JlZ2F0ZUVycm9yLnByb3RvdHlwZSA9IGNyZWF0ZShFcnJvci5wcm90b3R5cGUsIHtcbiAgY29uc3RydWN0b3I6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAkQWdncmVnYXRlRXJyb3IpLFxuICBtZXNzYWdlOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJycpLFxuICBuYW1lOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJ0FnZ3JlZ2F0ZUVycm9yJylcbn0pO1xuXG4vLyBgQWdncmVnYXRlRXJyb3JgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFnZ3JlZ2F0ZS1lcnJvci1jb25zdHJ1Y3RvclxuJCh7IGdsb2JhbDogdHJ1ZSB9LCB7XG4gIEFnZ3JlZ2F0ZUVycm9yOiAkQWdncmVnYXRlRXJyb3Jcbn0pO1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG52YXIgVU5TQ09QQUJMRVMgPSB3ZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVsYXRpdmUtaW5kZXhpbmctbWV0aG9kXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGF0OiBmdW5jdGlvbiBhdChpbmRleCkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciByZWxhdGl2ZUluZGV4ID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gICAgdmFyIGsgPSByZWxhdGl2ZUluZGV4ID49IDAgPyByZWxhdGl2ZUluZGV4IDogbGVuICsgcmVsYXRpdmVJbmRleDtcbiAgICByZXR1cm4gKGsgPCAwIHx8IGsgPj0gbGVuKSA/IHVuZGVmaW5lZCA6IE9ba107XG4gIH1cbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdhdCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9Qcm9wZXJ0eUtleShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIC8vIFdlIGNhbid0IHVzZSB0aGlzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc3XG4gIHJldHVybiBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGZvbzogMSB9O1xuICAgIH07XG4gICAgcmV0dXJuIGFycmF5W01FVEhPRF9OQU1FXShCb29sZWFuKS5mb28gIT09IDE7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcblxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gd2VsbEtub3duU3ltYm9sKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjtcbnZhciBNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQgPSAnTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkJztcblxuLy8gV2UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4vLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgPSBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBhcnJheVtJU19DT05DQVRfU1BSRUFEQUJMRV0gPSBmYWxzZTtcbiAgcmV0dXJuIGFycmF5LmNvbmNhdCgpWzBdICE9PSBhcnJheTtcbn0pO1xuXG52YXIgU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnY29uY2F0Jyk7XG5cbnZhciBpc0NvbmNhdFNwcmVhZGFibGUgPSBmdW5jdGlvbiAoTykge1xuICBpZiAoIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzcHJlYWRhYmxlID0gT1tJU19DT05DQVRfU1BSRUFEQUJMRV07XG4gIHJldHVybiBzcHJlYWRhYmxlICE9PSB1bmRlZmluZWQgPyAhIXNwcmVhZGFibGUgOiBpc0FycmF5KE8pO1xufTtcblxudmFyIEZPUkNFRCA9ICFJU19DT05DQVRfU1BSRUFEQUJMRV9TVVBQT1JUIHx8ICFTUEVDSUVTX1NVUFBPUlQ7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29uY2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvbmNhdFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQGlzQ29uY2F0U3ByZWFkYWJsZSBhbmQgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBjb25jYXQ6IGZ1bmN0aW9uIGNvbmNhdChhcmcpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIHZhciBuID0gMDtcbiAgICB2YXIgaSwgaywgbGVuZ3RoLCBsZW4sIEU7XG4gICAgZm9yIChpID0gLTEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgRSA9IGkgPT09IC0xID8gTyA6IGFyZ3VtZW50c1tpXTtcbiAgICAgIGlmIChpc0NvbmNhdFNwcmVhZGFibGUoRSkpIHtcbiAgICAgICAgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoRSk7XG4gICAgICAgIGlmIChuICsgbGVuID4gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBsZW47IGsrKywgbisrKSBpZiAoayBpbiBFKSBjcmVhdGVQcm9wZXJ0eShBLCBuLCBFW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID49IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShBLCBuKyssIEUpO1xuICAgICAgfVxuICAgIH1cbiAgICBBLmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvcHl3aXRoaW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1wcm90b3R5cGUtY29weXdpdGhpbiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IFtdLmNvcHlXaXRoaW4gfHwgZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQgLyogPSAwICovLCBzdGFydCAvKiA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICB2YXIgdG8gPSB0b0Fic29sdXRlSW5kZXgodGFyZ2V0LCBsZW4pO1xuICB2YXIgZnJvbSA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuKTtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgY291bnQgPSBtaW4oKGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuKSkgLSBmcm9tLCBsZW4gLSB0byk7XG4gIHZhciBpbmMgPSAxO1xuICBpZiAoZnJvbSA8IHRvICYmIHRvIDwgZnJvbSArIGNvdW50KSB7XG4gICAgaW5jID0gLTE7XG4gICAgZnJvbSArPSBjb3VudCAtIDE7XG4gICAgdG8gKz0gY291bnQgLSAxO1xuICB9XG4gIHdoaWxlIChjb3VudC0tID4gMCkge1xuICAgIGlmIChmcm9tIGluIE8pIE9bdG9dID0gT1tmcm9tXTtcbiAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICB0byArPSBpbmM7XG4gICAgZnJvbSArPSBpbmM7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY29weVdpdGhpbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1jb3B5LXdpdGhpbicpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5jb3B5d2l0aGluXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGNvcHlXaXRoaW46IGNvcHlXaXRoaW5cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdjb3B5V2l0aGluJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGV2ZXJ5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmV2ZXJ5O1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2V2ZXJ5Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIH0sIHtcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsbGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWxsXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGxlbmd0aCk7XG4gIHZhciBlbmQgPSBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgZW5kUG9zID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpO1xuICB3aGlsZSAoZW5kUG9zID4gaW5kZXgpIE9baW5kZXgrK10gPSB2YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmlsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1maWxsJyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbGxcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmlsbDogZmlsbFxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2ZpbGwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdmaWx0ZXInKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogU0tJUFNfSE9MRVMgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoRklORCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZEluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbmRJbmRleDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG52YXIgRklORF9JTkRFWCA9ICdmaW5kSW5kZXgnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EX0lOREVYIGluIFtdKSBBcnJheSgxKVtGSU5EX0lOREVYXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kaW5kZXhcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZEluZGV4OiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmRJbmRleCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKEZJTkRfSU5ERVgpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG5cbi8vIGBGbGF0dGVuSW50b0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtZmxhdE1hcC8jc2VjLUZsYXR0ZW5JbnRvQXJyYXlcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gZnVuY3Rpb24gKHRhcmdldCwgb3JpZ2luYWwsIHNvdXJjZSwgc291cmNlTGVuLCBzdGFydCwgZGVwdGgsIG1hcHBlciwgdGhpc0FyZykge1xuICB2YXIgdGFyZ2V0SW5kZXggPSBzdGFydDtcbiAgdmFyIHNvdXJjZUluZGV4ID0gMDtcbiAgdmFyIG1hcEZuID0gbWFwcGVyID8gYmluZChtYXBwZXIsIHRoaXNBcmcsIDMpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBlbGVtZW50TGVuO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBpZiAoZGVwdGggPiAwICYmIGlzQXJyYXkoZWxlbWVudCkpIHtcbiAgICAgICAgZWxlbWVudExlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKGVsZW1lbnQpO1xuICAgICAgICB0YXJnZXRJbmRleCA9IGZsYXR0ZW5JbnRvQXJyYXkodGFyZ2V0LCBvcmlnaW5hbCwgZWxlbWVudCwgZWxlbWVudExlbiwgdGFyZ2V0SW5kZXgsIGRlcHRoIC0gMSkgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID49IDB4MUZGRkZGRkZGRkZGRkYpIHRocm93IFR5cGVFcnJvcignRXhjZWVkIHRoZSBhY2NlcHRhYmxlIGFycmF5IGxlbmd0aCcpO1xuICAgICAgICB0YXJnZXRbdGFyZ2V0SW5kZXhdID0gZWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0SW5kZXgrKztcbiAgICB9XG4gICAgc291cmNlSW5kZXgrKztcbiAgfVxuICByZXR1cm4gdGFyZ2V0SW5kZXg7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmxhdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mbGF0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZsYXQ6IGZ1bmN0aW9uIGZsYXQoLyogZGVwdGhBcmcgPSAxICovKSB7XG4gICAgdmFyIGRlcHRoQXJnID0gYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBBLmxlbmd0aCA9IGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCBkZXB0aEFyZyA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlck9ySW5maW5pdHkoZGVwdGhBcmcpKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZsYXR0ZW4taW50by1hcnJheScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mbGF0TWFwYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZsYXRtYXBcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBBO1xuICAgIGFDYWxsYWJsZShjYWxsYmFja2ZuKTtcbiAgICBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIEEubGVuZ3RoID0gZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIDEsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZm9yRWFjaDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdmb3JFYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9ICFTVFJJQ1RfTUVUSE9EID8gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1mb3JlYWNoIC0tIHNhZmVcbn0gOiBbXS5mb3JFYWNoO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1mb3JlYWNoIC0tIHNhZmVcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFtdLmZvckVhY2ggIT0gZm9yRWFjaCB9LCB7XG4gIGZvckVhY2g6IGZvckVhY2hcbn0pO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZycpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgdmFyIElTX0NPTlNUUlVDVE9SID0gaXNDb25zdHJ1Y3Rvcih0aGlzKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBmbiA9IGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgaWYgKG1hcHBpbmcpIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yLCBuZXh0LCB2YWx1ZTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICYmICEodGhpcyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlcmF0b3JNZXRob2QpKSkge1xuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoTywgaXRlcmF0b3JNZXRob2QpO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMoKSA6IFtdO1xuICAgIGZvciAoOyEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMobGVuZ3RoKSA6IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XTtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgaWYgKCFTS0lQX0NMT1NJTkcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgSVRFUkFUSU9OX1NVUFBPUlQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgb2JqZWN0ID0ge307XG4gICAgb2JqZWN0W0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geyBkb25lOiBJVEVSQVRJT05fU1VQUE9SVCA9IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGV4ZWMob2JqZWN0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gSVRFUkFUSU9OX1NVUFBPUlQ7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xuXG52YXIgSU5DT1JSRUNUX0lURVJBVElPTiA9ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmFibGUpO1xufSk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxuJCh7IHRhcmdldDogJ0FycmF5Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBJTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgZnJvbTogZnJvbVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmNsdWRlcztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWluZGV4b2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIG5hdGl2ZUluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhbmF0aXZlSW5kZXhPZiAmJiAxIC8gWzFdLmluZGV4T2YoMSwgLTApIDwgMDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnaW5kZXhPZicpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogTkVHQVRJVkVfWkVSTyB8fCAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGluZGV4T2Y6IGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gTkVHQVRJVkVfWkVST1xuICAgICAgLy8gY29udmVydCAtMCB0byArMFxuICAgICAgPyBuYXRpdmVJbmRleE9mLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMFxuICAgICAgOiAkaW5kZXhPZih0aGlzLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xuXG4vLyBgQXJyYXkuaXNBcnJheWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LmlzYXJyYXlcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHN0YXQ6IHRydWUgfSwge1xuICBpc0FycmF5OiBpc0FycmF5XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBmYWxzZTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0laXRlcmF0b3Jwcm90b3R5cGUlLW9iamVjdFxudmFyIEl0ZXJhdG9yUHJvdG90eXBlLCBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUsIGFycmF5SXRlcmF0b3I7XG5cbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLWFycmF5LXByb3RvdHlwZS1rZXlzIC0tIHNhZmUgKi9cbmlmIChbXS5rZXlzKSB7XG4gIGFycmF5SXRlcmF0b3IgPSBbXS5rZXlzKCk7XG4gIC8vIFNhZmFyaSA4IGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxuICBpZiAoISgnbmV4dCcgaW4gYXJyYXlJdGVyYXRvcikpIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSB0cnVlO1xuICBlbHNlIHtcbiAgICBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihnZXRQcm90b3R5cGVPZihhcnJheUl0ZXJhdG9yKSk7XG4gICAgaWYgKFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgSXRlcmF0b3JQcm90b3R5cGUgPSBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cbn1cblxudmFyIE5FV19JVEVSQVRPUl9QUk9UT1RZUEUgPSBJdGVyYXRvclByb3RvdHlwZSA9PSB1bmRlZmluZWQgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgdGVzdCA9IHt9O1xuICAvLyBGRjQ0LSBsZWdhY3kgaXRlcmF0b3JzIGNhc2VcbiAgcmV0dXJuIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXS5jYWxsKHRlc3QpICE9PSB0ZXN0O1xufSk7XG5cbmlmIChORVdfSVRFUkFUT1JfUFJPVE9UWVBFKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuZWxzZSBpZiAoSVNfUFVSRSkgSXRlcmF0b3JQcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1AQGl0ZXJhdG9yXG5pZiAoIWlzQ2FsbGFibGUoSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICByZWRlZmluZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIEl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JDb25zdHJ1Y3RvciwgVE9fU1RSSU5HX1RBRywgZmFsc2UsIHRydWUpO1xuICBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICByZXR1cm4gSXRlcmF0b3JDb25zdHJ1Y3Rvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBGdW5jdGlvbk5hbWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJdGVyYXRvcnNDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJyk7XG5cbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5QUk9QRVI7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuQ09ORklHVVJBQkxFO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gSXRlcmF0b3JzQ29yZS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gSXRlcmF0b3JzQ29yZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG52YXIgRU5UUklFUyA9ICdlbnRyaWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYWJsZSwgTkFNRSwgSXRlcmF0b3JDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblxuICB2YXIgZ2V0SXRlcmF0aW9uTWV0aG9kID0gZnVuY3Rpb24gKEtJTkQpIHtcbiAgICBpZiAoS0lORCA9PT0gREVGQVVMVCAmJiBkZWZhdWx0SXRlcmF0b3IpIHJldHVybiBkZWZhdWx0SXRlcmF0b3I7XG4gICAgaWYgKCFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PSAnQXJyYXknID8gSXRlcmFibGVQcm90b3R5cGUuZW50cmllcyB8fCBuYXRpdmVJdGVyYXRvciA6IG5hdGl2ZUl0ZXJhdG9yO1xuICB2YXIgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBtZXRob2RzLCBLRVk7XG5cbiAgLy8gZml4IG5hdGl2ZVxuICBpZiAoYW55TmF0aXZlSXRlcmF0b3IpIHtcbiAgICBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihhbnlOYXRpdmVJdGVyYXRvci5jYWxsKG5ldyBJdGVyYWJsZSgpKSk7XG4gICAgaWYgKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgaWYgKCFJU19QVVJFICYmIGdldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSkgIT09IEl0ZXJhdG9yUHJvdG90eXBlKSB7XG4gICAgICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgIHNldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSXRlcmF0b3JQcm90b3R5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0NhbGxhYmxlKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0pKSB7XG4gICAgICAgICAgcmVkZWZpbmUoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICBpZiAoSVNfUFVSRSkgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgICB9XG4gIH1cblxuICAvLyBmaXggQXJyYXkucHJvdG90eXBlLnsgdmFsdWVzLCBAQGl0ZXJhdG9yIH0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBERUZBVUxUID09IFZBTFVFUyAmJiBuYXRpdmVJdGVyYXRvciAmJiBuYXRpdmVJdGVyYXRvci5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBpZiAoIUlTX1BVUkUgJiYgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYWJsZVByb3RvdHlwZSwgJ25hbWUnLCBWQUxVRVMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSB0cnVlO1xuICAgICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmF0aXZlSXRlcmF0b3IuY2FsbCh0aGlzKTsgfTtcbiAgICB9XG4gIH1cblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICAvLyBkZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghSVNfUFVSRSB8fCBGT1JDRUQpICYmIEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXSAhPT0gZGVmYXVsdEl0ZXJhdG9yKSB7XG4gICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IsIHsgbmFtZTogREVGQVVMVCB9KTtcbiAgfVxuICBJdGVyYXRvcnNbTkFNRV0gPSBkZWZhdWx0SXRlcmF0b3I7XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3InKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHsgdmFsdWU6IGluZGV4LCBkb25lOiBmYWxzZSB9O1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHsgdmFsdWU6IHRhcmdldFtpbmRleF0sIGRvbmU6IGZhbHNlIH07XG4gIHJldHVybiB7IHZhbHVlOiBbaW5kZXgsIHRhcmdldFtpbmRleF1dLCBkb25lOiBmYWxzZSB9O1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyVcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRldW5tYXBwZWRhcmd1bWVudHNvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbWFwcGVkYXJndW1lbnRzb2JqZWN0XG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIG5hdGl2ZUpvaW4gPSBbXS5qb2luO1xuXG52YXIgRVMzX1NUUklOR1MgPSBJbmRleGVkT2JqZWN0ICE9IE9iamVjdDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnam9pbicsICcsJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuam9pbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5qb2luXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBFUzNfU1RSSU5HUyB8fCAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUpvaW4uY2FsbCh0b0luZGV4ZWRPYmplY3QodGhpcyksIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywnIDogc2VwYXJhdG9yKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1hcnJheS1wcm90b3R5cGUtbGFzdGluZGV4b2YgLS0gc2FmZSAqL1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciAkbGFzdEluZGV4T2YgPSBbXS5sYXN0SW5kZXhPZjtcbnZhciBORUdBVElWRV9aRVJPID0gISEkbGFzdEluZGV4T2YgJiYgMSAvIFsxXS5sYXN0SW5kZXhPZigxLCAtMCkgPCAwO1xudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdsYXN0SW5kZXhPZicpO1xudmFyIEZPUkNFRCA9IE5FR0FUSVZFX1pFUk8gfHwgIVNUUklDVF9NRVRIT0Q7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2ZgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubGFzdGluZGV4b2Zcbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEID8gZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IEBbKi0xXSAqLykge1xuICAvLyBjb252ZXJ0IC0wIHRvICswXG4gIGlmIChORUdBVElWRV9aRVJPKSByZXR1cm4gJGxhc3RJbmRleE9mLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMDtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSBpbmRleCA9IG1pbihpbmRleCwgdG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudHNbMV0pKTtcbiAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgZm9yICg7aW5kZXggPj0gMDsgaW5kZXgtLSkgaWYgKGluZGV4IGluIE8gJiYgT1tpbmRleF0gPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBpbmRleCB8fCAwO1xuICByZXR1cm4gLTE7XG59IDogJGxhc3RJbmRleE9mO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbGFzdEluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbGFzdC1pbmRleC1vZicpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmxhc3RpbmRleG9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWxhc3RpbmRleG9mIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBsYXN0SW5kZXhPZiAhPT0gW10ubGFzdEluZGV4T2YgfSwge1xuICBsYXN0SW5kZXhPZjogbGFzdEluZGV4T2Zcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5tYXA7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ21hcCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhSEFTX1NQRUNJRVNfU1VQUE9SVCB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xuXG52YXIgSVNOVF9HRU5FUklDID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1vZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gIShBcnJheS5vZi5jYWxsKEYpIGluc3RhbmNlb2YgRik7XG59KTtcblxuLy8gYEFycmF5Lm9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkub2Zcbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElTTlRfR0VORVJJQyB9LCB7XG4gIG9mOiBmdW5jdGlvbiBvZigvKiAuLi5hcmdzICovKSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChpc0NvbnN0cnVjdG9yKHRoaXMpID8gdGhpcyA6IEFycmF5KShhcmd1bWVudHNMZW5ndGgpO1xuICAgIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICByZXN1bHQubGVuZ3RoID0gYXJndW1lbnRzTGVuZ3RoO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwidmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyByZWR1Y2UsIHJlZHVjZVJpZ2h0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfUklHSFQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBjYWxsYmFja2ZuLCBhcmd1bWVudHNMZW5ndGgsIG1lbW8pIHtcbiAgICBhQ2FsbGFibGUoY2FsbGJhY2tmbik7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGF0KTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBpbmRleCA9IElTX1JJR0hUID8gbGVuZ3RoIC0gMSA6IDA7XG4gICAgdmFyIGkgPSBJU19SSUdIVCA/IC0xIDogMTtcbiAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDwgMikgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgICAgaW5kZXggKz0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgaWYgKElTX1JJR0hUID8gaW5kZXggPCAwIDogbGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKDtJU19SSUdIVCA/IGluZGV4ID49IDAgOiBsZW5ndGggPiBpbmRleDsgaW5kZXggKz0gaSkgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gICAgfVxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlXG4gIGxlZnQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VyaWdodFxuICByaWdodDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3NvZihnbG9iYWwucHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHJlZHVjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1yZWR1Y2UnKS5sZWZ0O1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xudmFyIENIUk9NRV9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ3JlZHVjZScpO1xuLy8gQ2hyb21lIDgwLTgyIGhhcyBhIGNyaXRpY2FsIGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTA0OTk4MlxudmFyIENIUk9NRV9CVUcgPSAhSVNfTk9ERSAmJiBDSFJPTUVfVkVSU0lPTiA+IDc5ICYmIENIUk9NRV9WRVJTSU9OIDwgODM7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJlZHVjZVxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIVNUUklDVF9NRVRIT0QgfHwgQ0hST01FX0JVRyB9LCB7XG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHJlZHVjZVJpZ2h0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXJlZHVjZScpLnJpZ2h0O1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xudmFyIENIUk9NRV9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ3JlZHVjZVJpZ2h0Jyk7XG4vLyBDaHJvbWUgODAtODIgaGFzIGEgY3JpdGljYWwgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDQ5OTgyXG52YXIgQ0hST01FX0JVRyA9ICFJU19OT0RFICYmIENIUk9NRV9WRVJTSU9OID4gNzkgJiYgQ0hST01FX1ZFUlNJT04gPCA4MztcblxuLy8gYEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VyaWdodFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIVNUUklDVF9NRVRIT0QgfHwgQ0hST01FX0JVRyB9LCB7XG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2VSaWdodCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xuXG52YXIgbmF0aXZlUmV2ZXJzZSA9IFtdLnJldmVyc2U7XG52YXIgdGVzdCA9IFsxLCAyXTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5yZXZlcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJldmVyc2Vcbi8vIGZpeCBmb3IgU2FmYXJpIDEyLjAgYnVnXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4Nzk0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTdHJpbmcodGVzdCkgPT09IFN0cmluZyh0ZXN0LnJldmVyc2UoKSkgfSwge1xuICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnbiAtLSBkaXJ0eSBoYWNrXG4gICAgaWYgKGlzQXJyYXkodGhpcykpIHRoaXMubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgcmV0dXJuIG5hdGl2ZVJldmVyc2UuY2FsbCh0aGlzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ3NsaWNlJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgbmF0aXZlU2xpY2UgPSBbXS5zbGljZTtcbnZhciBtYXggPSBNYXRoLm1heDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZVxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgayA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuZ3RoKTtcbiAgICB2YXIgZmluID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kLCBsZW5ndGgpO1xuICAgIC8vIGlubGluZSBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBmb3IgdXNhZ2UgbmF0aXZlIGBBcnJheSNzbGljZWAgd2hlcmUgaXQncyBwb3NzaWJsZVxuICAgIHZhciBDb25zdHJ1Y3RvciwgcmVzdWx0LCBuO1xuICAgIGlmIChpc0FycmF5KE8pKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IE8uY29uc3RydWN0b3I7XG4gICAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgICAgaWYgKGlzQ29uc3RydWN0b3IoQ29uc3RydWN0b3IpICYmIChDb25zdHJ1Y3RvciA9PT0gQXJyYXkgfHwgaXNBcnJheShDb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoQ29uc3RydWN0b3IpKSB7XG4gICAgICAgIENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JbU1BFQ0lFU107XG4gICAgICAgIGlmIChDb25zdHJ1Y3RvciA9PT0gbnVsbCkgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IENvbnN0cnVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNsaWNlLmNhbGwoTywgaywgZmluKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ID0gbmV3IChDb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDb25zdHJ1Y3RvcikobWF4KGZpbiAtIGssIDApKTtcbiAgICBmb3IgKG4gPSAwOyBrIDwgZmluOyBrKyssIG4rKykgaWYgKGsgaW4gTykgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBuLCBPW2tdKTtcbiAgICByZXN1bHQubGVuZ3RoID0gbjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRzb21lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLnNvbWU7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnc29tZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIVNUUklDVF9NRVRIT0QgfSwge1xuICBzb21lOiBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRzb21lKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIvLyBUT0RPOiB1c2Ugc29tZXRoaW5nIG1vcmUgY29tcGxleCBsaWtlIHRpbXNvcnQ/XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG52YXIgbWVyZ2VTb3J0ID0gZnVuY3Rpb24gKGFycmF5LCBjb21wYXJlZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgdmFyIG1pZGRsZSA9IGZsb29yKGxlbmd0aCAvIDIpO1xuICByZXR1cm4gbGVuZ3RoIDwgOCA/IGluc2VydGlvblNvcnQoYXJyYXksIGNvbXBhcmVmbikgOiBtZXJnZShcbiAgICBtZXJnZVNvcnQoYXJyYXkuc2xpY2UoMCwgbWlkZGxlKSwgY29tcGFyZWZuKSxcbiAgICBtZXJnZVNvcnQoYXJyYXkuc2xpY2UobWlkZGxlKSwgY29tcGFyZWZuKSxcbiAgICBjb21wYXJlZm5cbiAgKTtcbn07XG5cbnZhciBpbnNlcnRpb25Tb3J0ID0gZnVuY3Rpb24gKGFycmF5LCBjb21wYXJlZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgdmFyIGkgPSAxO1xuICB2YXIgZWxlbWVudCwgajtcblxuICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgIGogPSBpO1xuICAgIGVsZW1lbnQgPSBhcnJheVtpXTtcbiAgICB3aGlsZSAoaiAmJiBjb21wYXJlZm4oYXJyYXlbaiAtIDFdLCBlbGVtZW50KSA+IDApIHtcbiAgICAgIGFycmF5W2pdID0gYXJyYXlbLS1qXTtcbiAgICB9XG4gICAgaWYgKGogIT09IGkrKykgYXJyYXlbal0gPSBlbGVtZW50O1xuICB9IHJldHVybiBhcnJheTtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIChsZWZ0LCByaWdodCwgY29tcGFyZWZuKSB7XG4gIHZhciBsbGVuZ3RoID0gbGVmdC5sZW5ndGg7XG4gIHZhciBybGVuZ3RoID0gcmlnaHQubGVuZ3RoO1xuICB2YXIgbGluZGV4ID0gMDtcbiAgdmFyIHJpbmRleCA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAobGluZGV4IDwgbGxlbmd0aCB8fCByaW5kZXggPCBybGVuZ3RoKSB7XG4gICAgaWYgKGxpbmRleCA8IGxsZW5ndGggJiYgcmluZGV4IDwgcmxlbmd0aCkge1xuICAgICAgcmVzdWx0LnB1c2goY29tcGFyZWZuKGxlZnRbbGluZGV4XSwgcmlnaHRbcmluZGV4XSkgPD0gMCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2gobGluZGV4IDwgbGxlbmd0aCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdKTtcbiAgICB9XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VTb3J0O1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgZmlyZWZveCA9IHVzZXJBZ2VudC5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS9pKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIWZpcmVmb3ggJiYgK2ZpcmVmb3hbMV07XG4iLCJ2YXIgVUEgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvTVNJRXxUcmlkZW50Ly50ZXN0KFVBKTtcbiIsInZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHdlYmtpdCA9IHVzZXJBZ2VudC5tYXRjaCgvQXBwbGVXZWJLaXRcXC8oXFxkKylcXC4vKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIXdlYmtpdCAmJiArd2Via2l0WzFdO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaW50ZXJuYWxTb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNvcnQnKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBGRiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtZmYtdmVyc2lvbicpO1xudmFyIElFX09SX0VER0UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWllLW9yLWVkZ2UnKTtcbnZhciBWOCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIFdFQktJVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtd2Via2l0LXZlcnNpb24nKTtcblxudmFyIHRlc3QgPSBbXTtcbnZhciBuYXRpdmVTb3J0ID0gdGVzdC5zb3J0O1xuXG4vLyBJRTgtXG52YXIgRkFJTFNfT05fVU5ERUZJTkVEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB0ZXN0LnNvcnQodW5kZWZpbmVkKTtcbn0pO1xuLy8gVjggYnVnXG52YXIgRkFJTFNfT05fTlVMTCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdGVzdC5zb3J0KG51bGwpO1xufSk7XG4vLyBPbGQgV2ViS2l0XG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ3NvcnQnKTtcblxudmFyIFNUQUJMRV9TT1JUID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZmVhdHVyZSBkZXRlY3Rpb24gY2FuIGJlIHRvbyBzbG93LCBzbyBjaGVjayBlbmdpbmVzIHZlcnNpb25zXG4gIGlmIChWOCkgcmV0dXJuIFY4IDwgNzA7XG4gIGlmIChGRiAmJiBGRiA+IDMpIHJldHVybjtcbiAgaWYgKElFX09SX0VER0UpIHJldHVybiB0cnVlO1xuICBpZiAoV0VCS0lUKSByZXR1cm4gV0VCS0lUIDwgNjAzO1xuXG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGNvZGUsIGNociwgdmFsdWUsIGluZGV4O1xuXG4gIC8vIGdlbmVyYXRlIGFuIGFycmF5IHdpdGggbW9yZSA1MTIgZWxlbWVudHMgKENoYWtyYSBhbmQgb2xkIFY4IGZhaWxzIG9ubHkgaW4gdGhpcyBjYXNlKVxuICBmb3IgKGNvZGUgPSA2NTsgY29kZSA8IDc2OyBjb2RlKyspIHtcbiAgICBjaHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpO1xuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIDY2OiBjYXNlIDY5OiBjYXNlIDcwOiBjYXNlIDcyOiB2YWx1ZSA9IDM7IGJyZWFrO1xuICAgICAgY2FzZSA2ODogY2FzZSA3MTogdmFsdWUgPSA0OyBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHZhbHVlID0gMjtcbiAgICB9XG5cbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0NzsgaW5kZXgrKykge1xuICAgICAgdGVzdC5wdXNoKHsgazogY2hyICsgaW5kZXgsIHY6IHZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRlc3Quc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYi52IC0gYS52OyB9KTtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0ZXN0Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNociA9IHRlc3RbaW5kZXhdLmsuY2hhckF0KDApO1xuICAgIGlmIChyZXN1bHQuY2hhckF0KHJlc3VsdC5sZW5ndGggLSAxKSAhPT0gY2hyKSByZXN1bHQgKz0gY2hyO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCAhPT0gJ0RHQkVGSEFDSUpLJztcbn0pO1xuXG52YXIgRk9SQ0VEID0gRkFJTFNfT05fVU5ERUZJTkVEIHx8ICFGQUlMU19PTl9OVUxMIHx8ICFTVFJJQ1RfTUVUSE9EIHx8ICFTVEFCTEVfU09SVDtcblxudmFyIGdldFNvcnRDb21wYXJlID0gZnVuY3Rpb24gKGNvbXBhcmVmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICBpZiAoeSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gLTE7XG4gICAgaWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XG4gICAgaWYgKGNvbXBhcmVmbiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gK2NvbXBhcmVmbih4LCB5KSB8fCAwO1xuICAgIHJldHVybiB0b1N0cmluZyh4KSA+IHRvU3RyaW5nKHkpID8gMSA6IC0xO1xuICB9O1xufTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zb3J0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvcnRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gICAgaWYgKGNvbXBhcmVmbiAhPT0gdW5kZWZpbmVkKSBhQ2FsbGFibGUoY29tcGFyZWZuKTtcblxuICAgIHZhciBhcnJheSA9IHRvT2JqZWN0KHRoaXMpO1xuXG4gICAgaWYgKFNUQUJMRV9TT1JUKSByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWQgPyBuYXRpdmVTb3J0LmNhbGwoYXJyYXkpIDogbmF0aXZlU29ydC5jYWxsKGFycmF5LCBjb21wYXJlZm4pO1xuXG4gICAgdmFyIGl0ZW1zID0gW107XG4gICAgdmFyIGFycmF5TGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoYXJyYXkpO1xuICAgIHZhciBpdGVtc0xlbmd0aCwgaW5kZXg7XG5cbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGluZGV4IGluIGFycmF5KSBpdGVtcy5wdXNoKGFycmF5W2luZGV4XSk7XG4gICAgfVxuXG4gICAgaXRlbXMgPSBpbnRlcm5hbFNvcnQoaXRlbXMsIGdldFNvcnRDb21wYXJlKGNvbXBhcmVmbikpO1xuICAgIGl0ZW1zTGVuZ3RoID0gaXRlbXMubGVuZ3RoO1xuICAgIGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChpbmRleCA8IGl0ZW1zTGVuZ3RoKSBhcnJheVtpbmRleF0gPSBpdGVtc1tpbmRleCsrXTtcbiAgICB3aGlsZSAoaW5kZXggPCBhcnJheUxlbmd0aCkgZGVsZXRlIGFycmF5W2luZGV4KytdO1xuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUl9OQU1FKSB7XG4gIHZhciBDb25zdHJ1Y3RvciA9IGdldEJ1aWx0SW4oQ09OU1RSVUNUT1JfTkFNRSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmIENvbnN0cnVjdG9yICYmICFDb25zdHJ1Y3RvcltTUEVDSUVTXSkge1xuICAgIGRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBTUEVDSUVTLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB9KTtcbiAgfVxufTtcbiIsInZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG5cbi8vIGBBcnJheVtAQHNwZWNpZXNdYCBnZXR0ZXJcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LWFycmF5LUBAc3BlY2llc1xuc2V0U3BlY2llcygnQXJyYXknKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ3NwbGljZScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7XG52YXIgTUFYSU1VTV9BTExPV0VEX0xFTkdUSF9FWENFRURFRCA9ICdNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIGV4Y2VlZGVkJztcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zcGxpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc3BsaWNlXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBzcGxpY2U6IGZ1bmN0aW9uIHNwbGljZShzdGFydCwgZGVsZXRlQ291bnQgLyogLCAuLi5pdGVtcyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBhY3R1YWxTdGFydCA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuKTtcbiAgICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaW5zZXJ0Q291bnQsIGFjdHVhbERlbGV0ZUNvdW50LCBBLCBrLCBmcm9tLCB0bztcbiAgICBpZiAoYXJndW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICBpbnNlcnRDb3VudCA9IGFjdHVhbERlbGV0ZUNvdW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50c0xlbmd0aCA9PT0gMSkge1xuICAgICAgaW5zZXJ0Q291bnQgPSAwO1xuICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBsZW4gLSBhY3R1YWxTdGFydDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zZXJ0Q291bnQgPSBhcmd1bWVudHNMZW5ndGggLSAyO1xuICAgICAgYWN0dWFsRGVsZXRlQ291bnQgPSBtaW4obWF4KHRvSW50ZWdlck9ySW5maW5pdHkoZGVsZXRlQ291bnQpLCAwKSwgbGVuIC0gYWN0dWFsU3RhcnQpO1xuICAgIH1cbiAgICBpZiAobGVuICsgaW5zZXJ0Q291bnQgLSBhY3R1YWxEZWxldGVDb3VudCA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfTEVOR1RIX0VYQ0VFREVEKTtcbiAgICB9XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCBhY3R1YWxEZWxldGVDb3VudCk7XG4gICAgZm9yIChrID0gMDsgayA8IGFjdHVhbERlbGV0ZUNvdW50OyBrKyspIHtcbiAgICAgIGZyb20gPSBhY3R1YWxTdGFydCArIGs7XG4gICAgICBpZiAoZnJvbSBpbiBPKSBjcmVhdGVQcm9wZXJ0eShBLCBrLCBPW2Zyb21dKTtcbiAgICB9XG4gICAgQS5sZW5ndGggPSBhY3R1YWxEZWxldGVDb3VudDtcbiAgICBpZiAoaW5zZXJ0Q291bnQgPCBhY3R1YWxEZWxldGVDb3VudCkge1xuICAgICAgZm9yIChrID0gYWN0dWFsU3RhcnQ7IGsgPCBsZW4gLSBhY3R1YWxEZWxldGVDb3VudDsgaysrKSB7XG4gICAgICAgIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQ7XG4gICAgICAgIHRvID0gayArIGluc2VydENvdW50O1xuICAgICAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgICAgIGVsc2UgZGVsZXRlIE9bdG9dO1xuICAgICAgfVxuICAgICAgZm9yIChrID0gbGVuOyBrID4gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpbnNlcnRDb3VudDsgay0tKSBkZWxldGUgT1trIC0gMV07XG4gICAgfSBlbHNlIGlmIChpbnNlcnRDb3VudCA+IGFjdHVhbERlbGV0ZUNvdW50KSB7XG4gICAgICBmb3IgKGsgPSBsZW4gLSBhY3R1YWxEZWxldGVDb3VudDsgayA+IGFjdHVhbFN0YXJ0OyBrLS0pIHtcbiAgICAgICAgZnJvbSA9IGsgKyBhY3R1YWxEZWxldGVDb3VudCAtIDE7XG4gICAgICAgIHRvID0gayArIGluc2VydENvdW50IC0gMTtcbiAgICAgICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgICAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChrID0gMDsgayA8IGluc2VydENvdW50OyBrKyspIHtcbiAgICAgIE9bayArIGFjdHVhbFN0YXJ0XSA9IGFyZ3VtZW50c1trICsgMl07XG4gICAgfVxuICAgIE8ubGVuZ3RoID0gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpbnNlcnRDb3VudDtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCIvLyB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgdG8gdW5zY29wYWJsZXMgYWZ0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGluIHBvcHVsYXIgZW5naW5lcywgc28gaXQncyBtb3ZlZCB0byBhIHNlcGFyYXRlIG1vZHVsZVxudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2ZsYXQnKTtcbiIsIi8vIHRoaXMgbWV0aG9kIHdhcyBhZGRlZCB0byB1bnNjb3BhYmxlcyBhZnRlciBpbXBsZW1lbnRhdGlvblxuLy8gaW4gcG9wdWxhciBlbmdpbmVzLCBzbyBpdCdzIG1vdmVkIHRvIGEgc2VwYXJhdGUgbW9kdWxlXG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnZmxhdE1hcCcpO1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXR5cGVkLWFycmF5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIERhdGFWaWV3ICE9PSAndW5kZWZpbmVkJztcbiIsInZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgb3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSByZWRlZmluZSh0YXJnZXQsIGtleSwgc3JjW2tleV0sIG9wdGlvbnMpO1xuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSkge1xuICBpZiAoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgcmV0dXJuIGl0O1xuICB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCAnICsgKG5hbWUgPyBuYW1lICsgJyAnIDogJycpICsgJ2ludm9jYXRpb24nKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBUb0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09PSB1bmRlZmluZWQpIHJldHVybiAwO1xuICB2YXIgbnVtYmVyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpdCk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChudW1iZXIpO1xuICBpZiAobnVtYmVyICE9PSBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCBvciBpbmRleCcpO1xuICByZXR1cm4gbGVuZ3RoO1xufTtcbiIsIi8vIElFRUU3NTQgY29udmVyc2lvbnMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9pZWVlNzU0XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExOMiA9IE1hdGguTE4yO1xuXG52YXIgcGFjayA9IGZ1bmN0aW9uIChudW1iZXIsIG1hbnRpc3NhTGVuZ3RoLCBieXRlcykge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGJ5dGVzKTtcbiAgdmFyIGV4cG9uZW50TGVuZ3RoID0gYnl0ZXMgKiA4IC0gbWFudGlzc2FMZW5ndGggLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGV4cG9uZW50TGVuZ3RoKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIHJ0ID0gbWFudGlzc2FMZW5ndGggPT09IDIzID8gcG93KDIsIC0yNCkgLSBwb3coMiwgLTc3KSA6IDA7XG4gIHZhciBzaWduID0gbnVtYmVyIDwgMCB8fCBudW1iZXIgPT09IDAgJiYgMSAvIG51bWJlciA8IDAgPyAxIDogMDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGV4cG9uZW50LCBtYW50aXNzYSwgYztcbiAgbnVtYmVyID0gYWJzKG51bWJlcik7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIGlmIChudW1iZXIgIT0gbnVtYmVyIHx8IG51bWJlciA9PT0gSW5maW5pdHkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIG1hbnRpc3NhID0gbnVtYmVyICE9IG51bWJlciA/IDEgOiAwO1xuICAgIGV4cG9uZW50ID0gZU1heDtcbiAgfSBlbHNlIHtcbiAgICBleHBvbmVudCA9IGZsb29yKGxvZyhudW1iZXIpIC8gTE4yKTtcbiAgICBpZiAobnVtYmVyICogKGMgPSBwb3coMiwgLWV4cG9uZW50KSkgPCAxKSB7XG4gICAgICBleHBvbmVudC0tO1xuICAgICAgYyAqPSAyO1xuICAgIH1cbiAgICBpZiAoZXhwb25lbnQgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBudW1iZXIgKz0gcnQgLyBjO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1iZXIgKz0gcnQgKiBwb3coMiwgMSAtIGVCaWFzKTtcbiAgICB9XG4gICAgaWYgKG51bWJlciAqIGMgPj0gMikge1xuICAgICAgZXhwb25lbnQrKztcbiAgICAgIGMgLz0gMjtcbiAgICB9XG4gICAgaWYgKGV4cG9uZW50ICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbWFudGlzc2EgPSAwO1xuICAgICAgZXhwb25lbnQgPSBlTWF4O1xuICAgIH0gZWxzZSBpZiAoZXhwb25lbnQgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtYW50aXNzYSA9IChudW1iZXIgKiBjIC0gMSkgKiBwb3coMiwgbWFudGlzc2FMZW5ndGgpO1xuICAgICAgZXhwb25lbnQgPSBleHBvbmVudCArIGVCaWFzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYW50aXNzYSA9IG51bWJlciAqIHBvdygyLCBlQmlhcyAtIDEpICogcG93KDIsIG1hbnRpc3NhTGVuZ3RoKTtcbiAgICAgIGV4cG9uZW50ID0gMDtcbiAgICB9XG4gIH1cbiAgZm9yICg7IG1hbnRpc3NhTGVuZ3RoID49IDg7IGJ1ZmZlcltpbmRleCsrXSA9IG1hbnRpc3NhICYgMjU1LCBtYW50aXNzYSAvPSAyNTYsIG1hbnRpc3NhTGVuZ3RoIC09IDgpO1xuICBleHBvbmVudCA9IGV4cG9uZW50IDw8IG1hbnRpc3NhTGVuZ3RoIHwgbWFudGlzc2E7XG4gIGV4cG9uZW50TGVuZ3RoICs9IG1hbnRpc3NhTGVuZ3RoO1xuICBmb3IgKDsgZXhwb25lbnRMZW5ndGggPiAwOyBidWZmZXJbaW5kZXgrK10gPSBleHBvbmVudCAmIDI1NSwgZXhwb25lbnQgLz0gMjU2LCBleHBvbmVudExlbmd0aCAtPSA4KTtcbiAgYnVmZmVyWy0taW5kZXhdIHw9IHNpZ24gKiAxMjg7XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG52YXIgdW5wYWNrID0gZnVuY3Rpb24gKGJ1ZmZlciwgbWFudGlzc2FMZW5ndGgpIHtcbiAgdmFyIGJ5dGVzID0gYnVmZmVyLmxlbmd0aDtcbiAgdmFyIGV4cG9uZW50TGVuZ3RoID0gYnl0ZXMgKiA4IC0gbWFudGlzc2FMZW5ndGggLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGV4cG9uZW50TGVuZ3RoKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIG5CaXRzID0gZXhwb25lbnRMZW5ndGggLSA3O1xuICB2YXIgaW5kZXggPSBieXRlcyAtIDE7XG4gIHZhciBzaWduID0gYnVmZmVyW2luZGV4LS1dO1xuICB2YXIgZXhwb25lbnQgPSBzaWduICYgMTI3O1xuICB2YXIgbWFudGlzc2E7XG4gIHNpZ24gPj49IDc7XG4gIGZvciAoOyBuQml0cyA+IDA7IGV4cG9uZW50ID0gZXhwb25lbnQgKiAyNTYgKyBidWZmZXJbaW5kZXhdLCBpbmRleC0tLCBuQml0cyAtPSA4KTtcbiAgbWFudGlzc2EgPSBleHBvbmVudCAmICgxIDw8IC1uQml0cykgLSAxO1xuICBleHBvbmVudCA+Pj0gLW5CaXRzO1xuICBuQml0cyArPSBtYW50aXNzYUxlbmd0aDtcbiAgZm9yICg7IG5CaXRzID4gMDsgbWFudGlzc2EgPSBtYW50aXNzYSAqIDI1NiArIGJ1ZmZlcltpbmRleF0sIGluZGV4LS0sIG5CaXRzIC09IDgpO1xuICBpZiAoZXhwb25lbnQgPT09IDApIHtcbiAgICBleHBvbmVudCA9IDEgLSBlQmlhcztcbiAgfSBlbHNlIGlmIChleHBvbmVudCA9PT0gZU1heCkge1xuICAgIHJldHVybiBtYW50aXNzYSA/IE5hTiA6IHNpZ24gPyAtSW5maW5pdHkgOiBJbmZpbml0eTtcbiAgfSBlbHNlIHtcbiAgICBtYW50aXNzYSA9IG1hbnRpc3NhICsgcG93KDIsIG1hbnRpc3NhTGVuZ3RoKTtcbiAgICBleHBvbmVudCA9IGV4cG9uZW50IC0gZUJpYXM7XG4gIH0gcmV0dXJuIChzaWduID8gLTEgOiAxKSAqIG1hbnRpc3NhICogcG93KDIsIGV4cG9uZW50IC0gbWFudGlzc2FMZW5ndGgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBhY2s6IHBhY2ssXG4gIHVucGFjazogdW5wYWNrXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIE5BVElWRV9BUlJBWV9CVUZGRVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLW5hdGl2ZScpO1xudmFyIEZ1bmN0aW9uTmFtZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXgnKTtcbnZhciBJRUVFNzU0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llZWU3NTQnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpLmY7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZpbGwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIFBST1BFUl9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLlBST1BFUjtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5DT05GSUdVUkFCTEU7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIERBVEFfVklFVyA9ICdEYXRhVmlldyc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCc7XG52YXIgV1JPTkdfSU5ERVggPSAnV3JvbmcgaW5kZXgnO1xudmFyIE5hdGl2ZUFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG52YXIgJEFycmF5QnVmZmVyID0gTmF0aXZlQXJyYXlCdWZmZXI7XG52YXIgJERhdGFWaWV3ID0gZ2xvYmFsW0RBVEFfVklFV107XG52YXIgJERhdGFWaWV3UHJvdG90eXBlID0gJERhdGFWaWV3ICYmICREYXRhVmlld1tQUk9UT1RZUEVdO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuXG52YXIgcGFja0lFRUU3NTQgPSBJRUVFNzU0LnBhY2s7XG52YXIgdW5wYWNrSUVFRTc1NCA9IElFRUU3NTQudW5wYWNrO1xuXG52YXIgcGFja0ludDggPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIHJldHVybiBbbnVtYmVyICYgMHhGRl07XG59O1xuXG52YXIgcGFja0ludDE2ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkYsIG51bWJlciA+PiA4ICYgMHhGRl07XG59O1xuXG52YXIgcGFja0ludDMyID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkYsIG51bWJlciA+PiA4ICYgMHhGRiwgbnVtYmVyID4+IDE2ICYgMHhGRiwgbnVtYmVyID4+IDI0ICYgMHhGRl07XG59O1xuXG52YXIgdW5wYWNrSW50MzIgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXJbM10gPDwgMjQgfCBidWZmZXJbMl0gPDwgMTYgfCBidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXTtcbn07XG5cbnZhciBwYWNrRmxvYXQzMiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KG51bWJlciwgMjMsIDQpO1xufTtcblxudmFyIHBhY2tGbG9hdDY0ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gcGFja0lFRUU3NTQobnVtYmVyLCA1MiwgOCk7XG59O1xuXG52YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBrZXkpIHtcbiAgZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3JbUFJPVE9UWVBFXSwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldOyB9IH0pO1xufTtcblxudmFyIGdldCA9IGZ1bmN0aW9uICh2aWV3LCBjb3VudCwgaW5kZXgsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgoaW5kZXgpO1xuICB2YXIgc3RvcmUgPSBnZXRJbnRlcm5hbFN0YXRlKHZpZXcpO1xuICBpZiAoaW50SW5kZXggKyBjb3VudCA+IHN0b3JlLmJ5dGVMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgYnl0ZXMgPSBnZXRJbnRlcm5hbFN0YXRlKHN0b3JlLmJ1ZmZlcikuYnl0ZXM7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgc3RvcmUuYnl0ZU9mZnNldDtcbiAgdmFyIHBhY2sgPSBieXRlcy5zbGljZShzdGFydCwgc3RhcnQgKyBjb3VudCk7XG4gIHJldHVybiBpc0xpdHRsZUVuZGlhbiA/IHBhY2sgOiBwYWNrLnJldmVyc2UoKTtcbn07XG5cbnZhciBzZXQgPSBmdW5jdGlvbiAodmlldywgY291bnQsIGluZGV4LCBjb252ZXJzaW9uLCB2YWx1ZSwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChpbmRleCk7XG4gIHZhciBzdG9yZSA9IGdldEludGVybmFsU3RhdGUodmlldyk7XG4gIGlmIChpbnRJbmRleCArIGNvdW50ID4gc3RvcmUuYnl0ZUxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBieXRlcyA9IGdldEludGVybmFsU3RhdGUoc3RvcmUuYnVmZmVyKS5ieXRlcztcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyBzdG9yZS5ieXRlT2Zmc2V0O1xuICB2YXIgcGFjayA9IGNvbnZlcnNpb24oK3ZhbHVlKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSBieXRlc1tzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBjb3VudCAtIGkgLSAxXTtcbn07XG5cbmlmICghTkFUSVZFX0FSUkFZX0JVRkZFUikge1xuICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRvSW5kZXgobGVuZ3RoKTtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIGJ5dGVzOiBhcnJheUZpbGwuY2FsbChuZXcgQXJyYXkoYnl0ZUxlbmd0aCksIDApLFxuICAgICAgYnl0ZUxlbmd0aDogYnl0ZUxlbmd0aFxuICAgIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgJERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkRGF0YVZpZXcsIERBVEFfVklFVyk7XG4gICAgYW5JbnN0YW5jZShidWZmZXIsICRBcnJheUJ1ZmZlciwgREFUQV9WSUVXKTtcbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gZ2V0SW50ZXJuYWxTdGF0ZShidWZmZXIpLmJ5dGVMZW5ndGg7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlck9ySW5maW5pdHkoYnl0ZU9mZnNldCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQnKTtcbiAgICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkID8gYnVmZmVyTGVuZ3RoIC0gb2Zmc2V0IDogdG9MZW5ndGgoYnl0ZUxlbmd0aCk7XG4gICAgaWYgKG9mZnNldCArIGJ5dGVMZW5ndGggPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIGJ1ZmZlcjogYnVmZmVyLFxuICAgICAgYnl0ZUxlbmd0aDogYnl0ZUxlbmd0aCxcbiAgICAgIGJ5dGVPZmZzZXQ6IG9mZnNldFxuICAgIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyO1xuICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aDtcbiAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IG9mZnNldDtcbiAgICB9XG4gIH07XG5cbiAgaWYgKERFU0NSSVBUT1JTKSB7XG4gICAgYWRkR2V0dGVyKCRBcnJheUJ1ZmZlciwgJ2J5dGVMZW5ndGgnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCAnYnVmZmVyJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgJ2J5dGVMZW5ndGgnKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCAnYnl0ZU9mZnNldCcpO1xuICB9XG5cbiAgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBnZXRJbnQ4OiBmdW5jdGlvbiBnZXRJbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF0gPDwgMjQgPj4gMjQ7XG4gICAgfSxcbiAgICBnZXRVaW50ODogZnVuY3Rpb24gZ2V0VWludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXTtcbiAgICB9LFxuICAgIGdldEludDE2OiBmdW5jdGlvbiBnZXRJbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIChieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF0pIDw8IDE2ID4+IDE2O1xuICAgIH0sXG4gICAgZ2V0VWludDE2OiBmdW5jdGlvbiBnZXRVaW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG4gICAgfSxcbiAgICBnZXRJbnQzMjogZnVuY3Rpb24gZ2V0SW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0ludDMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCkpO1xuICAgIH0sXG4gICAgZ2V0VWludDMyOiBmdW5jdGlvbiBnZXRVaW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0ludDMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCkpID4+PiAwO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQzMjogZnVuY3Rpb24gZ2V0RmxvYXQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpLCAyMyk7XG4gICAgfSxcbiAgICBnZXRGbG9hdDY0OiBmdW5jdGlvbiBnZXRGbG9hdDY0KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCksIDUyKTtcbiAgICB9LFxuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSW50OCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0ludDgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldEludDE2OiBmdW5jdGlvbiBzZXRJbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJbnQxNiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNldFVpbnQxNjogZnVuY3Rpb24gc2V0VWludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0ludDE2LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc2V0SW50MzI6IGZ1bmN0aW9uIHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0ludDMyLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc2V0VWludDMyOiBmdW5jdGlvbiBzZXRVaW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSW50MzIsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDMyOiBmdW5jdGlvbiBzZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0Zsb2F0MzIsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDY0OiBmdW5jdGlvbiBzZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgcGFja0Zsb2F0NjQsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIHZhciBJTkNPUlJFQ1RfQVJSQVlfQlVGRkVSX05BTUUgPSBQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBOYXRpdmVBcnJheUJ1ZmZlci5uYW1lICE9PSBBUlJBWV9CVUZGRVI7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xuICBpZiAoIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBOYXRpdmVBcnJheUJ1ZmZlcigxKTtcbiAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgTmF0aXZlQXJyYXlCdWZmZXIoLTEpO1xuICB9KSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IE5hdGl2ZUFycmF5QnVmZmVyKCk7XG4gICAgbmV3IE5hdGl2ZUFycmF5QnVmZmVyKDEuNSk7XG4gICAgbmV3IE5hdGl2ZUFycmF5QnVmZmVyKE5hTik7XG4gICAgcmV0dXJuIElOQ09SUkVDVF9BUlJBWV9CVUZGRVJfTkFNRSAmJiAhQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUU7XG4gIH0pKSB7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tbmV3IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG4gICAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlcik7XG4gICAgICByZXR1cm4gbmV3IE5hdGl2ZUFycmF5QnVmZmVyKHRvSW5kZXgobGVuZ3RoKSk7XG4gICAgfTtcbiAgICB2YXIgQXJyYXlCdWZmZXJQcm90b3R5cGUgPSAkQXJyYXlCdWZmZXJbUFJPVE9UWVBFXSA9IE5hdGl2ZUFycmF5QnVmZmVyW1BST1RPVFlQRV07XG4gICAgZm9yICh2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlQXJyYXlCdWZmZXIpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7KSB7XG4gICAgICBpZiAoISgoa2V5ID0ga2V5c1tqKytdKSBpbiAkQXJyYXlCdWZmZXIpKSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSgkQXJyYXlCdWZmZXIsIGtleSwgTmF0aXZlQXJyYXlCdWZmZXJba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIEFycmF5QnVmZmVyUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJEFycmF5QnVmZmVyO1xuICB9IGVsc2UgaWYgKElOQ09SUkVDVF9BUlJBWV9CVUZGRVJfTkFNRSAmJiBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShOYXRpdmVBcnJheUJ1ZmZlciwgJ25hbWUnLCBBUlJBWV9CVUZGRVIpO1xuICB9XG5cbiAgLy8gV2ViS2l0IGJ1ZyAtIHRoZSBzYW1lIHBhcmVudCBwcm90b3R5cGUgZm9yIHR5cGVkIGFycmF5cyBhbmQgZGF0YSB2aWV3XG4gIGlmIChzZXRQcm90b3R5cGVPZiAmJiBnZXRQcm90b3R5cGVPZigkRGF0YVZpZXdQcm90b3R5cGUpICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBzZXRQcm90b3R5cGVPZigkRGF0YVZpZXdQcm90b3R5cGUsIE9iamVjdFByb3RvdHlwZSk7XG4gIH1cblxuICAvLyBpT1MgU2FmYXJpIDcueCBidWdcbiAgdmFyIHRlc3RWaWV3ID0gbmV3ICREYXRhVmlldyhuZXcgJEFycmF5QnVmZmVyKDIpKTtcbiAgdmFyICRzZXRJbnQ4ID0gJERhdGFWaWV3UHJvdG90eXBlLnNldEludDg7XG4gIHRlc3RWaWV3LnNldEludDgoMCwgMjE0NzQ4MzY0OCk7XG4gIHRlc3RWaWV3LnNldEludDgoMSwgMjE0NzQ4MzY0OSk7XG4gIGlmICh0ZXN0Vmlldy5nZXRJbnQ4KDApIHx8ICF0ZXN0Vmlldy5nZXRJbnQ4KDEpKSByZWRlZmluZUFsbCgkRGF0YVZpZXdQcm90b3R5cGUsIHtcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfVxuICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuc2V0VG9TdHJpbmdUYWcoJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlcixcbiAgRGF0YVZpZXc6ICREYXRhVmlld1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBhcnJheUJ1ZmZlck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXInKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG5cbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIEFycmF5QnVmZmVyID0gYXJyYXlCdWZmZXJNb2R1bGVbQVJSQVlfQlVGRkVSXTtcbnZhciBOYXRpdmVBcnJheUJ1ZmZlciA9IGdsb2JhbFtBUlJBWV9CVUZGRVJdO1xuXG4vLyBgQXJyYXlCdWZmZXJgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5YnVmZmVyLWNvbnN0cnVjdG9yXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IE5hdGl2ZUFycmF5QnVmZmVyICE9PSBBcnJheUJ1ZmZlciB9LCB7XG4gIEFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlclxufSk7XG5cbnNldFNwZWNpZXMoQVJSQVlfQlVGRkVSKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1uYXRpdmUnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIEludDhBcnJheSA9IGdsb2JhbC5JbnQ4QXJyYXk7XG52YXIgSW50OEFycmF5UHJvdG90eXBlID0gSW50OEFycmF5ICYmIEludDhBcnJheS5wcm90b3R5cGU7XG52YXIgVWludDhDbGFtcGVkQXJyYXkgPSBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXk7XG52YXIgVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUgPSBVaW50OENsYW1wZWRBcnJheSAmJiBVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGU7XG52YXIgVHlwZWRBcnJheSA9IEludDhBcnJheSAmJiBnZXRQcm90b3R5cGVPZihJbnQ4QXJyYXkpO1xudmFyIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBJbnQ4QXJyYXlQcm90b3R5cGUgJiYgZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5UHJvdG90eXBlKTtcbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xudmFyIGlzUHJvdG90eXBlT2YgPSBPYmplY3RQcm90b3R5cGUuaXNQcm90b3R5cGVPZjtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgVFlQRURfQVJSQVlfVEFHID0gdWlkKCdUWVBFRF9BUlJBWV9UQUcnKTtcbnZhciBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiA9IHVpZCgnVFlQRURfQVJSQVlfQ09OU1RSVUNUT1InKTtcbi8vIEZpeGluZyBuYXRpdmUgdHlwZWQgYXJyYXlzIGluIE9wZXJhIFByZXN0byBjcmFzaGVzIHRoZSBicm93c2VyLCBzZWUgIzU5NVxudmFyIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgPSBOQVRJVkVfQVJSQVlfQlVGRkVSICYmICEhc2V0UHJvdG90eXBlT2YgJiYgY2xhc3NvZihnbG9iYWwub3BlcmEpICE9PSAnT3BlcmEnO1xudmFyIFRZUEVEX0FSUkFZX1RBR19SRVFJUkVEID0gZmFsc2U7XG52YXIgTkFNRSwgQ29uc3RydWN0b3IsIFByb3RvdHlwZTtcblxudmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0ID0ge1xuICBJbnQ4QXJyYXk6IDEsXG4gIFVpbnQ4QXJyYXk6IDEsXG4gIFVpbnQ4Q2xhbXBlZEFycmF5OiAxLFxuICBJbnQxNkFycmF5OiAyLFxuICBVaW50MTZBcnJheTogMixcbiAgSW50MzJBcnJheTogNCxcbiAgVWludDMyQXJyYXk6IDQsXG4gIEZsb2F0MzJBcnJheTogNCxcbiAgRmxvYXQ2NEFycmF5OiA4XG59O1xuXG52YXIgQmlnSW50QXJyYXlDb25zdHJ1Y3RvcnNMaXN0ID0ge1xuICBCaWdJbnQ2NEFycmF5OiA4LFxuICBCaWdVaW50NjRBcnJheTogOFxufTtcblxudmFyIGlzVmlldyA9IGZ1bmN0aW9uIGlzVmlldyhpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGZhbHNlO1xuICB2YXIga2xhc3MgPSBjbGFzc29mKGl0KTtcbiAgcmV0dXJuIGtsYXNzID09PSAnRGF0YVZpZXcnXG4gICAgfHwgaGFzT3duKFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0LCBrbGFzcylcbiAgICB8fCBoYXNPd24oQmlnSW50QXJyYXlDb25zdHJ1Y3RvcnNMaXN0LCBrbGFzcyk7XG59O1xuXG52YXIgaXNUeXBlZEFycmF5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBrbGFzcyA9IGNsYXNzb2YoaXQpO1xuICByZXR1cm4gaGFzT3duKFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0LCBrbGFzcylcbiAgICB8fCBoYXNPd24oQmlnSW50QXJyYXlDb25zdHJ1Y3RvcnNMaXN0LCBrbGFzcyk7XG59O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzVHlwZWRBcnJheShpdCkpIHJldHVybiBpdDtcbiAgdGhyb3cgVHlwZUVycm9yKCdUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXknKTtcbn07XG5cbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKEMpIHtcbiAgaWYgKGlzQ2FsbGFibGUoQykgJiYgKCFzZXRQcm90b3R5cGVPZiB8fCBpc1Byb3RvdHlwZU9mLmNhbGwoVHlwZWRBcnJheSwgQykpKSByZXR1cm4gQztcbiAgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKEMpICsgJyBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvcicpO1xufTtcblxudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBmdW5jdGlvbiAoS0VZLCBwcm9wZXJ0eSwgZm9yY2VkKSB7XG4gIGlmICghREVTQ1JJUFRPUlMpIHJldHVybjtcbiAgaWYgKGZvcmNlZCkgZm9yICh2YXIgQVJSQVkgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICB2YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gZ2xvYmFsW0FSUkFZXTtcbiAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmIGhhc093bihUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlLCBLRVkpKSB0cnkge1xuICAgICAgZGVsZXRlIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGVbS0VZXTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIH1cbiAgaWYgKCFUeXBlZEFycmF5UHJvdG90eXBlW0tFWV0gfHwgZm9yY2VkKSB7XG4gICAgcmVkZWZpbmUoVHlwZWRBcnJheVByb3RvdHlwZSwgS0VZLCBmb3JjZWQgPyBwcm9wZXJ0eVxuICAgICAgOiBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIEludDhBcnJheVByb3RvdHlwZVtLRVldIHx8IHByb3BlcnR5KTtcbiAgfVxufTtcblxudmFyIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QgPSBmdW5jdGlvbiAoS0VZLCBwcm9wZXJ0eSwgZm9yY2VkKSB7XG4gIHZhciBBUlJBWSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICBpZiAoIURFU0NSSVBUT1JTKSByZXR1cm47XG4gIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgIGlmIChmb3JjZWQpIGZvciAoQVJSQVkgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtBUlJBWV07XG4gICAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmIGhhc093bihUeXBlZEFycmF5Q29uc3RydWN0b3IsIEtFWSkpIHRyeSB7XG4gICAgICAgIGRlbGV0ZSBUeXBlZEFycmF5Q29uc3RydWN0b3JbS0VZXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICB9XG4gICAgaWYgKCFUeXBlZEFycmF5W0tFWV0gfHwgZm9yY2VkKSB7XG4gICAgICAvLyBWOCB+IENocm9tZSA0OS01MCBgJVR5cGVkQXJyYXklYCBtZXRob2RzIGFyZSBub24td3JpdGFibGUgbm9uLWNvbmZpZ3VyYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlZGVmaW5lKFR5cGVkQXJyYXksIEtFWSwgZm9yY2VkID8gcHJvcGVydHkgOiBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIFR5cGVkQXJyYXlbS0VZXSB8fCBwcm9wZXJ0eSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgfSBlbHNlIHJldHVybjtcbiAgfVxuICBmb3IgKEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gZ2xvYmFsW0FSUkFZXTtcbiAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmICghVHlwZWRBcnJheUNvbnN0cnVjdG9yW0tFWV0gfHwgZm9yY2VkKSkge1xuICAgICAgcmVkZWZpbmUoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBLRVksIHByb3BlcnR5KTtcbiAgICB9XG4gIH1cbn07XG5cbmZvciAoTkFNRSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICBDb25zdHJ1Y3RvciA9IGdsb2JhbFtOQU1FXTtcbiAgUHJvdG90eXBlID0gQ29uc3RydWN0b3IgJiYgQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICBpZiAoUHJvdG90eXBlKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoUHJvdG90eXBlLCBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiwgQ29uc3RydWN0b3IpO1xuICBlbHNlIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgPSBmYWxzZTtcbn1cblxuZm9yIChOQU1FIGluIEJpZ0ludEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICBDb25zdHJ1Y3RvciA9IGdsb2JhbFtOQU1FXTtcbiAgUHJvdG90eXBlID0gQ29uc3RydWN0b3IgJiYgQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICBpZiAoUHJvdG90eXBlKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoUHJvdG90eXBlLCBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiwgQ29uc3RydWN0b3IpO1xufVxuXG4vLyBXZWJLaXQgYnVnIC0gdHlwZWQgYXJyYXlzIGNvbnN0cnVjdG9ycyBwcm90b3R5cGUgaXMgT2JqZWN0LnByb3RvdHlwZVxuaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTIHx8ICFpc0NhbGxhYmxlKFR5cGVkQXJyYXkpIHx8IFR5cGVkQXJyYXkgPT09IEZ1bmN0aW9uLnByb3RvdHlwZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIHNhZmVcbiAgVHlwZWRBcnJheSA9IGZ1bmN0aW9uIFR5cGVkQXJyYXkoKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgaW52b2NhdGlvbicpO1xuICB9O1xuICBpZiAoTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUykgZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgaWYgKGdsb2JhbFtOQU1FXSkgc2V0UHJvdG90eXBlT2YoZ2xvYmFsW05BTUVdLCBUeXBlZEFycmF5KTtcbiAgfVxufVxuXG5pZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfHwgIVR5cGVkQXJyYXlQcm90b3R5cGUgfHwgVHlwZWRBcnJheVByb3RvdHlwZSA9PT0gT2JqZWN0UHJvdG90eXBlKSB7XG4gIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5LnByb3RvdHlwZTtcbiAgaWYgKE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MpIGZvciAoTkFNRSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICAgIGlmIChnbG9iYWxbTkFNRV0pIHNldFByb3RvdHlwZU9mKGdsb2JhbFtOQU1FXS5wcm90b3R5cGUsIFR5cGVkQXJyYXlQcm90b3R5cGUpO1xuICB9XG59XG5cbi8vIFdlYktpdCBidWcgLSBvbmUgbW9yZSBvYmplY3QgaW4gVWludDhDbGFtcGVkQXJyYXkgcHJvdG90eXBlIGNoYWluXG5pZiAoTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBnZXRQcm90b3R5cGVPZihVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSkgIT09IFR5cGVkQXJyYXlQcm90b3R5cGUpIHtcbiAgc2V0UHJvdG90eXBlT2YoVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUsIFR5cGVkQXJyYXlQcm90b3R5cGUpO1xufVxuXG5pZiAoREVTQ1JJUFRPUlMgJiYgIWhhc093bihUeXBlZEFycmF5UHJvdG90eXBlLCBUT19TVFJJTkdfVEFHKSkge1xuICBUWVBFRF9BUlJBWV9UQUdfUkVRSVJFRCA9IHRydWU7XG4gIGRlZmluZVByb3BlcnR5KFR5cGVkQXJyYXlQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRoaXMpID8gdGhpc1tUWVBFRF9BUlJBWV9UQUddIDogdW5kZWZpbmVkO1xuICB9IH0pO1xuICBmb3IgKE5BTUUgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIGlmIChnbG9iYWxbTkFNRV0pIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoZ2xvYmFsW05BTUVdLCBUWVBFRF9BUlJBWV9UQUcsIE5BTUUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOiBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLFxuICBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUjogVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IsXG4gIFRZUEVEX0FSUkFZX1RBRzogVFlQRURfQVJSQVlfVEFHX1JFUUlSRUQgJiYgVFlQRURfQVJSQVlfVEFHLFxuICBhVHlwZWRBcnJheTogYVR5cGVkQXJyYXksXG4gIGFUeXBlZEFycmF5Q29uc3RydWN0b3I6IGFUeXBlZEFycmF5Q29uc3RydWN0b3IsXG4gIGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6IGV4cG9ydFR5cGVkQXJyYXlNZXRob2QsXG4gIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6IGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QsXG4gIGlzVmlldzogaXNWaWV3LFxuICBpc1R5cGVkQXJyYXk6IGlzVHlwZWRBcnJheSxcbiAgVHlwZWRBcnJheTogVHlwZWRBcnJheSxcbiAgVHlwZWRBcnJheVByb3RvdHlwZTogVHlwZWRBcnJheVByb3RvdHlwZVxufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xuXG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyA9IEFycmF5QnVmZmVyVmlld0NvcmUuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUztcblxuLy8gYEFycmF5QnVmZmVyLmlzVmlld2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5YnVmZmVyLmlzdmlld1xuJCh7IHRhcmdldDogJ0FycmF5QnVmZmVyJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB9LCB7XG4gIGlzVmlldzogQXJyYXlCdWZmZXJWaWV3Q29yZS5pc1ZpZXdcbn0pO1xuIiwidmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbi8vIGBBc3NlcnQ6IElzQ29uc3RydWN0b3IoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYFNwZWNpZXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNwZWNpZXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IGRlZmF1bHRDb25zdHJ1Y3RvciA6IGFDb25zdHJ1Y3RvcihTKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIEFycmF5QnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbnZhciBBcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyTW9kdWxlLkFycmF5QnVmZmVyO1xudmFyIERhdGFWaWV3ID0gQXJyYXlCdWZmZXJNb2R1bGUuRGF0YVZpZXc7XG52YXIgbmF0aXZlQXJyYXlCdWZmZXJTbGljZSA9IEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZTtcblxudmFyIElOQ09SUkVDVF9TTElDRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFuZXcgQXJyYXlCdWZmZXIoMikuc2xpY2UoMSwgdW5kZWZpbmVkKS5ieXRlTGVuZ3RoO1xufSk7XG5cbi8vIGBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheWJ1ZmZlci5wcm90b3R5cGUuc2xpY2VcbiQoeyB0YXJnZXQ6ICdBcnJheUJ1ZmZlcicsIHByb3RvOiB0cnVlLCB1bnNhZmU6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX1NMSUNFIH0sIHtcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAobmF0aXZlQXJyYXlCdWZmZXJTbGljZSAhPT0gdW5kZWZpbmVkICYmIGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbmF0aXZlQXJyYXlCdWZmZXJTbGljZS5jYWxsKGFuT2JqZWN0KHRoaXMpLCBzdGFydCk7IC8vIEZGIGZpeFxuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW4gLSBmaXJzdCkpO1xuICAgIHZhciB2aWV3U291cmNlID0gbmV3IERhdGFWaWV3KHRoaXMpO1xuICAgIHZhciB2aWV3VGFyZ2V0ID0gbmV3IERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW4pIHtcbiAgICAgIHZpZXdUYXJnZXQuc2V0VWludDgoaW5kZXgrKywgdmlld1NvdXJjZS5nZXRVaW50OChmaXJzdCsrKSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEFycmF5QnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlcicpO1xudmFyIE5BVElWRV9BUlJBWV9CVUZGRVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLW5hdGl2ZScpO1xuXG4vLyBgRGF0YVZpZXdgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGF2aWV3LWNvbnN0cnVjdG9yXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfQVJSQVlfQlVGRkVSIH0sIHtcbiAgRGF0YVZpZXc6IEFycmF5QnVmZmVyTW9kdWxlLkRhdGFWaWV3XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0ZSgxNmUxMSkuZ2V0WWVhcigpICE9PSAxMjA7XG59KTtcblxudmFyIGdldEZ1bGxZZWFyID0gRGF0ZS5wcm90b3R5cGUuZ2V0RnVsbFllYXI7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS5nZXRZZWFyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUuZ2V0eWVhclxuJCh7IHRhcmdldDogJ0RhdGUnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBnZXRZZWFyOiBmdW5jdGlvbiBnZXRZZWFyKCkge1xuICAgIHJldHVybiBnZXRGdWxsWWVhci5jYWxsKHRoaXMpIC0gMTkwMDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYERhdGUubm93YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5ub3dcbiQoeyB0YXJnZXQ6ICdEYXRlJywgc3RhdDogdHJ1ZSB9LCB7XG4gIG5vdzogZnVuY3Rpb24gbm93KCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIGdldFRpbWUgPSBEYXRlLnByb3RvdHlwZS5nZXRUaW1lO1xudmFyIHNldEZ1bGxZZWFyID0gRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXI7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS5zZXRZZWFyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUuc2V0eWVhclxuJCh7IHRhcmdldDogJ0RhdGUnLCBwcm90bzogdHJ1ZSB9LCB7XG4gIHNldFllYXI6IGZ1bmN0aW9uIHNldFllYXIoeWVhcikge1xuICAgIC8vIHZhbGlkYXRlXG4gICAgZ2V0VGltZS5jYWxsKHRoaXMpO1xuICAgIHZhciB5aSA9IHRvSW50ZWdlck9ySW5maW5pdHkoeWVhcik7XG4gICAgdmFyIHl5eXkgPSAwIDw9IHlpICYmIHlpIDw9IDk5ID8geWkgKyAxOTAwIDogeWk7XG4gICAgcmV0dXJuIHNldEZ1bGxZZWFyLmNhbGwodGhpcywgeXl5eSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b0dNVFN0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLnRvZ210c3RyaW5nXG4kKHsgdGFyZ2V0OiAnRGF0ZScsIHByb3RvOiB0cnVlIH0sIHtcbiAgdG9HTVRTdHJpbmc6IERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXRgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGVhdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBuID0gdG9JbnRlZ2VyT3JJbmZpbml0eShjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMnKTtcbiAgZm9yICg7biA+IDA7IChuID4+Pj0gMSkgJiYgKHN0ciArPSBzdHIpKSBpZiAobiAmIDEpIHJlc3VsdCArPSBzdHI7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXJlcGVhdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBjZWlsID0gTWF0aC5jZWlsO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHBhZFN0YXJ0LCBwYWRFbmQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19FTkQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nKSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIGludE1heExlbmd0aCA9IHRvTGVuZ3RoKG1heExlbmd0aCk7XG4gICAgdmFyIHN0cmluZ0xlbmd0aCA9IFMubGVuZ3RoO1xuICAgIHZhciBmaWxsU3RyID0gZmlsbFN0cmluZyA9PT0gdW5kZWZpbmVkID8gJyAnIDogdG9TdHJpbmcoZmlsbFN0cmluZyk7XG4gICAgdmFyIGZpbGxMZW4sIHN0cmluZ0ZpbGxlcjtcbiAgICBpZiAoaW50TWF4TGVuZ3RoIDw9IHN0cmluZ0xlbmd0aCB8fCBmaWxsU3RyID09ICcnKSByZXR1cm4gUztcbiAgICBmaWxsTGVuID0gaW50TWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoO1xuICAgIHN0cmluZ0ZpbGxlciA9IHJlcGVhdC5jYWxsKGZpbGxTdHIsIGNlaWwoZmlsbExlbiAvIGZpbGxTdHIubGVuZ3RoKSk7XG4gICAgaWYgKHN0cmluZ0ZpbGxlci5sZW5ndGggPiBmaWxsTGVuKSBzdHJpbmdGaWxsZXIgPSBzdHJpbmdGaWxsZXIuc2xpY2UoMCwgZmlsbExlbik7XG4gICAgcmV0dXJuIElTX0VORCA/IFMgKyBzdHJpbmdGaWxsZXIgOiBzdHJpbmdGaWxsZXIgKyBTO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnBhZFN0YXJ0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnBhZHN0YXJ0XG4gIHN0YXJ0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5wYWRFbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucGFkZW5kXG4gIGVuZDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgcGFkU3RhcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXBhZCcpLnN0YXJ0O1xuXG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgRGF0ZVByb3RvdHlwZSA9IERhdGUucHJvdG90eXBlO1xudmFyIGdldFRpbWUgPSBEYXRlUHJvdG90eXBlLmdldFRpbWU7XG52YXIgbmF0aXZlRGF0ZVRvSVNPU3RyaW5nID0gRGF0ZVByb3RvdHlwZS50b0lTT1N0cmluZztcblxuLy8gYERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUudG9pc29zdHJpbmdcbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgZmFpbHMgaGVyZTpcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5hdGl2ZURhdGVUb0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgbmF0aXZlRGF0ZVRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGRhdGUgPSB0aGlzO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gIHZhciBzaWduID0geWVhciA8IDAgPyAnLScgOiB5ZWFyID4gOTk5OSA/ICcrJyA6ICcnO1xuICByZXR1cm4gc2lnbiArIHBhZFN0YXJ0KGFicyh5ZWFyKSwgc2lnbiA/IDYgOiA0LCAwKSArXG4gICAgJy0nICsgcGFkU3RhcnQoZGF0ZS5nZXRVVENNb250aCgpICsgMSwgMiwgMCkgK1xuICAgICctJyArIHBhZFN0YXJ0KGRhdGUuZ2V0VVRDRGF0ZSgpLCAyLCAwKSArXG4gICAgJ1QnICsgcGFkU3RhcnQoZGF0ZS5nZXRVVENIb3VycygpLCAyLCAwKSArXG4gICAgJzonICsgcGFkU3RhcnQoZGF0ZS5nZXRVVENNaW51dGVzKCksIDIsIDApICtcbiAgICAnOicgKyBwYWRTdGFydChkYXRlLmdldFVUQ1NlY29uZHMoKSwgMiwgMCkgK1xuICAgICcuJyArIHBhZFN0YXJ0KG1pbGxpc2Vjb25kcywgMywgMCkgK1xuICAgICdaJztcbn0gOiBuYXRpdmVEYXRlVG9JU09TdHJpbmc7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0lTT1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kYXRlLXRvLWlzby1zdHJpbmcnKTtcblxuLy8gYERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUudG9pc29zdHJpbmdcbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgaGFzIGEgYnJva2VuIGltcGxlbWVudGF0aW9uc1xuJCh7IHRhcmdldDogJ0RhdGUnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyAhPT0gdG9JU09TdHJpbmcgfSwge1xuICB0b0lTT1N0cmluZzogdG9JU09TdHJpbmdcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKE5hTikudG9KU09OKCkgIT09IG51bGxcbiAgICB8fCBEYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7IHRvSVNPU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9IH0pICE9PSAxO1xufSk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS50b2pzb25cbiQoeyB0YXJnZXQ6ICdEYXRlJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgcHYgPSB0b1ByaW1pdGl2ZShPLCAnbnVtYmVyJyk7XG4gICAgcmV0dXJuIHR5cGVvZiBwdiA9PSAnbnVtYmVyJyAmJiAhaXNGaW5pdGUocHYpID8gbnVsbCA6IE8udG9JU09TdHJpbmcoKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcblxuLy8gYERhdGUucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUtQEB0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGludCkge1xuICBhbk9iamVjdCh0aGlzKTtcbiAgaWYgKGhpbnQgPT09ICdzdHJpbmcnIHx8IGhpbnQgPT09ICdkZWZhdWx0JykgaGludCA9ICdzdHJpbmcnO1xuICBlbHNlIGlmIChoaW50ICE9PSAnbnVtYmVyJykgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgaGludCcpO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZSh0aGlzLCBoaW50KTtcbn07XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBkYXRlVG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGF0ZS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcbnZhciBEYXRlUHJvdG90eXBlID0gRGF0ZS5wcm90b3R5cGU7XG5cbi8vIGBEYXRlLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLUBAdG9wcmltaXRpdmVcbmlmICghKFRPX1BSSU1JVElWRSBpbiBEYXRlUHJvdG90eXBlKSkge1xuICByZWRlZmluZShEYXRlUHJvdG90eXBlLCBUT19QUklNSVRJVkUsIGRhdGVUb1ByaW1pdGl2ZSk7XG59XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcblxudmFyIERhdGVQcm90b3R5cGUgPSBEYXRlLnByb3RvdHlwZTtcbnZhciBJTlZBTElEX0RBVEUgPSAnSW52YWxpZCBEYXRlJztcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIG5hdGl2ZURhdGVUb1N0cmluZyA9IERhdGVQcm90b3R5cGVbVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvdHlwZS5nZXRUaW1lO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKFN0cmluZyhuZXcgRGF0ZShOYU4pKSAhPSBJTlZBTElEX0RBVEUpIHtcbiAgcmVkZWZpbmUoRGF0ZVByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gbmF0aXZlRGF0ZVRvU3RyaW5nLmNhbGwodGhpcykgOiBJTlZBTElEX0RBVEU7XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbnZhciByYXcgPSAvW1xcdyorXFwtLi9AXS87XG5cbnZhciBoZXggPSBmdW5jdGlvbiAoY29kZSwgbGVuZ3RoKSB7XG4gIHZhciByZXN1bHQgPSBjb2RlLnRvU3RyaW5nKDE2KTtcbiAgd2hpbGUgKHJlc3VsdC5sZW5ndGggPCBsZW5ndGgpIHJlc3VsdCA9ICcwJyArIHJlc3VsdDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIGBlc2NhcGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1lc2NhcGUtc3RyaW5nXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgZXNjYXBlOiBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBsZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNociwgY29kZTtcbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgICBpZiAocmF3LnRlc3QoY2hyKSkge1xuICAgICAgICByZXN1bHQgKz0gY2hyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZSA9IGNoci5jaGFyQ29kZUF0KDApO1xuICAgICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICAgIHJlc3VsdCArPSAnJScgKyBoZXgoY29kZSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9ICcldScgKyBoZXgoY29kZSwgNCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIHNsaWNlID0gW10uc2xpY2U7XG52YXIgZmFjdG9yaWVzID0ge307XG5cbnZhciBjb25zdHJ1Y3QgPSBmdW5jdGlvbiAoQywgYXJnc0xlbmd0aCwgYXJncykge1xuICBpZiAoIShhcmdzTGVuZ3RoIGluIGZhY3RvcmllcykpIHtcbiAgICBmb3IgKHZhciBsaXN0ID0gW10sIGkgPSAwOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSBsaXN0W2ldID0gJ2FbJyArIGkgKyAnXSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHdlIGhhdmUgbm8gcHJvcGVyIGFsdGVybmF0aXZlcywgSUU4LSBvbmx5XG4gICAgZmFjdG9yaWVzW2FyZ3NMZW5ndGhdID0gRnVuY3Rpb24oJ0MsYScsICdyZXR1cm4gbmV3IEMoJyArIGxpc3Quam9pbignLCcpICsgJyknKTtcbiAgfSByZXR1cm4gZmFjdG9yaWVzW2FyZ3NMZW5ndGhdKEMsIGFyZ3MpO1xufTtcblxuLy8gYEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmJpbmRcbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24uYmluZCB8fCBmdW5jdGlvbiBiaW5kKHRoYXQgLyogLCAuLi5hcmdzICovKSB7XG4gIHZhciBmbiA9IGFDYWxsYWJsZSh0aGlzKTtcbiAgdmFyIHBhcnRBcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgYm91bmRGdW5jdGlvbiA9IGZ1bmN0aW9uIGJvdW5kKC8qIGFyZ3MuLi4gKi8pIHtcbiAgICB2YXIgYXJncyA9IHBhcnRBcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYm91bmRGdW5jdGlvbiA/IGNvbnN0cnVjdChmbiwgYXJncy5sZW5ndGgsIGFyZ3MpIDogZm4uYXBwbHkodGhhdCwgYXJncyk7XG4gIH07XG4gIGlmIChpc09iamVjdChmbi5wcm90b3R5cGUpKSBib3VuZEZ1bmN0aW9uLnByb3RvdHlwZSA9IGZuLnByb3RvdHlwZTtcbiAgcmV0dXJuIGJvdW5kRnVuY3Rpb247XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kJyk7XG5cbi8vIGBGdW5jdGlvbi5wcm90b3R5cGUuYmluZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kXG4kKHsgdGFyZ2V0OiAnRnVuY3Rpb24nLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGJpbmQ6IGJpbmRcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIEhBU19JTlNUQU5DRSA9IHdlbGxLbm93blN5bWJvbCgnaGFzSW5zdGFuY2UnKTtcbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLy8gYEZ1bmN0aW9uLnByb3RvdHlwZVtAQGhhc0luc3RhbmNlXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS1AQGhhc2luc3RhbmNlXG5pZiAoIShIQVNfSU5TVEFOQ0UgaW4gRnVuY3Rpb25Qcm90b3R5cGUpKSB7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoRnVuY3Rpb25Qcm90b3R5cGUsIEhBU19JTlNUQU5DRSwgeyB2YWx1ZTogZnVuY3Rpb24gKE8pIHtcbiAgICBpZiAoIWlzQ2FsbGFibGUodGhpcykgfHwgIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFpc09iamVjdCh0aGlzLnByb3RvdHlwZSkpIHJldHVybiBPIGluc3RhbmNlb2YgdGhpcztcbiAgICAvLyBmb3IgZW52aXJvbm1lbnQgdy9vIG5hdGl2ZSBgQEBoYXNJbnN0YW5jZWAgbG9naWMgZW5vdWdoIGBpbnN0YW5jZW9mYCwgYnV0IGFkZCB0aGlzOlxuICAgIHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpIGlmICh0aGlzLnByb3RvdHlwZSA9PT0gTykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IH0pO1xufVxuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRlVOQ1RJT05fTkFNRV9FWElTVFMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkVYSVNUUztcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmcgPSBGdW5jdGlvblByb3RvdHlwZS50b1N0cmluZztcbnZhciBuYW1lUkUgPSAvXlxccypmdW5jdGlvbiAoW14gKF0qKS87XG52YXIgTkFNRSA9ICduYW1lJztcblxuLy8gRnVuY3Rpb24gaW5zdGFuY2VzIGAubmFtZWAgcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZnVuY3Rpb24taW5zdGFuY2VzLW5hbWVcbmlmIChERVNDUklQVE9SUyAmJiAhRlVOQ1RJT05fTkFNRV9FWElTVFMpIHtcbiAgZGVmaW5lUHJvcGVydHkoRnVuY3Rpb25Qcm90b3R5cGUsIE5BTUUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZy5jYWxsKHRoaXMpLm1hdGNoKG5hbWVSRSlbMV07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYGdsb2JhbFRoaXNgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nbG9iYWx0aGlzXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgZ2xvYmFsVGhpczogZ2xvYmFsXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyICRzdHJpbmdpZnkgPSBnZXRCdWlsdEluKCdKU09OJywgJ3N0cmluZ2lmeScpO1xudmFyIHJlID0gL1tcXHVEODAwLVxcdURGRkZdL2c7XG52YXIgbG93ID0gL15bXFx1RDgwMC1cXHVEQkZGXSQvO1xudmFyIGhpID0gL15bXFx1REMwMC1cXHVERkZGXSQvO1xuXG52YXIgZml4ID0gZnVuY3Rpb24gKG1hdGNoLCBvZmZzZXQsIHN0cmluZykge1xuICB2YXIgcHJldiA9IHN0cmluZy5jaGFyQXQob2Zmc2V0IC0gMSk7XG4gIHZhciBuZXh0ID0gc3RyaW5nLmNoYXJBdChvZmZzZXQgKyAxKTtcbiAgaWYgKChsb3cudGVzdChtYXRjaCkgJiYgIWhpLnRlc3QobmV4dCkpIHx8IChoaS50ZXN0KG1hdGNoKSAmJiAhbG93LnRlc3QocHJldikpKSB7XG4gICAgcmV0dXJuICdcXFxcdScgKyBtYXRjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KTtcbiAgfSByZXR1cm4gbWF0Y2g7XG59O1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJHN0cmluZ2lmeSgnXFx1REYwNlxcdUQ4MzQnKSAhPT0gJ1wiXFxcXHVkZjA2XFxcXHVkODM0XCInXG4gICAgfHwgJHN0cmluZ2lmeSgnXFx1REVBRCcpICE9PSAnXCJcXFxcdWRlYWRcIic7XG59KTtcblxuaWYgKCRzdHJpbmdpZnkpIHtcbiAgLy8gYEpTT04uc3RyaW5naWZ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLnN0cmluZ2lmeVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC13ZWxsLWZvcm1lZC1zdHJpbmdpZnlcbiAgJCh7IHRhcmdldDogJ0pTT04nLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCwgcmVwbGFjZXIsIHNwYWNlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJHN0cmluZ2lmeS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT0gJ3N0cmluZycgPyByZXN1bHQucmVwbGFjZShyZSwgZml4KSA6IHJlc3VsdDtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xuXG4vLyBKU09OW0BAdG9TdHJpbmdUYWddIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWpzb24tQEB0b3N0cmluZ3RhZ1xuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWlzZXh0ZW5zaWJsZSwgZXMvbm8tb2JqZWN0LXByZXZlbnRleHRlbnNpb25zIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIEZSRUVaSU5HID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZyZWV6aW5nJyk7XG5cbnZhciBSRVFVSVJFRCA9IGZhbHNlO1xudmFyIE1FVEFEQVRBID0gdWlkKCdtZXRhJyk7XG52YXIgaWQgPSAwO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWlzZXh0ZW5zaWJsZSAtLSBzYWZlXG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIHNldE1ldGFkYXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIGRlZmluZVByb3BlcnR5KGl0LCBNRVRBREFUQSwgeyB2YWx1ZToge1xuICAgIG9iamVjdElEOiAnTycgKyBpZCsrLCAvLyBvYmplY3QgSURcbiAgICB3ZWFrRGF0YToge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG5cbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIGEgcHJpbWl0aXZlIHdpdGggcHJlZml4XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiAodHlwZW9mIGl0ID09ICdzdHJpbmcnID8gJ1MnIDogJ1AnKSArIGl0O1xuICBpZiAoIWhhc093bihpdCwgTUVUQURBVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGFkYXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBREFUQV0ub2JqZWN0SUQ7XG59O1xuXG52YXIgZ2V0V2Vha0RhdGEgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhc093bihpdCwgTUVUQURBVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGFkYXRhKGl0KTtcbiAgLy8gcmV0dXJuIHRoZSBzdG9yZSBvZiB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBREFUQV0ud2Vha0RhdGE7XG59O1xuXG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoRlJFRVpJTkcgJiYgUkVRVUlSRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzT3duKGl0LCBNRVRBREFUQSkpIHNldE1ldGFkYXRhKGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxudmFyIGVuYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgbWV0YS5lbmFibGUgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4gIFJFUVVJUkVEID0gdHJ1ZTtcbiAgdmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmY7XG4gIHZhciBzcGxpY2UgPSBbXS5zcGxpY2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHRlc3RbTUVUQURBVEFdID0gMTtcblxuICAvLyBwcmV2ZW50IGV4cG9zaW5nIG9mIG1ldGFkYXRhIGtleVxuICBpZiAoZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0KS5sZW5ndGgpIHtcbiAgICBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICAgIHZhciByZXN1bHQgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXN1bHQubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHJlc3VsdFtpXSA9PT0gTUVUQURBVEEpIHtcbiAgICAgICAgICBzcGxpY2UuY2FsbChyZXN1bHQsIGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgICQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgZ2V0T3duUHJvcGVydHlOYW1lczogZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsTW9kdWxlLmZcbiAgICB9KTtcbiAgfVxufTtcblxudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5hYmxlOiBlbmFibGUsXG4gIGZhc3RLZXk6IGZhc3RLZXksXG4gIGdldFdlYWtEYXRhOiBnZXRXZWFrRGF0YSxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5oaWRkZW5LZXlzW01FVEFEQVRBXSA9IHRydWU7XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIG1ha2VzIHN1YmNsYXNzaW5nIHdvcmsgY29ycmVjdCBmb3Igd3JhcHBlZCBidWlsdC1pbnNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCR0aGlzLCBkdW1teSwgV3JhcHBlcikge1xuICB2YXIgTmV3VGFyZ2V0LCBOZXdUYXJnZXRQcm90b3R5cGU7XG4gIGlmIChcbiAgICAvLyBpdCBjYW4gd29yayBvbmx5IHdpdGggbmF0aXZlIGBzZXRQcm90b3R5cGVPZmBcbiAgICBzZXRQcm90b3R5cGVPZiAmJlxuICAgIC8vIHdlIGhhdmVuJ3QgY29tcGxldGVseSBjb3JyZWN0IHByZS1FUzYgd2F5IGZvciBnZXR0aW5nIGBuZXcudGFyZ2V0YCwgc28gdXNlIHRoaXNcbiAgICBpc0NhbGxhYmxlKE5ld1RhcmdldCA9IGR1bW15LmNvbnN0cnVjdG9yKSAmJlxuICAgIE5ld1RhcmdldCAhPT0gV3JhcHBlciAmJlxuICAgIGlzT2JqZWN0KE5ld1RhcmdldFByb3RvdHlwZSA9IE5ld1RhcmdldC5wcm90b3R5cGUpICYmXG4gICAgTmV3VGFyZ2V0UHJvdG90eXBlICE9PSBXcmFwcGVyLnByb3RvdHlwZVxuICApIHNldFByb3RvdHlwZU9mKCR0aGlzLCBOZXdUYXJnZXRQcm90b3R5cGUpO1xuICByZXR1cm4gJHRoaXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgSW50ZXJuYWxNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SX05BTUUsIHdyYXBwZXIsIGNvbW1vbikge1xuICB2YXIgSVNfTUFQID0gQ09OU1RSVUNUT1JfTkFNRS5pbmRleE9mKCdNYXAnKSAhPT0gLTE7XG4gIHZhciBJU19XRUFLID0gQ09OU1RSVUNUT1JfTkFNRS5pbmRleE9mKCdXZWFrJykgIT09IC0xO1xuICB2YXIgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnO1xuICB2YXIgTmF0aXZlQ29uc3RydWN0b3IgPSBnbG9iYWxbQ09OU1RSVUNUT1JfTkFNRV07XG4gIHZhciBOYXRpdmVQcm90b3R5cGUgPSBOYXRpdmVDb25zdHJ1Y3RvciAmJiBOYXRpdmVDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIHZhciBDb25zdHJ1Y3RvciA9IE5hdGl2ZUNvbnN0cnVjdG9yO1xuICB2YXIgZXhwb3J0ZWQgPSB7fTtcblxuICB2YXIgZml4TWV0aG9kID0gZnVuY3Rpb24gKEtFWSkge1xuICAgIHZhciBuYXRpdmVNZXRob2QgPSBOYXRpdmVQcm90b3R5cGVbS0VZXTtcbiAgICByZWRlZmluZShOYXRpdmVQcm90b3R5cGUsIEtFWSxcbiAgICAgIEtFWSA9PSAnYWRkJyA/IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgICBuYXRpdmVNZXRob2QuY2FsbCh0aGlzLCB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSA6IEtFWSA9PSAnZGVsZXRlJyA/IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGtleSkgPyBmYWxzZSA6IG5hdGl2ZU1ldGhvZC5jYWxsKHRoaXMsIGtleSA9PT0gMCA/IDAgOiBrZXkpO1xuICAgICAgfSA6IEtFWSA9PSAnZ2V0JyA/IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGtleSkgPyB1bmRlZmluZWQgOiBuYXRpdmVNZXRob2QuY2FsbCh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5KTtcbiAgICAgIH0gOiBLRVkgPT0gJ2hhcycgPyBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChrZXkpID8gZmFsc2UgOiBuYXRpdmVNZXRob2QuY2FsbCh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5KTtcbiAgICAgIH0gOiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBuYXRpdmVNZXRob2QuY2FsbCh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgdmFyIFJFUExBQ0UgPSBpc0ZvcmNlZChcbiAgICBDT05TVFJVQ1RPUl9OQU1FLFxuICAgICFpc0NhbGxhYmxlKE5hdGl2ZUNvbnN0cnVjdG9yKSB8fCAhKElTX1dFQUsgfHwgTmF0aXZlUHJvdG90eXBlLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpLmVudHJpZXMoKS5uZXh0KCk7XG4gICAgfSkpXG4gICk7XG5cbiAgaWYgKFJFUExBQ0UpIHtcbiAgICAvLyBjcmVhdGUgY29sbGVjdGlvbiBjb25zdHJ1Y3RvclxuICAgIENvbnN0cnVjdG9yID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIENPTlNUUlVDVE9SX05BTUUsIElTX01BUCwgQURERVIpO1xuICAgIEludGVybmFsTWV0YWRhdGFNb2R1bGUuZW5hYmxlKCk7XG4gIH0gZWxzZSBpZiAoaXNGb3JjZWQoQ09OU1RSVUNUT1JfTkFNRSwgdHJ1ZSkpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTtcbiAgICAvLyBlYXJseSBpbXBsZW1lbnRhdGlvbnMgbm90IHN1cHBvcnRzIGNoYWluaW5nXG4gICAgdmFyIEhBU05UX0NIQUlOSU5HID0gaW5zdGFuY2VbQURERVJdKElTX1dFQUsgPyB7fSA6IC0wLCAxKSAhPSBpbnN0YW5jZTtcbiAgICAvLyBWOCB+IENocm9taXVtIDQwLSB3ZWFrLWNvbGxlY3Rpb25zIHRocm93cyBvbiBwcmltaXRpdmVzLCBidXQgc2hvdWxkIHJldHVybiBmYWxzZVxuICAgIHZhciBUSFJPV1NfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuaGFzKDEpOyB9KTtcbiAgICAvLyBtb3N0IGVhcmx5IGltcGxlbWVudGF0aW9ucyBkb2Vzbid0IHN1cHBvcnRzIGl0ZXJhYmxlcywgbW9zdCBtb2Rlcm4gLSBub3QgY2xvc2UgaXQgY29ycmVjdGx5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgIHZhciBBQ0NFUFRfSVRFUkFCTEVTID0gY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkgeyBuZXcgTmF0aXZlQ29uc3RydWN0b3IoaXRlcmFibGUpOyB9KTtcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpO1xuICAgICAgdmFyIGluZGV4ID0gNTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSAkaW5zdGFuY2VbQURERVJdKGluZGV4LCBpbmRleCk7XG4gICAgICByZXR1cm4gISRpbnN0YW5jZS5oYXMoLTApO1xuICAgIH0pO1xuXG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IHdyYXBwZXIoZnVuY3Rpb24gKGR1bW15LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKGR1bW15LCBDb25zdHJ1Y3RvciwgQ09OU1RSVUNUT1JfTkFNRSk7XG4gICAgICAgIHZhciB0aGF0ID0gaW5oZXJpdElmUmVxdWlyZWQobmV3IE5hdGl2ZUNvbnN0cnVjdG9yKCksIGR1bW15LCBDb25zdHJ1Y3Rvcik7XG4gICAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGl0ZXJhdGUoaXRlcmFibGUsIHRoYXRbQURERVJdLCB7IHRoYXQ6IHRoYXQsIEFTX0VOVFJJRVM6IElTX01BUCB9KTtcbiAgICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgICB9KTtcbiAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE5hdGl2ZVByb3RvdHlwZTtcbiAgICAgIE5hdGl2ZVByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAgIH1cblxuICAgIGlmIChUSFJPV1NfT05fUFJJTUlUSVZFUyB8fCBCVUdHWV9aRVJPKSB7XG4gICAgICBmaXhNZXRob2QoJ2RlbGV0ZScpO1xuICAgICAgZml4TWV0aG9kKCdoYXMnKTtcbiAgICAgIElTX01BUCAmJiBmaXhNZXRob2QoJ2dldCcpO1xuICAgIH1cblxuICAgIGlmIChCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKSBmaXhNZXRob2QoQURERVIpO1xuXG4gICAgLy8gd2VhayBjb2xsZWN0aW9ucyBzaG91bGQgbm90IGNvbnRhaW5zIC5jbGVhciBtZXRob2RcbiAgICBpZiAoSVNfV0VBSyAmJiBOYXRpdmVQcm90b3R5cGUuY2xlYXIpIGRlbGV0ZSBOYXRpdmVQcm90b3R5cGUuY2xlYXI7XG4gIH1cblxuICBleHBvcnRlZFtDT05TVFJVQ1RPUl9OQU1FXSA9IENvbnN0cnVjdG9yO1xuICAkKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IENvbnN0cnVjdG9yICE9IE5hdGl2ZUNvbnN0cnVjdG9yIH0sIGV4cG9ydGVkKTtcblxuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgQ09OU1RSVUNUT1JfTkFNRSk7XG5cbiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKENvbnN0cnVjdG9yLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVApO1xuXG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3InKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYXN0S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhJykuZmFzdEtleTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgaW50ZXJuYWxTdGF0ZUdldHRlckZvciA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICAgIHNldEludGVybmFsU3RhdGUodGhhdCwge1xuICAgICAgICB0eXBlOiBDT05TVFJVQ1RPUl9OQU1FLFxuICAgICAgICBpbmRleDogY3JlYXRlKG51bGwpLFxuICAgICAgICBmaXJzdDogdW5kZWZpbmVkLFxuICAgICAgICBsYXN0OiB1bmRlZmluZWQsXG4gICAgICAgIHNpemU6IDBcbiAgICAgIH0pO1xuICAgICAgaWYgKCFERVNDUklQVE9SUykgdGhhdC5zaXplID0gMDtcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGl0ZXJhdGUoaXRlcmFibGUsIHRoYXRbQURERVJdLCB7IHRoYXQ6IHRoYXQsIEFTX0VOVFJJRVM6IElTX01BUCB9KTtcbiAgICB9KTtcblxuICAgIHZhciBnZXRJbnRlcm5hbFN0YXRlID0gaW50ZXJuYWxTdGF0ZUdldHRlckZvcihDT05TVFJVQ1RPUl9OQU1FKTtcblxuICAgIHZhciBkZWZpbmUgPSBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICB2YXIgcHJldmlvdXMsIGluZGV4O1xuICAgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgZW50cnkudmFsdWUgPSB2YWx1ZTtcbiAgICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLmxhc3QgPSBlbnRyeSA9IHtcbiAgICAgICAgICBpbmRleDogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksXG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91cyA9IHN0YXRlLmxhc3QsXG4gICAgICAgICAgbmV4dDogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlbW92ZWQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc3RhdGUuZmlyc3QpIHN0YXRlLmZpcnN0ID0gZW50cnk7XG4gICAgICAgIGlmIChwcmV2aW91cykgcHJldmlvdXMubmV4dCA9IGVudHJ5O1xuICAgICAgICBpZiAoREVTQ1JJUFRPUlMpIHN0YXRlLnNpemUrKztcbiAgICAgICAgZWxzZSB0aGF0LnNpemUrKztcbiAgICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSBzdGF0ZS5pbmRleFtpbmRleF0gPSBlbnRyeTtcbiAgICAgIH0gcmV0dXJuIHRoYXQ7XG4gICAgfTtcblxuICAgIHZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICAvLyBmYXN0IGNhc2VcbiAgICAgIHZhciBpbmRleCA9IGZhc3RLZXkoa2V5KTtcbiAgICAgIHZhciBlbnRyeTtcbiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSByZXR1cm4gc3RhdGUuaW5kZXhbaW5kZXhdO1xuICAgICAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gICAgICBmb3IgKGVudHJ5ID0gc3RhdGUuZmlyc3Q7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm5leHQpIHtcbiAgICAgICAgaWYgKGVudHJ5LmtleSA9PSBrZXkpIHJldHVybiBlbnRyeTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIGB7IE1hcCwgU2V0IH0ucHJvdG90eXBlLmNsZWFyKClgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5jbGVhclxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQucHJvdG90eXBlLmNsZWFyXG4gICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgICAgdmFyIGRhdGEgPSBzdGF0ZS5pbmRleDtcbiAgICAgICAgdmFyIGVudHJ5ID0gc3RhdGUuZmlyc3Q7XG4gICAgICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgICAgIGVudHJ5LnJlbW92ZWQgPSB0cnVlO1xuICAgICAgICAgIGlmIChlbnRyeS5wcmV2aW91cykgZW50cnkucHJldmlvdXMgPSBlbnRyeS5wcmV2aW91cy5uZXh0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmluZGV4XTtcbiAgICAgICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuZmlyc3QgPSBzdGF0ZS5sYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoREVTQ1JJUFRPUlMpIHN0YXRlLnNpemUgPSAwO1xuICAgICAgICBlbHNlIHRoYXQuc2l6ZSA9IDA7XG4gICAgICB9LFxuICAgICAgLy8gYHsgTWFwLCBTZXQgfS5wcm90b3R5cGUuZGVsZXRlKGtleSlgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5kZWxldGVcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS5kZWxldGVcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uZXh0O1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucHJldmlvdXM7XG4gICAgICAgICAgZGVsZXRlIHN0YXRlLmluZGV4W2VudHJ5LmluZGV4XTtcbiAgICAgICAgICBlbnRyeS5yZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uZXh0ID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wcmV2aW91cyA9IHByZXY7XG4gICAgICAgICAgaWYgKHN0YXRlLmZpcnN0ID09IGVudHJ5KSBzdGF0ZS5maXJzdCA9IG5leHQ7XG4gICAgICAgICAgaWYgKHN0YXRlLmxhc3QgPT0gZW50cnkpIHN0YXRlLmxhc3QgPSBwcmV2O1xuICAgICAgICAgIGlmIChERVNDUklQVE9SUykgc3RhdGUuc2l6ZS0tO1xuICAgICAgICAgIGVsc2UgdGhhdC5zaXplLS07XG4gICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG4gICAgICB9LFxuICAgICAgLy8gYHsgTWFwLCBTZXQgfS5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKWAgbWV0aG9kc1xuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLmZvcmVhY2hcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS5mb3JlYWNoXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uZXh0IDogc3RhdGUuZmlyc3QpIHtcbiAgICAgICAgICBib3VuZEZ1bmN0aW9uKGVudHJ5LnZhbHVlLCBlbnRyeS5rZXksIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yZW1vdmVkKSBlbnRyeSA9IGVudHJ5LnByZXZpb3VzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYHsgTWFwLCBTZXR9LnByb3RvdHlwZS5oYXMoa2V5KWAgbWV0aG9kc1xuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLmhhc1xuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQucHJvdG90eXBlLmhhc1xuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiAhIWdldEVudHJ5KHRoaXMsIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgSVNfTUFQID8ge1xuICAgICAgLy8gYE1hcC5wcm90b3R5cGUuZ2V0KGtleSlgIG1ldGhvZFxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLmdldFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoaXMsIGtleSk7XG4gICAgICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS52YWx1ZTtcbiAgICAgIH0sXG4gICAgICAvLyBgTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlgIG1ldGhvZFxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLnNldFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5lKHRoaXMsIGtleSA9PT0gMCA/IDAgOiBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IDoge1xuICAgICAgLy8gYFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKWAgbWV0aG9kXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUuYWRkXG4gICAgICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5lKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zaXplO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBzZXRTdHJvbmc6IGZ1bmN0aW9uIChDLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVApIHtcbiAgICB2YXIgSVRFUkFUT1JfTkFNRSA9IENPTlNUUlVDVE9SX05BTUUgKyAnIEl0ZXJhdG9yJztcbiAgICB2YXIgZ2V0SW50ZXJuYWxDb2xsZWN0aW9uU3RhdGUgPSBpbnRlcm5hbFN0YXRlR2V0dGVyRm9yKENPTlNUUlVDVE9SX05BTUUpO1xuICAgIHZhciBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUgPSBpbnRlcm5hbFN0YXRlR2V0dGVyRm9yKElURVJBVE9SX05BTUUpO1xuICAgIC8vIGB7IE1hcCwgU2V0IH0ucHJvdG90eXBlLnsga2V5cywgdmFsdWVzLCBlbnRyaWVzLCBAQGl0ZXJhdG9yIH0oKWAgbWV0aG9kc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5lbnRyaWVzXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLmtleXNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hcC5wcm90b3R5cGUudmFsdWVzXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLUBAaXRlcmF0b3JcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUuZW50cmllc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS5rZXlzXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQucHJvdG90eXBlLnZhbHVlc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS1AQGl0ZXJhdG9yXG4gICAgZGVmaW5lSXRlcmF0b3IoQywgQ09OU1RSVUNUT1JfTkFNRSwgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgICAgdHlwZTogSVRFUkFUT1JfTkFNRSxcbiAgICAgICAgdGFyZ2V0OiBpdGVyYXRlZCxcbiAgICAgICAgc3RhdGU6IGdldEludGVybmFsQ29sbGVjdGlvblN0YXRlKGl0ZXJhdGVkKSxcbiAgICAgICAga2luZDoga2luZCxcbiAgICAgICAgbGFzdDogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUodGhpcyk7XG4gICAgICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gICAgICB2YXIgZW50cnkgPSBzdGF0ZS5sYXN0O1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucmVtb3ZlZCkgZW50cnkgPSBlbnRyeS5wcmV2aW91cztcbiAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG4gICAgICBpZiAoIXN0YXRlLnRhcmdldCB8fCAhKHN0YXRlLmxhc3QgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubmV4dCA6IHN0YXRlLnN0YXRlLmZpcnN0KSkge1xuICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuICAgICAgICBzdGF0ZS50YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcbiAgICAgIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHsgdmFsdWU6IGVudHJ5LmtleSwgZG9uZTogZmFsc2UgfTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4geyB2YWx1ZTogZW50cnkudmFsdWUsIGRvbmU6IGZhbHNlIH07XG4gICAgICByZXR1cm4geyB2YWx1ZTogW2VudHJ5LmtleSwgZW50cnkudmFsdWVdLCBkb25lOiBmYWxzZSB9O1xuICAgIH0sIElTX01BUCA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnLCAhSVNfTUFQLCB0cnVlKTtcblxuICAgIC8vIGB7IE1hcCwgU2V0IH0ucHJvdG90eXBlW0BAc3BlY2llc11gIGFjY2Vzc29yc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LW1hcC1AQHNwZWNpZXNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1zZXQtQEBzcGVjaWVzXG4gICAgc2V0U3BlY2llcyhDT05TVFJVQ1RPUl9OQU1FKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjb2xsZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24nKTtcbnZhciBjb2xsZWN0aW9uU3Ryb25nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tc3Ryb25nJyk7XG5cbi8vIGBNYXBgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hcC1vYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IGNvbGxlY3Rpb24oJ01hcCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBNYXAoKSB7IHJldHVybiBpbml0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwgY29sbGVjdGlvblN0cm9uZyk7XG4iLCJ2YXIgbG9nID0gTWF0aC5sb2c7XG5cbi8vIGBNYXRoLmxvZzFwYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5sb2cxcFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtbG9nMXAgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmxvZzFwIHx8IGZ1bmN0aW9uIGxvZzFwKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID4gLTFlLTggJiYgeCA8IDFlLTggPyB4IC0geCAqIHggLyAyIDogbG9nKDEgKyB4KTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBsb2cxcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLWxvZzFwJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWFjb3NoIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGFjb3NoID0gTWF0aC5hY29zaDtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xudmFyIExOMiA9IE1hdGguTE4yO1xuXG52YXIgRk9SQ0VEID0gISRhY29zaFxuICAvLyBWOCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNTA5XG4gIHx8IE1hdGguZmxvb3IoJGFjb3NoKE51bWJlci5NQVhfVkFMVUUpKSAhPSA3MTBcbiAgLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFjb3NoKEluZmluaXR5KSAtPiBOYU5cbiAgfHwgJGFjb3NoKEluZmluaXR5KSAhPSBJbmZpbml0eTtcblxuLy8gYE1hdGguYWNvc2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmFjb3NoXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgYWNvc2g6IGZ1bmN0aW9uIGFjb3NoKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPCAxID8gTmFOIDogeCA+IDk0OTA2MjY1LjYyNDI1MTU2XG4gICAgICA/IGxvZyh4KSArIExOMlxuICAgICAgOiBsb2cxcCh4IC0gMSArIHNxcnQoeCAtIDEpICogc3FydCh4ICsgMSkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1hc2luaCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRhc2luaCA9IE1hdGguYXNpbmg7XG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgc3FydCA9IE1hdGguc3FydDtcblxuZnVuY3Rpb24gYXNpbmgoeCkge1xuICByZXR1cm4gIWlzRmluaXRlKHggPSAreCkgfHwgeCA9PSAwID8geCA6IHggPCAwID8gLWFzaW5oKC14KSA6IGxvZyh4ICsgc3FydCh4ICogeCArIDEpKTtcbn1cblxuLy8gYE1hdGguYXNpbmhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmFzaW5oXG4vLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYXNpbmgoMCkgLT4gLTBcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhKCRhc2luaCAmJiAxIC8gJGFzaW5oKDApID4gMCkgfSwge1xuICBhc2luaDogYXNpbmhcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWF0YW5oIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcbnZhciBsb2cgPSBNYXRoLmxvZztcblxuLy8gYE1hdGguYXRhbmhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmF0YW5oXG4vLyBUb3IgQnJvd3NlciBidWc6IE1hdGguYXRhbmgoLTApIC0+IDBcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhKCRhdGFuaCAmJiAxIC8gJGF0YW5oKC0wKSA8IDApIH0sIHtcbiAgYXRhbmg6IGZ1bmN0aW9uIGF0YW5oKHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiBsb2coKDEgKyB4KSAvICgxIC0geCkpIC8gMjtcbiAgfVxufSk7XG4iLCIvLyBgTWF0aC5zaWduYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5zaWduXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1zaWduIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uIHNpZ24oeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4gKHggPSAreCkgPT0gMCB8fCB4ICE9IHggPyB4IDogeCA8IDAgPyAtMSA6IDE7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXNpZ24nKTtcblxudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xuXG4vLyBgTWF0aC5jYnJ0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5jYnJ0XG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogcG93KGFicyh4KSwgMSAvIDMpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExPRzJFID0gTWF0aC5MT0cyRTtcblxuLy8gYE1hdGguY2x6MzJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmNsejMyXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBjbHozMjogZnVuY3Rpb24gY2x6MzIoeCkge1xuICAgIHJldHVybiAoeCA+Pj49IDApID8gMzEgLSBmbG9vcihsb2coeCArIDAuNSkgKiBMT0cyRSkgOiAzMjtcbiAgfVxufSk7XG4iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1leHBtMSAtLSBzYWZlXG52YXIgJGV4cG0xID0gTWF0aC5leHBtMTtcbnZhciBleHAgPSBNYXRoLmV4cDtcblxuLy8gYE1hdGguZXhwbTFgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmV4cG0xXG5tb2R1bGUuZXhwb3J0cyA9ICghJGV4cG0xXG4gIC8vIE9sZCBGRiBidWdcbiAgfHwgJGV4cG0xKDEwKSA+IDIyMDI1LjQ2NTc5NDgwNjcxOSB8fCAkZXhwbTEoMTApIDwgMjIwMjUuNDY1Nzk0ODA2NzE2NTE2OFxuICAvLyBUb3IgQnJvd3NlciBidWdcbiAgfHwgJGV4cG0xKC0yZS0xNykgIT0gLTJlLTE3XG4pID8gZnVuY3Rpb24gZXhwbTEoeCkge1xuICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiB4ID4gLTFlLTYgJiYgeCA8IDFlLTYgPyB4ICsgeCAqIHggLyAyIDogZXhwKHgpIC0gMTtcbn0gOiAkZXhwbTE7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLWV4cG0xJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWNvc2ggLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkY29zaCA9IE1hdGguY29zaDtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBFID0gTWF0aC5FO1xuXG4vLyBgTWF0aC5jb3NoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5jb3NoXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogISRjb3NoIHx8ICRjb3NoKDcxMCkgPT09IEluZmluaXR5IH0sIHtcbiAgY29zaDogZnVuY3Rpb24gY29zaCh4KSB7XG4gICAgdmFyIHQgPSBleHBtMShhYnMoeCkgLSAxKSArIDE7XG4gICAgcmV0dXJuICh0ICsgMSAvICh0ICogRSAqIEUpKSAqIChFIC8gMik7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1leHBtMScpO1xuXG4vLyBgTWF0aC5leHBtMWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguZXhwbTFcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWV4cG0xIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogZXhwbTEgIT0gTWF0aC5leHBtMSB9LCB7IGV4cG0xOiBleHBtMSB9KTtcbiIsInZhciBzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtc2lnbicpO1xuXG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgRVBTSUxPTiA9IHBvdygyLCAtNTIpO1xudmFyIEVQU0lMT04zMiA9IHBvdygyLCAtMjMpO1xudmFyIE1BWDMyID0gcG93KDIsIDEyNykgKiAoMiAtIEVQU0lMT04zMik7XG52YXIgTUlOMzIgPSBwb3coMiwgLTEyNik7XG5cbnZhciByb3VuZFRpZXNUb0V2ZW4gPSBmdW5jdGlvbiAobikge1xuICByZXR1cm4gbiArIDEgLyBFUFNJTE9OIC0gMSAvIEVQU0lMT047XG59O1xuXG4vLyBgTWF0aC5mcm91bmRgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmZyb3VuZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtZnJvdW5kIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24gZnJvdW5kKHgpIHtcbiAgdmFyICRhYnMgPSBhYnMoeCk7XG4gIHZhciAkc2lnbiA9IHNpZ24oeCk7XG4gIHZhciBhLCByZXN1bHQ7XG4gIGlmICgkYWJzIDwgTUlOMzIpIHJldHVybiAkc2lnbiAqIHJvdW5kVGllc1RvRXZlbigkYWJzIC8gTUlOMzIgLyBFUFNJTE9OMzIpICogTUlOMzIgKiBFUFNJTE9OMzI7XG4gIGEgPSAoMSArIEVQU0lMT04zMiAvIEVQU0lMT04pICogJGFicztcbiAgcmVzdWx0ID0gYSAtIChhIC0gJGFicyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIGlmIChyZXN1bHQgPiBNQVgzMiB8fCByZXN1bHQgIT0gcmVzdWx0KSByZXR1cm4gJHNpZ24gKiBJbmZpbml0eTtcbiAgcmV0dXJuICRzaWduICogcmVzdWx0O1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLWZyb3VuZCcpO1xuXG4vLyBgTWF0aC5mcm91bmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmZyb3VuZFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHsgZnJvdW5kOiBmcm91bmQgfSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtaHlwb3QgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkaHlwb3QgPSBNYXRoLmh5cG90O1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG5cbi8vIENocm9tZSA3NyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTk1NDZcbnZhciBCVUdHWSA9ICEhJGh5cG90ICYmICRoeXBvdChJbmZpbml0eSwgTmFOKSAhPT0gSW5maW5pdHk7XG5cbi8vIGBNYXRoLmh5cG90YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5oeXBvdFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEJVR0dZIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgaHlwb3Q6IGZ1bmN0aW9uIGh5cG90KHZhbHVlMSwgdmFsdWUyKSB7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbGFyZyA9IDA7XG4gICAgdmFyIGFyZywgZGl2O1xuICAgIHdoaWxlIChpIDwgYUxlbikge1xuICAgICAgYXJnID0gYWJzKGFyZ3VtZW50c1tpKytdKTtcbiAgICAgIGlmIChsYXJnIDwgYXJnKSB7XG4gICAgICAgIGRpdiA9IGxhcmcgLyBhcmc7XG4gICAgICAgIHN1bSA9IHN1bSAqIGRpdiAqIGRpdiArIDE7XG4gICAgICAgIGxhcmcgPSBhcmc7XG4gICAgICB9IGVsc2UgaWYgKGFyZyA+IDApIHtcbiAgICAgICAgZGl2ID0gYXJnIC8gbGFyZztcbiAgICAgICAgc3VtICs9IGRpdiAqIGRpdjtcbiAgICAgIH0gZWxzZSBzdW0gKz0gYXJnO1xuICAgIH1cbiAgICByZXR1cm4gbGFyZyA9PT0gSW5maW5pdHkgPyBJbmZpbml0eSA6IGxhcmcgKiBzcXJ0KHN1bSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtaW11bCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRpbXVsID0gTWF0aC5pbXVsO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJGltdWwoMHhGRkZGRkZGRiwgNSkgIT0gLTUgfHwgJGltdWwubGVuZ3RoICE9IDI7XG59KTtcblxuLy8gYE1hdGguaW11bGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguaW11bFxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBpbXVsOiBmdW5jdGlvbiBpbXVsKHgsIHkpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhGRkZGO1xuICAgIHZhciB4biA9ICt4O1xuICAgIHZhciB5biA9ICt5O1xuICAgIHZhciB4bCA9IFVJTlQxNiAmIHhuO1xuICAgIHZhciB5bCA9IFVJTlQxNiAmIHluO1xuICAgIHJldHVybiAwIHwgeGwgKiB5bCArICgoVUlOVDE2ICYgeG4gPj4+IDE2KSAqIHlsICsgeGwgKiAoVUlOVDE2ICYgeW4gPj4+IDE2KSA8PCAxNiA+Pj4gMCk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMT0cxMEUgPSBNYXRoLkxPRzEwRTtcblxuLy8gYE1hdGgubG9nMTBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmxvZzEwXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBsb2cxMDogZnVuY3Rpb24gbG9nMTAoeCkge1xuICAgIHJldHVybiBsb2coeCkgKiBMT0cxMEU7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbG9nMXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1sb2cxcCcpO1xuXG4vLyBgTWF0aC5sb2cxcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgubG9nMXBcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7IGxvZzFwOiBsb2cxcCB9KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgTE4yID0gTWF0aC5MTjI7XG5cbi8vIGBNYXRoLmxvZzJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmxvZzJcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGxvZzI6IGZ1bmN0aW9uIGxvZzIoeCkge1xuICAgIHJldHVybiBsb2coeCkgLyBMTjI7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXNpZ24nKTtcblxuLy8gYE1hdGguc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguc2lnblxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2lnbjogc2lnblxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtZXhwbTEnKTtcblxudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIGV4cCA9IE1hdGguZXhwO1xudmFyIEUgPSBNYXRoLkU7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXNpbmggLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE1hdGguc2luaCgtMmUtMTcpICE9IC0yZS0xNztcbn0pO1xuXG4vLyBgTWF0aC5zaW5oYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5zaW5oXG4vLyBWOCBuZWFyIENocm9taXVtIDM4IGhhcyBhIHByb2JsZW0gd2l0aCB2ZXJ5IHNtYWxsIG51bWJlcnNcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBzaW5oOiBmdW5jdGlvbiBzaW5oKHgpIHtcbiAgICByZXR1cm4gYWJzKHggPSAreCkgPCAxID8gKGV4cG0xKHgpIC0gZXhwbTEoLXgpKSAvIDIgOiAoZXhwKHggLSAxKSAtIGV4cCgteCAtIDEpKSAqIChFIC8gMik7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1leHBtMScpO1xuXG52YXIgZXhwID0gTWF0aC5leHA7XG5cbi8vIGBNYXRoLnRhbmhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnRhbmhcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHRhbmg6IGZ1bmN0aW9uIHRhbmgoeCkge1xuICAgIHZhciBhID0gZXhwbTEoeCA9ICt4KTtcbiAgICB2YXIgYiA9IGV4cG0xKC14KTtcbiAgICByZXR1cm4gYSA9PSBJbmZpbml0eSA/IDEgOiBiID09IEluZmluaXR5ID8gLTEgOiAoYSAtIGIpIC8gKGV4cCh4KSArIGV4cCgteCkpO1xuICB9XG59KTtcbiIsInZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xuXG4vLyBNYXRoW0BAdG9TdHJpbmdUYWddIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgtQEB0b3N0cmluZ3RhZ1xuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgdHJ1bmM6IGZ1bmN0aW9uIHRydW5jKGl0KSB7XG4gICAgcmV0dXJuIChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbiAgfVxufSk7XG4iLCJ2YXIgdmFsdWVPZiA9IDEuMC52YWx1ZU9mO1xuXG4vLyBgdGhpc051bWJlclZhbHVlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdGhpc251bWJlcnZhbHVlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWVPZi5jYWxsKHZhbHVlKTtcbn07XG4iLCIvLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xubW9kdWxlLmV4cG9ydHMgPSAnXFx1MDAwOVxcdTAwMEFcXHUwMDBCXFx1MDAwQ1xcdTAwMERcXHUwMDIwXFx1MDBBMFxcdTE2ODBcXHUyMDAwXFx1MjAwMVxcdTIwMDInICtcbiAgJ1xcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1MjAyOFxcdTIwMjlcXHVGRUZGJztcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciB3aGl0ZXNwYWNlID0gJ1snICsgd2hpdGVzcGFjZXMgKyAnXSc7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ14nICsgd2hpdGVzcGFjZSArIHdoaXRlc3BhY2UgKyAnKicpO1xudmFyIHJ0cmltID0gUmVnRXhwKHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyokJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbSwgdHJpbVN0YXJ0LCB0cmltRW5kLCB0cmltTGVmdCwgdHJpbVJpZ2h0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzKSB7XG4gICAgdmFyIHN0cmluZyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gICAgaWYgKFRZUEUgJiAyKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShydHJpbSwgJycpO1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltTGVmdCwgdHJpbVN0YXJ0IH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltZW5kXG4gIGVuZDogY3JlYXRlTWV0aG9kKDIpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS50cmltYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiAgdHJpbTogY3JlYXRlTWV0aG9kKDMpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgdGhpc051bWJlclZhbHVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RoaXMtbnVtYmVyLXZhbHVlJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG5cbnZhciBOVU1CRVIgPSAnTnVtYmVyJztcbnZhciBOYXRpdmVOdW1iZXIgPSBnbG9iYWxbTlVNQkVSXTtcbnZhciBOdW1iZXJQcm90b3R5cGUgPSBOYXRpdmVOdW1iZXIucHJvdG90eXBlO1xuXG4vLyBgVG9OdW1lcmljYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9udW1lcmljXG52YXIgdG9OdW1lcmljID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcmltVmFsdWUgPSB0b1ByaW1pdGl2ZSh2YWx1ZSwgJ251bWJlcicpO1xuICByZXR1cm4gdHlwZW9mIHByaW1WYWx1ZSA9PT0gJ2JpZ2ludCcgPyBwcmltVmFsdWUgOiB0b051bWJlcihwcmltVmFsdWUpO1xufTtcblxuLy8gYFRvTnVtYmVyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9udW1iZXJcbnZhciB0b051bWJlciA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ251bWJlcicpO1xuICB2YXIgZmlyc3QsIHRoaXJkLCByYWRpeCwgbWF4Q29kZSwgZGlnaXRzLCBsZW5ndGgsIGluZGV4LCBjb2RlO1xuICBpZiAoaXNTeW1ib2woaXQpKSB0aHJvdyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgbnVtYmVyJyk7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gdHJpbShpdCk7XG4gICAgZmlyc3QgPSBpdC5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChmaXJzdCA9PT0gNDMgfHwgZmlyc3QgPT09IDQ1KSB7XG4gICAgICB0aGlyZCA9IGl0LmNoYXJDb2RlQXQoMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChpdC5jaGFyQ29kZUF0KDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBkaWdpdHMgPSBpdC5zbGljZSgyKTtcbiAgICAgIGxlbmd0aCA9IGRpZ2l0cy5sZW5ndGg7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgLy8gcGFyc2VJbnQgcGFyc2VzIGEgc3RyaW5nIHRvIGEgZmlyc3QgdW5hdmFpbGFibGUgc3ltYm9sXG4gICAgICAgIC8vIGJ1dCBUb051bWJlciBzaG91bGQgcmV0dXJuIE5hTiBpZiBhIHN0cmluZyBjb250YWlucyB1bmF2YWlsYWJsZSBzeW1ib2xzXG4gICAgICAgIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IG1heENvZGUpIHJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbi8vIGBOdW1iZXJgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci1jb25zdHJ1Y3RvclxuaWYgKGlzRm9yY2VkKE5VTUJFUiwgIU5hdGl2ZU51bWJlcignIDBvMScpIHx8ICFOYXRpdmVOdW1iZXIoJzBiMScpIHx8IE5hdGl2ZU51bWJlcignKzB4MScpKSkge1xuICB2YXIgTnVtYmVyV3JhcHBlciA9IGZ1bmN0aW9uIE51bWJlcih2YWx1ZSkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDEgPyAwIDogTmF0aXZlTnVtYmVyKHRvTnVtZXJpYyh2YWx1ZSkpO1xuICAgIHZhciBkdW1teSA9IHRoaXM7XG4gICAgLy8gY2hlY2sgb24gMS4uY29uc3RydWN0b3IoZm9vKSBjYXNlXG4gICAgcmV0dXJuIGR1bW15IGluc3RhbmNlb2YgTnVtYmVyV3JhcHBlciAmJiBmYWlscyhmdW5jdGlvbiAoKSB7IHRoaXNOdW1iZXJWYWx1ZShkdW1teSk7IH0pXG4gICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKE9iamVjdChuKSwgZHVtbXksIE51bWJlcldyYXBwZXIpIDogbjtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IERFU0NSSVBUT1JTID8gZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVOdW1iZXIpIDogKFxuICAgIC8vIEVTMzpcbiAgICAnTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksJyArXG4gICAgLy8gRVMyMDE1IChpbiBjYXNlLCBpZiBtb2R1bGVzIHdpdGggRVMyMDE1IE51bWJlciBzdGF0aWNzIHJlcXVpcmVkIGJlZm9yZSk6XG4gICAgJ0VQU0lMT04sTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLHBhcnNlRmxvYXQscGFyc2VJbnQsJyArXG4gICAgLy8gRVNOZXh0XG4gICAgJ2Zyb21TdHJpbmcscmFuZ2UnXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzT3duKE5hdGl2ZU51bWJlciwga2V5ID0ga2V5c1tqXSkgJiYgIWhhc093bihOdW1iZXJXcmFwcGVyLCBrZXkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShOdW1iZXJXcmFwcGVyLCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihOYXRpdmVOdW1iZXIsIGtleSkpO1xuICAgIH1cbiAgfVxuICBOdW1iZXJXcmFwcGVyLnByb3RvdHlwZSA9IE51bWJlclByb3RvdHlwZTtcbiAgTnVtYmVyUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTnVtYmVyV3JhcHBlcjtcbiAgcmVkZWZpbmUoZ2xvYmFsLCBOVU1CRVIsIE51bWJlcldyYXBwZXIpO1xufVxuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBOdW1iZXIuRVBTSUxPTmAgY29uc3RhbnRcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmVwc2lsb25cbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgRVBTSUxPTjogTWF0aC5wb3coMiwgLTUyKVxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgZ2xvYmFsSXNGaW5pdGUgPSBnbG9iYWwuaXNGaW5pdGU7XG5cbi8vIGBOdW1iZXIuaXNGaW5pdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIuaXNmaW5pdGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1udW1iZXItaXNmaW5pdGUgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBOdW1iZXIuaXNGaW5pdGUgfHwgZnVuY3Rpb24gaXNGaW5pdGUoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBnbG9iYWxJc0Zpbml0ZShpdCk7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbnVtYmVySXNGaW5pdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbnVtYmVyLWlzLWZpbml0ZScpO1xuXG4vLyBgTnVtYmVyLmlzRmluaXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmlzZmluaXRlXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7IGlzRmluaXRlOiBudW1iZXJJc0Zpbml0ZSB9KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYElzSW50ZWdyYWxOdW1iZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2ludGVncmFsbnVtYmVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbnVtYmVyLWlzaW50ZWdlciAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlci5pc0ludGVnZXIgfHwgZnVuY3Rpb24gaXNJbnRlZ2VyKGl0KSB7XG4gIHJldHVybiAhaXNPYmplY3QoaXQpICYmIGlzRmluaXRlKGl0KSAmJiBmbG9vcihpdCkgPT09IGl0O1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzSW50ZWdyYWxOdW1iZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtaW50ZWdyYWwtbnVtYmVyJyk7XG5cbi8vIGBOdW1iZXIuaXNJbnRlZ2VyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmlzaW50ZWdlclxuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwge1xuICBpc0ludGVnZXI6IGlzSW50ZWdyYWxOdW1iZXJcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBOdW1iZXIuaXNOYU5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIuaXNuYW5cbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNOYU46IGZ1bmN0aW9uIGlzTmFOKG51bWJlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgcmV0dXJuIG51bWJlciAhPSBudW1iZXI7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ3JhbE51bWJlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1pbnRlZ3JhbC1udW1iZXInKTtcblxudmFyIGFicyA9IE1hdGguYWJzO1xuXG4vLyBgTnVtYmVyLmlzU2FmZUludGVnZXJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIuaXNzYWZlaW50ZWdlclxuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwge1xuICBpc1NhZmVJbnRlZ2VyOiBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKG51bWJlcikge1xuICAgIHJldHVybiBpc0ludGVncmFsTnVtYmVyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxRkZGRkZGRkZGRkZGRjtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYCBjb25zdGFudFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlclxuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwge1xuICBNQVhfU0FGRV9JTlRFR0VSOiAweDFGRkZGRkZGRkZGRkZGXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJgIGNvbnN0YW50XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5taW5fc2FmZV9pbnRlZ2VyXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7XG4gIE1JTl9TQUZFX0lOVEVHRVI6IC0weDFGRkZGRkZGRkZGRkZGXG59KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB0cmltID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltJykudHJpbTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgJHBhcnNlRmxvYXQgPSBnbG9iYWwucGFyc2VGbG9hdDtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIElURVJBVE9SID0gU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGT1JDRUQgPSAxIC8gJHBhcnNlRmxvYXQod2hpdGVzcGFjZXMgKyAnLTAnKSAhPT0gLUluZmluaXR5XG4gIC8vIE1TIEVkZ2UgMTgtIGJyb2tlbiB3aXRoIGJveGVkIHN5bWJvbHNcbiAgfHwgKElURVJBVE9SICYmICFmYWlscyhmdW5jdGlvbiAoKSB7ICRwYXJzZUZsb2F0KE9iamVjdChJVEVSQVRPUikpOyB9KSk7XG5cbi8vIGBwYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VmbG9hdC1zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEID8gZnVuY3Rpb24gcGFyc2VGbG9hdChzdHJpbmcpIHtcbiAgdmFyIHRyaW1tZWRTdHJpbmcgPSB0cmltKHRvU3RyaW5nKHN0cmluZykpO1xuICB2YXIgcmVzdWx0ID0gJHBhcnNlRmxvYXQodHJpbW1lZFN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgdHJpbW1lZFN0cmluZy5jaGFyQXQoMCkgPT0gJy0nID8gLTAgOiByZXN1bHQ7XG59IDogJHBhcnNlRmxvYXQ7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1wYXJzZS1mbG9hdCcpO1xuXG4vLyBgTnVtYmVyLnBhcnNlRmxvYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIucGFyc2VGbG9hdFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW51bWJlci1wYXJzZWZsb2F0IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBOdW1iZXIucGFyc2VGbG9hdCAhPSBwYXJzZUZsb2F0IH0sIHtcbiAgcGFyc2VGbG9hdDogcGFyc2VGbG9hdFxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyICRwYXJzZUludCA9IGdsb2JhbC5wYXJzZUludDtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIElURVJBVE9SID0gU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBoZXggPSAvXlsrLV0/MHgvaTtcbnZhciBGT1JDRUQgPSAkcGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMHgxNicpICE9PSAyMlxuICAvLyBNUyBFZGdlIDE4LSBicm9rZW4gd2l0aCBib3hlZCBzeW1ib2xzXG4gIHx8IChJVEVSQVRPUiAmJiAhZmFpbHMoZnVuY3Rpb24gKCkgeyAkcGFyc2VJbnQoT2JqZWN0KElURVJBVE9SKSk7IH0pKTtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgpIHtcbiAgdmFyIFMgPSB0cmltKHRvU3RyaW5nKHN0cmluZykpO1xuICByZXR1cm4gJHBhcnNlSW50KFMsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KFMpID8gMTYgOiAxMCkpO1xufSA6ICRwYXJzZUludDtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHBhcnNlSW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1wYXJzZS1pbnQnKTtcblxuLy8gYE51bWJlci5wYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5wYXJzZWludFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW51bWJlci1wYXJzZWludCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUsIGZvcmNlZDogTnVtYmVyLnBhcnNlSW50ICE9IHBhcnNlSW50IH0sIHtcbiAgcGFyc2VJbnQ6IHBhcnNlSW50XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRoaXNOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZScpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcmVwZWF0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIG5hdGl2ZVRvRml4ZWQgPSAxLjAudG9GaXhlZDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbnZhciBwb3cgPSBmdW5jdGlvbiAoeCwgbiwgYWNjKSB7XG4gIHJldHVybiBuID09PSAwID8gYWNjIDogbiAlIDIgPT09IDEgPyBwb3coeCwgbiAtIDEsIGFjYyAqIHgpIDogcG93KHggKiB4LCBuIC8gMiwgYWNjKTtcbn07XG5cbnZhciBsb2cgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbiA9IDA7XG4gIHZhciB4MiA9IHg7XG4gIHdoaWxlICh4MiA+PSA0MDk2KSB7XG4gICAgbiArPSAxMjtcbiAgICB4MiAvPSA0MDk2O1xuICB9XG4gIHdoaWxlICh4MiA+PSAyKSB7XG4gICAgbiArPSAxO1xuICAgIHgyIC89IDI7XG4gIH0gcmV0dXJuIG47XG59O1xuXG52YXIgbXVsdGlwbHkgPSBmdW5jdGlvbiAoZGF0YSwgbiwgYykge1xuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGMyID0gYztcbiAgd2hpbGUgKCsraW5kZXggPCA2KSB7XG4gICAgYzIgKz0gbiAqIGRhdGFbaW5kZXhdO1xuICAgIGRhdGFbaW5kZXhdID0gYzIgJSAxZTc7XG4gICAgYzIgPSBmbG9vcihjMiAvIDFlNyk7XG4gIH1cbn07XG5cbnZhciBkaXZpZGUgPSBmdW5jdGlvbiAoZGF0YSwgbikge1xuICB2YXIgaW5kZXggPSA2O1xuICB2YXIgYyA9IDA7XG4gIHdoaWxlICgtLWluZGV4ID49IDApIHtcbiAgICBjICs9IGRhdGFbaW5kZXhdO1xuICAgIGRhdGFbaW5kZXhdID0gZmxvb3IoYyAvIG4pO1xuICAgIGMgPSAoYyAlIG4pICogMWU3O1xuICB9XG59O1xuXG52YXIgZGF0YVRvU3RyaW5nID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdmFyIGluZGV4ID0gNjtcbiAgdmFyIHMgPSAnJztcbiAgd2hpbGUgKC0taW5kZXggPj0gMCkge1xuICAgIGlmIChzICE9PSAnJyB8fCBpbmRleCA9PT0gMCB8fCBkYXRhW2luZGV4XSAhPT0gMCkge1xuICAgICAgdmFyIHQgPSBTdHJpbmcoZGF0YVtpbmRleF0pO1xuICAgICAgcyA9IHMgPT09ICcnID8gdCA6IHMgKyByZXBlYXQuY2FsbCgnMCcsIDcgLSB0Lmxlbmd0aCkgKyB0O1xuICAgIH1cbiAgfSByZXR1cm4gcztcbn07XG5cbnZhciBGT1JDRUQgPSBuYXRpdmVUb0ZpeGVkICYmIChcbiAgMC4wMDAwOC50b0ZpeGVkKDMpICE9PSAnMC4wMDAnIHx8XG4gIDAuOS50b0ZpeGVkKDApICE9PSAnMScgfHxcbiAgMS4yNTUudG9GaXhlZCgyKSAhPT0gJzEuMjUnIHx8XG4gIDEwMDAwMDAwMDAwMDAwMDAxMjguMC50b0ZpeGVkKDApICE9PSAnMTAwMDAwMDAwMDAwMDAwMDEyOCdcbikgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgbmF0aXZlVG9GaXhlZC5jYWxsKHt9KTtcbn0pO1xuXG4vLyBgTnVtYmVyLnByb3RvdHlwZS50b0ZpeGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLnByb3RvdHlwZS50b2ZpeGVkXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cykge1xuICAgIHZhciBudW1iZXIgPSB0aGlzTnVtYmVyVmFsdWUodGhpcyk7XG4gICAgdmFyIGZyYWN0RGlnaXRzID0gdG9JbnRlZ2VyT3JJbmZpbml0eShmcmFjdGlvbkRpZ2l0cyk7XG4gICAgdmFyIGRhdGEgPSBbMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgdmFyIHNpZ24gPSAnJztcbiAgICB2YXIgcmVzdWx0ID0gJzAnO1xuICAgIHZhciBlLCB6LCBqLCBrO1xuXG4gICAgaWYgKGZyYWN0RGlnaXRzIDwgMCB8fCBmcmFjdERpZ2l0cyA+IDIwKSB0aHJvdyBSYW5nZUVycm9yKCdJbmNvcnJlY3QgZnJhY3Rpb24gZGlnaXRzJyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAobnVtYmVyICE9IG51bWJlcikgcmV0dXJuICdOYU4nO1xuICAgIGlmIChudW1iZXIgPD0gLTFlMjEgfHwgbnVtYmVyID49IDFlMjEpIHJldHVybiBTdHJpbmcobnVtYmVyKTtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgc2lnbiA9ICctJztcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyhudW1iZXIgKiBwb3coMiwgNjksIDEpKSAtIDY5O1xuICAgICAgeiA9IGUgPCAwID8gbnVtYmVyICogcG93KDIsIC1lLCAxKSA6IG51bWJlciAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoZGF0YSwgMCwgeik7XG4gICAgICAgIGogPSBmcmFjdERpZ2l0cztcbiAgICAgICAgd2hpbGUgKGogPj0gNykge1xuICAgICAgICAgIG11bHRpcGx5KGRhdGEsIDFlNywgMCk7XG4gICAgICAgICAgaiAtPSA3O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIHBvdygxMCwgaiwgMSksIDApO1xuICAgICAgICBqID0gZSAtIDE7XG4gICAgICAgIHdoaWxlIChqID49IDIzKSB7XG4gICAgICAgICAgZGl2aWRlKGRhdGEsIDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKGRhdGEsIDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIDEsIDEpO1xuICAgICAgICBkaXZpZGUoZGF0YSwgMik7XG4gICAgICAgIHJlc3VsdCA9IGRhdGFUb1N0cmluZyhkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIDAsIHopO1xuICAgICAgICBtdWx0aXBseShkYXRhLCAxIDw8IC1lLCAwKTtcbiAgICAgICAgcmVzdWx0ID0gZGF0YVRvU3RyaW5nKGRhdGEpICsgcmVwZWF0LmNhbGwoJzAnLCBmcmFjdERpZ2l0cyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmcmFjdERpZ2l0cyA+IDApIHtcbiAgICAgIGsgPSByZXN1bHQubGVuZ3RoO1xuICAgICAgcmVzdWx0ID0gc2lnbiArIChrIDw9IGZyYWN0RGlnaXRzXG4gICAgICAgID8gJzAuJyArIHJlcGVhdC5jYWxsKCcwJywgZnJhY3REaWdpdHMgLSBrKSArIHJlc3VsdFxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBrIC0gZnJhY3REaWdpdHMpICsgJy4nICsgcmVzdWx0LnNsaWNlKGsgLSBmcmFjdERpZ2l0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBzaWduICsgcmVzdWx0O1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHRoaXNOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZScpO1xuXG52YXIgbmF0aXZlVG9QcmVjaXNpb24gPSAxLjAudG9QcmVjaXNpb247XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFNy1cbiAgcmV0dXJuIG5hdGl2ZVRvUHJlY2lzaW9uLmNhbGwoMSwgdW5kZWZpbmVkKSAhPT0gJzEnO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgbmF0aXZlVG9QcmVjaXNpb24uY2FsbCh7fSk7XG59KTtcblxuLy8gYE51bWJlci5wcm90b3R5cGUudG9QcmVjaXNpb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIucHJvdG90eXBlLnRvcHJlY2lzaW9uXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgdG9QcmVjaXNpb246IGZ1bmN0aW9uIHRvUHJlY2lzaW9uKHByZWNpc2lvbikge1xuICAgIHJldHVybiBwcmVjaXNpb24gPT09IHVuZGVmaW5lZFxuICAgICAgPyBuYXRpdmVUb1ByZWNpc2lvbi5jYWxsKHRoaXNOdW1iZXJWYWx1ZSh0aGlzKSlcbiAgICAgIDogbmF0aXZlVG9QcmVjaXNpb24uY2FsbCh0aGlzTnVtYmVyVmFsdWUodGhpcyksIHByZWNpc2lvbik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gc2FmZVxudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9IDcgfHwgb2JqZWN0S2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gYWxwaGFiZXQ7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mO1xuICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IEluZGV4ZWRPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9scyA/IG9iamVjdEtleXMoUykuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG5cbi8vIGBPYmplY3QuYXNzaWduYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IE9iamVjdC5hc3NpZ24gIT09IGFzc2lnbiB9LCB7XG4gIGFzc2lnbjogYXNzaWduXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgY3JlYXRlOiBjcmVhdGVcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIFdFQktJVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtd2Via2l0LXZlcnNpb24nKTtcblxuLy8gRm9yY2VkIHJlcGxhY2VtZW50IG9iamVjdCBwcm90b3R5cGUgYWNjZXNzb3JzIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gSVNfUFVSRSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBUaGlzIGZlYXR1cmUgZGV0ZWN0aW9uIGNyYXNoZXMgb2xkIFdlYktpdFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjMyXG4gIGlmIChXRUJLSVQgJiYgV0VCS0lUIDwgNTM1KSByZXR1cm47XG4gIHZhciBrZXkgPSBNYXRoLnJhbmRvbSgpO1xuICAvLyBJbiBGRiB0aHJvd3Mgb25seSBkZWZpbmUgbWV0aG9kc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWYsIG5vLXVzZWxlc3MtY2FsbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCwga2V5LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuICBkZWxldGUgZ2xvYmFsW2tleV07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRk9SQ0VEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm90b3R5cGUtYWNjZXNzb3JzLWZvcmNlZCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gICAgX19kZWZpbmVHZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVHZXR0ZXJfXyhQLCBnZXR0ZXIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYodG9PYmplY3QodGhpcyksIFAsIHsgZ2V0OiBhQ2FsbGFibGUoZ2V0dGVyKSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhREVTQ1JJUFRPUlMsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGRlZmluZVByb3BlcnRpZXM6IGRlZmluZVByb3BlcnRpZXNcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBvYmplY3REZWZpbmVQcm9wZXJ0eU1vZGlsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFERVNDUklQVE9SUywgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZGVmaW5lUHJvcGVydHk6IG9iamVjdERlZmluZVByb3BlcnR5TW9kaWxlLmZcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBGT1JDRUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3RvdHlwZS1hY2Nlc3NvcnMtZm9yY2VkJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX19gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX19cbmlmIChERVNDUklQVE9SUykge1xuICAkKHsgdGFyZ2V0OiAnT2JqZWN0JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgICBfX2RlZmluZVNldHRlcl9fOiBmdW5jdGlvbiBfX2RlZmluZVNldHRlcl9fKFAsIHNldHRlcikge1xuICAgICAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZih0b09iamVjdCh0aGlzKSwgUCwgeyBzZXQ6IGFDYWxsYWJsZShzZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpLmY7XG5cbi8vIGBPYmplY3QueyBlbnRyaWVzLCB2YWx1ZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUT19FTlRSSUVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChpdCk7XG4gICAgdmFyIGtleXMgPSBvYmplY3RLZXlzKE8pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIHtcbiAgICAgIGtleSA9IGtleXNbaSsrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChPLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFRPX0VOVFJJRVMgPyBba2V5LCBPW2tleV1dIDogT1trZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgT2JqZWN0LmVudHJpZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5lbnRyaWVzXG4gIGVudHJpZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYE9iamVjdC52YWx1ZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC52YWx1ZXNcbiAgdmFsdWVzOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGVudHJpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXRvLWFycmF5JykuZW50cmllcztcblxuLy8gYE9iamVjdC5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmVudHJpZXNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcyhPKSB7XG4gICAgcmV0dXJuICRlbnRyaWVzKE8pO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEZSRUVaSU5HID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZyZWV6aW5nJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBvbkZyZWV6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpLm9uRnJlZXplO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWZyZWV6ZSAtLSBzYWZlXG52YXIgJGZyZWV6ZSA9IE9iamVjdC5mcmVlemU7XG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgJGZyZWV6ZSgxKTsgfSk7XG5cbi8vIGBPYmplY3QuZnJlZXplYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmZyZWV6ZVxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUywgc2hhbTogIUZSRUVaSU5HIH0sIHtcbiAgZnJlZXplOiBmdW5jdGlvbiBmcmVlemUoaXQpIHtcbiAgICByZXR1cm4gJGZyZWV6ZSAmJiBpc09iamVjdChpdCkgPyAkZnJlZXplKG9uRnJlZXplKGl0KSkgOiBpdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcblxuLy8gYE9iamVjdC5mcm9tRW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZnJvbS1lbnRyaWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZyb21FbnRyaWVzOiBmdW5jdGlvbiBmcm9tRW50cmllcyhpdGVyYWJsZSkge1xuICAgIHZhciBvYmogPSB7fTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAoaywgdikge1xuICAgICAgY3JlYXRlUHJvcGVydHkob2JqLCBrLCB2KTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUgfSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKDEpOyB9KTtcbnZhciBGT1JDRUQgPSAhREVTQ1JJUFRPUlMgfHwgRkFJTFNfT05fUFJJTUlUSVZFUztcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSW5kZXhlZE9iamVjdChpdCksIGtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICAgIHZhciBrZXlzID0gb3duS2V5cyhPKTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIga2V5LCBkZXNjcmlwdG9yO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIGtleSA9IGtleXNbaW5kZXgrK10pO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT09IHVuZGVmaW5lZCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCcpLmY7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IHJldHVybiAhT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGdldE93blByb3BlcnR5TmFtZXM6IGdldE93blByb3BlcnR5TmFtZXNcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBuYXRpdmVHZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IG5hdGl2ZUdldFByb3RvdHlwZU9mKDEpOyB9KTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRwcm90b3R5cGVvZlxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUywgc2hhbTogIUNPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiB9LCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCkge1xuICAgIHJldHVybiBuYXRpdmVHZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxuLy8gYE9iamVjdC5oYXNPd25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYWNjZXNzaWJsZS1vYmplY3QtaGFzb3ducHJvcGVydHlcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaGFzT3duOiBoYXNPd25cbn0pO1xuIiwiLy8gYFNhbWVWYWx1ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNhbWV2YWx1ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pcyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhbWUtdmFsdWUnKTtcblxuLy8gYE9iamVjdC5pc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5pc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBpczogaXNcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyICRpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRpc0V4dGVuc2libGUoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmlzRXh0ZW5zaWJsZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5pc2V4dGVuc2libGVcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMgfSwge1xuICBpc0V4dGVuc2libGU6IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2Zyb3plbiAtLSBzYWZlXG52YXIgJGlzRnJvemVuID0gT2JqZWN0LmlzRnJvemVuO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRpc0Zyb3plbigxKTsgfSk7XG5cbi8vIGBPYmplY3QuaXNGcm96ZW5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuaXNmcm96ZW5cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMgfSwge1xuICBpc0Zyb3plbjogZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWlzc2VhbGVkIC0tIHNhZmVcbnZhciAkaXNTZWFsZWQgPSBPYmplY3QuaXNTZWFsZWQ7XG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgJGlzU2VhbGVkKDEpOyB9KTtcblxuLy8gYE9iamVjdC5pc1NlYWxlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5pc3NlYWxlZFxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGlzU2VhbGVkOiBmdW5jdGlvbiBpc1NlYWxlZChpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNTZWFsZWQgPyAkaXNTZWFsZWQoaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlS2V5cygxKTsgfSk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTIH0sIHtcbiAga2V5czogZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBGT1JDRUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3RvdHlwZS1hY2Nlc3NvcnMtZm9yY2VkJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfX2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfX1xuaWYgKERFU0NSSVBUT1JTKSB7XG4gICQoeyB0YXJnZXQ6ICdPYmplY3QnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAgIF9fbG9va3VwR2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18oUCkge1xuICAgICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICAgIHZhciBrZXkgPSB0b1Byb3BlcnR5S2V5KFApO1xuICAgICAgdmFyIGRlc2M7XG4gICAgICBkbyB7XG4gICAgICAgIGlmIChkZXNjID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIGtleSkpIHJldHVybiBkZXNjLmdldDtcbiAgICAgIH0gd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gICAgfVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRk9SQ0VEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm90b3R5cGUtYWNjZXNzb3JzLWZvcmNlZCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLl9fbG9va3VwU2V0dGVyX19gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLl9fbG9va3VwU2V0dGVyX19cbmlmIChERVNDUklQVE9SUykge1xuICAkKHsgdGFyZ2V0OiAnT2JqZWN0JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgICBfX2xvb2t1cFNldHRlcl9fOiBmdW5jdGlvbiBfX2xvb2t1cFNldHRlcl9fKFApIHtcbiAgICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgICB2YXIga2V5ID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgICAgIHZhciBkZXNjO1xuICAgICAgZG8ge1xuICAgICAgICBpZiAoZGVzYyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBrZXkpKSByZXR1cm4gZGVzYy5zZXQ7XG4gICAgICB9IHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpO1xuICAgIH1cbiAgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBvbkZyZWV6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpLm9uRnJlZXplO1xudmFyIEZSRUVaSU5HID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZyZWV6aW5nJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1wcmV2ZW50ZXh0ZW5zaW9ucyAtLSBzYWZlXG52YXIgJHByZXZlbnRFeHRlbnNpb25zID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRwcmV2ZW50RXh0ZW5zaW9ucygxKTsgfSk7XG5cbi8vIGBPYmplY3QucHJldmVudEV4dGVuc2lvbnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJldmVudGV4dGVuc2lvbnNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMsIHNoYW06ICFGUkVFWklORyB9LCB7XG4gIHByZXZlbnRFeHRlbnNpb25zOiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhpdCkge1xuICAgIHJldHVybiAkcHJldmVudEV4dGVuc2lvbnMgJiYgaXNPYmplY3QoaXQpID8gJHByZXZlbnRFeHRlbnNpb25zKG9uRnJlZXplKGl0KSkgOiBpdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBvbkZyZWV6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpLm9uRnJlZXplO1xudmFyIEZSRUVaSU5HID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZyZWV6aW5nJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZWFsIC0tIHNhZmVcbnZhciAkc2VhbCA9IE9iamVjdC5zZWFsO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRzZWFsKDEpOyB9KTtcblxuLy8gYE9iamVjdC5zZWFsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNlYWxcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMsIHNoYW06ICFGUkVFWklORyB9LCB7XG4gIHNlYWw6IGZ1bmN0aW9uIHNlYWwoaXQpIHtcbiAgICByZXR1cm4gJHNlYWwgJiYgaXNPYmplY3QoaXQpID8gJHNlYWwob25GcmVlemUoaXQpKSA6IGl0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2ZcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2V0UHJvdG90eXBlT2Y6IHNldFByb3RvdHlwZU9mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwidmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoIVRPX1NUUklOR19UQUdfU1VQUE9SVCkge1xuICByZWRlZmluZShPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCB0b1N0cmluZywgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1hcnJheScpLnZhbHVlcztcblxuLy8gYE9iamVjdC52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QudmFsdWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKE8pIHtcbiAgICByZXR1cm4gJHZhbHVlcyhPKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQnKTtcblxuLy8gYHBhcnNlRmxvYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wYXJzZWZsb2F0LXN0cmluZ1xuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBwYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0IH0sIHtcbiAgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXRcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1wYXJzZS1pbnQnKTtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IHBhcnNlSW50ICE9ICRwYXJzZUludCB9LCB7XG4gIHBhcnNlSW50OiAkcGFyc2VJbnRcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuUHJvbWlzZTtcbiIsInZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIHNldCA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXIgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgbG9jYXRpb24sIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXG50cnkge1xuICAvLyBEZW5vIHRocm93cyBhIFJlZmVyZW5jZUVycm9yIG9uIGBsb2NhdGlvbmAgYWNjZXNzIHdpdGhvdXQgYC0tbG9jYXRpb25gIGZsYWdcbiAgbG9jYXRpb24gPSBnbG9iYWwubG9jYXRpb247XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbnZhciBydW4gPSBmdW5jdGlvbiAoaWQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgcG9zdCA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsLnBvc3RNZXNzYWdlKFN0cmluZyhpZCksIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gc3BlYyByZXF1aXJlbWVudFxuICAgICAgKGlzQ2FsbGFibGUoZm4pID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXIgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAoSVNfTk9ERSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3cocnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICAvLyBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzYyNFxuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsICYmICFJU19JT1MpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGJpbmQocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKFxuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmXG4gICAgaXNDYWxsYWJsZShnbG9iYWwucG9zdE1lc3NhZ2UpICYmXG4gICAgIWdsb2JhbC5pbXBvcnRTY3JpcHRzICYmXG4gICAgbG9jYXRpb24gJiYgbG9jYXRpb24ucHJvdG9jb2wgIT09ICdmaWxlOicgJiZcbiAgICAhZmFpbHMocG9zdClcbiAgKSB7XG4gICAgZGVmZXIgPSBwb3N0O1xuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4oaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KHJ1bm5lcihpZCksIDApO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBjbGVhcjogY2xlYXJcbn07XG4iLCJ2YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC9pcGFkfGlwaG9uZXxpcG9kL2kudGVzdCh1c2VyQWdlbnQpICYmIGdsb2JhbC5QZWJibGUgIT09IHVuZGVmaW5lZDtcbiIsInZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX0lPU19QRUJCTEUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuLy8gTm9kZS5qcyAxMSBzaG93cyBFeHBlcmltZW50YWxXYXJuaW5nIG9uIGdldHRpbmcgYHF1ZXVlTWljcm90YXNrYFxudmFyIHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIHF1ZXVlTWljcm90YXNrID0gcXVldWVNaWNyb3Rhc2tEZXNjcmlwdG9yICYmIHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvci52YWx1ZTtcblxudmFyIGZsdXNoLCBoZWFkLCBsYXN0LCBub3RpZnksIHRvZ2dsZSwgbm9kZSwgcHJvbWlzZSwgdGhlbjtcblxuLy8gbW9kZXJuIGVuZ2luZXMgaGF2ZSBxdWV1ZU1pY3JvdGFzayBtZXRob2RcbmlmICghcXVldWVNaWNyb3Rhc2spIHtcbiAgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKElTX05PREUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgLy8gYWxzbyBleGNlcHQgV2ViT1MgV2Via2l0IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84OThcbiAgaWYgKCFJU19JT1MgJiYgIUlTX05PREUgJiYgIUlTX1dFQk9TX1dFQktJVCAmJiBNdXRhdGlvbk9ic2VydmVyICYmIGRvY3VtZW50KSB7XG4gICAgdG9nZ2xlID0gdHJ1ZTtcbiAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoIUlTX0lPU19QRUJCTEUgJiYgUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAvLyB3b3JrYXJvdW5kIG9mIFdlYktpdCB+IGlPUyBTYWZhcmkgMTAuMSBidWdcbiAgICBwcm9taXNlLmNvbnN0cnVjdG9yID0gUHJvbWlzZTtcbiAgICB0aGVuID0gcHJvbWlzZS50aGVuO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoZW4uY2FsbChwcm9taXNlLCBmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcXVldWVNaWNyb3Rhc2sgfHwgZnVuY3Rpb24gKGZuKSB7XG4gIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgaWYgKCFoZWFkKSB7XG4gICAgaGVhZCA9IHRhc2s7XG4gICAgbm90aWZ5KCk7XG4gIH0gbGFzdCA9IHRhc2s7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbnZhciBQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhQ2FsbGFibGUocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUNhbGxhYmxlKHJlamVjdCk7XG59O1xuXG4vLyBgTmV3UHJvbWlzZUNhcGFiaWxpdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1uZXdwcm9taXNlY2FwYWJpbGl0eVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgdmFyIGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZTtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBjb25zb2xlLmVycm9yKGEpIDogY29uc29sZS5lcnJvcihhLCBiKTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlcnJvcjogZmFsc2UsIHZhbHVlOiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgdmFsdWU6IGVycm9yIH07XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBOYXRpdmVQcm9taXNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1wcm9taXNlLWNvbnN0cnVjdG9yJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9taWNyb3Rhc2snKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcbnZhciBob3N0UmVwb3J0RXJyb3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycycpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfQlJPV1NFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3NlcicpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2UgJiYgTmF0aXZlUHJvbWlzZS5wcm90b3R5cGU7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yID0gTmF0aXZlUHJvbWlzZTtcbnZhciBQcm9taXNlQ29uc3RydWN0b3JQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcbnZhciBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eTtcbnZhciBESVNQQVRDSF9FVkVOVCA9ICEhKGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICYmIGdsb2JhbC5kaXNwYXRjaEV2ZW50KTtcbnZhciBOQVRJVkVfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcbnZhciBVTkhBTkRMRURfUkVKRUNUSU9OID0gJ3VuaGFuZGxlZHJlamVjdGlvbic7XG52YXIgUkVKRUNUSU9OX0hBTkRMRUQgPSAncmVqZWN0aW9uaGFuZGxlZCc7XG52YXIgUEVORElORyA9IDA7XG52YXIgRlVMRklMTEVEID0gMTtcbnZhciBSRUpFQ1RFRCA9IDI7XG52YXIgSEFORExFRCA9IDE7XG52YXIgVU5IQU5ETEVEID0gMjtcbnZhciBTVUJDTEFTU0lORyA9IGZhbHNlO1xudmFyIEludGVybmFsLCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgUHJvbWlzZVdyYXBwZXIsIG5hdGl2ZVRoZW47XG5cbnZhciBGT1JDRUQgPSBpc0ZvcmNlZChQUk9NSVNFLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSA9IGluc3BlY3RTb3VyY2UoUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgdmFyIEdMT0JBTF9DT1JFX0pTX1BST01JU0UgPSBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSAhPT0gU3RyaW5nKFByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gIC8vIFdlIG5lZWQgUHJvbWlzZSNmaW5hbGx5IGluIHRoZSBwdXJlIHZlcnNpb24gZm9yIHByZXZlbnRpbmcgcHJvdG90eXBlIHBvbGx1dGlvblxuICBpZiAoSVNfUFVSRSAmJiAhUHJvbWlzZUNvbnN0cnVjdG9yUHJvdG90eXBlWydmaW5hbGx5J10pIHJldHVybiB0cnVlO1xuICAvLyBXZSBjYW4ndCB1c2UgQEBzcGVjaWVzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoVjhfVkVSU0lPTiA+PSA1MSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UpKSByZXR1cm4gZmFsc2U7XG4gIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gIHZhciBwcm9taXNlID0gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKDEpOyB9KTtcbiAgdmFyIEZha2VQcm9taXNlID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgfTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gcHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9O1xuICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICBTVUJDTEFTU0lORyA9IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gIGlmICghU1VCQ0xBU1NJTkcpIHJldHVybiB0cnVlO1xuICAvLyBVbmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gIHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBJU19CUk9XU0VSICYmICFOQVRJVkVfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbnZhciBJTkNPUlJFQ1RfSVRFUkFUSU9OID0gRk9SQ0VEIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIFByb21pc2VDb25zdHJ1Y3Rvci5hbGwoaXRlcmFibGUpWydjYXRjaCddKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgaXNDYWxsYWJsZSh0aGVuID0gaXQudGhlbikgPyB0aGVuIDogZmFsc2U7XG59O1xuXG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHN0YXRlLCBpc1JlamVjdCkge1xuICBpZiAoc3RhdGUubm90aWZpZWQpIHJldHVybjtcbiAgc3RhdGUubm90aWZpZWQgPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBzdGF0ZS5yZWFjdGlvbnM7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdmFyIG9rID0gc3RhdGUuc3RhdGUgPT0gRlVMRklMTEVEO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgLy8gdmFyaWFibGUgbGVuZ3RoIC0gY2FuJ3QgdXNlIGZvckVhY2hcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IGNoYWluW2luZGV4KytdO1xuICAgICAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgICAgIHZhciByZXNvbHZlID0gcmVhY3Rpb24ucmVzb2x2ZTtcbiAgICAgIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gICAgICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICAgICAgdmFyIHJlc3VsdCwgdGhlbiwgZXhpdGVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucmVqZWN0aW9uID09PSBVTkhBTkRMRUQpIG9uSGFuZGxlVW5oYW5kbGVkKHN0YXRlKTtcbiAgICAgICAgICAgIHN0YXRlLnJlamVjdGlvbiA9IEhBTkRMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIGNhbiB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChkb21haW4gJiYgIWV4aXRlZCkgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3RhdGUucmVhY3Rpb25zID0gW107XG4gICAgc3RhdGUubm90aWZpZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXN0YXRlLnJlamVjdGlvbikgb25VbmhhbmRsZWQoc3RhdGUpO1xuICB9KTtcbn07XG5cbnZhciBkaXNwYXRjaEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHByb21pc2UsIHJlYXNvbikge1xuICB2YXIgZXZlbnQsIGhhbmRsZXI7XG4gIGlmIChESVNQQVRDSF9FVkVOVCkge1xuICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZlbnQucHJvbWlzZSA9IHByb21pc2U7XG4gICAgZXZlbnQucmVhc29uID0gcmVhc29uO1xuICAgIGV2ZW50LmluaXRFdmVudChuYW1lLCBmYWxzZSwgdHJ1ZSk7XG4gICAgZ2xvYmFsLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9IGVsc2UgZXZlbnQgPSB7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogcmVhc29uIH07XG4gIGlmICghTkFUSVZFX1JFSkVDVElPTl9FVkVOVCAmJiAoaGFuZGxlciA9IGdsb2JhbFsnb24nICsgbmFtZV0pKSBoYW5kbGVyKGV2ZW50KTtcbiAgZWxzZSBpZiAobmFtZSA9PT0gVU5IQU5ETEVEX1JFSkVDVElPTikgaG9zdFJlcG9ydEVycm9ycygnVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgcmVhc29uKTtcbn07XG5cbnZhciBvblVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdmFyIElTX1VOSEFORExFRCA9IGlzVW5oYW5kbGVkKHN0YXRlKTtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChJU19VTkhBTkRMRUQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChVTkhBTkRMRURfUkVKRUNUSU9OLCBwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBzdGF0ZS5yZWplY3Rpb24gPSBJU19OT0RFIHx8IGlzVW5oYW5kbGVkKHN0YXRlKSA/IFVOSEFORExFRCA6IEhBTkRMRUQ7XG4gICAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgfVxuICB9KTtcbn07XG5cbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUucmVqZWN0aW9uICE9PSBIQU5ETEVEICYmICFzdGF0ZS5wYXJlbnQ7XG59O1xuXG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIGlmIChJU19OT0RFKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChSRUpFQ1RJT05fSEFORExFRCwgcHJvbWlzZSwgc3RhdGUudmFsdWUpO1xuICB9KTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gKGZuLCBzdGF0ZSwgdW53cmFwKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmbihzdGF0ZSwgdmFsdWUsIHVud3JhcCk7XG4gIH07XG59O1xuXG52YXIgaW50ZXJuYWxSZWplY3QgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICBzdGF0ZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICBub3RpZnkoc3RhdGUsIHRydWUpO1xufTtcblxudmFyIGludGVybmFsUmVzb2x2ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHRyeSB7XG4gICAgaWYgKHN0YXRlLmZhY2FkZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIHZhciB0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSk7XG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBkb25lOiBmYWxzZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZXNvbHZlLCB3cmFwcGVyLCBzdGF0ZSksXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVqZWN0LCB3cmFwcGVyLCBzdGF0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGludGVybmFsUmVqZWN0KHdyYXBwZXIsIGVycm9yLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgc3RhdGUuc3RhdGUgPSBGVUxGSUxMRUQ7XG4gICAgICBub3RpZnkoc3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW50ZXJuYWxSZWplY3QoeyBkb25lOiBmYWxzZSB9LCBlcnJvciwgc3RhdGUpO1xuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKEZPUkNFRCkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICBQcm9taXNlQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCBQcm9taXNlQ29uc3RydWN0b3IsIFBST01JU0UpO1xuICAgIGFDYWxsYWJsZShleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpLCBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpbnRlcm5hbFJlamVjdChzdGF0ZSwgZXJyb3IpO1xuICAgIH1cbiAgfTtcbiAgUHJvbWlzZUNvbnN0cnVjdG9yUHJvdG90eXBlID0gUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBQUk9NSVNFLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBub3RpZmllZDogZmFsc2UsXG4gICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHJlamVjdGlvbjogZmFsc2UsXG4gICAgICBzdGF0ZTogUEVORElORyxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgfTtcbiAgSW50ZXJuYWwucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoUHJvbWlzZUNvbnN0cnVjdG9yUHJvdG90eXBlLCB7XG4gICAgLy8gYFByb21pc2UucHJvdG90eXBlLnRoZW5gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUudGhlblxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIFByb21pc2VDb25zdHJ1Y3RvcikpO1xuICAgICAgcmVhY3Rpb24ub2sgPSBpc0NhbGxhYmxlKG9uRnVsZmlsbGVkKSA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSBpc0NhbGxhYmxlKG9uUmVqZWN0ZWQpICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVhY3Rpb25zLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHN0YXRlLnN0YXRlICE9IFBFTkRJTkcpIG5vdGlmeShzdGF0ZSwgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hcbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2UpICYmIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICBuYXRpdmVUaGVuID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZS50aGVuO1xuXG4gICAgaWYgKCFTVUJDTEFTU0lORykge1xuICAgICAgLy8gbWFrZSBgUHJvbWlzZSN0aGVuYCByZXR1cm4gYSBwb2x5ZmlsbGVkIGBQcm9taXNlYCBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgICAgcmVkZWZpbmUoTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIG5hdGl2ZVRoZW4uY2FsbCh0aGF0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NDBcbiAgICAgIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xuXG4gICAgICAvLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNjYXRjaGAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG4gICAgICByZWRlZmluZShOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnY2F0Y2gnLCBQcm9taXNlQ29uc3RydWN0b3JQcm90b3R5cGVbJ2NhdGNoJ10sIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8vIG1ha2UgYC5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZWAgd29yayBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgIHRyeSB7XG4gICAgICBkZWxldGUgTmF0aXZlUHJvbWlzZVByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbiAgICAvLyBtYWtlIGBpbnN0YW5jZW9mIFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIHNldFByb3RvdHlwZU9mKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsIFByb21pc2VDb25zdHJ1Y3RvclByb3RvdHlwZSk7XG4gICAgfVxuICB9XG59XG5cbiQoeyBnbG9iYWw6IHRydWUsIHdyYXA6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuXG5Qcm9taXNlV3JhcHBlciA9IGdldEJ1aWx0SW4oUFJPTUlTRSk7XG5cbi8vIHN0YXRpY3NcbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gYFByb21pc2UucmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlamVjdFxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICBjYXBhYmlsaXR5LnJlamVjdC5jYWxsKHVuZGVmaW5lZCwgcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRUQgfSwge1xuICAvLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlc29sdmVcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKElTX1BVUkUgJiYgdGhpcyA9PT0gUHJvbWlzZVdyYXBwZXIgPyBQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIC8vIGBQcm9taXNlLmFsbGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICAkcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIGBQcm9taXNlLnJhY2VgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmFjZVxuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgICRwcm9taXNlUmVzb2x2ZS5jYWxsKEMsIHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFByb21pc2UuYWxsU2V0dGxlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYWxsc2V0dGxlZFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlIH0sIHtcbiAgYWxsU2V0dGxlZDogZnVuY3Rpb24gYWxsU2V0dGxlZChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBwcm9taXNlUmVzb2x2ZS5jYWxsKEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdmdWxmaWxsZWQnLCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAncmVqZWN0ZWQnLCByZWFzb246IGVycm9yIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxudmFyIFBST01JU0VfQU5ZX0VSUk9SID0gJ05vIG9uZSBwcm9taXNlIHJlc29sdmVkJztcblxuLy8gYFByb21pc2UuYW55YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbnlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGFueTogZnVuY3Rpb24gYW55KGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIHZhciBhbHJlYWR5UmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlSZWplY3RlZCA9IGZhbHNlO1xuICAgICAgICBlcnJvcnMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5UmVqZWN0ZWQgfHwgYWxyZWFkeVJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGVycm9yc1tpbmRleF0gPSBlcnJvcjtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZWplY3QobmV3IChnZXRCdWlsdEluKCdBZ2dyZWdhdGVFcnJvcicpKShlcnJvcnMsIFBST01JU0VfQU5ZX0VSUk9SKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZWplY3QobmV3IChnZXRCdWlsdEluKCdBZ2dyZWdhdGVFcnJvcicpKShlcnJvcnMsIFBST01JU0VfQU5ZX0VSUk9SKSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBOYXRpdmVQcm9taXNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1wcm9taXNlLWNvbnN0cnVjdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG5cbi8vIFNhZmFyaSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDgyOVxudmFyIE5PTl9HRU5FUklDID0gISFOYXRpdmVQcm9taXNlICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgTmF0aXZlUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXS5jYWxsKHsgdGhlbjogZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9IH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gYFByb21pc2UucHJvdG90eXBlLmZpbmFsbHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5maW5hbGx5XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IE5PTl9HRU5FUklDIH0sIHtcbiAgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgZ2V0QnVpbHRJbignUHJvbWlzZScpKTtcbiAgICB2YXIgaXNGdW5jdGlvbiA9IGlzQ2FsbGFibGUob25GaW5hbGx5KTtcbiAgICByZXR1cm4gdGhpcy50aGVuKFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICAgIH0gOiBvbkZpbmFsbHksXG4gICAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5XG4gICAgKTtcbiAgfVxufSk7XG5cbi8vIG1ha2VzIHN1cmUgdGhhdCBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzIGBQcm9taXNlI2ZpbmFsbHlgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZSkpIHtcbiAgdmFyIG1ldGhvZCA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKS5wcm90b3R5cGVbJ2ZpbmFsbHknXTtcbiAgaWYgKE5hdGl2ZVByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gIT09IG1ldGhvZCkge1xuICAgIHJlZGVmaW5lKE5hdGl2ZVByb21pc2UucHJvdG90eXBlLCAnZmluYWxseScsIG1ldGhvZCwgeyB1bnNhZmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgbmF0aXZlQXBwbHkgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2FwcGx5Jyk7XG52YXIgZnVuY3Rpb25BcHBseSA9IEZ1bmN0aW9uLmFwcGx5O1xuXG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbnZhciBPUFRJT05BTF9BUkdVTUVOVFNfTElTVCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIG5hdGl2ZUFwcGx5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gYFJlZmxlY3QuYXBwbHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmFwcGx5XG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogT1BUSU9OQUxfQVJHVU1FTlRTX0xJU1QgfSwge1xuICBhcHBseTogZnVuY3Rpb24gYXBwbHkodGFyZ2V0LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpIHtcbiAgICBhQ2FsbGFibGUodGFyZ2V0KTtcbiAgICBhbk9iamVjdChhcmd1bWVudHNMaXN0KTtcbiAgICByZXR1cm4gbmF0aXZlQXBwbHlcbiAgICAgID8gbmF0aXZlQXBwbHkodGFyZ2V0LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpXG4gICAgICA6IGZ1bmN0aW9uQXBwbHkuY2FsbCh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdCk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIG5hdGl2ZUNvbnN0cnVjdCA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnY29uc3RydWN0Jyk7XG5cbi8vIGBSZWZsZWN0LmNvbnN0cnVjdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuY29uc3RydWN0XG4vLyBNUyBFZGdlIHN1cHBvcnRzIG9ubHkgMiBhcmd1bWVudHMgYW5kIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbi8vIEZGIE5pZ2h0bHkgc2V0cyB0aGlyZCBhcmd1bWVudCBhcyBgbmV3LnRhcmdldGAsIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYHRoaXNgIGZyb20gaXRcbnZhciBORVdfVEFSR0VUX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShuYXRpdmVDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBbXSwgRikgaW5zdGFuY2VvZiBGKTtcbn0pO1xudmFyIEFSR1NfQlVHID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgbmF0aXZlQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcbnZhciBGT1JDRUQgPSBORVdfVEFSR0VUX0JVRyB8fCBBUkdTX0JVRztcblxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCwgc2hhbTogRk9SQ0VEIH0sIHtcbiAgY29uc3RydWN0OiBmdW5jdGlvbiBjb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzIC8qICwgbmV3VGFyZ2V0ICovKSB7XG4gICAgYUNvbnN0cnVjdG9yKFRhcmdldCk7XG4gICAgYW5PYmplY3QoYXJncyk7XG4gICAgdmFyIG5ld1RhcmdldCA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gVGFyZ2V0IDogYUNvbnN0cnVjdG9yKGFyZ3VtZW50c1syXSk7XG4gICAgaWYgKEFSR1NfQlVHICYmICFORVdfVEFSR0VUX0JVRykgcmV0dXJuIG5hdGl2ZUNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYgKFRhcmdldCA9PSBuZXdUYXJnZXQpIHtcbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgb3B0aW1pemF0aW9uIGZvciAwLTQgYXJndW1lbnRzXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBUYXJnZXQoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpKCk7XG4gICAgfVxuICAgIC8vIHdpdGggYWx0ZXJlZCBuZXdUYXJnZXQsIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGNvbnN0cnVjdG9yc1xuICAgIHZhciBwcm90byA9IG5ld1RhcmdldC5wcm90b3R5cGU7XG4gICAgdmFyIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IEZ1bmN0aW9uLmFwcGx5LmNhbGwoVGFyZ2V0LCBpbnN0YW5jZSwgYXJncyk7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiBpbnN0YW5jZTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIE1TIEVkZ2UgaGFzIGJyb2tlbiBSZWZsZWN0LmRlZmluZVByb3BlcnR5IC0gdGhyb3dpbmcgaW5zdGVhZCBvZiByZXR1cm5pbmcgZmFsc2VcbnZhciBFUlJPUl9JTlNURUFEX09GX0ZBTFNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tcmVmbGVjdCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGRlZmluZVByb3BlcnR5TW9kdWxlLmYoe30sIDEsIHsgdmFsdWU6IDEgfSksIDEsIHsgdmFsdWU6IDIgfSk7XG59KTtcblxuLy8gYFJlZmxlY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXByb3BlcnR5XG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRVJST1JfSU5TVEVBRF9PRl9GQUxTRSwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZGVmaW5lUHJvcGVydHk6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHZhciBrZXkgPSB0b1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICBhbk9iamVjdChhdHRyaWJ1dGVzKTtcbiAgICB0cnkge1xuICAgICAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZih0YXJnZXQsIGtleSwgYXR0cmlidXRlcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG5cbi8vIGBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWxldGVwcm9wZXJ0eVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZGVsZXRlUHJvcGVydHk6IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlID8gZmFsc2UgOiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgfVxufSk7XG4iLCJ2YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICByZXR1cm4gZGVzY3JpcHRvciAhPT0gdW5kZWZpbmVkICYmIChoYXNPd24oZGVzY3JpcHRvciwgJ3ZhbHVlJykgfHwgaGFzT3duKGRlc2NyaXB0b3IsICd3cml0YWJsZScpKTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0RhdGFEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWRhdGEtZGVzY3JpcHRvcicpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcblxuLy8gYFJlZmxlY3QuZ2V0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRcbmZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3BlcnR5S2V5IC8qICwgcmVjZWl2ZXIgKi8pIHtcbiAgdmFyIHJlY2VpdmVyID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0YXJnZXQgOiBhcmd1bWVudHNbMl07XG4gIHZhciBkZXNjcmlwdG9yLCBwcm90b3R5cGU7XG4gIGlmIChhbk9iamVjdCh0YXJnZXQpID09PSByZWNlaXZlcikgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZih0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgaWYgKGRlc2NyaXB0b3IpIHJldHVybiBpc0RhdGFEZXNjcmlwdG9yKGRlc2NyaXB0b3IpXG4gICAgPyBkZXNjcmlwdG9yLnZhbHVlXG4gICAgOiBkZXNjcmlwdG9yLmdldCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZGVzY3JpcHRvci5nZXQuY2FsbChyZWNlaXZlcik7XG4gIGlmIChpc09iamVjdChwcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkgcmV0dXJuIGdldChwcm90b3R5cGUsIHByb3BlcnR5S2V5LCByZWNlaXZlcik7XG59XG5cbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGdldDogZ2V0XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxuLy8gYFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgb2JqZWN0R2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbi8vIGBSZWZsZWN0LmdldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRwcm90b3R5cGVvZlxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlLCBzaGFtOiAhQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSIH0sIHtcbiAgZ2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKHRhcmdldCkge1xuICAgIHJldHVybiBvYmplY3RHZXRQcm90b3R5cGVPZihhbk9iamVjdCh0YXJnZXQpKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYFJlZmxlY3QuaGFzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5oYXNcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGhhczogZnVuY3Rpb24gaGFzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICByZXR1cm4gcHJvcGVydHlLZXkgaW4gdGFyZ2V0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWlzZXh0ZW5zaWJsZSAtLSBzYWZlXG52YXIgb2JqZWN0SXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcblxuLy8gYFJlZmxlY3QuaXNFeHRlbnNpYmxlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2libGVcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGlzRXh0ZW5zaWJsZTogZnVuY3Rpb24gaXNFeHRlbnNpYmxlKHRhcmdldCkge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgcmV0dXJuIG9iamVjdElzRXh0ZW5zaWJsZSA/IG9iamVjdElzRXh0ZW5zaWJsZSh0YXJnZXQpIDogdHJ1ZTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG5cbi8vIGBSZWZsZWN0Lm93bktleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0Lm93bmtleXNcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIG93bktleXM6IG93bktleXNcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBGUkVFWklORyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mcmVlemluZycpO1xuXG4vLyBgUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9uc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnNcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSwgc2hhbTogIUZSRUVaSU5HIH0sIHtcbiAgcHJldmVudEV4dGVuc2lvbnM6IGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCkge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBvYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyA9IGdldEJ1aWx0SW4oJ09iamVjdCcsICdwcmV2ZW50RXh0ZW5zaW9ucycpO1xuICAgICAgaWYgKG9iamVjdFByZXZlbnRFeHRlbnNpb25zKSBvYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNEYXRhRGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1kYXRhLWRlc2NyaXB0b3InKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbi8vIGBSZWZsZWN0LnNldGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0XG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mKGFuT2JqZWN0KHRhcmdldCksIHByb3BlcnR5S2V5KTtcbiAgdmFyIGV4aXN0aW5nRGVzY3JpcHRvciwgcHJvdG90eXBlLCBzZXR0ZXI7XG4gIGlmICghb3duRGVzY3JpcHRvcikge1xuICAgIGlmIChpc09iamVjdChwcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90b3R5cGUsIHByb3BlcnR5S2V5LCBWLCByZWNlaXZlcik7XG4gICAgfVxuICAgIG93bkRlc2NyaXB0b3IgPSBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCk7XG4gIH1cbiAgaWYgKGlzRGF0YURlc2NyaXB0b3Iob3duRGVzY3JpcHRvcikpIHtcbiAgICBpZiAob3duRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UgfHwgIWlzT2JqZWN0KHJlY2VpdmVyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChleGlzdGluZ0Rlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yLmdldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iuc2V0IHx8IGV4aXN0aW5nRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGV4aXN0aW5nRGVzY3JpcHRvci52YWx1ZSA9IFY7XG4gICAgICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCBWKSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0dGVyID0gb3duRGVzY3JpcHRvci5zZXQ7XG4gICAgaWYgKHNldHRlciA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgc2V0dGVyLmNhbGwocmVjZWl2ZXIsIFYpO1xuICB9IHJldHVybiB0cnVlO1xufVxuXG4vLyBNUyBFZGdlIDE3LTE4IFJlZmxlY3Quc2V0IGFsbG93cyBzZXR0aW5nIHRoZSBwcm9wZXJ0eSB0byBvYmplY3Rcbi8vIHdpdGggbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGVcbnZhciBNU19FREdFX0JVRyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuICB2YXIgb2JqZWN0ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihuZXcgQ29uc3RydWN0b3IoKSwgJ2EnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIFJlZmxlY3Quc2V0KENvbnN0cnVjdG9yLnByb3RvdHlwZSwgJ2EnLCAxLCBvYmplY3QpICE9PSBmYWxzZTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogTVNfRURHRV9CVUcgfSwge1xuICBzZXQ6IHNldFxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUnKTtcbnZhciBvYmplY3RTZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBgUmVmbGVjdC5zZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJvdG90eXBlb2ZcbmlmIChvYmplY3RTZXRQcm90b3R5cGVPZikgJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgdHJ5IHtcbiAgICAgIG9iamVjdFNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG5cbiQoeyBnbG9iYWw6IHRydWUgfSwgeyBSZWZsZWN0OiB7fSB9KTtcblxuLy8gUmVmbGVjdFtAQHRvU3RyaW5nVGFnXSBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5SZWZsZWN0LCAnUmVmbGVjdCcsIHRydWUpO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuXG4vLyBgSXNSZWdFeHBgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc3JlZ2V4cFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGlzUmVnRXhwO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmICgoaXNSZWdFeHAgPSBpdFtNQVRDSF0pICE9PSB1bmRlZmluZWQgPyAhIWlzUmVnRXhwIDogY2xhc3NvZihpdCkgPT0gJ1JlZ0V4cCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlciBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCdhJywgJ3knKSAtPiAvYS95IGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxuZXhwb3J0cy5VTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUgPSAkUmVnRXhwKCdhJywgJ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ2FiY2QnKSAhPSBudWxsO1xufSk7XG5cbmV4cG9ydHMuQlJPS0VOX0NBUkVUID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2ODdcbiAgdmFyIHJlID0gJFJlZ0V4cCgnXnInLCAnZ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ3N0cicpICE9IG51bGw7XG59KTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ3MnKSAtPiAvLi9zIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9ICRSZWdFeHAoJy4nLCAncycpO1xuICByZXR1cm4gIShyZS5kb3RBbGwgJiYgcmUuZXhlYygnXFxuJykgJiYgcmUuZmxhZ3MgPT09ICdzJyk7XG59KTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcoPzxhPmIpJywgJ2cnKSAtPiAvKD88YT5iKS9nIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9ICRSZWdFeHAoJyg/PGE+YiknLCAnZycpO1xuICByZXR1cm4gcmUuZXhlYygnYicpLmdyb3Vwcy5hICE9PSAnYicgfHxcbiAgICAnYicucmVwbGFjZShyZSwgJyQ8YT5jJykgIT09ICdiYyc7XG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGdldEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKS5lbmZvcmNlO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBVTlNVUFBPUlRFRF9ET1RfQUxMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsJyk7XG52YXIgVU5TVVBQT1JURURfTkNHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cnKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xudmFyIE5hdGl2ZVJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gTmF0aXZlUmVnRXhwLnByb3RvdHlwZTtcbi8vIFRPRE86IFVzZSBvbmx5IHByb3BwZXIgUmVnRXhwSWRlbnRpZmllck5hbWVcbnZhciBJU19OQ0cgPSAvXlxcPzxbXlxcc1xcZCEjJSYqKzw9PkBeXVteXFxzISMlJiorPD0+QF5dKj4vO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcblxuLy8gXCJuZXdcIiBzaG91bGQgY3JlYXRlIGEgbmV3IG9iamVjdCwgb2xkIHdlYmtpdCBidWdcbnZhciBDT1JSRUNUX05FVyA9IG5ldyBOYXRpdmVSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWTtcblxudmFyIEJBU0VfRk9SQ0VEID0gREVTQ1JJUFRPUlMgJiZcbiAgKCFDT1JSRUNUX05FVyB8fCBVTlNVUFBPUlRFRF9ZIHx8IFVOU1VQUE9SVEVEX0RPVF9BTEwgfHwgVU5TVVBQT1JURURfTkNHIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICByZTJbTUFUQ0hdID0gZmFsc2U7XG4gICAgLy8gUmVnRXhwIGNvbnN0cnVjdG9yIGNhbiBhbHRlciBmbGFncyBhbmQgSXNSZWdFeHAgd29ya3MgY29ycmVjdCB3aXRoIEBAbWF0Y2hcbiAgICByZXR1cm4gTmF0aXZlUmVnRXhwKHJlMSkgIT0gcmUxIHx8IE5hdGl2ZVJlZ0V4cChyZTIpID09IHJlMiB8fCBOYXRpdmVSZWdFeHAocmUxLCAnaScpICE9ICcvYS9pJztcbiAgfSkpO1xuXG52YXIgaGFuZGxlRG90QWxsID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgYnJhY2tldHMgPSBmYWxzZTtcbiAgdmFyIGNocjtcbiAgZm9yICg7IGluZGV4IDw9IGxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNociA9IHN0cmluZy5jaGFyQXQoaW5kZXgpO1xuICAgIGlmIChjaHIgPT09ICdcXFxcJykge1xuICAgICAgcmVzdWx0ICs9IGNociArIHN0cmluZy5jaGFyQXQoKytpbmRleCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFicmFja2V0cyAmJiBjaHIgPT09ICcuJykge1xuICAgICAgcmVzdWx0ICs9ICdbXFxcXHNcXFxcU10nO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hyID09PSAnWycpIHtcbiAgICAgICAgYnJhY2tldHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICddJykge1xuICAgICAgICBicmFja2V0cyA9IGZhbHNlO1xuICAgICAgfSByZXN1bHQgKz0gY2hyO1xuICAgIH1cbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIGhhbmRsZU5DRyA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIG5hbWVkID0gW107XG4gIHZhciBuYW1lcyA9IHt9O1xuICB2YXIgYnJhY2tldHMgPSBmYWxzZTtcbiAgdmFyIG5jZyA9IGZhbHNlO1xuICB2YXIgZ3JvdXBpZCA9IDA7XG4gIHZhciBncm91cG5hbWUgPSAnJztcbiAgdmFyIGNocjtcbiAgZm9yICg7IGluZGV4IDw9IGxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNociA9IHN0cmluZy5jaGFyQXQoaW5kZXgpO1xuICAgIGlmIChjaHIgPT09ICdcXFxcJykge1xuICAgICAgY2hyID0gY2hyICsgc3RyaW5nLmNoYXJBdCgrK2luZGV4KTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0gJ10nKSB7XG4gICAgICBicmFja2V0cyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWJyYWNrZXRzKSBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgY2hyID09PSAnWyc6XG4gICAgICAgIGJyYWNrZXRzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNociA9PT0gJygnOlxuICAgICAgICBpZiAoSVNfTkNHLnRlc3Qoc3RyaW5nLnNsaWNlKGluZGV4ICsgMSkpKSB7XG4gICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICBuY2cgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBjaHI7XG4gICAgICAgIGdyb3VwaWQrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIGNociA9PT0gJz4nICYmIG5jZzpcbiAgICAgICAgaWYgKGdyb3VwbmFtZSA9PT0gJycgfHwgaGFzT3duKG5hbWVzLCBncm91cG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZScpO1xuICAgICAgICB9XG4gICAgICAgIG5hbWVzW2dyb3VwbmFtZV0gPSB0cnVlO1xuICAgICAgICBuYW1lZC5wdXNoKFtncm91cG5hbWUsIGdyb3VwaWRdKTtcbiAgICAgICAgbmNnID0gZmFsc2U7XG4gICAgICAgIGdyb3VwbmFtZSA9ICcnO1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKG5jZykgZ3JvdXBuYW1lICs9IGNocjtcbiAgICBlbHNlIHJlc3VsdCArPSBjaHI7XG4gIH0gcmV0dXJuIFtyZXN1bHQsIG5hbWVkXTtcbn07XG5cbi8vIGBSZWdFeHBgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC1jb25zdHJ1Y3RvclxuaWYgKGlzRm9yY2VkKCdSZWdFeHAnLCBCQVNFX0ZPUkNFRCkpIHtcbiAgdmFyIFJlZ0V4cFdyYXBwZXIgPSBmdW5jdGlvbiBSZWdFeHAocGF0dGVybiwgZmxhZ3MpIHtcbiAgICB2YXIgdGhpc0lzUmVnRXhwID0gdGhpcyBpbnN0YW5jZW9mIFJlZ0V4cFdyYXBwZXI7XG4gICAgdmFyIHBhdHRlcm5Jc1JlZ0V4cCA9IGlzUmVnRXhwKHBhdHRlcm4pO1xuICAgIHZhciBmbGFnc0FyZVVuZGVmaW5lZCA9IGZsYWdzID09PSB1bmRlZmluZWQ7XG4gICAgdmFyIGdyb3VwcyA9IFtdO1xuICAgIHZhciByYXdQYXR0ZXJuID0gcGF0dGVybjtcbiAgICB2YXIgcmF3RmxhZ3MsIGRvdEFsbCwgc3RpY2t5LCBoYW5kbGVkLCByZXN1bHQsIHN0YXRlO1xuXG4gICAgaWYgKCF0aGlzSXNSZWdFeHAgJiYgcGF0dGVybklzUmVnRXhwICYmIGZsYWdzQXJlVW5kZWZpbmVkICYmIHBhdHRlcm4uY29uc3RydWN0b3IgPT09IFJlZ0V4cFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuSXNSZWdFeHAgfHwgcGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cFdyYXBwZXIpIHtcbiAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNvdXJjZTtcbiAgICAgIGlmIChmbGFnc0FyZVVuZGVmaW5lZCkgZmxhZ3MgPSAnZmxhZ3MnIGluIHJhd1BhdHRlcm4gPyByYXdQYXR0ZXJuLmZsYWdzIDogZ2V0RmxhZ3MuY2FsbChyYXdQYXR0ZXJuKTtcbiAgICB9XG5cbiAgICBwYXR0ZXJuID0gcGF0dGVybiA9PT0gdW5kZWZpbmVkID8gJycgOiB0b1N0cmluZyhwYXR0ZXJuKTtcbiAgICBmbGFncyA9IGZsYWdzID09PSB1bmRlZmluZWQgPyAnJyA6IHRvU3RyaW5nKGZsYWdzKTtcbiAgICByYXdQYXR0ZXJuID0gcGF0dGVybjtcblxuICAgIGlmIChVTlNVUFBPUlRFRF9ET1RfQUxMICYmICdkb3RBbGwnIGluIHJlMSkge1xuICAgICAgZG90QWxsID0gISFmbGFncyAmJiBmbGFncy5pbmRleE9mKCdzJykgPiAtMTtcbiAgICAgIGlmIChkb3RBbGwpIGZsYWdzID0gZmxhZ3MucmVwbGFjZSgvcy9nLCAnJyk7XG4gICAgfVxuXG4gICAgcmF3RmxhZ3MgPSBmbGFncztcblxuICAgIGlmIChVTlNVUFBPUlRFRF9ZICYmICdzdGlja3knIGluIHJlMSkge1xuICAgICAgc3RpY2t5ID0gISFmbGFncyAmJiBmbGFncy5pbmRleE9mKCd5JykgPiAtMTtcbiAgICAgIGlmIChzdGlja3kpIGZsYWdzID0gZmxhZ3MucmVwbGFjZSgveS9nLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKFVOU1VQUE9SVEVEX05DRykge1xuICAgICAgaGFuZGxlZCA9IGhhbmRsZU5DRyhwYXR0ZXJuKTtcbiAgICAgIHBhdHRlcm4gPSBoYW5kbGVkWzBdO1xuICAgICAgZ3JvdXBzID0gaGFuZGxlZFsxXTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSBpbmhlcml0SWZSZXF1aXJlZChOYXRpdmVSZWdFeHAocGF0dGVybiwgZmxhZ3MpLCB0aGlzSXNSZWdFeHAgPyB0aGlzIDogUmVnRXhwUHJvdG90eXBlLCBSZWdFeHBXcmFwcGVyKTtcblxuICAgIGlmIChkb3RBbGwgfHwgc3RpY2t5IHx8IGdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUocmVzdWx0KTtcbiAgICAgIGlmIChkb3RBbGwpIHtcbiAgICAgICAgc3RhdGUuZG90QWxsID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUucmF3ID0gUmVnRXhwV3JhcHBlcihoYW5kbGVEb3RBbGwocGF0dGVybiksIHJhd0ZsYWdzKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGlja3kpIHN0YXRlLnN0aWNreSA9IHRydWU7XG4gICAgICBpZiAoZ3JvdXBzLmxlbmd0aCkgc3RhdGUuZ3JvdXBzID0gZ3JvdXBzO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuICE9PSByYXdQYXR0ZXJuKSB0cnkge1xuICAgICAgLy8gZmFpbHMgaW4gb2xkIGVuZ2luZXMsIGJ1dCB3ZSBoYXZlIG5vIGFsdGVybmF0aXZlcyBmb3IgdW5zdXBwb3J0ZWQgcmVnZXggc3ludGF4XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkocmVzdWx0LCAnc291cmNlJywgcmF3UGF0dGVybiA9PT0gJycgPyAnKD86KScgOiByYXdQYXR0ZXJuKTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gUmVnRXhwV3JhcHBlciB8fCBkZWZpbmVQcm9wZXJ0eShSZWdFeHBXcmFwcGVyLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTmF0aXZlUmVnRXhwW2tleV07IH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIChpdCkgeyBOYXRpdmVSZWdFeHBba2V5XSA9IGl0OyB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlUmVnRXhwKSwgaW5kZXggPSAwOyBrZXlzLmxlbmd0aCA+IGluZGV4Oykge1xuICAgIHByb3h5KGtleXNbaW5kZXgrK10pO1xuICB9XG5cbiAgUmVnRXhwUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVnRXhwV3JhcHBlcjtcbiAgUmVnRXhwV3JhcHBlci5wcm90b3R5cGUgPSBSZWdFeHBQcm90b3R5cGU7XG4gIHJlZGVmaW5lKGdsb2JhbCwgJ1JlZ0V4cCcsIFJlZ0V4cFdyYXBwZXIpO1xufVxuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAtQEBzcGVjaWVzXG5zZXRTcGVjaWVzKCdSZWdFeHAnKTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVOU1VQUE9SVEVEX0RPVF9BTEwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLWRvdC1hbGwnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJykuZ2V0O1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmRvdEFsbGAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmRvdGFsbFxuaWYgKERFU0NSSVBUT1JTICYmIFVOU1VQUE9SVEVEX0RPVF9BTEwpIHtcbiAgZGVmaW5lUHJvcGVydHkoUmVnRXhwUHJvdG90eXBlLCAnZG90QWxsJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzID09PSBSZWdFeHBQcm90b3R5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IgYmVjYXVzZVxuICAgICAgLy8gd2UgZG9uJ3QgYWRkIG1ldGFkYXRhIGZvciByZWdleHBzIGNyZWF0ZWQgYnkgYSBsaXRlcmFsLlxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICEhZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5kb3RBbGw7XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgUmVnRXhwIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1lbXB0eS1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCwgcmVnZXhwL25vLWxhenktZW5kcyAtLSB0ZXN0aW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tdXNlbGVzcy1xdWFudGlmaWVyIC0tIHRlc3RpbmcgKi9cbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZWdleHBGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBzdGlja3lIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldEludGVybmFsU3RhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKS5nZXQ7XG52YXIgVU5TVVBQT1JURURfRE9UX0FMTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbCcpO1xudmFyIFVOU1VQUE9SVEVEX05DRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnJyk7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xudmFyIG5hdGl2ZVJlcGxhY2UgPSBzaGFyZWQoJ25hdGl2ZS1zdHJpbmctcmVwbGFjZScsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWSB8fCBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWSB8fCBVTlNVUFBPUlRFRF9ET1RfQUxMIHx8IFVOU1VQUE9SVEVEX05DRztcblxuaWYgKFBBVENIKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50cyAtLSBUT0RPXG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHJpbmcpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUocmUpO1xuICAgIHZhciBzdHIgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgIHZhciByYXcgPSBzdGF0ZS5yYXc7XG4gICAgdmFyIHJlc3VsdCwgcmVDb3B5LCBsYXN0SW5kZXgsIG1hdGNoLCBpLCBvYmplY3QsIGdyb3VwO1xuXG4gICAgaWYgKHJhdykge1xuICAgICAgcmF3Lmxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgIHJlc3VsdCA9IHBhdGNoZWRFeGVjLmNhbGwocmF3LCBzdHIpO1xuICAgICAgcmUubGFzdEluZGV4ID0gcmF3Lmxhc3RJbmRleDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdmFyIGdyb3VwcyA9IHN0YXRlLmdyb3VwcztcbiAgICB2YXIgc3RpY2t5ID0gVU5TVVBQT1JURURfWSAmJiByZS5zdGlja3k7XG4gICAgdmFyIGZsYWdzID0gcmVnZXhwRmxhZ3MuY2FsbChyZSk7XG4gICAgdmFyIHNvdXJjZSA9IHJlLnNvdXJjZTtcbiAgICB2YXIgY2hhcnNBZGRlZCA9IDA7XG4gICAgdmFyIHN0ckNvcHkgPSBzdHI7XG5cbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICBmbGFncyA9IGZsYWdzLnJlcGxhY2UoJ3knLCAnJyk7XG4gICAgICBpZiAoZmxhZ3MuaW5kZXhPZignZycpID09PSAtMSkge1xuICAgICAgICBmbGFncyArPSAnZyc7XG4gICAgICB9XG5cbiAgICAgIHN0ckNvcHkgPSBzdHIuc2xpY2UocmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIHN0ci5jaGFyQXQocmUubGFzdEluZGV4IC0gMSkgIT09ICdcXG4nKSkge1xuICAgICAgICBzb3VyY2UgPSAnKD86ICcgKyBzb3VyY2UgKyAnKSc7XG4gICAgICAgIHN0ckNvcHkgPSAnICcgKyBzdHJDb3B5O1xuICAgICAgICBjaGFyc0FkZGVkKys7XG4gICAgICB9XG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgc3RyIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeKD86JyArIHNvdXJjZSArICcpJywgZmxhZ3MpO1xuICAgIH1cblxuICAgIGlmIChOUENHX0lOQ0xVREVEKSB7XG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeJyArIHNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgIH1cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HKSBsYXN0SW5kZXggPSByZS5sYXN0SW5kZXg7XG5cbiAgICBtYXRjaCA9IG5hdGl2ZUV4ZWMuY2FsbChzdGlja3kgPyByZUNvcHkgOiByZSwgc3RyQ29weSk7XG5cbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2guaW5wdXQgPSBtYXRjaC5pbnB1dC5zbGljZShjaGFyc0FkZGVkKTtcbiAgICAgICAgbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZShjaGFyc0FkZGVkKTtcbiAgICAgICAgbWF0Y2guaW5kZXggPSByZS5sYXN0SW5kZXg7XG4gICAgICAgIHJlLmxhc3RJbmRleCArPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICB9IGVsc2UgcmUubGFzdEluZGV4ID0gMDtcbiAgICB9IGVsc2UgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyAmJiBtYXRjaCkge1xuICAgICAgcmUubGFzdEluZGV4ID0gcmUuZ2xvYmFsID8gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggOiBsYXN0SW5kZXg7XG4gICAgfVxuICAgIGlmIChOUENHX0lOQ0xVREVEICYmIG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAvLyBmb3IgTlBDRywgbGlrZSBJRTguIE5PVEU6IFRoaXMgZG9lc24nIHdvcmsgZm9yIC8oLj8pPy9cbiAgICAgIG5hdGl2ZVJlcGxhY2UuY2FsbChtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoICYmIGdyb3Vwcykge1xuICAgICAgbWF0Y2guZ3JvdXBzID0gb2JqZWN0ID0gY3JlYXRlKG51bGwpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBncm91cCA9IGdyb3Vwc1tpXTtcbiAgICAgICAgb2JqZWN0W2dyb3VwWzBdXSA9IG1hdGNoW2dyb3VwWzFdXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBleGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmV4ZWNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLmV4ZWNcbiQoeyB0YXJnZXQ6ICdSZWdFeHAnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAvLi8uZXhlYyAhPT0gZXhlYyB9LCB7XG4gIGV4ZWM6IGV4ZWNcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgb2JqZWN0RGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIHJlZ0V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJykuZ2V0LmNhbGwoeyBkb3RBbGw6IHRydWUsIHN0aWNreTogdHJ1ZSB9KSAhPT0gJ3N5Jztcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBvYmplY3REZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IHJlZ0V4cEZsYWdzXG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVOU1VQUE9SVEVEX1kgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzJykuVU5TVVBQT1JURURfWTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJykuZ2V0O1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnN0aWNreWAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLnN0aWNreVxuaWYgKERFU0NSSVBUT1JTICYmIFVOU1VQUE9SVEVEX1kpIHtcbiAgZGVmaW5lUHJvcGVydHkoUmVnRXhwUHJvdG90eXBlLCAnc3RpY2t5Jywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzID09PSBSZWdFeHBQcm90b3R5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IgYmVjYXVzZVxuICAgICAgLy8gd2UgZG9uJ3QgYWRkIG1ldGFkYXRhIGZvciByZWdleHBzIGNyZWF0ZWQgYnkgYSBsaXRlcmFsLlxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICEhZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdGlja3k7XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgUmVnRXhwIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgbW92ZWQgdG8gZW50cnkgcG9pbnRzXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjJyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBERUxFR0FURVNfVE9fRVhFQyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgdmFyIHJlID0gL1thY10vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIGV4ZWNDYWxsZWQgPSB0cnVlO1xuICAgIHJldHVybiAvLi8uZXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xuICByZXR1cm4gcmUudGVzdCgnYWJjJykgPT09IHRydWUgJiYgZXhlY0NhbGxlZDtcbn0oKTtcblxudmFyIG5hdGl2ZVRlc3QgPSAvLi8udGVzdDtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUudGVzdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudGVzdFxuJCh7IHRhcmdldDogJ1JlZ0V4cCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFERUxFR0FURVNfVE9fRVhFQyB9LCB7XG4gIHRlc3Q6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgZXhlYyA9IHRoaXMuZXhlYztcbiAgICBpZiAoIWlzQ2FsbGFibGUoZXhlYykpIHJldHVybiBuYXRpdmVUZXN0LmNhbGwodGhpcywgc3RyKTtcbiAgICB2YXIgcmVzdWx0ID0gZXhlYy5jYWxsKHRoaXMsIHN0cik7XG4gICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuICEhcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuUFJPUEVSO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG5cbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgbmF0aXZlVG9TdHJpbmcgPSBSZWdFeHBQcm90b3R5cGVbVE9fU1RSSU5HXTtcblxudmFyIE5PVF9HRU5FUklDID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlVG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxudmFyIElOQ09SUkVDVF9OQU1FID0gUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgbmF0aXZlVG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkc7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKE5PVF9HRU5FUklDIHx8IElOQ09SUkVDVF9OQU1FKSB7XG4gIHJlZGVmaW5lKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIFIgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgcCA9ICR0b1N0cmluZyhSLnNvdXJjZSk7XG4gICAgdmFyIHJmID0gUi5mbGFncztcbiAgICB2YXIgZiA9ICR0b1N0cmluZyhyZiA9PT0gdW5kZWZpbmVkICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgJiYgISgnZmxhZ3MnIGluIFJlZ0V4cFByb3RvdHlwZSkgPyBmbGFncy5jYWxsKFIpIDogcmYpO1xuICAgIHJldHVybiAnLycgKyBwICsgJy8nICsgZjtcbiAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY29sbGVjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uJyk7XG52YXIgY29sbGVjdGlvblN0cm9uZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLXN0cm9uZycpO1xuXG4vLyBgU2V0YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQtb2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSBjb2xsZWN0aW9uKCdTZXQnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCkgeyByZXR1cm4gaW5pdCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIGNvbGxlY3Rpb25TdHJvbmcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ/CgrrcnLmF0KDApICE9PSAnXFx1RDg0Mic7XG59KTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVsYXRpdmUtaW5kZXhpbmctbWV0aG9kXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgYXQ6IGZ1bmN0aW9uIGF0KGluZGV4KSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgICB2YXIgbGVuID0gUy5sZW5ndGg7XG4gICAgdmFyIHJlbGF0aXZlSW5kZXggPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgICB2YXIgayA9IHJlbGF0aXZlSW5kZXggPj0gMCA/IHJlbGF0aXZlSW5kZXggOiBsZW4gKyByZWxhdGl2ZUluZGV4O1xuICAgIHJldHVybiAoayA8IDAgfHwgayA+PSBsZW4pID8gdW5kZWZpbmVkIDogUy5jaGFyQXQoayk7XG4gIH1cbn0pO1xuIiwidmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyT3JJbmZpbml0eShwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gICAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgICAgfHwgKHNlY29uZCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklORyA/IFMuY2hhckF0KHBvc2l0aW9uKSA6IGZpcnN0XG4gICAgICAgIDogQ09OVkVSVF9UT19TVFJJTkcgPyBTLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNvZGVBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY29kZUF0O1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGNvZGVQb2ludEF0OiBmdW5jdGlvbiBjb2RlUG9pbnRBdChwb3MpIHtcbiAgICByZXR1cm4gY29kZUF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuIiwidmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNSZWdFeHAoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zXCIpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgdmFyIHJlZ2V4cCA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tNRVRIT0RfTkFNRV0ocmVnZXhwKTtcbiAgfSBjYXRjaCAoZXJyb3IxKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlZ2V4cFtNQVRDSF0gPSBmYWxzZTtcbiAgICAgIHJldHVybiAnLy4vJ1tNRVRIT0RfTkFNRV0ocmVnZXhwKTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiBmYWxzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zdHJpbmctcHJvdG90eXBlLWVuZHN3aXRoIC0tIHNhZmVcbnZhciAkZW5kc1dpdGggPSAnJy5lbmRzV2l0aDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxudmFyIENPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDID0gY29ycmVjdElzUmVnRXhwTG9naWMoJ2VuZHNXaXRoJyk7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9wdWxsLzcwMlxudmFyIE1ETl9QT0xZRklMTF9CVUcgPSAhSVNfUFVSRSAmJiAhQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgJiYgISFmdW5jdGlvbiAoKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90b3R5cGUsICdlbmRzV2l0aCcpO1xuICByZXR1cm4gZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci53cml0YWJsZTtcbn0oKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmVuZHN3aXRoXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogIU1ETl9QT0xZRklMTF9CVUcgJiYgIUNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDIH0sIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgbm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpO1xuICAgIHZhciBlbmRQb3NpdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBsZW4gPSB0aGF0Lmxlbmd0aDtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IG1pbih0b0xlbmd0aChlbmRQb3NpdGlvbiksIGxlbik7XG4gICAgdmFyIHNlYXJjaCA9IHRvU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1mcm9tY29kZXBvaW50IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGZyb21Db2RlUG9pbnQgPSBTdHJpbmcuZnJvbUNvZGVQb2ludDtcblxuLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbVxudmFyIElOQ09SUkVDVF9MRU5HVEggPSAhISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxO1xuXG4vLyBgU3RyaW5nLmZyb21Db2RlUG9pbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcuZnJvbWNvZGVwb2ludFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0xFTkdUSCB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgY29kZTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaSkge1xuICAgICAgY29kZSA9ICthcmd1bWVudHNbaSsrXTtcbiAgICAgIGlmICh0b0Fic29sdXRlSW5kZXgoY29kZSwgMHgxMEZGRkYpICE9PSBjb2RlKSB0aHJvdyBSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICAgIGVsZW1lbnRzLnB1c2goY29kZSA8IDB4MTAwMDBcbiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgICAgOiBmcm9tQ2hhckNvZGUoKChjb2RlIC09IDB4MTAwMDApID4+IDEwKSArIDB4RDgwMCwgY29kZSAlIDB4NDAwICsgMHhEQzAwKVxuICAgICAgKTtcbiAgICB9IHJldHVybiBlbGVtZW50cy5qb2luKCcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBub3RBUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25vdC1hLXJlZ2V4cCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgY29ycmVjdElzUmVnRXhwTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogIWNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdpbmNsdWRlcycpIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX50b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKVxuICAgICAgLmluZGV4T2YodG9TdHJpbmcobm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpKSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogdG9TdHJpbmcoaXRlcmF0ZWQpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xuLy8gYCVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjaGFyQXQoc3RyaW5nLCBpbmRleCk7XG4gIHN0YXRlLmluZGV4ICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIG1vdmVkIHRvIGVudHJ5IHBvaW50c1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5yZWdleHAuZXhlYycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgZXhlYywgRk9SQ0VELCBTSEFNKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcblxuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFdlIGNhbid0IHVzZSByZWFsIHJlZ2V4IGhlcmUgc2luY2UgaXQgY2F1c2VzIGRlb3B0aW1pemF0aW9uXG4gICAgICAvLyBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpbiBWOFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMwNlxuICAgICAgcmUgPSB7fTtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICAgIHJlLmZsYWdzID0gJyc7XG4gICAgICByZVtTWU1CT0xdID0gLy4vW1NZTUJPTF07XG4gICAgfVxuXG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICBGT1JDRURcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgdmFyICRleGVjID0gcmVnZXhwLmV4ZWM7XG4gICAgICBpZiAoJGV4ZWMgPT09IHJlZ2V4cEV4ZWMgfHwgJGV4ZWMgPT09IFJlZ0V4cFByb3RvdHlwZS5leGVjKSB7XG4gICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0pO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBtZXRob2RzWzBdKTtcbiAgICByZWRlZmluZShSZWdFeHBQcm90b3R5cGUsIFNZTUJPTCwgbWV0aG9kc1sxXSk7XG4gIH1cblxuICBpZiAoU0hBTSkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFJlZ0V4cFByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAoaXNDYWxsYWJsZShleGVjKSkge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgYW5PYmplY3QocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChjbGFzc29mKFIpID09PSAnUmVnRXhwJykgcmV0dXJuIHJlZ2V4cEV4ZWMuY2FsbChSLCBTKTtcbiAgdGhyb3cgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG4vLyBAQG1hdGNoIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygnbWF0Y2gnLCBmdW5jdGlvbiAoTUFUQ0gsIG5hdGl2ZU1hdGNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5tYXRjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLm1hdGNoXG4gICAgZnVuY3Rpb24gbWF0Y2gocmVnZXhwKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgbWF0Y2hlciA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBnZXRNZXRob2QocmVnZXhwLCBNQVRDSCk7XG4gICAgICByZXR1cm4gbWF0Y2hlciA/IG1hdGNoZXIuY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXSh0b1N0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAbWF0Y2hcbiAgICBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWF0Y2gsIHJ4LCBTKTtcblxuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICBpZiAoIXJ4Lmdsb2JhbCkgcmV0dXJuIHJlZ0V4cEV4ZWMocngsIFMpO1xuXG4gICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB2YXIgbiA9IDA7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKChyZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKSkgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gdG9TdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgQVtuXSA9IG1hdGNoU3RyO1xuICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICcnKSByeC5sYXN0SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgdG9MZW5ndGgocngubGFzdEluZGV4KSwgZnVsbFVuaWNvZGUpO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgICByZXR1cm4gbiA9PT0gMCA/IG51bGwgOiBBO1xuICAgIH1cbiAgXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS1tYXRjaGFsbCAtLSBzYWZlICovXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIGdldFJlZ0V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIE1BVENIX0FMTCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2hBbGwnKTtcbnZhciBSRUdFWFBfU1RSSU5HID0gJ1JlZ0V4cCBTdHJpbmcnO1xudmFyIFJFR0VYUF9TVFJJTkdfSVRFUkFUT1IgPSBSRUdFWFBfU1RSSU5HICsgJyBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihSRUdFWFBfU1RSSU5HX0lURVJBVE9SKTtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG5hdGl2ZU1hdGNoQWxsID0gJycubWF0Y2hBbGw7XG5cbnZhciBXT1JLU19XSVRIX05PTl9HTE9CQUxfUkVHRVggPSAhIW5hdGl2ZU1hdGNoQWxsICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICdhJy5tYXRjaEFsbCgvLi8pO1xufSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuIC0tIGlnbm9yZVxudmFyICRSZWdFeHBTdHJpbmdJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gUmVnRXhwU3RyaW5nSXRlcmF0b3IocmVnZXhwLCBzdHJpbmcsIGdsb2JhbCwgZnVsbFVuaWNvZGUpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogUkVHRVhQX1NUUklOR19JVEVSQVRPUixcbiAgICByZWdleHA6IHJlZ2V4cCxcbiAgICBzdHJpbmc6IHN0cmluZyxcbiAgICBnbG9iYWw6IGdsb2JhbCxcbiAgICB1bmljb2RlOiBmdWxsVW5pY29kZSxcbiAgICBkb25lOiBmYWxzZVxuICB9KTtcbn0sIFJFR0VYUF9TVFJJTkcsIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHZhciBSID0gc3RhdGUucmVnZXhwO1xuICB2YXIgUyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIG1hdGNoID0gcmVnRXhwRXhlYyhSLCBTKTtcbiAgaWYgKG1hdGNoID09PSBudWxsKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiBzdGF0ZS5kb25lID0gdHJ1ZSB9O1xuICBpZiAoc3RhdGUuZ2xvYmFsKSB7XG4gICAgaWYgKHRvU3RyaW5nKG1hdGNoWzBdKSA9PT0gJycpIFIubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKFIubGFzdEluZGV4KSwgc3RhdGUudW5pY29kZSk7XG4gICAgcmV0dXJuIHsgdmFsdWU6IG1hdGNoLCBkb25lOiBmYWxzZSB9O1xuICB9XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICByZXR1cm4geyB2YWx1ZTogbWF0Y2gsIGRvbmU6IGZhbHNlIH07XG59KTtcblxudmFyICRtYXRjaEFsbCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIFIgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIFMgPSB0b1N0cmluZyhzdHJpbmcpO1xuICB2YXIgQywgZmxhZ3NWYWx1ZSwgZmxhZ3MsIG1hdGNoZXIsIGdsb2JhbCwgZnVsbFVuaWNvZGU7XG4gIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IoUiwgUmVnRXhwKTtcbiAgZmxhZ3NWYWx1ZSA9IFIuZmxhZ3M7XG4gIGlmIChmbGFnc1ZhbHVlID09PSB1bmRlZmluZWQgJiYgUiBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhKCdmbGFncycgaW4gUmVnRXhwUHJvdG90eXBlKSkge1xuICAgIGZsYWdzVmFsdWUgPSBnZXRSZWdFeHBGbGFncy5jYWxsKFIpO1xuICB9XG4gIGZsYWdzID0gZmxhZ3NWYWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB0b1N0cmluZyhmbGFnc1ZhbHVlKTtcbiAgbWF0Y2hlciA9IG5ldyBDKEMgPT09IFJlZ0V4cCA/IFIuc291cmNlIDogUiwgZmxhZ3MpO1xuICBnbG9iYWwgPSAhIX5mbGFncy5pbmRleE9mKCdnJyk7XG4gIGZ1bGxVbmljb2RlID0gISF+ZmxhZ3MuaW5kZXhPZigndScpO1xuICBtYXRjaGVyLmxhc3RJbmRleCA9IHRvTGVuZ3RoKFIubGFzdEluZGV4KTtcbiAgcmV0dXJuIG5ldyAkUmVnRXhwU3RyaW5nSXRlcmF0b3IobWF0Y2hlciwgUywgZ2xvYmFsLCBmdWxsVW5pY29kZSk7XG59O1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5tYXRjaEFsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubWF0Y2hhbGxcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBXT1JLU19XSVRIX05PTl9HTE9CQUxfUkVHRVggfSwge1xuICBtYXRjaEFsbDogZnVuY3Rpb24gbWF0Y2hBbGwocmVnZXhwKSB7XG4gICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgIHZhciBmbGFncywgUywgbWF0Y2hlciwgcng7XG4gICAgaWYgKHJlZ2V4cCAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNSZWdFeHAocmVnZXhwKSkge1xuICAgICAgICBmbGFncyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGVcbiAgICAgICAgICA/IHJlZ2V4cC5mbGFnc1xuICAgICAgICAgIDogZ2V0UmVnRXhwRmxhZ3MuY2FsbChyZWdleHApXG4gICAgICAgICkpO1xuICAgICAgICBpZiAoIX5mbGFncy5pbmRleE9mKCdnJykpIHRocm93IFR5cGVFcnJvcignYC5tYXRjaEFsbGAgZG9lcyBub3QgYWxsb3cgbm9uLWdsb2JhbCByZWdleGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoV09SS1NfV0lUSF9OT05fR0xPQkFMX1JFR0VYKSByZXR1cm4gbmF0aXZlTWF0Y2hBbGwuYXBwbHkoTywgYXJndW1lbnRzKTtcbiAgICAgIG1hdGNoZXIgPSBnZXRNZXRob2QocmVnZXhwLCBNQVRDSF9BTEwpO1xuICAgICAgaWYgKG1hdGNoZXIgPT09IHVuZGVmaW5lZCAmJiBJU19QVVJFICYmIGNsYXNzb2YocmVnZXhwKSA9PSAnUmVnRXhwJykgbWF0Y2hlciA9ICRtYXRjaEFsbDtcbiAgICAgIGlmIChtYXRjaGVyKSByZXR1cm4gbWF0Y2hlci5jYWxsKHJlZ2V4cCwgTyk7XG4gICAgfSBlbHNlIGlmIChXT1JLU19XSVRIX05PTl9HTE9CQUxfUkVHRVgpIHJldHVybiBuYXRpdmVNYXRjaEFsbC5hcHBseShPLCBhcmd1bWVudHMpO1xuICAgIFMgPSB0b1N0cmluZyhPKTtcbiAgICByeCA9IG5ldyBSZWdFeHAocmVnZXhwLCAnZycpO1xuICAgIHJldHVybiBJU19QVVJFID8gJG1hdGNoQWxsLmNhbGwocngsIFMpIDogcnhbTUFUQ0hfQUxMXShTKTtcbiAgfVxufSk7XG5cbklTX1BVUkUgfHwgTUFUQ0hfQUxMIGluIFJlZ0V4cFByb3RvdHlwZSB8fCByZWRlZmluZShSZWdFeHBQcm90b3R5cGUsIE1BVENIX0FMTCwgJG1hdGNoQWxsKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8yODBcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvVmVyc2lvblxcLzEwKD86XFwuXFxkKyl7MSwyfSg/OiBbXFx3Li9dKyk/KD86IE1vYmlsZVxcL1xcdyspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRwYWRFbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXBhZCcpLmVuZDtcbnZhciBXRUJLSVRfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wYWQtd2Via2l0LWJ1ZycpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5wYWRFbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnBhZGVuZFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFdFQktJVF9CVUcgfSwge1xuICBwYWRFbmQ6IGZ1bmN0aW9uIHBhZEVuZChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWRFbmQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHBhZFN0YXJ0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wYWQnKS5zdGFydDtcbnZhciBXRUJLSVRfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wYWQtd2Via2l0LWJ1ZycpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucGFkc3RhcnRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBXRUJLSVRfQlVHIH0sIHtcbiAgcGFkU3RhcnQ6IGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZFN0YXJ0KHRoaXMsIG1heExlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBwdXNoID0gQXJyYXlQcm90b3R5cGUucHVzaDtcbnZhciBqb2luID0gQXJyYXlQcm90b3R5cGUuam9pbjtcblxuLy8gYFN0cmluZy5yYXdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucmF3XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHJhdzogZnVuY3Rpb24gcmF3KHRlbXBsYXRlKSB7XG4gICAgdmFyIHJhd1RlbXBsYXRlID0gdG9JbmRleGVkT2JqZWN0KHRvT2JqZWN0KHRlbXBsYXRlKS5yYXcpO1xuICAgIHZhciBsaXRlcmFsU2VnbWVudHMgPSBsZW5ndGhPZkFycmF5TGlrZShyYXdUZW1wbGF0ZSk7XG4gICAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChsaXRlcmFsU2VnbWVudHMgPiBpKSB7XG4gICAgICBwdXNoLmNhbGwoZWxlbWVudHMsIHRvU3RyaW5nKHJhd1RlbXBsYXRlW2krK10pKTtcbiAgICAgIGlmIChpID09PSBsaXRlcmFsU2VnbWVudHMpIHJldHVybiBqb2luLmNhbGwoZWxlbWVudHMsICcnKTtcbiAgICAgIGlmIChpIDwgYXJndW1lbnRzTGVuZ3RoKSBwdXNoLmNhbGwoZWxlbWVudHMsIHRvU3RyaW5nKGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXJlcGVhdCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGVhdFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlIH0sIHtcbiAgcmVwZWF0OiByZXBlYXRcbn0pO1xuIiwidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHJlcGxhY2UgPSAnJy5yZXBsYWNlO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkezEsMn18PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmJ2BdfFxcZHsxLDJ9KS9nO1xuXG4vLyBgR2V0U3Vic3RpdHV0aW9uYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0c3Vic3RpdHV0aW9uXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZW1lbnQpIHtcbiAgdmFyIHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgdmFyIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRDtcbiAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFM7XG4gIH1cbiAgcmV0dXJuIHJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgIHZhciBjYXB0dXJlO1xuICAgIHN3aXRjaCAoY2guY2hhckF0KDApKSB7XG4gICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgIGNhc2UgJ2AnOiByZXR1cm4gc3RyLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbY2guc2xpY2UoMSwgLTEpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgIHZhciBuID0gK2NoO1xuICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICB2YXIgZiA9IGZsb29yKG4gLyAxMCk7XG4gICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGdldFN1YnN0aXR1dGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uJyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgUkVQTEFDRSA9IHdlbGxLbm93blN5bWJvbCgncmVwbGFjZScpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIElFIDw9IDExIHJlcGxhY2VzICQwIHdpdGggdGhlIHdob2xlIG1hdGNoLCBhcyBpZiBpdCB3YXMgJCZcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYwMjQ2NjYvZ2V0dGluZy1pZS10by1yZXBsYWNlLWEtcmVnZXgtd2l0aC10aGUtbGl0ZXJhbC1zdHJpbmctMFxudmFyIFJFUExBQ0VfS0VFUFNfJDAgPSAoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL3ByZWZlci1lc2NhcGUtcmVwbGFjZW1lbnQtZG9sbGFyLWNoYXIgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuICdhJy5yZXBsYWNlKC8uLywgJyQwJykgPT09ICckMCc7XG59KSgpO1xuXG4vLyBTYWZhcmkgPD0gMTMuMC4zKD8pIHN1YnN0aXR1dGVzIG50aCBjYXB0dXJlIHdoZXJlIG4+bSB3aXRoIGFuIGVtcHR5IHN0cmluZ1xudmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKC8uL1tSRVBMQUNFXSkge1xuICAgIHJldHVybiAvLi9bUkVQTEFDRV0oJ2EnLCAnJDAnKSA9PT0gJyc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSkoKTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLXVzZWxlc3MtZG9sbGFyLXJlcGxhY2VtZW50cyAtLSBmYWxzZSBwb3NpdGl2ZVxuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3JlcGxhY2UnLCBmdW5jdGlvbiAoXywgbmF0aXZlUmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHZhciBVTlNBRkVfU1VCU1RJVFVURSA9IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID8gJyQnIDogJyQwJztcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBnZXRNZXRob2Qoc2VhcmNoVmFsdWUsIFJFUExBQ0UpO1xuICAgICAgcmV0dXJuIHJlcGxhY2VyXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbCh0b1N0cmluZyhPKSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEByZXBsYWNlXG4gICAgZnVuY3Rpb24gKHN0cmluZywgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgcmVwbGFjZVZhbHVlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICByZXBsYWNlVmFsdWUuaW5kZXhPZihVTlNBRkVfU1VCU1RJVFVURSkgPT09IC0xICYmXG4gICAgICAgIHJlcGxhY2VWYWx1ZS5pbmRleE9mKCckPCcpID09PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlUmVwbGFjZSwgcngsIFMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gaXNDYWxsYWJsZShyZXBsYWNlVmFsdWUpO1xuICAgICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gdG9TdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gdG9TdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuXG4gICAgICAgIHZhciBtYXRjaGVkID0gdG9TdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gbWF4KG1pbih0b0ludGVnZXJPckluZmluaXR5KHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHRvU3RyaW5nKHJlcGxhY2VWYWx1ZS5hcHBseSh1bmRlZmluZWQsIHJlcGxhY2VyQXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIFMsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPj0gbmV4dFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgICAgICAgYWNjdW11bGF0ZWRSZXN1bHQgKz0gUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uKTtcbiAgICB9XG4gIF07XG59LCAhUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMgfHwgIVJFUExBQ0VfS0VFUFNfJDAgfHwgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcmVnZXhwJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBnZXRSZWdFeHBGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBnZXRTdWJzdGl0dXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgUkVQTEFDRSA9IHdlbGxLbm93blN5bWJvbCgncmVwbGFjZScpO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbnZhciBzdHJpbmdJbmRleE9mID0gZnVuY3Rpb24gKHN0cmluZywgc2VhcmNoVmFsdWUsIGZyb21JbmRleCkge1xuICBpZiAoZnJvbUluZGV4ID4gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIC0xO1xuICBpZiAoc2VhcmNoVmFsdWUgPT09ICcnKSByZXR1cm4gZnJvbUluZGV4O1xuICByZXR1cm4gc3RyaW5nLmluZGV4T2Yoc2VhcmNoVmFsdWUsIGZyb21JbmRleCk7XG59O1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYWxsXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUgfSwge1xuICByZXBsYWNlQWxsOiBmdW5jdGlvbiByZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgdmFyIElTX1JFR19FWFAsIGZsYWdzLCByZXBsYWNlciwgc3RyaW5nLCBzZWFyY2hTdHJpbmcsIGZ1bmN0aW9uYWxSZXBsYWNlLCBzZWFyY2hMZW5ndGgsIGFkdmFuY2VCeSwgcmVwbGFjZW1lbnQ7XG4gICAgdmFyIHBvc2l0aW9uID0gMDtcbiAgICB2YXIgZW5kT2ZMYXN0TWF0Y2ggPSAwO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICBpZiAoc2VhcmNoVmFsdWUgIT0gbnVsbCkge1xuICAgICAgSVNfUkVHX0VYUCA9IGlzUmVnRXhwKHNlYXJjaFZhbHVlKTtcbiAgICAgIGlmIChJU19SRUdfRVhQKSB7XG4gICAgICAgIGZsYWdzID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgnZmxhZ3MnIGluIFJlZ0V4cFByb3RvdHlwZVxuICAgICAgICAgID8gc2VhcmNoVmFsdWUuZmxhZ3NcbiAgICAgICAgICA6IGdldFJlZ0V4cEZsYWdzLmNhbGwoc2VhcmNoVmFsdWUpXG4gICAgICAgICkpO1xuICAgICAgICBpZiAoIX5mbGFncy5pbmRleE9mKCdnJykpIHRocm93IFR5cGVFcnJvcignYC5yZXBsYWNlQWxsYCBkb2VzIG5vdCBhbGxvdyBub24tZ2xvYmFsIHJlZ2V4ZXMnKTtcbiAgICAgIH1cbiAgICAgIHJlcGxhY2VyID0gZ2V0TWV0aG9kKHNlYXJjaFZhbHVlLCBSRVBMQUNFKTtcbiAgICAgIGlmIChyZXBsYWNlcikge1xuICAgICAgICByZXR1cm4gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoSVNfUFVSRSAmJiBJU19SRUdfRVhQKSB7XG4gICAgICAgIHJldHVybiB0b1N0cmluZyhPKS5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdHJpbmcgPSB0b1N0cmluZyhPKTtcbiAgICBzZWFyY2hTdHJpbmcgPSB0b1N0cmluZyhzZWFyY2hWYWx1ZSk7XG4gICAgZnVuY3Rpb25hbFJlcGxhY2UgPSBpc0NhbGxhYmxlKHJlcGxhY2VWYWx1ZSk7XG4gICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gdG9TdHJpbmcocmVwbGFjZVZhbHVlKTtcbiAgICBzZWFyY2hMZW5ndGggPSBzZWFyY2hTdHJpbmcubGVuZ3RoO1xuICAgIGFkdmFuY2VCeSA9IG1heCgxLCBzZWFyY2hMZW5ndGgpO1xuICAgIHBvc2l0aW9uID0gc3RyaW5nSW5kZXhPZihzdHJpbmcsIHNlYXJjaFN0cmluZywgMCk7XG4gICAgd2hpbGUgKHBvc2l0aW9uICE9PSAtMSkge1xuICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgIHJlcGxhY2VtZW50ID0gdG9TdHJpbmcocmVwbGFjZVZhbHVlKHNlYXJjaFN0cmluZywgcG9zaXRpb24sIHN0cmluZykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24oc2VhcmNoU3RyaW5nLCBzdHJpbmcsIHBvc2l0aW9uLCBbXSwgdW5kZWZpbmVkLCByZXBsYWNlVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShlbmRPZkxhc3RNYXRjaCwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICBlbmRPZkxhc3RNYXRjaCA9IHBvc2l0aW9uICsgc2VhcmNoTGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBzdHJpbmdJbmRleE9mKHN0cmluZywgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbiArIGFkdmFuY2VCeSk7XG4gICAgfVxuICAgIGlmIChlbmRPZkxhc3RNYXRjaCA8IHN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoZW5kT2ZMYXN0TWF0Y2gpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBzYW1lVmFsdWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2FtZS12YWx1ZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG4vLyBAQHNlYXJjaCBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3NlYXJjaCcsIGZ1bmN0aW9uIChTRUFSQ0gsIG5hdGl2ZVNlYXJjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUuc2VhcmNoYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc2VhcmNoXG4gICAgZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHNlYXJjaGVyID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGdldE1ldGhvZChyZWdleHAsIFNFQVJDSCk7XG4gICAgICByZXR1cm4gc2VhcmNoZXIgPyBzZWFyY2hlci5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXSh0b1N0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNlYXJjaFxuICAgIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIFMgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVTZWFyY2gsIHJ4LCBTKTtcblxuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcHJldmlvdXNMYXN0SW5kZXggPSByeC5sYXN0SW5kZXg7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShwcmV2aW91c0xhc3RJbmRleCwgMCkpIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShyeC5sYXN0SW5kZXgsIHByZXZpb3VzTGFzdEluZGV4KSkgcngubGFzdEluZGV4ID0gcHJldmlvdXNMYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBudWxsID8gLTEgOiByZXN1bHQuaW5kZXg7XG4gICAgfVxuICBdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGNhbGxSZWdFeHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIFVOU1VQUE9SVEVEX1kgPSBzdGlja3lIZWxwZXJzLlVOU1VQUE9SVEVEX1k7XG52YXIgYXJyYXlQdXNoID0gW10ucHVzaDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBNQVhfVUlOVDMyID0gMHhGRkZGRkZGRjtcblxuLy8gQ2hyb21lIDUxIGhhcyBhIGJ1Z2d5IFwic3BsaXRcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIFJlZ0V4cCNleGVjICE9PSBuYXRpdmVFeGVjXG4vLyBXZWV4IEpTIGhhcyBmcm96ZW4gYnVpbHQtaW4gcHJvdG90eXBlcywgc28gdXNlIHRyeSAvIGNhdGNoIHdyYXBwZXJcbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAhPT0gMiB8fCByZXN1bHRbMF0gIT09ICdhJyB8fCByZXN1bHRbMV0gIT09ICdiJztcbn0pO1xuXG4vLyBAQHNwbGl0IGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygnc3BsaXQnLCBmdW5jdGlvbiAoU1BMSVQsIG5hdGl2ZVNwbGl0LCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgdmFyIGludGVybmFsU3BsaXQ7XG4gIGlmIChcbiAgICAnYWJiYycuc3BsaXQoLyhiKSovKVsxXSA9PSAnYycgfHxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgJ3Rlc3QnLnNwbGl0KC8oPzopLywgLTEpLmxlbmd0aCAhPSA0IHx8XG4gICAgJ2FiJy5zcGxpdCgvKD86YWIpKi8pLmxlbmd0aCAhPSAyIHx8XG4gICAgJy4nLnNwbGl0KC8oLj8pKC4/KS8pLmxlbmd0aCAhPSA0IHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1lbXB0eS1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgICcuJy5zcGxpdCgvKCkoKS8pLmxlbmd0aCA+IDEgfHxcbiAgICAnJy5zcGxpdCgvLj8vKS5sZW5ndGhcbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtzdHJpbmddO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlU3BsaXQuY2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltKTtcbiAgICAgIH1cbiAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgIHZhciBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyAneScgOiAnJyk7XG4gICAgICB2YXIgbGFzdExhc3RJbmRleCA9IDA7XG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgdmFyIHNlcGFyYXRvckNvcHkgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgJ2cnKTtcbiAgICAgIHZhciBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgICAgd2hpbGUgKG1hdGNoID0gcmVnZXhwRXhlYy5jYWxsKHNlcGFyYXRvckNvcHksIHN0cmluZykpIHtcbiAgICAgICAgbGFzdEluZGV4ID0gc2VwYXJhdG9yQ29weS5sYXN0SW5kZXg7XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmcubGVuZ3RoKSBhcnJheVB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4O1xuICAgICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHkubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkgc2VwYXJhdG9yQ29weS5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvckNvcHkudGVzdCgnJykpIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0gZWxzZSBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW0gPyBvdXRwdXQuc2xpY2UoMCwgbGltKSA6IG91dHB1dDtcbiAgICB9O1xuICAvLyBDaGFrcmEsIFY4XG4gIH0gZWxzZSBpZiAoJzAnLnNwbGl0KHVuZGVmaW5lZCwgMCkubGVuZ3RoKSB7XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICByZXR1cm4gc2VwYXJhdG9yID09PSB1bmRlZmluZWQgJiYgbGltaXQgPT09IDAgPyBbXSA6IG5hdGl2ZVNwbGl0LmNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfTtcbiAgfSBlbHNlIGludGVybmFsU3BsaXQgPSBuYXRpdmVTcGxpdDtcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3BsaXRcbiAgICBmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgc3BsaXR0ZXIgPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZ2V0TWV0aG9kKHNlcGFyYXRvciwgU1BMSVQpO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyXG4gICAgICAgID8gc3BsaXR0ZXIuY2FsbChzZXBhcmF0b3IsIE8sIGxpbWl0KVxuICAgICAgICA6IGludGVybmFsU3BsaXQuY2FsbCh0b1N0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAc3BsaXRcbiAgICAvL1xuICAgIC8vIE5PVEU6IFRoaXMgY2Fubm90IGJlIHByb3Blcmx5IHBvbHlmaWxsZWQgaW4gZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnRcbiAgICAvLyB0aGUgJ3knIGZsYWcuXG4gICAgZnVuY3Rpb24gKHN0cmluZywgbGltaXQpIHtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIFMgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShpbnRlcm5hbFNwbGl0LCByeCwgUywgbGltaXQsIGludGVybmFsU3BsaXQgIT09IG5hdGl2ZVNwbGl0KTtcblxuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgUmVnRXhwKTtcblxuICAgICAgdmFyIHVuaWNvZGVNYXRjaGluZyA9IHJ4LnVuaWNvZGU7XG4gICAgICB2YXIgZmxhZ3MgPSAocnguaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngubXVsdGlsaW5lID8gJ20nIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChVTlNVUFBPUlRFRF9ZID8gJ2cnIDogJ3knKTtcblxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIFMgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHZhciBzcGxpdHRlciA9IG5ldyBDKFVOU1VQUE9SVEVEX1kgPyAnXig/OicgKyByeC5zb3VyY2UgKyAnKScgOiByeCwgZmxhZ3MpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoUy5sZW5ndGggPT09IDApIHJldHVybiBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgUykgPT09IG51bGwgPyBbU10gOiBbXTtcbiAgICAgIHZhciBwID0gMDtcbiAgICAgIHZhciBxID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB3aGlsZSAocSA8IFMubGVuZ3RoKSB7XG4gICAgICAgIHNwbGl0dGVyLmxhc3RJbmRleCA9IFVOU1VQUE9SVEVEX1kgPyAwIDogcTtcbiAgICAgICAgdmFyIHogPSBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgVU5TVVBQT1JURURfWSA/IFMuc2xpY2UocSkgOiBTKTtcbiAgICAgICAgdmFyIGU7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB6ID09PSBudWxsIHx8XG4gICAgICAgICAgKGUgPSBtaW4odG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4ICsgKFVOU1VQUE9SVEVEX1kgPyBxIDogMCkpLCBTLmxlbmd0aCkpID09PSBwXG4gICAgICAgICkge1xuICAgICAgICAgIHEgPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBBLnB1c2goUy5zbGljZShwLCBxKSk7XG4gICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHoubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBBLnB1c2goeltpXSk7XG4gICAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHEgPSBwID0gZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQS5wdXNoKFMuc2xpY2UocCkpO1xuICAgICAgcmV0dXJuIEE7XG4gICAgfVxuICBdO1xufSwgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQywgVU5TVVBQT1JURURfWSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zdHJpbmctcHJvdG90eXBlLXN0YXJ0c3dpdGggLS0gc2FmZVxudmFyICRzdGFydHNXaXRoID0gJycuc3RhcnRzV2l0aDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxudmFyIENPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDID0gY29ycmVjdElzUmVnRXhwTG9naWMoJ3N0YXJ0c1dpdGgnKTtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL3B1bGwvNzAyXG52YXIgTUROX1BPTFlGSUxMX0JVRyA9ICFJU19QVVJFICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyAmJiAhIWZ1bmN0aW9uICgpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgJ3N0YXJ0c1dpdGgnKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGU7XG59KCk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnN0YXJ0c3dpdGhcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhTUROX1BPTFlGSUxMX0JVRyAmJiAhQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgfSwge1xuICBzdGFydHNXaXRoOiBmdW5jdGlvbiBzdGFydHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHZhciB0aGF0ID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgbm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKG1pbihhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgdGhhdC5sZW5ndGgpKTtcbiAgICB2YXIgc2VhcmNoID0gdG9TdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcblxudmFyIHNsaWNlID0gJycuc2xpY2U7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1zdHJpbmctc2xpY2UgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBGT1JDRUQgPSAhJycuc3Vic3RyIHx8ICdhYicuc3Vic3RyKC0xKSAhPT0gJ2InO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnN1YnN0clxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHN1YnN0cjogZnVuY3Rpb24gc3Vic3RyKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICB2YXIgdGhhdCA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgIHZhciBzaXplID0gdGhhdC5sZW5ndGg7XG4gICAgdmFyIGludFN0YXJ0ID0gdG9JbnRlZ2VyT3JJbmZpbml0eShzdGFydCk7XG4gICAgdmFyIGludExlbmd0aCwgaW50RW5kO1xuICAgIGlmIChpbnRTdGFydCA9PT0gSW5maW5pdHkpIGludFN0YXJ0ID0gMDtcbiAgICBpZiAoaW50U3RhcnQgPCAwKSBpbnRTdGFydCA9IG1heChzaXplICsgaW50U3RhcnQsIDApO1xuICAgIGludExlbmd0aCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gc2l6ZSA6IHRvSW50ZWdlck9ySW5maW5pdHkobGVuZ3RoKTtcbiAgICBpZiAoaW50TGVuZ3RoIDw9IDAgfHwgaW50TGVuZ3RoID09PSBJbmZpbml0eSkgcmV0dXJuICcnO1xuICAgIGludEVuZCA9IG1pbihpbnRTdGFydCArIGludExlbmd0aCwgc2l6ZSk7XG4gICAgcmV0dXJuIGludFN0YXJ0ID49IGludEVuZCA/ICcnIDogc2xpY2UuY2FsbCh0aGF0LCBpbnRTdGFydCwgaW50RW5kKTtcbiAgfVxufSk7XG4iLCJ2YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLlBST1BFUjtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciBub24gPSAnXFx1MjAwQlxcdTAwODVcXHUxODBFJztcblxuLy8gY2hlY2sgdGhhdCBhIG1ldGhvZCB3b3JrcyB3aXRoIHRoZSBjb3JyZWN0IGxpc3Rcbi8vIG9mIHdoaXRlc3BhY2VzIGFuZCBoYXMgYSBjb3JyZWN0IG5hbWVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHJldHVybiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhd2hpdGVzcGFjZXNbTUVUSE9EX05BTUVdKClcbiAgICAgIHx8IG5vbltNRVRIT0RfTkFNRV0oKSAhPT0gbm9uXG4gICAgICB8fCAoUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgd2hpdGVzcGFjZXNbTUVUSE9EX05BTUVdLm5hbWUgIT09IE1FVEhPRF9OQU1FKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIGZvcmNlZFN0cmluZ1RyaW1NZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdUcmltTWV0aG9kKCd0cmltJykgfSwge1xuICB0cmltOiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkdHJpbUVuZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLmVuZDtcbnZhciBmb3JjZWRTdHJpbmdUcmltTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZCcpO1xuXG52YXIgRk9SQ0VEID0gZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCgndHJpbUVuZCcpO1xuXG52YXIgdHJpbUVuZCA9IEZPUkNFRCA/IGZ1bmN0aW9uIHRyaW1FbmQoKSB7XG4gIHJldHVybiAkdHJpbUVuZCh0aGlzKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zdHJpbmctcHJvdG90eXBlLXRyaW1zdGFydC10cmltZW5kIC0tIHNhZmVcbn0gOiAnJy50cmltRW5kO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1FbmQsIHRyaW1SaWdodCB9YCBtZXRob2RzXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI1N0cmluZy5wcm90b3R5cGUudHJpbXJpZ2h0XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIG5hbWU6ICd0cmltRW5kJywgZm9yY2VkOiBGT1JDRUQgfSwge1xuICB0cmltRW5kOiB0cmltRW5kLFxuICB0cmltUmlnaHQ6IHRyaW1FbmRcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRyaW1TdGFydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnN0YXJ0O1xudmFyIGZvcmNlZFN0cmluZ1RyaW1NZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZm9yY2VkJyk7XG5cbnZhciBGT1JDRUQgPSBmb3JjZWRTdHJpbmdUcmltTWV0aG9kKCd0cmltU3RhcnQnKTtcblxudmFyIHRyaW1TdGFydCA9IEZPUkNFRCA/IGZ1bmN0aW9uIHRyaW1TdGFydCgpIHtcbiAgcmV0dXJuICR0cmltU3RhcnQodGhpcyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS10cmltc3RhcnQtdHJpbWVuZCAtLSBzYWZlXG59IDogJycudHJpbVN0YXJ0O1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1TdGFydCwgdHJpbUxlZnQgfWAgbWV0aG9kc1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI1N0cmluZy5wcm90b3R5cGUudHJpbWxlZnRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgbmFtZTogJ3RyaW1TdGFydCcsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgdHJpbVN0YXJ0OiB0cmltU3RhcnQsXG4gIHRyaW1MZWZ0OiB0cmltU3RhcnRcbn0pO1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbnZhciBxdW90ID0gL1wiL2c7XG5cbi8vIGBDcmVhdGVIVE1MYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlaHRtbFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIHRvU3RyaW5nKHZhbHVlKS5yZXBsYWNlKHF1b3QsICcmcXVvdDsnKSArICdcIic7XG4gIHJldHVybiBwMSArICc+JyArIFMgKyAnPC8nICsgdGFnICsgJz4nO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBjaGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgbWV0aG9kLCBsb3dlcmNhc2Vcbi8vIG9mIGEgdGFnIGFuZCBlc2NhcGluZyBxdW90ZXMgaW4gYXJndW1lbnRzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICByZXR1cm4gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ZXN0ID0gJydbTUVUSE9EX05BTUVdKCdcIicpO1xuICAgIHJldHVybiB0ZXN0ICE9PSB0ZXN0LnRvTG93ZXJDYXNlKCkgfHwgdGVzdC5zcGxpdCgnXCInKS5sZW5ndGggPiAzO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuYW5jaG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5hbmNob3JcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdhbmNob3InKSB9LCB7XG4gIGFuY2hvcjogZnVuY3Rpb24gYW5jaG9yKG5hbWUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICduYW1lJywgbmFtZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmJpZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuYmlnXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnYmlnJykgfSwge1xuICBiaWc6IGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuYmxpbmtgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmJsaW5rXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnYmxpbmsnKSB9LCB7XG4gIGJsaW5rOiBmdW5jdGlvbiBibGluaygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmxpbmsnLCAnJywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5ib2xkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5ib2xkXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnYm9sZCcpIH0sIHtcbiAgYm9sZDogZnVuY3Rpb24gYm9sZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYicsICcnLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmZpeGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5maXhlZFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2ZpeGVkJykgfSwge1xuICBmaXhlZDogZnVuY3Rpb24gZml4ZWQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3R0JywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3JcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdmb250Y29sb3InKSB9LCB7XG4gIGZvbnRjb2xvcjogZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZVxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2ZvbnRzaXplJykgfSwge1xuICBmb250c2l6ZTogZnVuY3Rpb24gZm9udHNpemUoc2l6ZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ3NpemUnLCBzaXplKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuaXRhbGljc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuaXRhbGljc1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2l0YWxpY3MnKSB9LCB7XG4gIGl0YWxpY3M6IGZ1bmN0aW9uIGl0YWxpY3MoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2knLCAnJywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5saW5rYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5saW5rXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnbGluaycpIH0sIHtcbiAgbGluazogZnVuY3Rpb24gbGluayh1cmwpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICdocmVmJywgdXJsKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuc21hbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnNtYWxsXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnc21hbGwnKSB9LCB7XG4gIHNtYWxsOiBmdW5jdGlvbiBzbWFsbCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5zdHJpa2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnN0cmlrZVxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ3N0cmlrZScpIH0sIHtcbiAgc3RyaWtlOiBmdW5jdGlvbiBzdHJpa2UoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N0cmlrZScsICcnLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnN1YmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3ViXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnc3ViJykgfSwge1xuICBzdWI6IGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3ViJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuc3VwYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zdXBcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdzdXAnKSB9LCB7XG4gIHN1cDogZnVuY3Rpb24gc3VwKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdXAnLCAnJywgJycpO1xuICB9XG59KTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTO1xuXG52YXIgQXJyYXlCdWZmZXIgPSBnbG9iYWwuQXJyYXlCdWZmZXI7XG52YXIgSW50OEFycmF5ID0gZ2xvYmFsLkludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBJbnQ4QXJyYXkoMSk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBuZXcgSW50OEFycmF5KC0xKTtcbn0pIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIG5ldyBJbnQ4QXJyYXkoKTtcbiAgbmV3IEludDhBcnJheShudWxsKTtcbiAgbmV3IEludDhBcnJheSgxLjUpO1xuICBuZXcgSW50OEFycmF5KGl0ZXJhYmxlKTtcbn0sIHRydWUpIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gU2FmYXJpICgxMSspIGJ1ZyAtIGEgcmVhc29uIHdoeSBldmVuIFNhZmFyaSAxMyBzaG91bGQgbG9hZCBhIHR5cGVkIGFycmF5IHBvbHlmaWxsXG4gIHJldHVybiBuZXcgSW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigyKSwgMSwgdW5kZWZpbmVkKS5sZW5ndGggIT09IDE7XG59KTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IHRvSW50ZWdlck9ySW5maW5pdHkoaXQpO1xuICBpZiAocmVzdWx0IDwgMCkgdGhyb3cgUmFuZ2VFcnJvcihcIlRoZSBhcmd1bWVudCBjYW4ndCBiZSBsZXNzIHRoYW4gMFwiKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgdG9Qb3NpdGl2ZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQllURVMpIHtcbiAgdmFyIG9mZnNldCA9IHRvUG9zaXRpdmVJbnRlZ2VyKGl0KTtcbiAgaWYgKG9mZnNldCAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQnKTtcbiAgcmV0dXJuIG9mZnNldDtcbn07XG4iLCJ2YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwZm4sIHRoaXNBcmcgKi8pIHtcbiAgdmFyIEMgPSBhQ29uc3RydWN0b3IodGhpcyk7XG4gIHZhciBPID0gdG9PYmplY3Qoc291cmNlKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBmbiA9IGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2QoTyk7XG4gIHZhciBpLCBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3IsIG5leHQ7XG4gIGlmIChpdGVyYXRvck1ldGhvZCAmJiAhaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkge1xuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoTywgaXRlcmF0b3JNZXRob2QpO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIE8gPSBbXTtcbiAgICB3aGlsZSAoIShzdGVwID0gbmV4dC5jYWxsKGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgICAgTy5wdXNoKHN0ZXAudmFsdWUpO1xuICAgIH1cbiAgfVxuICBpZiAobWFwcGluZyAmJiBhcmd1bWVudHNMZW5ndGggPiAyKSB7XG4gICAgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICB9XG4gIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICByZXN1bHQgPSBuZXcgKGFUeXBlZEFycmF5Q29uc3RydWN0b3IoQykpKGxlbmd0aCk7XG4gIGZvciAoaSA9IDA7IGxlbmd0aCA+IGk7IGkrKykge1xuICAgIHJlc3VsdFtpXSA9IG1hcHBpbmcgPyBtYXBmbihPW2ldLCBpKSA6IE9baV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLXdyYXBwZXJzJyk7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgQXJyYXlCdWZmZXJNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBpc0ludGVncmFsTnVtYmVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWludGVncmFsLW51bWJlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXgnKTtcbnZhciB0b09mZnNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vZmZzZXQnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIHR5cGVkQXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20nKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbnZhciByb3VuZCA9IE1hdGgucm91bmQ7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xudmFyIEFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXJNb2R1bGUuQXJyYXlCdWZmZXI7XG52YXIgRGF0YVZpZXcgPSBBcnJheUJ1ZmZlck1vZHVsZS5EYXRhVmlldztcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTO1xudmFyIFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UWVBFRF9BUlJBWV9DT05TVFJVQ1RPUjtcbnZhciBUWVBFRF9BUlJBWV9UQUcgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLlRZUEVEX0FSUkFZX1RBRztcbnZhciBUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UeXBlZEFycmF5O1xudmFyIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLlR5cGVkQXJyYXlQcm90b3R5cGU7XG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbnZhciBpc1R5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmlzVHlwZWRBcnJheTtcbnZhciBCWVRFU19QRVJfRUxFTUVOVCA9ICdCWVRFU19QRVJfRUxFTUVOVCc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCc7XG5cbnZhciBmcm9tTGlzdCA9IGZ1bmN0aW9uIChDLCBsaXN0KSB7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IG5ldyAoYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihDKSkobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICBuYXRpdmVEZWZpbmVQcm9wZXJ0eShpdCwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpW2tleV07XG4gIH0gfSk7XG59O1xuXG52YXIgaXNBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIga2xhc3M7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IChrbGFzcyA9IGNsYXNzb2YoaXQpKSA9PSAnQXJyYXlCdWZmZXInIHx8IGtsYXNzID09ICdTaGFyZWRBcnJheUJ1ZmZlcic7XG59O1xuXG52YXIgaXNUeXBlZEFycmF5SW5kZXggPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgcmV0dXJuIGlzVHlwZWRBcnJheSh0YXJnZXQpXG4gICAgJiYgIWlzU3ltYm9sKGtleSlcbiAgICAmJiBrZXkgaW4gdGFyZ2V0XG4gICAgJiYgaXNJbnRlZ3JhbE51bWJlcigra2V5KVxuICAgICYmIGtleSA+PSAwO1xufTtcblxudmFyIHdyYXBwZWRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIHtcbiAga2V5ID0gdG9Qcm9wZXJ0eUtleShrZXkpO1xuICByZXR1cm4gaXNUeXBlZEFycmF5SW5kZXgodGFyZ2V0LCBrZXkpXG4gICAgPyBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMiwgdGFyZ2V0W2tleV0pXG4gICAgOiBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xufTtcblxudmFyIHdyYXBwZWREZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gIGtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgaWYgKGlzVHlwZWRBcnJheUluZGV4KHRhcmdldCwga2V5KVxuICAgICYmIGlzT2JqZWN0KGRlc2NyaXB0b3IpXG4gICAgJiYgaGFzT3duKGRlc2NyaXB0b3IsICd2YWx1ZScpXG4gICAgJiYgIWhhc093bihkZXNjcmlwdG9yLCAnZ2V0JylcbiAgICAmJiAhaGFzT3duKGRlc2NyaXB0b3IsICdzZXQnKVxuICAgIC8vIFRPRE86IGFkZCB2YWxpZGF0aW9uIGRlc2NyaXB0b3Igdy9vIGNhbGxpbmcgYWNjZXNzb3JzXG4gICAgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlXG4gICAgJiYgKCFoYXNPd24oZGVzY3JpcHRvciwgJ3dyaXRhYmxlJykgfHwgZGVzY3JpcHRvci53cml0YWJsZSlcbiAgICAmJiAoIWhhc093bihkZXNjcmlwdG9yLCAnZW51bWVyYWJsZScpIHx8IGRlc2NyaXB0b3IuZW51bWVyYWJsZSlcbiAgKSB7XG4gICAgdGFyZ2V0W2tleV0gPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH0gcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbn07XG5cbmlmIChERVNDUklQVE9SUykge1xuICBpZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MpIHtcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZiA9IHdyYXBwZWRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZiA9IHdyYXBwZWREZWZpbmVQcm9wZXJ0eTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J1ZmZlcicpO1xuICAgIGFkZEdldHRlcihUeXBlZEFycmF5UHJvdG90eXBlLCAnYnl0ZU9mZnNldCcpO1xuICAgIGFkZEdldHRlcihUeXBlZEFycmF5UHJvdG90eXBlLCAnYnl0ZUxlbmd0aCcpO1xuICAgIGFkZEdldHRlcihUeXBlZEFycmF5UHJvdG90eXBlLCAnbGVuZ3RoJyk7XG4gIH1cblxuICAkKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB9LCB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAgIGRlZmluZVByb3BlcnR5OiB3cmFwcGVkRGVmaW5lUHJvcGVydHlcbiAgfSk7XG5cbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVFlQRSwgd3JhcHBlciwgQ0xBTVBFRCkge1xuICAgIHZhciBCWVRFUyA9IFRZUEUubWF0Y2goL1xcZCskLylbMF0gLyA4O1xuICAgIHZhciBDT05TVFJVQ1RPUl9OQU1FID0gVFlQRSArIChDTEFNUEVEID8gJ0NsYW1wZWQnIDogJycpICsgJ0FycmF5JztcbiAgICB2YXIgR0VUVEVSID0gJ2dldCcgKyBUWVBFO1xuICAgIHZhciBTRVRURVIgPSAnc2V0JyArIFRZUEU7XG4gICAgdmFyIE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtDT05TVFJVQ1RPUl9OQU1FXTtcbiAgICB2YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICAgIHZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3IgJiYgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgZXhwb3J0ZWQgPSB7fTtcblxuICAgIHZhciBnZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIHJldHVybiBkYXRhLnZpZXdbR0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5ieXRlT2Zmc2V0LCB0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIHNldHRlciA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIGlmIChDTEFNUEVEKSB2YWx1ZSA9ICh2YWx1ZSA9IHJvdW5kKHZhbHVlKSkgPCAwID8gMCA6IHZhbHVlID4gMHhGRiA/IDB4RkYgOiB2YWx1ZSAmIDB4RkY7XG4gICAgICBkYXRhLnZpZXdbU0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5ieXRlT2Zmc2V0LCB2YWx1ZSwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBhZGRFbGVtZW50ID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0aGF0LCBpbmRleCwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0dGVyKHRoaXMsIGluZGV4KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0dGVyKHRoaXMsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBpZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MpIHtcbiAgICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGRhdGEsIG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgQ09OU1RSVUNUT1JfTkFNRSk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBieXRlT2Zmc2V0ID0gMDtcbiAgICAgICAgdmFyIGJ1ZmZlciwgYnl0ZUxlbmd0aCwgbGVuZ3RoO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgbGVuZ3RoID0gdG9JbmRleChkYXRhKTtcbiAgICAgICAgICBieXRlTGVuZ3RoID0gbGVuZ3RoICogQllURVM7XG4gICAgICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVMZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgICBidWZmZXIgPSBkYXRhO1xuICAgICAgICAgIGJ5dGVPZmZzZXQgPSB0b09mZnNldChvZmZzZXQsIEJZVEVTKTtcbiAgICAgICAgICB2YXIgJGxlbiA9IGRhdGEuYnl0ZUxlbmd0aDtcbiAgICAgICAgICBpZiAoJGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoJGxlbiAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gJGxlbiAtIGJ5dGVPZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCA8IDApIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCArIGJ5dGVPZmZzZXQgPiAkbGVuKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheUZyb20uY2FsbChUeXBlZEFycmF5Q29uc3RydWN0b3IsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHNldEludGVybmFsU3RhdGUodGhhdCwge1xuICAgICAgICAgIGJ1ZmZlcjogYnVmZmVyLFxuICAgICAgICAgIGJ5dGVPZmZzZXQ6IGJ5dGVPZmZzZXQsXG4gICAgICAgICAgYnl0ZUxlbmd0aDogYnl0ZUxlbmd0aCxcbiAgICAgICAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICAgICAgICB2aWV3OiBuZXcgRGF0YVZpZXcoYnVmZmVyKVxuICAgICAgICB9KTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSBhZGRFbGVtZW50KHRoYXQsIGluZGV4KyspO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBUeXBlZEFycmF5KTtcbiAgICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSA9IFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoVHlwZWRBcnJheVByb3RvdHlwZSk7XG4gICAgfSBlbHNlIGlmIChUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTKSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSB3cmFwcGVyKGZ1bmN0aW9uIChkdW1teSwgZGF0YSwgdHlwZWRBcnJheU9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKGR1bW15LCBUeXBlZEFycmF5Q29uc3RydWN0b3IsIENPTlNUUlVDVE9SX05BTUUpO1xuICAgICAgICByZXR1cm4gaW5oZXJpdElmUmVxdWlyZWQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHJldHVybiBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKHRvSW5kZXgoZGF0YSkpO1xuICAgICAgICAgIGlmIChpc0FycmF5QnVmZmVyKGRhdGEpKSByZXR1cm4gJGxlbmd0aCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IoZGF0YSwgdG9PZmZzZXQodHlwZWRBcnJheU9mZnNldCwgQllURVMpLCAkbGVuZ3RoKVxuICAgICAgICAgICAgOiB0eXBlZEFycmF5T2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGRhdGEsIHRvT2Zmc2V0KHR5cGVkQXJyYXlPZmZzZXQsIEJZVEVTKSlcbiAgICAgICAgICAgICAgOiBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGRhdGEpO1xuICAgICAgICAgIGlmIChpc1R5cGVkQXJyYXkoZGF0YSkpIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5Q29uc3RydWN0b3IsIGRhdGEpO1xuICAgICAgICAgIHJldHVybiB0eXBlZEFycmF5RnJvbS5jYWxsKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgZGF0YSk7XG4gICAgICAgIH0oKSwgZHVtbXksIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNldFByb3RvdHlwZU9mKSBzZXRQcm90b3R5cGVPZihUeXBlZEFycmF5Q29uc3RydWN0b3IsIFR5cGVkQXJyYXkpO1xuICAgICAgZm9yRWFjaChnZXRPd25Qcm9wZXJ0eU5hbWVzKE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcikpIHtcbiAgICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBrZXksIE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcltrZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlO1xuICAgIH1cblxuICAgIGlmIChUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUuY29uc3RydWN0b3IgIT09IFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcikge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgVHlwZWRBcnJheUNvbnN0cnVjdG9yKTtcbiAgICB9XG5cbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLCBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiwgVHlwZWRBcnJheUNvbnN0cnVjdG9yKTtcblxuICAgIGlmIChUWVBFRF9BUlJBWV9UQUcpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUsIFRZUEVEX0FSUkFZX1RBRywgQ09OU1RSVUNUT1JfTkFNRSk7XG4gICAgfVxuXG4gICAgZXhwb3J0ZWRbQ09OU1RSVUNUT1JfTkFNRV0gPSBUeXBlZEFycmF5Q29uc3RydWN0b3I7XG5cbiAgICAkKHtcbiAgICAgIGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBUeXBlZEFycmF5Q29uc3RydWN0b3IgIT0gTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBzaGFtOiAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXU1xuICAgIH0sIGV4cG9ydGVkKTtcblxuICAgIGlmICghKEJZVEVTX1BFUl9FTEVNRU5UIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcikpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3IsIEJZVEVTX1BFUl9FTEVNRU5ULCBCWVRFUyk7XG4gICAgfVxuXG4gICAgaWYgKCEoQllURVNfUEVSX0VMRU1FTlQgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcbiAgICB9XG5cbiAgICBzZXRTcGVjaWVzKENPTlNUUlVDVE9SX05BTUUpO1xuICB9O1xufSBlbHNlIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgRmxvYXQzMkFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10eXBlZGFycmF5LW9iamVjdHNcbmNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcignRmxvYXQzMicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgRmxvYXQ2NEFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10eXBlZGFycmF5LW9iamVjdHNcbmNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcignRmxvYXQ2NCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDY0QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgSW50OEFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10eXBlZGFycmF5LW9iamVjdHNcbmNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcignSW50OCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgSW50MTZBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ0ludDE2JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDE2QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgSW50MzJBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ0ludDMyJywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgVWludDhBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ1VpbnQ4JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgVWludDhDbGFtcGVkQXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdVaW50OCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OENsYW1wZWRBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSwgdHJ1ZSk7XG4iLCJ2YXIgY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yJyk7XG5cbi8vIGBVaW50MTZBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ1VpbnQxNicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MTZBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJ2YXIgY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yJyk7XG5cbi8vIGBVaW50MzJBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ1VpbnQzMicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1yZWxhdGl2ZS1pbmRleGluZy1tZXRob2RcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2F0JywgZnVuY3Rpb24gYXQoaW5kZXgpIHtcbiAgdmFyIE8gPSBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICB2YXIgcmVsYXRpdmVJbmRleCA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICB2YXIgayA9IHJlbGF0aXZlSW5kZXggPj0gMCA/IHJlbGF0aXZlSW5kZXggOiBsZW4gKyByZWxhdGl2ZUluZGV4O1xuICByZXR1cm4gKGsgPCAwIHx8IGsgPj0gbGVuKSA/IHVuZGVmaW5lZCA6IE9ba107XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkY29weVdpdGhpbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1jb3B5LXdpdGhpbicpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmNvcHlXaXRoaW5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmNvcHl3aXRoaW5cbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2NvcHlXaXRoaW4nLCBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCwgc3RhcnQgLyogLCBlbmQgKi8pIHtcbiAgcmV0dXJuICRjb3B5V2l0aGluLmNhbGwoYVR5cGVkQXJyYXkodGhpcyksIHRhcmdldCwgc3RhcnQsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5ldmVyeTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5ldmVyeWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZXZlcnlcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2V2ZXJ5JywgZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRldmVyeShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZmlsbCcpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZpbGxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaWxsJywgZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiAsIHN0YXJ0LCBlbmQgKi8pIHtcbiAgcmV0dXJuICRmaWxsLmFwcGx5KGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgbGlzdCkge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgQ29uc3RydWN0b3IobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UWVBFRF9BUlJBWV9DT05TVFJVQ1RPUjtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG4vLyBhIHBhcnQgb2YgYFR5cGVkQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyN0eXBlZGFycmF5LXNwZWNpZXMtY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5KSB7XG4gIHJldHVybiBhVHlwZWRBcnJheUNvbnN0cnVjdG9yKHNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbEFycmF5LCBvcmlnaW5hbEFycmF5W1RZUEVEX0FSUkFZX0NPTlNUUlVDVE9SXSkpO1xufTtcbiIsInZhciBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdCcpO1xudmFyIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgbGlzdCkge1xuICByZXR1cm4gYXJyYXlGcm9tQ29uc3RydWN0b3JBbmRMaXN0KHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IoaW5zdGFuY2UpLCBsaXN0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbHRlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maWx0ZXI7XG52YXIgZnJvbVNwZWNpZXNBbmRMaXN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20tc3BlY2llcy1hbmQtbGlzdCcpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZmlsdGVyXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaWx0ZXInLCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgdmFyIGxpc3QgPSAkZmlsdGVyKGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIHJldHVybiBmcm9tU3BlY2llc0FuZExpc3QodGhpcywgbGlzdCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZpbmRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZpbmQnLCBmdW5jdGlvbiBmaW5kKHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmaW5kKGFUeXBlZEFycmF5KHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmaW5kSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZEluZGV4O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbmRJbmRleGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZmluZGluZGV4XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kSW5kZXgnLCBmdW5jdGlvbiBmaW5kSW5kZXgocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZpbmRJbmRleChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZvcmVhY2hcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZvckVhY2gnLCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICRmb3JFYWNoKGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLXdyYXBwZXJzJyk7XG52YXIgZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJykuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDtcbnZhciB0eXBlZEFycmF5RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tJyk7XG5cbi8vIGAlVHlwZWRBcnJheSUuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5mcm9tXG5leHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kKCdmcm9tJywgdHlwZWRBcnJheUZyb20sIFRZUEVEX0FSUkFZU19DT05TVFJVQ1RPUlNfUkVRVUlSRVNfV1JBUFBFUlMpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluY2x1ZGVzO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5pbmNsdWRlc1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnaW5jbHVkZXMnLCBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gIHJldHVybiAkaW5jbHVkZXMoYVR5cGVkQXJyYXkodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5pbmRleG9mXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdpbmRleE9mJywgZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gIHJldHVybiAkaW5kZXhPZihhVHlwZWRBcnJheSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIFBST1BFUl9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5QUk9QRVI7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgQXJyYXlJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXk7XG52YXIgYXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9ycy52YWx1ZXM7XG52YXIgYXJyYXlLZXlzID0gQXJyYXlJdGVyYXRvcnMua2V5cztcbnZhciBhcnJheUVudHJpZXMgPSBBcnJheUl0ZXJhdG9ycy5lbnRyaWVzO1xudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIG5hdGl2ZVR5cGVkQXJyYXlJdGVyYXRvciA9IFVpbnQ4QXJyYXkgJiYgVWludDhBcnJheS5wcm90b3R5cGVbSVRFUkFUT1JdO1xuXG52YXIgUFJPUEVSX0FSUkFZX1ZBTFVFU19OQU1FID0gISFuYXRpdmVUeXBlZEFycmF5SXRlcmF0b3IgJiYgbmF0aXZlVHlwZWRBcnJheUl0ZXJhdG9yLm5hbWUgPT09ICd2YWx1ZXMnO1xuXG52YXIgdHlwZWRBcnJheVZhbHVlcyA9IGZ1bmN0aW9uIHZhbHVlcygpIHtcbiAgcmV0dXJuIGFycmF5VmFsdWVzLmNhbGwoYVR5cGVkQXJyYXkodGhpcykpO1xufTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZW50cmllc1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZW50cmllcycsIGZ1bmN0aW9uIGVudHJpZXMoKSB7XG4gIHJldHVybiBhcnJheUVudHJpZXMuY2FsbChhVHlwZWRBcnJheSh0aGlzKSk7XG59KTtcbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmtleXNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2tleXMnLCBmdW5jdGlvbiBrZXlzKCkge1xuICByZXR1cm4gYXJyYXlLZXlzLmNhbGwoYVR5cGVkQXJyYXkodGhpcykpO1xufSk7XG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnZhbHVlc1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndmFsdWVzJywgdHlwZWRBcnJheVZhbHVlcywgUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgIVBST1BFUl9BUlJBWV9WQUxVRVNfTkFNRSk7XG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUtQEBpdGVyYXRvclxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZChJVEVSQVRPUiwgdHlwZWRBcnJheVZhbHVlcywgUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgIVBST1BFUl9BUlJBWV9WQUxVRVNfTkFNRSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciAkam9pbiA9IFtdLmpvaW47XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmpvaW5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmpvaW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdqb2luJywgZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgcmV0dXJuICRqb2luLmFwcGx5KGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGxhc3RJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWxhc3QtaW5kZXgtb2YnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5sYXN0SW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUubGFzdGluZGV4b2Zcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdsYXN0SW5kZXhPZicsIGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgcmV0dXJuICRsYXN0SW5kZXhPZi5hcHBseShhVHlwZWRBcnJheSh0aGlzKSwgYXJndW1lbnRzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykubWFwO1xudmFyIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUubWFwXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdtYXAnLCBmdW5jdGlvbiBtYXAobWFwZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkbWFwKGFUeXBlZEFycmF5KHRoaXMpLCBtYXBmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGZ1bmN0aW9uIChPLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3ICh0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKE8pKShsZW5ndGgpO1xuICB9KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIFRZUEVEX0FSUkFZU19DT05TVFJVQ1RPUlNfUkVRVUlSRVNfV1JBUFBFUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3JzLXJlcXVpcmUtd3JhcHBlcnMnKTtcblxudmFyIGFUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7XG52YXIgZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5vZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5vZlxuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCgnb2YnLCBmdW5jdGlvbiBvZigvKiAuLi5pdGVtcyAqLykge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IG5ldyAoYVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0aGlzKSkobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4KytdO1xuICByZXR1cm4gcmVzdWx0O1xufSwgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJHJlZHVjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1yZWR1Y2UnKS5sZWZ0O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUucmVkdWNlXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdyZWR1Y2UnLCBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICByZXR1cm4gJHJlZHVjZShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJHJlZHVjZVJpZ2h0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXJlZHVjZScpLnJpZ2h0O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnJlZHVjZVJpY2h0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5yZWR1Y2VyaWdodFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgncmVkdWNlUmlnaHQnLCBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gIHJldHVybiAkcmVkdWNlUmlnaHQoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5yZXZlcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5yZXZlcnNlXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdyZXZlcnNlJywgZnVuY3Rpb24gcmV2ZXJzZSgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIgbGVuZ3RoID0gYVR5cGVkQXJyYXkodGhhdCkubGVuZ3RoO1xuICB2YXIgbWlkZGxlID0gZmxvb3IobGVuZ3RoIC8gMik7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciB2YWx1ZTtcbiAgd2hpbGUgKGluZGV4IDwgbWlkZGxlKSB7XG4gICAgdmFsdWUgPSB0aGF0W2luZGV4XTtcbiAgICB0aGF0W2luZGV4KytdID0gdGhhdFstLWxlbmd0aF07XG4gICAgdGhhdFtsZW5ndGhdID0gdmFsdWU7XG4gIH0gcmV0dXJuIHRoYXQ7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvT2Zmc2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9mZnNldCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXR5cGVkLWFycmF5cyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBuZXcgSW50OEFycmF5KDEpLnNldCh7fSk7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuc2V0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zZXRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3NldCcsIGZ1bmN0aW9uIHNldChhcnJheUxpa2UgLyogLCBvZmZzZXQgKi8pIHtcbiAgYVR5cGVkQXJyYXkodGhpcyk7XG4gIHZhciBvZmZzZXQgPSB0b09mZnNldChhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMSk7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgdmFyIHNyYyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShzcmMpO1xuICB2YXIgaW5kZXggPSAwO1xuICBpZiAobGVuICsgb2Zmc2V0ID4gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGgnKTtcbiAgd2hpbGUgKGluZGV4IDwgbGVuKSB0aGlzW29mZnNldCArIGluZGV4XSA9IHNyY1tpbmRleCsrXTtcbn0sIEZPUkNFRCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgdHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyICRzbGljZSA9IFtdLnNsaWNlO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tdHlwZWQtYXJyYXlzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIG5ldyBJbnQ4QXJyYXkoMSkuc2xpY2UoKTtcbn0pO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc2xpY2VcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3NsaWNlJywgZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICB2YXIgbGlzdCA9ICRzbGljZS5jYWxsKGFUeXBlZEFycmF5KHRoaXMpLCBzdGFydCwgZW5kKTtcbiAgdmFyIEMgPSB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKHRoaXMpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgQyhsZW5ndGgpO1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBsaXN0W2luZGV4KytdO1xuICByZXR1cm4gcmVzdWx0O1xufSwgRk9SQ0VEKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkc29tZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5zb21lO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnNvbWVcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3NvbWUnLCBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkc29tZShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGludGVybmFsU29ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zb3J0Jyk7XG52YXIgRkYgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24nKTtcbnZhciBJRV9PUl9FREdFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pZS1vci1lZGdlJyk7XG52YXIgVjggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBXRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXdlYmtpdC12ZXJzaW9uJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciBVaW50MTZBcnJheSA9IGdsb2JhbC5VaW50MTZBcnJheTtcbnZhciBuYXRpdmVTb3J0ID0gVWludDE2QXJyYXkgJiYgVWludDE2QXJyYXkucHJvdG90eXBlLnNvcnQ7XG5cbi8vIFdlYktpdFxudmFyIEFDQ0VQVF9JTkNPUlJFQ1RfQVJHVU1FTlRTID0gISFuYXRpdmVTb3J0ICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJheSA9IG5ldyBVaW50MTZBcnJheSgyKTtcbiAgYXJyYXkuc29ydChudWxsKTtcbiAgYXJyYXkuc29ydCh7fSk7XG59KTtcblxudmFyIFNUQUJMRV9TT1JUID0gISFuYXRpdmVTb3J0ICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGZlYXR1cmUgZGV0ZWN0aW9uIGNhbiBiZSB0b28gc2xvdywgc28gY2hlY2sgZW5naW5lcyB2ZXJzaW9uc1xuICBpZiAoVjgpIHJldHVybiBWOCA8IDc0O1xuICBpZiAoRkYpIHJldHVybiBGRiA8IDY3O1xuICBpZiAoSUVfT1JfRURHRSkgcmV0dXJuIHRydWU7XG4gIGlmIChXRUJLSVQpIHJldHVybiBXRUJLSVQgPCA2MDI7XG5cbiAgdmFyIGFycmF5ID0gbmV3IFVpbnQxNkFycmF5KDUxNik7XG4gIHZhciBleHBlY3RlZCA9IEFycmF5KDUxNik7XG4gIHZhciBpbmRleCwgbW9kO1xuXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDUxNjsgaW5kZXgrKykge1xuICAgIG1vZCA9IGluZGV4ICUgNDtcbiAgICBhcnJheVtpbmRleF0gPSA1MTUgLSBpbmRleDtcbiAgICBleHBlY3RlZFtpbmRleF0gPSBpbmRleCAtIDIgKiBtb2QgKyAzO1xuICB9XG5cbiAgYXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiAoYSAvIDQgfCAwKSAtIChiIC8gNCB8IDApO1xuICB9KTtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA1MTY7IGluZGV4KyspIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdICE9PSBleHBlY3RlZFtpbmRleF0pIHJldHVybiB0cnVlO1xuICB9XG59KTtcblxudmFyIGdldFNvcnRDb21wYXJlID0gZnVuY3Rpb24gKGNvbXBhcmVmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICBpZiAoY29tcGFyZWZuICE9PSB1bmRlZmluZWQpIHJldHVybiArY29tcGFyZWZuKHgsIHkpIHx8IDA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoeSAhPT0geSkgcmV0dXJuIC0xO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKHggIT09IHgpIHJldHVybiAxO1xuICAgIGlmICh4ID09PSAwICYmIHkgPT09IDApIHJldHVybiAxIC8geCA+IDAgJiYgMSAvIHkgPCAwID8gMSA6IC0xO1xuICAgIHJldHVybiB4ID4geTtcbiAgfTtcbn07XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnNvcnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnNvcnRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3NvcnQnLCBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICB2YXIgYXJyYXkgPSB0aGlzO1xuICBpZiAoY29tcGFyZWZuICE9PSB1bmRlZmluZWQpIGFDYWxsYWJsZShjb21wYXJlZm4pO1xuICBpZiAoU1RBQkxFX1NPUlQpIHJldHVybiBuYXRpdmVTb3J0LmNhbGwoYXJyYXksIGNvbXBhcmVmbik7XG5cbiAgYVR5cGVkQXJyYXkoYXJyYXkpO1xuICB2YXIgYXJyYXlMZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShhcnJheSk7XG4gIHZhciBpdGVtcyA9IEFycmF5KGFycmF5TGVuZ3RoKTtcbiAgdmFyIGluZGV4O1xuXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgaXRlbXNbaW5kZXhdID0gYXJyYXlbaW5kZXhdO1xuICB9XG5cbiAgaXRlbXMgPSBpbnRlcm5hbFNvcnQoYXJyYXksIGdldFNvcnRDb21wYXJlKGNvbXBhcmVmbikpO1xuXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gaXRlbXNbaW5kZXhdO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufSwgIVNUQUJMRV9TT1JUIHx8IEFDQ0VQVF9JTkNPUlJFQ1RfQVJHVU1FTlRTKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zdWJhcnJheWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc3ViYXJyYXlcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3N1YmFycmF5JywgZnVuY3Rpb24gc3ViYXJyYXkoYmVnaW4sIGVuZCkge1xuICB2YXIgTyA9IGFUeXBlZEFycmF5KHRoaXMpO1xuICB2YXIgbGVuZ3RoID0gTy5sZW5ndGg7XG4gIHZhciBiZWdpbkluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGJlZ2luLCBsZW5ndGgpO1xuICB2YXIgQyA9IHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IoTyk7XG4gIHJldHVybiBuZXcgQyhcbiAgICBPLmJ1ZmZlcixcbiAgICBPLmJ5dGVPZmZzZXQgKyBiZWdpbkluZGV4ICogTy5CWVRFU19QRVJfRUxFTUVOVCxcbiAgICB0b0xlbmd0aCgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpKSAtIGJlZ2luSW5kZXgpXG4gICk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEludDhBcnJheSA9IGdsb2JhbC5JbnQ4QXJyYXk7XG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJHRvTG9jYWxlU3RyaW5nID0gW10udG9Mb2NhbGVTdHJpbmc7XG52YXIgJHNsaWNlID0gW10uc2xpY2U7XG5cbi8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbnZhciBUT19MT0NBTEVfU1RSSU5HX0JVRyA9ICEhSW50OEFycmF5ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvTG9jYWxlU3RyaW5nLmNhbGwobmV3IEludDhBcnJheSgxKSk7XG59KTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFsxLCAyXS50b0xvY2FsZVN0cmluZygpICE9IG5ldyBJbnQ4QXJyYXkoWzEsIDJdKS50b0xvY2FsZVN0cmluZygpO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgSW50OEFycmF5LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWxsKFsxLCAyXSk7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnRvbG9jYWxlc3RyaW5nXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCd0b0xvY2FsZVN0cmluZycsIGZ1bmN0aW9uIHRvTG9jYWxlU3RyaW5nKCkge1xuICByZXR1cm4gJHRvTG9jYWxlU3RyaW5nLmFwcGx5KFRPX0xPQ0FMRV9TVFJJTkdfQlVHID8gJHNsaWNlLmNhbGwoYVR5cGVkQXJyYXkodGhpcykpIDogYVR5cGVkQXJyYXkodGhpcyksIGFyZ3VtZW50cyk7XG59LCBGT1JDRUQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXk7XG52YXIgVWludDhBcnJheVByb3RvdHlwZSA9IFVpbnQ4QXJyYXkgJiYgVWludDhBcnJheS5wcm90b3R5cGUgfHwge307XG52YXIgYXJyYXlUb1N0cmluZyA9IFtdLnRvU3RyaW5nO1xudmFyIGFycmF5Sm9pbiA9IFtdLmpvaW47XG5cbmlmIChmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9TdHJpbmcuY2FsbCh7fSk7IH0pKSB7XG4gIGFycmF5VG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodGhpcyk7XG4gIH07XG59XG5cbnZhciBJU19OT1RfQVJSQVlfTUVUSE9EID0gVWludDhBcnJheVByb3RvdHlwZS50b1N0cmluZyAhPSBhcnJheVRvU3RyaW5nO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUudG9zdHJpbmdcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3RvU3RyaW5nJywgYXJyYXlUb1N0cmluZywgSVNfTk9UX0FSUkFZX01FVEhPRCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcblxudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgaGV4MiA9IC9eW1xcZGEtZl17Mn0kL2k7XG52YXIgaGV4NCA9IC9eW1xcZGEtZl17NH0kL2k7XG5cbi8vIGB1bmVzY2FwZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXVuZXNjYXBlLXN0cmluZ1xuJCh7IGdsb2JhbDogdHJ1ZSB9LCB7XG4gIHVuZXNjYXBlOiBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICB2YXIgc3RyID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIGxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2hyLCBzbGljZTtcbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNociA9IHN0ci5jaGFyQXQoaW5kZXgrKyk7XG4gICAgICBpZiAoY2hyID09PSAnJScpIHtcbiAgICAgICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpID09PSAndScpIHtcbiAgICAgICAgICBzbGljZSA9IHN0ci5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNSk7XG4gICAgICAgICAgaWYgKGhleDQudGVzdChzbGljZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBmcm9tQ2hhckNvZGUocGFyc2VJbnQoc2xpY2UsIDE2KSk7XG4gICAgICAgICAgICBpbmRleCArPSA1O1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNsaWNlID0gc3RyLnNsaWNlKGluZGV4LCBpbmRleCArIDIpO1xuICAgICAgICAgIGlmIChoZXgyLnRlc3Qoc2xpY2UpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gZnJvbUNoYXJDb2RlKHBhcnNlSW50KHNsaWNlLCAxNikpO1xuICAgICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IGNocjtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIGdldFdlYWtEYXRhID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhJykuZ2V0V2Vha0RhdGE7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIEFycmF5SXRlcmF0aW9uTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGludGVybmFsU3RhdGVHZXR0ZXJGb3IgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcjtcbnZhciBmaW5kID0gQXJyYXlJdGVyYXRpb25Nb2R1bGUuZmluZDtcbnZhciBmaW5kSW5kZXggPSBBcnJheUl0ZXJhdGlvbk1vZHVsZS5maW5kSW5kZXg7XG52YXIgaWQgPSAwO1xuXG4vLyBmYWxsYmFjayBmb3IgdW5jYXVnaHQgZnJvemVuIGtleXNcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gZnVuY3Rpb24gKHN0b3JlKSB7XG4gIHJldHVybiBzdG9yZS5mcm96ZW4gfHwgKHN0b3JlLmZyb3plbiA9IG5ldyBVbmNhdWdodEZyb3plblN0b3JlKCkpO1xufTtcblxudmFyIFVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZW50cmllcyA9IFtdO1xufTtcblxudmFyIGZpbmRVbmNhdWdodEZyb3plbiA9IGZ1bmN0aW9uIChzdG9yZSwga2V5KSB7XG4gIHJldHVybiBmaW5kKHN0b3JlLmVudHJpZXMsIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICB9KTtcbn07XG5cblVuY2F1Z2h0RnJvemVuU3RvcmUucHJvdG90eXBlID0ge1xuICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgICBpZiAoZW50cnkpIHJldHVybiBlbnRyeVsxXTtcbiAgfSxcbiAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuICEhZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgICBpZiAoZW50cnkpIGVudHJ5WzFdID0gdmFsdWU7XG4gICAgZWxzZSB0aGlzLmVudHJpZXMucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9LFxuICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBpbmRleCA9IGZpbmRJbmRleCh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKH5pbmRleCkgdGhpcy5lbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICAgIHNldEludGVybmFsU3RhdGUodGhhdCwge1xuICAgICAgICB0eXBlOiBDT05TVFJVQ1RPUl9OQU1FLFxuICAgICAgICBpZDogaWQrKyxcbiAgICAgICAgZnJvemVuOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgaXRlcmF0ZShpdGVyYWJsZSwgdGhhdFtBRERFUl0sIHsgdGhhdDogdGhhdCwgQVNfRU5UUklFUzogSVNfTUFQIH0pO1xuICAgIH0pO1xuXG4gICAgdmFyIGdldEludGVybmFsU3RhdGUgPSBpbnRlcm5hbFN0YXRlR2V0dGVyRm9yKENPTlNUUlVDVE9SX05BTUUpO1xuXG4gICAgdmFyIGRlZmluZSA9IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoYXQpO1xuICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrRGF0YShhbk9iamVjdChrZXkpLCB0cnVlKTtcbiAgICAgIGlmIChkYXRhID09PSB0cnVlKSB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICBlbHNlIGRhdGFbc3RhdGUuaWRdID0gdmFsdWU7XG4gICAgICByZXR1cm4gdGhhdDtcbiAgICB9O1xuXG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIGB7IFdlYWtNYXAsIFdlYWtTZXQgfS5wcm90b3R5cGUuZGVsZXRlKGtleSlgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuZGVsZXRlXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQucHJvdG90eXBlLmRlbGV0ZVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgaGFzT3duKGRhdGEsIHN0YXRlLmlkKSAmJiBkZWxldGUgZGF0YVtzdGF0ZS5pZF07XG4gICAgICB9LFxuICAgICAgLy8gYHsgV2Vha01hcCwgV2Vha1NldCB9LnByb3RvdHlwZS5oYXMoa2V5KWAgbWV0aG9kc1xuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrbWFwLnByb3RvdHlwZS5oYXNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha3NldC5wcm90b3R5cGUuaGFzXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgaGFzT3duKGRhdGEsIHN0YXRlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBJU19NQVAgPyB7XG4gICAgICAvLyBgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlgIG1ldGhvZFxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrbWFwLnByb3RvdHlwZS5nZXRcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoaXNPYmplY3Qoa2V5KSkge1xuICAgICAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoa2V5KTtcbiAgICAgICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUoc3RhdGUpLmdldChrZXkpO1xuICAgICAgICAgIHJldHVybiBkYXRhID8gZGF0YVtzdGF0ZS5pZF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBgV2Vha01hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuc2V0XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkZWZpbmUodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSA6IHtcbiAgICAgIC8vIGBXZWFrU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha3NldC5wcm90b3R5cGUuYWRkXG4gICAgICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5lKHRoaXMsIHZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBDO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBJbnRlcm5hbE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhJyk7XG52YXIgY29sbGVjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uJyk7XG52YXIgY29sbGVjdGlvbldlYWsgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi13ZWFrJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZW5mb3JjZUl0ZXJuYWxTdGF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpLmVuZm9yY2U7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xuXG52YXIgSVNfSUUxMSA9ICFnbG9iYWwuQWN0aXZlWE9iamVjdCAmJiAnQWN0aXZlWE9iamVjdCcgaW4gZ2xvYmFsO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG52YXIgSW50ZXJuYWxXZWFrTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICB9O1xufTtcblxuLy8gYFdlYWtNYXBgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWttYXAtY29uc3RydWN0b3JcbnZhciAkV2Vha01hcCA9IG1vZHVsZS5leHBvcnRzID0gY29sbGVjdGlvbignV2Vha01hcCcsIHdyYXBwZXIsIGNvbGxlY3Rpb25XZWFrKTtcblxuLy8gSUUxMSBXZWFrTWFwIGZyb3plbiBrZXlzIGZpeFxuLy8gV2UgY2FuJ3QgdXNlIGZlYXR1cmUgZGV0ZWN0aW9uIGJlY2F1c2UgaXQgY3Jhc2ggc29tZSBvbGQgSUUgYnVpbGRzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNDg1XG5pZiAoTkFUSVZFX1dFQUtfTUFQICYmIElTX0lFMTEpIHtcbiAgSW50ZXJuYWxXZWFrTWFwID0gY29sbGVjdGlvbldlYWsuZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgJ1dlYWtNYXAnLCB0cnVlKTtcbiAgSW50ZXJuYWxNZXRhZGF0YU1vZHVsZS5lbmFibGUoKTtcbiAgdmFyIFdlYWtNYXBQcm90b3R5cGUgPSAkV2Vha01hcC5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVEZWxldGUgPSBXZWFrTWFwUHJvdG90eXBlWydkZWxldGUnXTtcbiAgdmFyIG5hdGl2ZUhhcyA9IFdlYWtNYXBQcm90b3R5cGUuaGFzO1xuICB2YXIgbmF0aXZlR2V0ID0gV2Vha01hcFByb3RvdHlwZS5nZXQ7XG4gIHZhciBuYXRpdmVTZXQgPSBXZWFrTWFwUHJvdG90eXBlLnNldDtcbiAgcmVkZWZpbmVBbGwoV2Vha01hcFByb3RvdHlwZSwge1xuICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoaXNPYmplY3Qoa2V5KSAmJiAhaXNFeHRlbnNpYmxlKGtleSkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZW5mb3JjZUl0ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFzdGF0ZS5mcm96ZW4pIHN0YXRlLmZyb3plbiA9IG5ldyBJbnRlcm5hbFdlYWtNYXAoKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZURlbGV0ZS5jYWxsKHRoaXMsIGtleSkgfHwgc3RhdGUuZnJvemVuWydkZWxldGUnXShrZXkpO1xuICAgICAgfSByZXR1cm4gbmF0aXZlRGVsZXRlLmNhbGwodGhpcywga2V5KTtcbiAgICB9LFxuICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgaWYgKGlzT2JqZWN0KGtleSkgJiYgIWlzRXh0ZW5zaWJsZShrZXkpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGVuZm9yY2VJdGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghc3RhdGUuZnJvemVuKSBzdGF0ZS5mcm96ZW4gPSBuZXcgSW50ZXJuYWxXZWFrTWFwKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVIYXMuY2FsbCh0aGlzLCBrZXkpIHx8IHN0YXRlLmZyb3plbi5oYXMoa2V5KTtcbiAgICAgIH0gcmV0dXJuIG5hdGl2ZUhhcy5jYWxsKHRoaXMsIGtleSk7XG4gICAgfSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIGlmIChpc09iamVjdChrZXkpICYmICFpc0V4dGVuc2libGUoa2V5KSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBlbmZvcmNlSXRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoIXN0YXRlLmZyb3plbikgc3RhdGUuZnJvemVuID0gbmV3IEludGVybmFsV2Vha01hcCgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlSGFzLmNhbGwodGhpcywga2V5KSA/IG5hdGl2ZUdldC5jYWxsKHRoaXMsIGtleSkgOiBzdGF0ZS5mcm96ZW4uZ2V0KGtleSk7XG4gICAgICB9IHJldHVybiBuYXRpdmVHZXQuY2FsbCh0aGlzLCBrZXkpO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGlzT2JqZWN0KGtleSkgJiYgIWlzRXh0ZW5zaWJsZShrZXkpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGVuZm9yY2VJdGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghc3RhdGUuZnJvemVuKSBzdGF0ZS5mcm96ZW4gPSBuZXcgSW50ZXJuYWxXZWFrTWFwKCk7XG4gICAgICAgIG5hdGl2ZUhhcy5jYWxsKHRoaXMsIGtleSkgPyBuYXRpdmVTZXQuY2FsbCh0aGlzLCBrZXksIHZhbHVlKSA6IHN0YXRlLmZyb3plbi5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgbmF0aXZlU2V0LmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNvbGxlY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbicpO1xudmFyIGNvbGxlY3Rpb25XZWFrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24td2VhaycpO1xuXG4vLyBgV2Vha1NldGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha3NldC1jb25zdHJ1Y3RvclxuY29sbGVjdGlvbignV2Vha1NldCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrU2V0KCkgeyByZXR1cm4gaW5pdCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIGNvbGxlY3Rpb25XZWFrKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFVTRV9GVU5DVElPTl9DT05TVFJVQ1RPUiA9ICdVU0VfRlVOQ1RJT05fQ09OU1RSVUNUT1InO1xudmFyIEFTWU5DX0lURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdhc3luY0l0ZXJhdG9yJyk7XG52YXIgQXN5bmNJdGVyYXRvciA9IGdsb2JhbC5Bc3luY0l0ZXJhdG9yO1xudmFyIFBhc3NlZEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBzaGFyZWQuQXN5bmNJdGVyYXRvclByb3RvdHlwZTtcbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBwcm90b3R5cGU7XG5cbmlmIChQYXNzZWRBc3luY0l0ZXJhdG9yUHJvdG90eXBlKSB7XG4gIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBQYXNzZWRBc3luY0l0ZXJhdG9yUHJvdG90eXBlO1xufSBlbHNlIGlmIChpc0NhbGxhYmxlKEFzeW5jSXRlcmF0b3IpKSB7XG4gIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZTtcbn0gZWxzZSBpZiAoc2hhcmVkW1VTRV9GVU5DVElPTl9DT05TVFJVQ1RPUl0gfHwgZ2xvYmFsW1VTRV9GVU5DVElPTl9DT05TVFJVQ1RPUl0pIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gd2UgaGF2ZSBubyBhbHRlcm5hdGl2ZXMgd2l0aG91dCB1c2FnZSBvZiBtb2Rlcm4gc3ludGF4XG4gICAgcHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoRnVuY3Rpb24oJ3JldHVybiBhc3luYyBmdW5jdGlvbiooKXt9KCknKSgpKSkpO1xuICAgIGlmIChnZXRQcm90b3R5cGVPZihwcm90b3R5cGUpID09PSBPYmplY3QucHJvdG90eXBlKSBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gcHJvdG90eXBlO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59XG5cbmlmICghQXN5bmNJdGVyYXRvclByb3RvdHlwZSkgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuZWxzZSBpZiAoSVNfUFVSRSkgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IGNyZWF0ZShBc3luY0l0ZXJhdG9yUHJvdG90eXBlKTtcblxuaWYgKCFpc0NhbGxhYmxlKEFzeW5jSXRlcmF0b3JQcm90b3R5cGVbQVNZTkNfSVRFUkFUT1JdKSkge1xuICByZWRlZmluZShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBBU1lOQ19JVEVSQVRPUiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBc3luY0l0ZXJhdG9yUHJvdG90eXBlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLXByb3RvdHlwZScpO1xuXG52YXIgUHJvbWlzZSA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKTtcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG5cbnZhciBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24gPSBmdW5jdGlvbiAocmVzdWx0LCByZXNvbHZlLCByZWplY3QpIHtcbiAgdmFyIGRvbmUgPSByZXN1bHQuZG9uZTtcbiAgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXNvbHZlKHsgZG9uZTogZG9uZSwgdmFsdWU6IHZhbHVlIH0pO1xuICB9LCByZWplY3QpO1xufTtcblxudmFyIEFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoaXRlcmF0b3IpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgaXRlcmF0b3I6IGFuT2JqZWN0KGl0ZXJhdG9yKSxcbiAgICBuZXh0OiBpdGVyYXRvci5uZXh0XG4gIH0pO1xufTtcblxuQXN5bmNGcm9tU3luY0l0ZXJhdG9yLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKGNyZWF0ZShBc3luY0l0ZXJhdG9yUHJvdG90eXBlKSwge1xuICBuZXh0OiBmdW5jdGlvbiBuZXh0KGFyZykge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgdmFyIGhhc0FyZyA9ICEhYXJndW1lbnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KHN0YXRlLm5leHQuYXBwbHkoc3RhdGUuaXRlcmF0b3IsIGhhc0FyZyA/IFthcmddIDogW10pKTtcbiAgICAgIGFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbihyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH0sXG4gICdyZXR1cm4nOiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5pdGVyYXRvcjtcbiAgICB2YXIgaGFzQXJnID0gISFhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgJHJldHVybiA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgICAgaWYgKCRyZXR1cm4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlc29sdmUoeyBkb25lOiB0cnVlLCB2YWx1ZTogYXJnIH0pO1xuICAgICAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KCRyZXR1cm4uYXBwbHkoaXRlcmF0b3IsIGhhc0FyZyA/IFthcmddIDogW10pKTtcbiAgICAgIGFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbihyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH0sXG4gICd0aHJvdyc6IGZ1bmN0aW9uIChhcmcpIHtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLml0ZXJhdG9yO1xuICAgIHZhciBoYXNBcmcgPSAhIWFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciAkdGhyb3cgPSBnZXRNZXRob2QoaXRlcmF0b3IsICd0aHJvdycpO1xuICAgICAgaWYgKCR0aHJvdyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gcmVqZWN0KGFyZyk7XG4gICAgICB2YXIgcmVzdWx0ID0gYW5PYmplY3QoJHRocm93LmFwcGx5KGl0ZXJhdG9yLCBoYXNBcmcgPyBbYXJnXSA6IFtdKSk7XG4gICAgICBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24ocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBc3luY0Zyb21TeW5jSXRlcmF0b3I7XG4iLCJ2YXIgQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWZyb20tc3luYy1pdGVyYXRvcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBBU1lOQ19JVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnYXN5bmNJdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdXNpbmdJdGVyYXRvcikge1xuICB2YXIgbWV0aG9kID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBnZXRNZXRob2QoaXQsIEFTWU5DX0lURVJBVE9SKSA6IHVzaW5nSXRlcmF0b3I7XG4gIHJldHVybiBtZXRob2QgPyBhbk9iamVjdChtZXRob2QuY2FsbChpdCkpIDogbmV3IEFzeW5jRnJvbVN5bmNJdGVyYXRvcihnZXRJdGVyYXRvcihpdCkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SKSB7XG4gIHJldHVybiBnbG9iYWxbQ09OU1RSVUNUT1JdLnByb3RvdHlwZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1mcm9tLWFzeW5jXG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG5cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjtcblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19UT19BUlJBWSA9IFRZUEUgPT0gMDtcbiAgdmFyIElTX0ZPUl9FQUNIID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICByZXR1cm4gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdGFyZ2V0KSB7XG4gICAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICAgIHZhciBQcm9taXNlID0gZ2V0QnVpbHRJbignUHJvbWlzZScpO1xuICAgIHZhciBuZXh0ID0gYUNhbGxhYmxlKGl0ZXJhdG9yLm5leHQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIE1BUFBJTkcgPSBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChNQVBQSU5HIHx8ICFJU19UT19BUlJBWSkgYUNhbGxhYmxlKGZuKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgY2xvc2VJdGVyYXRpb24gPSBmdW5jdGlvbiAobWV0aG9kLCBhcmd1bWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciByZXR1cm5NZXRob2QgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICAgICAgICBpZiAocmV0dXJuTWV0aG9kKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIG1ldGhvZChhcmd1bWVudCk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IyKSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcjIpO1xuICAgICAgICB9IG1ldGhvZChhcmd1bWVudCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgb25FcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBjbG9zZUl0ZXJhdGlvbihyZWplY3QsIGVycm9yKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChJU19UT19BUlJBWSAmJiAoaW5kZXggPiBNQVhfU0FGRV9JTlRFR0VSKSAmJiBNQVBQSU5HKSB7XG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1RoZSBhbGxvd2VkIG51bWJlciBvZiBpdGVyYXRpb25zIGhhcyBiZWVuIGV4Y2VlZGVkJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChuZXh0LmNhbGwoaXRlcmF0b3IpKSkudGhlbihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGFuT2JqZWN0KHN0ZXApLmRvbmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoSVNfVE9fQVJSQVkpIHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldC5sZW5ndGggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShJU19TT01FID8gZmFsc2UgOiBJU19FVkVSWSB8fCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKE1BUFBJTkcpIHtcbiAgICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShJU19UT19BUlJBWSA/IGZuKHZhbHVlLCBpbmRleCkgOiBmbih2YWx1ZSkpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoSVNfRk9SX0VBQ0gpIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPyBsb29wKCkgOiBjbG9zZUl0ZXJhdGlvbihyZXNvbHZlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfVE9fQVJSQVkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaW5kZXgrK10gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA/IGNsb3NlSXRlcmF0aW9uKHJlc29sdmUsIElTX1NPTUUgfHwgdmFsdWUpIDogbG9vcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LCBvbkVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGFyZ2V0W2luZGV4KytdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICBsb29wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeyBvbkVycm9yKGVycm9yKTsgfVxuICAgICAgICAgIH0sIG9uRXJyb3IpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjIpIHsgb25FcnJvcihlcnJvcjIpOyB9XG4gICAgICB9O1xuXG4gICAgICBsb29wKCk7XG4gICAgfSk7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdG9BcnJheTogY3JlYXRlTWV0aG9kKDApLFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMSksXG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoMiksXG4gIHNvbWU6IGNyZWF0ZU1ldGhvZCgzKSxcbiAgZmluZDogY3JlYXRlTWV0aG9kKDQpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGdldEFzeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWFzeW5jLWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgZ2V0VmlydHVhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnRyeS12aXJ0dWFsJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtZnJvbS1zeW5jLWl0ZXJhdG9yJyk7XG52YXIgdG9BcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1pdGVyYXRpb24nKS50b0FycmF5O1xuXG52YXIgQVNZTkNfSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2FzeW5jSXRlcmF0b3InKTtcbnZhciBhcnJheUl0ZXJhdG9yID0gZ2V0VmlydHVhbCgnQXJyYXknKS52YWx1ZXM7XG5cbi8vIGBBcnJheS5mcm9tQXN5bmNgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZnJvbS1hc3luY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tQXN5bmMoYXN5bmNJdGVtcyAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBDID0gdGhpcztcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBmbiA9IGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciB0aGlzQXJnID0gYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG5ldyAoZ2V0QnVpbHRJbignUHJvbWlzZScpKShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoYXN5bmNJdGVtcyk7XG4gICAgaWYgKG1hcGZuICE9PSB1bmRlZmluZWQpIG1hcGZuID0gYmluZChtYXBmbiwgdGhpc0FyZywgMik7XG4gICAgdmFyIHVzaW5nQXN5bmNJdGVyYXRvciA9IGdldE1ldGhvZChPLCBBU1lOQ19JVEVSQVRPUik7XG4gICAgdmFyIHVzaW5nU3luY0l0ZXJhdG9yID0gdXNpbmdBc3luY0l0ZXJhdG9yID8gdW5kZWZpbmVkIDogZ2V0SXRlcmF0b3JNZXRob2QoTykgfHwgYXJyYXlJdGVyYXRvcjtcbiAgICB2YXIgQSA9IGlzQ29uc3RydWN0b3IoQykgPyBuZXcgQygpIDogW107XG4gICAgdmFyIGl0ZXJhdG9yID0gdXNpbmdBc3luY0l0ZXJhdG9yXG4gICAgICA/IGdldEFzeW5jSXRlcmF0b3IoTywgdXNpbmdBc3luY0l0ZXJhdG9yKVxuICAgICAgOiBuZXcgQXN5bmNGcm9tU3luY0l0ZXJhdG9yKGdldEl0ZXJhdG9yKE8sIHVzaW5nU3luY0l0ZXJhdG9yKSk7XG4gICAgcmVzb2x2ZSh0b0FycmF5KGl0ZXJhdG9yLCBtYXBmbiwgQSkpO1xuICB9KTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmcm9tQXN5bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbS1hc3luYycpO1xuXG4vLyBgQXJyYXkuZnJvbUFzeW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZyb20tYXN5bmNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tQXN5bmM6IGZyb21Bc3luY1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiByZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbHRlclJlamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maWx0ZXJSZWplY3Q7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJPdXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZpbHRlck91dDogZnVuY3Rpb24gZmlsdGVyT3V0KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXJSZWplY3QodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuYWRkVG9VbnNjb3BhYmxlcygnZmlsdGVyT3V0Jyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmlsdGVyUmVqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbHRlclJlamVjdDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlclJlamVjdGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maWx0ZXJpbmdcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmlsdGVyUmVqZWN0OiBmdW5jdGlvbiBmaWx0ZXJSZWplY3QoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlclJlamVjdCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdmaWx0ZXJSZWplY3QnKTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZmluZExhc3QsIGZpbmRMYXN0SW5kZXggfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19GSU5EX0xBU1RfSU5ERVggPSBUWVBFID09IDE7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBpbmRleCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIHdoaWxlIChpbmRleC0tID4gMCkge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiB2YWx1ZTsgLy8gZmluZExhc3RcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gaW5kZXg7IC8vIGZpbmRMYXN0SW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfTEFTVF9JTkRFWCA/IC0xIDogdW5kZWZpbmVkO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZExhc3RgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuICBmaW5kTGFzdDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0SW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuICBmaW5kTGFzdEluZGV4OiBjcmVhdGVNZXRob2QoMSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZExhc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdCcpLmZpbmRMYXN0O1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmluZExhc3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmluZC1mcm9tLWxhc3RcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmluZExhc3Q6IGZ1bmN0aW9uIGZpbmRMYXN0KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kTGFzdCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdmaW5kTGFzdCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmRMYXN0SW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdCcpLmZpbmRMYXN0SW5kZXg7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kTGFzdEluZGV4YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbmQtZnJvbS1sYXN0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZpbmRMYXN0SW5kZXg6IGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmRMYXN0SW5kZXgodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuYWRkVG9VbnNjb3BhYmxlcygnZmluZExhc3RJbmRleCcpO1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBvYmplY3RDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGFycmF5RnJvbUNvbnN0cnVjdG9yQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tLWNvbnN0cnVjdG9yLWFuZC1saXN0Jyk7XG5cbnZhciBwdXNoID0gW10ucHVzaDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQsIHNwZWNpZmljQ29uc3RydWN0b3IpIHtcbiAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICB2YXIgdGFyZ2V0ID0gb2JqZWN0Q3JlYXRlKG51bGwpO1xuICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2Uoc2VsZik7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBDb25zdHJ1Y3Rvciwga2V5LCB2YWx1ZTtcbiAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgIGtleSA9IHRvUHJvcGVydHlLZXkoYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pKTtcbiAgICAvLyBpbiBzb21lIElFMTAgYnVpbGRzLCBgaGFzT3duUHJvcGVydHlgIHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdCBvbiBpbnRlZ2VyIGtleXNcbiAgICAvLyBidXQgc2luY2UgaXQncyBhIGBudWxsYCBwcm90b3R5cGUgb2JqZWN0LCB3ZSBjYW4gc2FmZWx5IHVzZSBgaW5gXG4gICAgaWYgKGtleSBpbiB0YXJnZXQpIHB1c2guY2FsbCh0YXJnZXRba2V5XSwgdmFsdWUpO1xuICAgIGVsc2UgdGFyZ2V0W2tleV0gPSBbdmFsdWVdO1xuICB9XG4gIGlmIChzcGVjaWZpY0NvbnN0cnVjdG9yKSB7XG4gICAgQ29uc3RydWN0b3IgPSBzcGVjaWZpY0NvbnN0cnVjdG9yKE8pO1xuICAgIGlmIChDb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgIGZvciAoa2V5IGluIHRhcmdldCkgdGFyZ2V0W2tleV0gPSBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QoQ29uc3RydWN0b3IsIHRhcmdldFtrZXldKTtcbiAgICB9XG4gIH0gcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZ3JvdXBCeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1ncm91cC1ieScpO1xudmFyIGFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZ3JvdXBpbmdcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZ3JvdXBCeTogZnVuY3Rpb24gZ3JvdXBCeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICRncm91cEJ5KHRoaXMsIGNhbGxiYWNrZm4sIHRoaXNBcmcsIGFycmF5U3BlY2llc0NvbnN0cnVjdG9yKTtcbiAgfVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2dyb3VwQnknKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2Zyb3plbiAtLSBzYWZlXG52YXIgaXNGcm96ZW4gPSBPYmplY3QuaXNGcm96ZW47XG5cbnZhciBpc0Zyb3plblN0cmluZ0FycmF5ID0gZnVuY3Rpb24gKGFycmF5LCBhbGxvd1VuZGVmaW5lZCkge1xuICBpZiAoIWlzRnJvemVuIHx8ICFpc0FycmF5KGFycmF5KSB8fCAhaXNGcm96ZW4oYXJyYXkpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciBlbGVtZW50O1xuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBlbGVtZW50ID0gYXJyYXlbaW5kZXgrK107XG4gICAgaWYgKCEodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IChhbGxvd1VuZGVmaW5lZCAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSByZXR1cm4gbGVuZ3RoICE9PSAwO1xufTtcblxuLy8gYEFycmF5LmlzVGVtcGxhdGVPYmplY3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktaXMtdGVtcGxhdGUtb2JqZWN0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNUZW1wbGF0ZU9iamVjdDogZnVuY3Rpb24gaXNUZW1wbGF0ZU9iamVjdCh2YWx1ZSkge1xuICAgIGlmICghaXNGcm96ZW5TdHJpbmdBcnJheSh2YWx1ZSwgdHJ1ZSkpIHJldHVybiBmYWxzZTtcbiAgICB2YXIgcmF3ID0gdmFsdWUucmF3O1xuICAgIGlmIChyYXcubGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGggfHwgIWlzRnJvemVuU3RyaW5nQXJyYXkocmF3LCBmYWxzZSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4YCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9rZWl0aGFtdXMvcHJvcG9zYWwtYXJyYXktbGFzdFxuaWYgKERFU0NSSVBUT1JTICYmICEoJ2xhc3RJbmRleCcgaW4gW10pKSB7XG4gIGRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgJ2xhc3RJbmRleCcsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBsYXN0SW5kZXgoKSB7XG4gICAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgICAgcmV0dXJuIGxlbiA9PSAwID8gMCA6IGxlbiAtIDE7XG4gICAgfVxuICB9KTtcblxuICBhZGRUb1Vuc2NvcGFibGVzKCdsYXN0SW5kZXgnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhgIGFjY2Vzc29yXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2VpdGhhbXVzL3Byb3Bvc2FsLWFycmF5LWxhc3RcbmlmIChERVNDUklQVE9SUyAmJiAhKCdsYXN0SXRlbScgaW4gW10pKSB7XG4gIGRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgJ2xhc3RJdGVtJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGxhc3RJdGVtKCkge1xuICAgICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICAgIHJldHVybiBsZW4gPT0gMCA/IHVuZGVmaW5lZCA6IE9bbGVuIC0gMV07XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIGxhc3RJdGVtKHZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgICAgcmV0dXJuIE9bbGVuID09IDAgPyAwIDogbGVuIC0gMV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGFkZFRvVW5zY29wYWJsZXMoJ2xhc3RJdGVtJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbnZhciBwdXNoID0gW10ucHVzaDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS51bmlxdWVCeWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS11bmlxdWVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdW5pcXVlQnkocmVzb2x2ZXIpIHtcbiAgdmFyIHRoYXQgPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHRoYXQpO1xuICB2YXIgcmVzdWx0ID0gYXJyYXlTcGVjaWVzQ3JlYXRlKHRoYXQsIDApO1xuICB2YXIgTWFwID0gZ2V0QnVpbHRJbignTWFwJyk7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciByZXNvbHZlckZ1bmN0aW9uLCBpbmRleCwgaXRlbSwga2V5O1xuICBpZiAocmVzb2x2ZXIgIT0gbnVsbCkgcmVzb2x2ZXJGdW5jdGlvbiA9IGFDYWxsYWJsZShyZXNvbHZlcik7XG4gIGVsc2UgcmVzb2x2ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgaXRlbSA9IHRoYXRbaW5kZXhdO1xuICAgIGtleSA9IHJlc29sdmVyRnVuY3Rpb24oaXRlbSk7XG4gICAgaWYgKCFtYXAuaGFzKGtleSkpIG1hcC5zZXQoa2V5LCBpdGVtKTtcbiAgfVxuICBtYXAuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBwdXNoLmNhbGwocmVzdWx0LCB2YWx1ZSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgdW5pcXVlQnkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktdW5pcXVlLWJ5Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUudW5pcXVlQnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktdW5pcXVlXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIHVuaXF1ZUJ5OiB1bmlxdWVCeVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ3VuaXF1ZUJ5Jyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBBc3luY0l0ZXJhdG9yQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKCkge1xuICBhbkluc3RhbmNlKHRoaXMsIEFzeW5jSXRlcmF0b3JDb25zdHJ1Y3Rvcik7XG59O1xuXG5Bc3luY0l0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gQXN5bmNJdGVyYXRvclByb3RvdHlwZTtcblxuaWYgKCFoYXNPd24oQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRykpIHtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsICdBc3luY0l0ZXJhdG9yJyk7XG59XG5cbmlmIChJU19QVVJFIHx8ICFoYXNPd24oQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJykgfHwgQXN5bmNJdGVyYXRvclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBBc3luY0l0ZXJhdG9yQ29uc3RydWN0b3IpO1xufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBBc3luY0l0ZXJhdG9yOiBBc3luY0l0ZXJhdG9yQ29uc3RydWN0b3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLXByb3RvdHlwZScpO1xuXG52YXIgUHJvbWlzZSA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKTtcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuZXh0SGFuZGxlciwgSVNfSVRFUkFUT1IpIHtcbiAgdmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3Ioc3RhdGUpIHtcbiAgICBzdGF0ZS5uZXh0ID0gYUNhbGxhYmxlKHN0YXRlLml0ZXJhdG9yLm5leHQpO1xuICAgIHN0YXRlLmRvbmUgPSBmYWxzZTtcbiAgICBzdGF0ZS5pZ25vcmVBcmd1bWVudCA9ICFJU19JVEVSQVRPUjtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHN0YXRlKTtcbiAgfTtcblxuICBBc3luY0l0ZXJhdG9yUHJveHkucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoY3JlYXRlKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUpLCB7XG4gICAgbmV4dDogZnVuY3Rpb24gbmV4dChhcmcpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciBoYXNBcmd1bWVudCA9ICEhYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoYXQpO1xuICAgICAgICB2YXIgYXJncyA9IGhhc0FyZ3VtZW50ID8gW3N0YXRlLmlnbm9yZUFyZ3VtZW50ID8gdW5kZWZpbmVkIDogYXJnXSA6IElTX0lURVJBVE9SID8gW10gOiBbdW5kZWZpbmVkXTtcbiAgICAgICAgc3RhdGUuaWdub3JlQXJndW1lbnQgPSBmYWxzZTtcbiAgICAgICAgcmVzb2x2ZShzdGF0ZS5kb25lID8geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH0gOiBhbk9iamVjdChuZXh0SGFuZGxlci5jYWxsKHN0YXRlLCBQcm9taXNlLCBhcmdzKSkpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoYXQpO1xuICAgICAgICB2YXIgaXRlcmF0b3IgPSBzdGF0ZS5pdGVyYXRvcjtcbiAgICAgICAgc3RhdGUuZG9uZSA9IHRydWU7XG4gICAgICAgIHZhciAkJHJldHVybiA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgICAgICBpZiAoJCRyZXR1cm4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlc29sdmUoeyBkb25lOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgkJHJldHVybi5jYWxsKGl0ZXJhdG9yLCB2YWx1ZSkpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgIGFuT2JqZWN0KHJlc3VsdCk7XG4gICAgICAgICAgcmVzb2x2ZSh7IGRvbmU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgJ3Rocm93JzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoYXQpO1xuICAgICAgICB2YXIgaXRlcmF0b3IgPSBzdGF0ZS5pdGVyYXRvcjtcbiAgICAgICAgc3RhdGUuZG9uZSA9IHRydWU7XG4gICAgICAgIHZhciAkJHRocm93ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAndGhyb3cnKTtcbiAgICAgICAgaWYgKCQkdGhyb3cgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlamVjdCh2YWx1ZSk7XG4gICAgICAgIHJlc29sdmUoJCR0aHJvdy5jYWxsKGl0ZXJhdG9yLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICBpZiAoIUlTX0lURVJBVE9SKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEFzeW5jSXRlcmF0b3JQcm94eS5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcsICdHZW5lcmF0b3InKTtcbiAgfVxuXG4gIHJldHVybiBBc3luY0l0ZXJhdG9yUHJveHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xuXG52YXIgQXN5bmNJdGVyYXRvclByb3h5ID0gY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChQcm9taXNlLCBhcmdzKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXM7XG4gIHZhciBpdGVyYXRvciA9IHN0YXRlLml0ZXJhdG9yO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoYW5PYmplY3Qoc3RhdGUubmV4dC5hcHBseShpdGVyYXRvciwgYXJncykpKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgaWYgKGFuT2JqZWN0KHN0ZXApLmRvbmUpIHtcbiAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IFtzdGF0ZS5pbmRleCsrLCBzdGVwLnZhbHVlXSB9O1xuICB9KTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgYXNJbmRleGVkUGFpcnM6IGZ1bmN0aW9uIGFzSW5kZXhlZFBhaXJzKCkge1xuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIGluZGV4OiAwXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qb3NpdGl2ZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlcicpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcblxudmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoUHJvbWlzZSwgYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgYW5PYmplY3Qoc3RhdGUubmV4dC5hcHBseShzdGF0ZS5pdGVyYXRvciwgc3RhdGUucmVtYWluaW5nID8gW10gOiBhcmdzKSlcbiAgICAgICAgKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChhbk9iamVjdChzdGVwKS5kb25lKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICByZXNvbHZlKHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUucmVtYWluaW5nKSB7XG4gICAgICAgICAgICAgIHN0YXRlLnJlbWFpbmluZy0tO1xuICAgICAgICAgICAgICBsb29wKCk7XG4gICAgICAgICAgICB9IGVsc2UgcmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogc3RlcC52YWx1ZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgcmVqZWN0KGVycik7IH1cbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IH1cbiAgICB9O1xuXG4gICAgbG9vcCgpO1xuICB9KTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZHJvcDogZnVuY3Rpb24gZHJvcChsaW1pdCkge1xuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIHJlbWFpbmluZzogdG9Qb3NpdGl2ZUludGVnZXIobGltaXQpXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGV2ZXJ5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbicpLmV2ZXJ5O1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGZuKSB7XG4gICAgcmV0dXJuICRldmVyeSh0aGlzLCBmbik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJveHkgPSBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKFByb21pc2UsIGFyZ3MpIHtcbiAgdmFyIHN0YXRlID0gdGhpcztcbiAgdmFyIGZpbHRlcmVyID0gc3RhdGUuZmlsdGVyZXI7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChzdGF0ZS5uZXh0LmFwcGx5KHN0YXRlLml0ZXJhdG9yLCBhcmdzKSkpLnRoZW4oZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGFuT2JqZWN0KHN0ZXApLmRvbmUpIHtcbiAgICAgICAgICAgICAgc3RhdGUuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUoeyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGZpbHRlcmVyKHZhbHVlKSkudGhlbihmdW5jdGlvbiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCA/IHJlc29sdmUoeyBkb25lOiBmYWxzZSwgdmFsdWU6IHZhbHVlIH0pIDogbG9vcCgpO1xuICAgICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycikgeyByZWplY3QoZXJyKTsgfVxuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgfVxuICAgIH07XG5cbiAgICBsb29wKCk7XG4gIH0pO1xufSk7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihmaWx0ZXJlcikge1xuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIGZpbHRlcmVyOiBhQ2FsbGFibGUoZmlsdGVyZXIpXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItaXRlcmF0aW9uJykuZmluZDtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoZm4pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgZm4pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xudmFyIGdldEFzeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWFzeW5jLWl0ZXJhdG9yJyk7XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJveHkgPSBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKFByb21pc2UpIHtcbiAgdmFyIHN0YXRlID0gdGhpcztcbiAgdmFyIG1hcHBlciA9IHN0YXRlLm1hcHBlcjtcbiAgdmFyIGlubmVySXRlcmF0b3I7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgb3V0ZXJMb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFuT2JqZWN0KHN0YXRlLm5leHQuY2FsbChzdGF0ZS5pdGVyYXRvcikpKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChhbk9iamVjdChzdGVwKS5kb25lKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICByZXNvbHZlKHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShtYXBwZXIoc3RlcC52YWx1ZSkpLnRoZW4oZnVuY3Rpb24gKG1hcHBlZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBzdGF0ZS5pbm5lckl0ZXJhdG9yID0gaW5uZXJJdGVyYXRvciA9IGdldEFzeW5jSXRlcmF0b3IobWFwcGVkKTtcbiAgICAgICAgICAgICAgICAgIHN0YXRlLmlubmVyTmV4dCA9IGFDYWxsYWJsZShpbm5lckl0ZXJhdG9yLm5leHQpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyTG9vcCgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yMikgeyByZWplY3QoZXJyb3IyKTsgfVxuICAgICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yMSkgeyByZWplY3QoZXJyb3IxKTsgfVxuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgfVxuICAgIH07XG5cbiAgICB2YXIgaW5uZXJMb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGlubmVySXRlcmF0b3IgPSBzdGF0ZS5pbm5lckl0ZXJhdG9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFuT2JqZWN0KHN0YXRlLmlubmVyTmV4dC5jYWxsKGlubmVySXRlcmF0b3IpKSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoYW5PYmplY3QocmVzdWx0KS5kb25lKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuaW5uZXJJdGVyYXRvciA9IHN0YXRlLmlubmVyTmV4dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgb3V0ZXJMb29wKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHsgZG9uZTogZmFsc2UsIHZhbHVlOiByZXN1bHQudmFsdWUgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcjEpIHsgcmVqZWN0KGVycm9yMSk7IH1cbiAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyB9XG4gICAgICB9IGVsc2Ugb3V0ZXJMb29wKCk7XG4gICAgfTtcblxuICAgIGlubmVyTG9vcCgpO1xuICB9KTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChtYXBwZXIpIHtcbiAgICByZXR1cm4gbmV3IEFzeW5jSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICBtYXBwZXI6IGFDYWxsYWJsZShtYXBwZXIpLFxuICAgICAgaW5uZXJJdGVyYXRvcjogbnVsbCxcbiAgICAgIGlubmVyTmV4dDogbnVsbFxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbicpLmZvckVhY2g7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gICAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGZuKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLXByb3RvdHlwZScpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBnZXRBc3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1hc3luYy1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1mcm9tLXN5bmMtaXRlcmF0b3InKTtcblxudmFyIEFTWU5DX0lURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdhc3luY0l0ZXJhdG9yJyk7XG5cbnZhciBpc1Byb3RvdHlwZU9mID0ge30uaXNQcm90b3R5cGVPZjtcblxudmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoUHJvbWlzZSwgYXJncykge1xuICByZXR1cm4gYW5PYmplY3QodGhpcy5uZXh0LmFwcGx5KHRoaXMuaXRlcmF0b3IsIGFyZ3MpKTtcbn0sIHRydWUpO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tOiBmdW5jdGlvbiBmcm9tKE8pIHtcbiAgICB2YXIgb2JqZWN0ID0gdG9PYmplY3QoTyk7XG4gICAgdmFyIHVzaW5nSXRlcmF0b3IgPSBnZXRNZXRob2Qob2JqZWN0LCBBU1lOQ19JVEVSQVRPUik7XG4gICAgdmFyIGl0ZXJhdG9yO1xuICAgIGlmICh1c2luZ0l0ZXJhdG9yKSB7XG4gICAgICBpdGVyYXRvciA9IGdldEFzeW5jSXRlcmF0b3Iob2JqZWN0LCB1c2luZ0l0ZXJhdG9yKTtcbiAgICAgIGlmIChpc1Byb3RvdHlwZU9mLmNhbGwoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3IpKSByZXR1cm4gaXRlcmF0b3I7XG4gICAgfVxuICAgIGlmIChpdGVyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1c2luZ0l0ZXJhdG9yID0gZ2V0SXRlcmF0b3JNZXRob2Qob2JqZWN0KTtcbiAgICAgIGlmICh1c2luZ0l0ZXJhdG9yKSByZXR1cm4gbmV3IEFzeW5jRnJvbVN5bmNJdGVyYXRvcihnZXRJdGVyYXRvcihvYmplY3QsIHVzaW5nSXRlcmF0b3IpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBc3luY0l0ZXJhdG9yUHJveHkoeyBpdGVyYXRvcjogaXRlcmF0b3IgIT09IHVuZGVmaW5lZCA/IGl0ZXJhdG9yIDogb2JqZWN0IH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xuXG52YXIgQXN5bmNJdGVyYXRvclByb3h5ID0gY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChQcm9taXNlLCBhcmdzKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXM7XG4gIHZhciBtYXBwZXIgPSBzdGF0ZS5tYXBwZXI7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChzdGF0ZS5uZXh0LmFwcGx5KHN0YXRlLml0ZXJhdG9yLCBhcmdzKSkpLnRoZW4oZnVuY3Rpb24gKHN0ZXApIHtcbiAgICBpZiAoYW5PYmplY3Qoc3RlcCkuZG9uZSkge1xuICAgICAgc3RhdGUuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH07XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWFwcGVyKHN0ZXAudmFsdWUpKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB2YWx1ZSB9O1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgbWFwOiBmdW5jdGlvbiBtYXAobWFwcGVyKSB7XG4gICAgcmV0dXJuIG5ldyBBc3luY0l0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgbWFwcGVyOiBhQ2FsbGFibGUobWFwcGVyKVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxudmFyIFByb21pc2UgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShyZWR1Y2VyIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIG5leHQgPSBhQ2FsbGFibGUoaXRlcmF0b3IubmV4dCk7XG4gICAgdmFyIG5vSW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyO1xuICAgIHZhciBhY2N1bXVsYXRvciA9IG5vSW5pdGlhbCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBhQ2FsbGFibGUocmVkdWNlcik7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFuT2JqZWN0KG5leHQuY2FsbChpdGVyYXRvcikpKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoYW5PYmplY3Qoc3RlcCkuZG9uZSkge1xuICAgICAgICAgICAgICAgIG5vSW5pdGlhbCA/IHJlamVjdChUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKSkgOiByZXNvbHZlKGFjY3VtdWxhdG9yKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChub0luaXRpYWwpIHtcbiAgICAgICAgICAgICAgICAgIG5vSW5pdGlhbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlZHVjZXIoYWNjdW11bGF0b3IsIHZhbHVlKSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICBsb29wKCk7XG4gICAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IHJlamVjdChlcnIpOyB9XG4gICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgfVxuICAgICAgfTtcblxuICAgICAgbG9vcCgpO1xuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRzb21lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbicpLnNvbWU7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBzb21lOiBmdW5jdGlvbiBzb21lKGZuKSB7XG4gICAgcmV0dXJuICRzb21lKHRoaXMsIGZuKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Bvc2l0aXZlSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wb3NpdGl2ZS1pbnRlZ2VyJyk7XG52YXIgY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xuXG52YXIgQXN5bmNJdGVyYXRvclByb3h5ID0gY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChQcm9taXNlLCBhcmdzKSB7XG4gIHZhciBpdGVyYXRvciA9IHRoaXMuaXRlcmF0b3I7XG4gIHZhciByZXR1cm5NZXRob2QsIHJlc3VsdDtcbiAgaWYgKCF0aGlzLnJlbWFpbmluZy0tKSB7XG4gICAgcmVzdWx0ID0geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH07XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICByZXR1cm5NZXRob2QgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldHVybk1ldGhvZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSByZXR1cm4gdGhpcy5uZXh0LmFwcGx5KGl0ZXJhdG9yLCBhcmdzKTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgdGFrZTogZnVuY3Rpb24gdGFrZShsaW1pdCkge1xuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIHJlbWFpbmluZzogdG9Qb3NpdGl2ZUludGVnZXIobGltaXQpXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRvQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItaXRlcmF0aW9uJykudG9BcnJheTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuICR0b0FycmF5KHRoaXMsIHVuZGVmaW5lZCwgW10pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBJTkNPUlJFQ1RfUkFOR0UgPSAnSW5jb3JyZWN0IE51bWJlci5yYW5nZSBhcmd1bWVudHMnO1xudmFyIE5VTUVSSUNfUkFOR0VfSVRFUkFUT1IgPSAnTnVtZXJpY1JhbmdlSXRlcmF0b3InO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihOVU1FUklDX1JBTkdFX0lURVJBVE9SKTtcblxudmFyICRSYW5nZUl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBOdW1lcmljUmFuZ2VJdGVyYXRvcihzdGFydCwgZW5kLCBvcHRpb24sIHR5cGUsIHplcm8sIG9uZSkge1xuICBpZiAodHlwZW9mIHN0YXJ0ICE9IHR5cGUgfHwgKGVuZCAhPT0gSW5maW5pdHkgJiYgZW5kICE9PSAtSW5maW5pdHkgJiYgdHlwZW9mIGVuZCAhPSB0eXBlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoSU5DT1JSRUNUX1JBTkdFKTtcbiAgfVxuICBpZiAoc3RhcnQgPT09IEluZmluaXR5IHx8IHN0YXJ0ID09PSAtSW5maW5pdHkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihJTkNPUlJFQ1RfUkFOR0UpO1xuICB9XG4gIHZhciBpZkluY3JlYXNlID0gZW5kID4gc3RhcnQ7XG4gIHZhciBpbmNsdXNpdmVFbmQgPSBmYWxzZTtcbiAgdmFyIHN0ZXA7XG4gIGlmIChvcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgIHN0ZXAgPSB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3Qob3B0aW9uKSkge1xuICAgIHN0ZXAgPSBvcHRpb24uc3RlcDtcbiAgICBpbmNsdXNpdmVFbmQgPSAhIW9wdGlvbi5pbmNsdXNpdmU7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbiA9PSB0eXBlKSB7XG4gICAgc3RlcCA9IG9wdGlvbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKElOQ09SUkVDVF9SQU5HRSk7XG4gIH1cbiAgaWYgKHN0ZXAgPT0gbnVsbCkge1xuICAgIHN0ZXAgPSBpZkluY3JlYXNlID8gb25lIDogLW9uZTtcbiAgfVxuICBpZiAodHlwZW9mIHN0ZXAgIT0gdHlwZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoSU5DT1JSRUNUX1JBTkdFKTtcbiAgfVxuICBpZiAoc3RlcCA9PT0gSW5maW5pdHkgfHwgc3RlcCA9PT0gLUluZmluaXR5IHx8IChzdGVwID09PSB6ZXJvICYmIHN0YXJ0ICE9PSBlbmQpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoSU5DT1JSRUNUX1JBTkdFKTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICB2YXIgaGl0c0VuZCA9IHN0YXJ0ICE9IHN0YXJ0IHx8IGVuZCAhPSBlbmQgfHwgc3RlcCAhPSBzdGVwIHx8IChlbmQgPiBzdGFydCkgIT09IChzdGVwID4gemVybyk7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IE5VTUVSSUNfUkFOR0VfSVRFUkFUT1IsXG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVuZDogZW5kLFxuICAgIHN0ZXA6IHN0ZXAsXG4gICAgaW5jbHVzaXZlRW5kOiBpbmNsdXNpdmVFbmQsXG4gICAgaGl0c0VuZDogaGl0c0VuZCxcbiAgICBjdXJyZW50Q291bnQ6IHplcm8sXG4gICAgemVybzogemVyb1xuICB9KTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLnN0ZXAgPSBzdGVwO1xuICAgIHRoaXMuaW5jbHVzaXZlID0gaW5jbHVzaXZlRW5kO1xuICB9XG59LCBOVU1FUklDX1JBTkdFX0lURVJBVE9SLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICBpZiAoc3RhdGUuaGl0c0VuZCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB2YXIgc3RhcnQgPSBzdGF0ZS5zdGFydDtcbiAgdmFyIGVuZCA9IHN0YXRlLmVuZDtcbiAgdmFyIHN0ZXAgPSBzdGF0ZS5zdGVwO1xuICB2YXIgY3VycmVudFlpZWxkaW5nVmFsdWUgPSBzdGFydCArIChzdGVwICogc3RhdGUuY3VycmVudENvdW50KyspO1xuICBpZiAoY3VycmVudFlpZWxkaW5nVmFsdWUgPT09IGVuZCkgc3RhdGUuaGl0c0VuZCA9IHRydWU7XG4gIHZhciBpbmNsdXNpdmVFbmQgPSBzdGF0ZS5pbmNsdXNpdmVFbmQ7XG4gIHZhciBlbmRDb25kaXRpb247XG4gIGlmIChlbmQgPiBzdGFydCkge1xuICAgIGVuZENvbmRpdGlvbiA9IGluY2x1c2l2ZUVuZCA/IGN1cnJlbnRZaWVsZGluZ1ZhbHVlID4gZW5kIDogY3VycmVudFlpZWxkaW5nVmFsdWUgPj0gZW5kO1xuICB9IGVsc2Uge1xuICAgIGVuZENvbmRpdGlvbiA9IGluY2x1c2l2ZUVuZCA/IGVuZCA+IGN1cnJlbnRZaWVsZGluZ1ZhbHVlIDogZW5kID49IGN1cnJlbnRZaWVsZGluZ1ZhbHVlO1xuICB9XG4gIGlmIChlbmRDb25kaXRpb24pIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiBzdGF0ZS5oaXRzRW5kID0gdHJ1ZSB9O1xuICB9IHJldHVybiB7IHZhbHVlOiBjdXJyZW50WWllbGRpbmdWYWx1ZSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG52YXIgZ2V0dGVyID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiB7IGdldDogZm4sIHNldDogZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlIH07XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgZGVmaW5lUHJvcGVydGllcygkUmFuZ2VJdGVyYXRvci5wcm90b3R5cGUsIHtcbiAgICBzdGFydDogZ2V0dGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnN0YXJ0O1xuICAgIH0pLFxuICAgIGVuZDogZ2V0dGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLmVuZDtcbiAgICB9KSxcbiAgICBpbmNsdXNpdmU6IGdldHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5pbmNsdXNpdmVFbmQ7XG4gICAgfSksXG4gICAgc3RlcDogZ2V0dGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnN0ZXA7XG4gICAgfSlcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gJFJhbmdlSXRlcmF0b3I7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1iaWdpbnQgLS0gc2FmZSAqL1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgTnVtZXJpY1JhbmdlSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbnVtZXJpYy1yYW5nZS1pdGVyYXRvcicpO1xuXG4vLyBgQmlnSW50LnJhbmdlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLU51bWJlci5yYW5nZVxuaWYgKHR5cGVvZiBCaWdJbnQgPT0gJ2Z1bmN0aW9uJykge1xuICAkKHsgdGFyZ2V0OiAnQmlnSW50Jywgc3RhdDogdHJ1ZSB9LCB7XG4gICAgcmFuZ2U6IGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbikge1xuICAgICAgcmV0dXJuIG5ldyBOdW1lcmljUmFuZ2VJdGVyYXRvcihzdGFydCwgZW5kLCBvcHRpb24sICdiaWdpbnQnLCBCaWdJbnQoMCksIEJpZ0ludCgxKSk7XG4gICAgfVxuICB9KTtcbn1cbiIsIi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG52YXIgTWFwID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5tYXAnKTtcbnZhciBXZWFrTWFwID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy53ZWFrLW1hcCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBOb2RlID0gZnVuY3Rpb24gKCkge1xuICAvLyBrZXlzXG4gIHRoaXMub2JqZWN0ID0gbnVsbDtcbiAgdGhpcy5zeW1ib2wgPSBudWxsO1xuICAvLyBjaGlsZCBub2Rlc1xuICB0aGlzLnByaW1pdGl2ZXMgPSBudWxsO1xuICB0aGlzLm9iamVjdHNCeUluZGV4ID0gY3JlYXRlKG51bGwpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSwgaW5pdGlhbGl6ZXIpIHtcbiAgcmV0dXJuIHRoaXNba2V5XSB8fCAodGhpc1trZXldID0gaW5pdGlhbGl6ZXIoKSk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKGksIGl0LCBJU19PQkpFQ1QpIHtcbiAgdmFyIHN0b3JlID0gSVNfT0JKRUNUXG4gICAgPyB0aGlzLm9iamVjdHNCeUluZGV4W2ldIHx8ICh0aGlzLm9iamVjdHNCeUluZGV4W2ldID0gbmV3IFdlYWtNYXAoKSlcbiAgICA6IHRoaXMucHJpbWl0aXZlcyB8fCAodGhpcy5wcmltaXRpdmVzID0gbmV3IE1hcCgpKTtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuZ2V0KGl0KTtcbiAgaWYgKCFlbnRyeSkgc3RvcmUuc2V0KGl0LCBlbnRyeSA9IG5ldyBOb2RlKCkpO1xuICByZXR1cm4gZW50cnk7XG59O1xuXG52YXIgcm9vdCA9IG5ldyBOb2RlKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYWN0aXZlID0gcm9vdDtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpLCBpdDtcbiAgLy8gZm9yIHByZXZlbnQgbGVha2luZywgc3RhcnQgZnJvbSBvYmplY3RzXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChpc09iamVjdChpdCA9IGFyZ3VtZW50c1tpXSkpIGFjdGl2ZSA9IGFjdGl2ZS5uZXh0KGksIGl0LCB0cnVlKTtcbiAgfVxuICBpZiAodGhpcyA9PT0gT2JqZWN0ICYmIGFjdGl2ZSA9PT0gcm9vdCkgdGhyb3cgVHlwZUVycm9yKCdDb21wb3NpdGUga2V5cyBtdXN0IGNvbnRhaW4gYSBub24tcHJpbWl0aXZlIGNvbXBvbmVudCcpO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWlzT2JqZWN0KGl0ID0gYXJndW1lbnRzW2ldKSkgYWN0aXZlID0gYWN0aXZlLm5leHQoaSwgaXQsIGZhbHNlKTtcbiAgfSByZXR1cm4gYWN0aXZlO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldENvbXBvc2l0ZUtleU5vZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29tcG9zaXRlLWtleScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcblxudmFyIGluaXRpYWxpemVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZnJlZXplID0gZ2V0QnVpbHRJbignT2JqZWN0JywgJ2ZyZWV6ZScpO1xuICByZXR1cm4gZnJlZXplID8gZnJlZXplKGNyZWF0ZShudWxsKSkgOiBjcmVhdGUobnVsbCk7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1yaWNoZXIta2V5cy90cmVlL21hc3Rlci9jb21wb3NpdGVLZXlcbiQoeyBnbG9iYWw6IHRydWUgfSwge1xuICBjb21wb3NpdGVLZXk6IGZ1bmN0aW9uIGNvbXBvc2l0ZUtleSgpIHtcbiAgICByZXR1cm4gZ2V0Q29tcG9zaXRlS2V5Tm9kZS5hcHBseShPYmplY3QsIGFyZ3VtZW50cykuZ2V0KCdvYmplY3QnLCBpbml0aWFsaXplcik7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0Q29tcG9zaXRlS2V5Tm9kZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb21wb3NpdGUta2V5Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmljaGVyLWtleXMvdHJlZS9tYXN0ZXIvY29tcG9zaXRlS2V5XG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgY29tcG9zaXRlU3ltYm9sOiBmdW5jdGlvbiBjb21wb3NpdGVTeW1ib2woKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ3N0cmluZycpIHJldHVybiBnZXRCdWlsdEluKCdTeW1ib2wnKVsnZm9yJ10oYXJndW1lbnRzWzBdKTtcbiAgICByZXR1cm4gZ2V0Q29tcG9zaXRlS2V5Tm9kZS5hcHBseShudWxsLCBhcmd1bWVudHMpLmdldCgnc3ltYm9sJywgZ2V0QnVpbHRJbignU3ltYm9sJykpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBOYXRpdmVJdGVyYXRvciA9IGdsb2JhbC5JdGVyYXRvcjtcblxuLy8gRkY1Ni0gaGF2ZSBub24tc3RhbmRhcmQgZ2xvYmFsIGhlbHBlciBgSXRlcmF0b3JgXG52YXIgRk9SQ0VEID0gSVNfUFVSRVxuICB8fCAhaXNDYWxsYWJsZShOYXRpdmVJdGVyYXRvcilcbiAgfHwgTmF0aXZlSXRlcmF0b3IucHJvdG90eXBlICE9PSBJdGVyYXRvclByb3RvdHlwZVxuICAvLyBGRjQ0LSBub24tc3RhbmRhcmQgYEl0ZXJhdG9yYCBwYXNzZXMgcHJldmlvdXMgdGVzdHNcbiAgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHsgTmF0aXZlSXRlcmF0b3Ioe30pOyB9KTtcblxudmFyIEl0ZXJhdG9yQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBJdGVyYXRvcigpIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCBJdGVyYXRvckNvbnN0cnVjdG9yKTtcbn07XG5cbmlmICghaGFzT3duKEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHKSkge1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsICdJdGVyYXRvcicpO1xufVxuXG5pZiAoRk9SQ0VEIHx8ICFoYXNPd24oSXRlcmF0b3JQcm90b3R5cGUsICdjb25zdHJ1Y3RvcicpIHx8IEl0ZXJhdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhdG9yUHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBJdGVyYXRvckNvbnN0cnVjdG9yKTtcbn1cblxuSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBJdGVyYXRvclByb3RvdHlwZTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBJdGVyYXRvcjogSXRlcmF0b3JDb25zdHJ1Y3RvclxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5leHRIYW5kbGVyLCBJU19JVEVSQVRPUikge1xuICB2YXIgSXRlcmF0b3JQcm94eSA9IGZ1bmN0aW9uIEl0ZXJhdG9yKHN0YXRlKSB7XG4gICAgc3RhdGUubmV4dCA9IGFDYWxsYWJsZShzdGF0ZS5pdGVyYXRvci5uZXh0KTtcbiAgICBzdGF0ZS5kb25lID0gZmFsc2U7XG4gICAgc3RhdGUuaWdub3JlQXJnID0gIUlTX0lURVJBVE9SO1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywgc3RhdGUpO1xuICB9O1xuXG4gIEl0ZXJhdG9yUHJveHkucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKSwge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoYXJnKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoID8gW3N0YXRlLmlnbm9yZUFyZyA/IHVuZGVmaW5lZCA6IGFyZ10gOiBJU19JVEVSQVRPUiA/IFtdIDogW3VuZGVmaW5lZF07XG4gICAgICBzdGF0ZS5pZ25vcmVBcmcgPSBmYWxzZTtcbiAgICAgIHZhciByZXN1bHQgPSBzdGF0ZS5kb25lID8gdW5kZWZpbmVkIDogbmV4dEhhbmRsZXIuY2FsbChzdGF0ZSwgYXJncyk7XG4gICAgICByZXR1cm4geyBkb25lOiBzdGF0ZS5kb25lLCB2YWx1ZTogcmVzdWx0IH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGl0ZXJhdG9yID0gc3RhdGUuaXRlcmF0b3I7XG4gICAgICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgICAgIHZhciAkJHJldHVybiA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6ICQkcmV0dXJuID8gYW5PYmplY3QoJCRyZXR1cm4uY2FsbChpdGVyYXRvciwgdmFsdWUpKS52YWx1ZSA6IHZhbHVlIH07XG4gICAgfSxcbiAgICAndGhyb3cnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgICB2YXIgaXRlcmF0b3IgPSBzdGF0ZS5pdGVyYXRvcjtcbiAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgdmFyICQkdGhyb3cgPSBnZXRNZXRob2QoaXRlcmF0b3IsICd0aHJvdycpO1xuICAgICAgaWYgKCQkdGhyb3cpIHJldHVybiAkJHRocm93LmNhbGwoaXRlcmF0b3IsIHZhbHVlKTtcbiAgICAgIHRocm93IHZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKCFJU19JVEVSQVRPUikge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYXRvclByb3h5LnByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRywgJ0dlbmVyYXRvcicpO1xuICB9XG5cbiAgcmV0dXJuIEl0ZXJhdG9yUHJveHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcblxudmFyIEl0ZXJhdG9yUHJveHkgPSBjcmVhdGVJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciByZXN1bHQgPSBhbk9iamVjdCh0aGlzLm5leHQuYXBwbHkodGhpcy5pdGVyYXRvciwgYXJncykpO1xuICB2YXIgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gIGlmICghZG9uZSkgcmV0dXJuIFt0aGlzLmluZGV4KyssIHJlc3VsdC52YWx1ZV07XG59KTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBhc0luZGV4ZWRQYWlyczogZnVuY3Rpb24gYXNJbmRleGVkUGFpcnMoKSB7XG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIGluZGV4OiAwXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qb3NpdGl2ZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlcicpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG5cbnZhciBJdGVyYXRvclByb3h5ID0gY3JlYXRlSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoYXJncykge1xuICB2YXIgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yO1xuICB2YXIgbmV4dCA9IHRoaXMubmV4dDtcbiAgdmFyIHJlc3VsdCwgZG9uZTtcbiAgd2hpbGUgKHRoaXMucmVtYWluaW5nKSB7XG4gICAgdGhpcy5yZW1haW5pbmctLTtcbiAgICByZXN1bHQgPSBhbk9iamVjdChuZXh0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICBkb25lID0gdGhpcy5kb25lID0gISFyZXN1bHQuZG9uZTtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICB9XG4gIHJlc3VsdCA9IGFuT2JqZWN0KG5leHQuYXBwbHkoaXRlcmF0b3IsIGFyZ3MpKTtcbiAgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gIGlmICghZG9uZSkgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGRyb3A6IGZ1bmN0aW9uIGRyb3AobGltaXQpIHtcbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgcmVtYWluaW5nOiB0b1Bvc2l0aXZlSW50ZWdlcihsaW1pdClcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbikge1xuICAgIGFuT2JqZWN0KHRoaXMpO1xuICAgIGFDYWxsYWJsZShmbik7XG4gICAgcmV0dXJuICFpdGVyYXRlKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKCFmbih2YWx1ZSkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG52YXIgY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZycpO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvcjtcbiAgdmFyIGZpbHRlcmVyID0gdGhpcy5maWx0ZXJlcjtcbiAgdmFyIG5leHQgPSB0aGlzLm5leHQ7XG4gIHZhciByZXN1bHQsIGRvbmUsIHZhbHVlO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHJlc3VsdCA9IGFuT2JqZWN0KG5leHQuYXBwbHkoaXRlcmF0b3IsIGFyZ3MpKTtcbiAgICBkb25lID0gdGhpcy5kb25lID0gISFyZXN1bHQuZG9uZTtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgIGlmIChjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBmaWx0ZXJlciwgdmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGZpbHRlcmVyKSB7XG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIGZpbHRlcmVyOiBhQ2FsbGFibGUoZmlsdGVyZXIpXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGZuKSB7XG4gICAgYW5PYmplY3QodGhpcyk7XG4gICAgYUNhbGxhYmxlKGZuKTtcbiAgICByZXR1cm4gaXRlcmF0ZSh0aGlzLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChmbih2YWx1ZSkpIHJldHVybiBzdG9wKHZhbHVlKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5yZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciBJdGVyYXRvclByb3h5ID0gY3JlYXRlSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoKSB7XG4gIHZhciBpdGVyYXRvciA9IHRoaXMuaXRlcmF0b3I7XG4gIHZhciBtYXBwZXIgPSB0aGlzLm1hcHBlcjtcbiAgdmFyIHJlc3VsdCwgbWFwcGVkLCBpdGVyYXRvck1ldGhvZCwgaW5uZXJJdGVyYXRvcjtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoaW5uZXJJdGVyYXRvciA9IHRoaXMuaW5uZXJJdGVyYXRvcikge1xuICAgICAgICByZXN1bHQgPSBhbk9iamVjdCh0aGlzLmlubmVyTmV4dC5jYWxsKGlubmVySXRlcmF0b3IpKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuZG9uZSkgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbm5lckl0ZXJhdG9yID0gdGhpcy5pbm5lck5leHQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXN1bHQgPSBhbk9iamVjdCh0aGlzLm5leHQuY2FsbChpdGVyYXRvcikpO1xuXG4gICAgICBpZiAodGhpcy5kb25lID0gISFyZXN1bHQuZG9uZSkgcmV0dXJuO1xuXG4gICAgICBtYXBwZWQgPSBtYXBwZXIocmVzdWx0LnZhbHVlKTtcbiAgICAgIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2QobWFwcGVkKTtcblxuICAgICAgaWYgKCFpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJy5mbGF0TWFwIGNhbGxiYWNrIHNob3VsZCByZXR1cm4gYW4gaXRlcmFibGUgb2JqZWN0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW5uZXJJdGVyYXRvciA9IGlubmVySXRlcmF0b3IgPSBhbk9iamVjdChpdGVyYXRvck1ldGhvZC5jYWxsKG1hcHBlZCkpO1xuICAgICAgdGhpcy5pbm5lck5leHQgPSBhQ2FsbGFibGUoaW5uZXJJdGVyYXRvci5uZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICAgIH1cbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChtYXBwZXIpIHtcbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgbWFwcGVyOiBhQ2FsbGFibGUobWFwcGVyKSxcbiAgICAgIGlubmVySXRlcmF0b3I6IG51bGwsXG4gICAgICBpbm5lck5leHQ6IG51bGxcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gICAgaXRlcmF0ZShhbk9iamVjdCh0aGlzKSwgZm4sIHsgSVNfSVRFUkFUT1I6IHRydWUgfSk7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBjcmVhdGVJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxudmFyIGlzUHJvdG90eXBlT2YgPSB7fS5pc1Byb3RvdHlwZU9mO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KHRoaXMubmV4dC5hcHBseSh0aGlzLml0ZXJhdG9yLCBhcmdzKSk7XG4gIHZhciBkb25lID0gdGhpcy5kb25lID0gISFyZXN1bHQuZG9uZTtcbiAgaWYgKCFkb25lKSByZXR1cm4gcmVzdWx0LnZhbHVlO1xufSwgdHJ1ZSk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tOiBmdW5jdGlvbiBmcm9tKE8pIHtcbiAgICB2YXIgb2JqZWN0ID0gdG9PYmplY3QoTyk7XG4gICAgdmFyIHVzaW5nSXRlcmF0b3IgPSBnZXRJdGVyYXRvck1ldGhvZChvYmplY3QpO1xuICAgIHZhciBpdGVyYXRvcjtcbiAgICBpZiAodXNpbmdJdGVyYXRvcikge1xuICAgICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihvYmplY3QsIHVzaW5nSXRlcmF0b3IpO1xuICAgICAgaWYgKGlzUHJvdG90eXBlT2YuY2FsbChJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3IpKSByZXR1cm4gaXRlcmF0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdG9yID0gb2JqZWN0O1xuICAgIH0gcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHsgaXRlcmF0b3I6IGl0ZXJhdG9yIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nJyk7XG5cbnZhciBJdGVyYXRvclByb3h5ID0gY3JlYXRlSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoYXJncykge1xuICB2YXIgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yO1xuICB2YXIgcmVzdWx0ID0gYW5PYmplY3QodGhpcy5uZXh0LmFwcGx5KGl0ZXJhdG9yLCBhcmdzKSk7XG4gIHZhciBkb25lID0gdGhpcy5kb25lID0gISFyZXN1bHQuZG9uZTtcbiAgaWYgKCFkb25lKSByZXR1cm4gY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyhpdGVyYXRvciwgdGhpcy5tYXBwZXIsIHJlc3VsdC52YWx1ZSk7XG59KTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBtYXA6IGZ1bmN0aW9uIG1hcChtYXBwZXIpIHtcbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgbWFwcGVyOiBhQ2FsbGFibGUobWFwcGVyKVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UocmVkdWNlciAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIGFuT2JqZWN0KHRoaXMpO1xuICAgIGFDYWxsYWJsZShyZWR1Y2VyKTtcbiAgICB2YXIgbm9Jbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8IDI7XG4gICAgdmFyIGFjY3VtdWxhdG9yID0gbm9Jbml0aWFsID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGl0ZXJhdGUodGhpcywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAobm9Jbml0aWFsKSB7XG4gICAgICAgIG5vSW5pdGlhbCA9IGZhbHNlO1xuICAgICAgICBhY2N1bXVsYXRvciA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjdW11bGF0b3IgPSByZWR1Y2VyKGFjY3VtdWxhdG9yLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICBpZiAobm9Jbml0aWFsKSB0aHJvdyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBzb21lOiBmdW5jdGlvbiBzb21lKGZuKSB7XG4gICAgYW5PYmplY3QodGhpcyk7XG4gICAgYUNhbGxhYmxlKGZuKTtcbiAgICByZXR1cm4gaXRlcmF0ZSh0aGlzLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChmbih2YWx1ZSkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Bvc2l0aXZlSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wb3NpdGl2ZS1pbnRlZ2VyJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciBJdGVyYXRvclByb3h5ID0gY3JlYXRlSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoYXJncykge1xuICB2YXIgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yO1xuICBpZiAoIXRoaXMucmVtYWluaW5nLS0pIHtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHJldHVybiBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgdW5kZWZpbmVkKTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gYW5PYmplY3QodGhpcy5uZXh0LmFwcGx5KGl0ZXJhdG9yLCBhcmdzKSk7XG4gIHZhciBkb25lID0gdGhpcy5kb25lID0gISFyZXN1bHQuZG9uZTtcbiAgaWYgKCFkb25lKSByZXR1cm4gcmVzdWx0LnZhbHVlO1xufSk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgdGFrZTogZnVuY3Rpb24gdGFrZShsaW1pdCkge1xuICAgIHJldHVybiBuZXcgSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICByZW1haW5pbmc6IHRvUG9zaXRpdmVJbnRlZ2VyKGxpbWl0KVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgdG9BcnJheTogZnVuY3Rpb24gdG9BcnJheSgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaXRlcmF0ZShhbk9iamVjdCh0aGlzKSwgcHVzaCwgeyB0aGF0OiByZXN1bHQsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2NvbGxlY3Rpb24tbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgdmFyIGNvbGxlY3Rpb24gPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlbW92ZXIgPSBhQ2FsbGFibGUoY29sbGVjdGlvblsnZGVsZXRlJ10pO1xuICB2YXIgYWxsRGVsZXRlZCA9IHRydWU7XG4gIHZhciB3YXNEZWxldGVkO1xuICBmb3IgKHZhciBrID0gMCwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgd2FzRGVsZXRlZCA9IHJlbW92ZXIuY2FsbChjb2xsZWN0aW9uLCBhcmd1bWVudHNba10pO1xuICAgIGFsbERlbGV0ZWQgPSBhbGxEZWxldGVkICYmIHdhc0RlbGV0ZWQ7XG4gIH1cbiAgcmV0dXJuICEhYWxsRGVsZXRlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBjb2xsZWN0aW9uRGVsZXRlQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZGVsZXRlLWFsbCcpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5kZWxldGVBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGRlbGV0ZUFsbDogZnVuY3Rpb24gZGVsZXRlQWxsKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25EZWxldGVBbGwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLmVtcGxhY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RodW1ic3VwZXAvcHJvcG9zYWwtdXBzZXJ0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVtcGxhY2Uoa2V5LCBoYW5kbGVyKSB7XG4gIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHZhbHVlID0gKG1hcC5oYXMoa2V5KSAmJiAndXBkYXRlJyBpbiBoYW5kbGVyKVxuICAgID8gaGFuZGxlci51cGRhdGUobWFwLmdldChrZXkpLCBrZXksIG1hcClcbiAgICA6IGhhbmRsZXIuaW5zZXJ0KGtleSwgbWFwKTtcbiAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyICRlbXBsYWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hcC1lbXBsYWNlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLmVtcGxhY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RodW1ic3VwZXAvcHJvcG9zYWwtdXBzZXJ0XG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGVtcGxhY2U6ICRlbXBsYWNlXG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXAgLS0gc2FmZVxuICByZXR1cm4gTWFwLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwoaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5ldmVyeWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICByZXR1cm4gIWl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoIWJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICB2YXIgbmV3TWFwID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IobWFwLCBnZXRCdWlsdEluKCdNYXAnKSkpKCk7XG4gICAgdmFyIHNldHRlciA9IGFDYWxsYWJsZShuZXdNYXAuc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSkgc2V0dGVyLmNhbGwobmV3TWFwLCBrZXksIHZhbHVlKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdNYXA7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRNYXBJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWFwLWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0TWFwSXRlcmF0b3IobWFwKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKGJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSkgcmV0dXJuIHN0b3AodmFsdWUpO1xuICAgIH0sIHsgQVNfRU5UUklFUzogdHJ1ZSwgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUuZmluZEtleWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZmluZEtleTogZnVuY3Rpb24gZmluZEtleShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRNYXBJdGVyYXRvcihtYXApO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgcmV0dXJuIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoYm91bmRGdW5jdGlvbih2YWx1ZSwga2V5LCBtYXApKSByZXR1cm4gc3RvcChrZXkpO1xuICAgIH0sIHsgQVNfRU5UUklFUzogdHJ1ZSwgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvcicpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZnJvbShzb3VyY2UgLyogLCBtYXBGbiwgdGhpc0FyZyAqLykge1xuICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcEZuID0gbGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIG1hcHBpbmcsIGFycmF5LCBuLCBib3VuZEZ1bmN0aW9uO1xuICBhQ29uc3RydWN0b3IodGhpcyk7XG4gIG1hcHBpbmcgPSBtYXBGbiAhPT0gdW5kZWZpbmVkO1xuICBpZiAobWFwcGluZykgYUNhbGxhYmxlKG1hcEZuKTtcbiAgaWYgKHNvdXJjZSA9PSB1bmRlZmluZWQpIHJldHVybiBuZXcgdGhpcygpO1xuICBhcnJheSA9IFtdO1xuICBpZiAobWFwcGluZykge1xuICAgIG4gPSAwO1xuICAgIGJvdW5kRnVuY3Rpb24gPSBiaW5kKG1hcEZuLCBsZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICBpdGVyYXRlKHNvdXJjZSwgZnVuY3Rpb24gKG5leHRJdGVtKSB7XG4gICAgICBhcnJheS5wdXNoKGJvdW5kRnVuY3Rpb24obmV4dEl0ZW0sIG4rKykpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGUoc291cmNlLCBhcnJheS5wdXNoLCB7IHRoYXQ6IGFycmF5IH0pO1xuICB9XG4gIHJldHVybiBuZXcgdGhpcyhhcnJheSk7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWZyb20nKTtcblxuLy8gYE1hcC5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLW1hcC5mcm9tXG4kKHsgdGFyZ2V0OiAnTWFwJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5ncm91cEJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHN0YXQ6IHRydWUgfSwge1xuICBncm91cEJ5OiBmdW5jdGlvbiBncm91cEJ5KGl0ZXJhYmxlLCBrZXlEZXJpdmF0aXZlKSB7XG4gICAgYUNhbGxhYmxlKGtleURlcml2YXRpdmUpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlKTtcbiAgICB2YXIgbmV3TWFwID0gbmV3IHRoaXMoKTtcbiAgICB2YXIgaGFzID0gYUNhbGxhYmxlKG5ld01hcC5oYXMpO1xuICAgIHZhciBnZXQgPSBhQ2FsbGFibGUobmV3TWFwLmdldCk7XG4gICAgdmFyIHNldCA9IGFDYWxsYWJsZShuZXdNYXAuc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgdmFyIGRlcml2ZWRLZXkgPSBrZXlEZXJpdmF0aXZlKGVsZW1lbnQpO1xuICAgICAgaWYgKCFoYXMuY2FsbChuZXdNYXAsIGRlcml2ZWRLZXkpKSBzZXQuY2FsbChuZXdNYXAsIGRlcml2ZWRLZXksIFtlbGVtZW50XSk7XG4gICAgICBlbHNlIGdldC5jYWxsKG5ld01hcCwgZGVyaXZlZEtleSkucHVzaChlbGVtZW50KTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdNYXA7XG4gIH1cbn0pO1xuIiwiLy8gYFNhbWVWYWx1ZVplcm9gIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zYW1ldmFsdWV6ZXJvXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiB4ID09PSB5IHx8IHggIT0geCAmJiB5ICE9IHk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIHNhbWVWYWx1ZVplcm8gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2FtZS12YWx1ZS16ZXJvJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoRWxlbWVudCkge1xuICAgIHJldHVybiBpdGVyYXRlKGdldE1hcEl0ZXJhdG9yKGFuT2JqZWN0KHRoaXMpKSwgZnVuY3Rpb24gKGtleSwgdmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChzYW1lVmFsdWVaZXJvKHZhbHVlLCBzZWFyY2hFbGVtZW50KSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbi8vIGBNYXAua2V5QnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGtleUJ5OiBmdW5jdGlvbiBrZXlCeShpdGVyYWJsZSwga2V5RGVyaXZhdGl2ZSkge1xuICAgIHZhciBuZXdNYXAgPSBuZXcgdGhpcygpO1xuICAgIGFDYWxsYWJsZShrZXlEZXJpdmF0aXZlKTtcbiAgICB2YXIgc2V0dGVyID0gYUNhbGxhYmxlKG5ld01hcC5zZXQpO1xuICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBzZXR0ZXIuY2FsbChuZXdNYXAsIGtleURlcml2YXRpdmUoZWxlbWVudCksIGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdNYXA7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5rZXlPZmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAga2V5T2Y6IGZ1bmN0aW9uIGtleU9mKHNlYXJjaEVsZW1lbnQpIHtcbiAgICByZXR1cm4gaXRlcmF0ZShnZXRNYXBJdGVyYXRvcihhbk9iamVjdCh0aGlzKSksIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBzdG9wKGtleSk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkucmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5tYXBLZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBtYXBLZXlzOiBmdW5jdGlvbiBtYXBLZXlzKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICB2YXIgbmV3TWFwID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IobWFwLCBnZXRCdWlsdEluKCdNYXAnKSkpKCk7XG4gICAgdmFyIHNldHRlciA9IGFDYWxsYWJsZShuZXdNYXAuc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgc2V0dGVyLmNhbGwobmV3TWFwLCBib3VuZEZ1bmN0aW9uKHZhbHVlLCBrZXksIG1hcCksIHZhbHVlKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdNYXA7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBnZXRNYXBJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWFwLWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLm1hcFZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgbWFwVmFsdWVzOiBmdW5jdGlvbiBtYXBWYWx1ZXMoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0TWFwSXRlcmF0b3IobWFwKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHZhciBuZXdNYXAgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihtYXAsIGdldEJ1aWx0SW4oJ01hcCcpKSkoKTtcbiAgICB2YXIgc2V0dGVyID0gYUNhbGxhYmxlKG5ld01hcC5zZXQpO1xuICAgIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBzZXR0ZXIuY2FsbChuZXdNYXAsIGtleSwgYm91bmRGdW5jdGlvbih2YWx1ZSwga2V5LCBtYXApKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdNYXA7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUubWVyZ2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIG1lcmdlOiBmdW5jdGlvbiBtZXJnZShpdGVyYWJsZSAvKiAuLi5pdGVyYmxlcyAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgc2V0dGVyID0gYUNhbGxhYmxlKG1hcC5zZXQpO1xuICAgIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZ3VtZW50c0xlbmd0aCkge1xuICAgICAgaXRlcmF0ZShhcmd1bWVudHNbaSsrXSwgc2V0dGVyLCB7IHRoYXQ6IG1hcCwgQVNfRU5UUklFUzogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG9mKCkge1xuICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIEEgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aC0tKSBBW2xlbmd0aF0gPSBhcmd1bWVudHNbbGVuZ3RoXTtcbiAgcmV0dXJuIG5ldyB0aGlzKEEpO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tb2YnKTtcblxuLy8gYE1hcC5vZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAub2ZcbiQoeyB0YXJnZXQ6ICdNYXAnLCBzdGF0OiB0cnVlIH0sIHtcbiAgb2Y6IG9mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5yZWR1Y2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0TWFwSXRlcmF0b3IobWFwKTtcbiAgICB2YXIgbm9Jbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8IDI7XG4gICAgdmFyIGFjY3VtdWxhdG9yID0gbm9Jbml0aWFsID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGFDYWxsYWJsZShjYWxsYmFja2ZuKTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKG5vSW5pdGlhbCkge1xuICAgICAgICBub0luaXRpYWwgPSBmYWxzZTtcbiAgICAgICAgYWNjdW11bGF0b3IgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gY2FsbGJhY2tmbihhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgbWFwKTtcbiAgICAgIH1cbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIGlmIChub0luaXRpYWwpIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IG1hcCB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRNYXBJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWFwLWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0TWFwSXRlcmF0b3IobWFwKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKGJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnVwZGF0ZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoa2V5LCBjYWxsYmFjayAvKiAsIHRodW5rICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFDYWxsYWJsZShjYWxsYmFjayk7XG4gICAgdmFyIGlzUHJlc2VudEluTWFwID0gbWFwLmhhcyhrZXkpO1xuICAgIGlmICghaXNQcmVzZW50SW5NYXAgJiYgbGVuZ3RoIDwgMykge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdVcGRhdGluZyBhYnNlbnQgdmFsdWUnKTtcbiAgICB9XG4gICAgdmFyIHZhbHVlID0gaXNQcmVzZW50SW5NYXAgPyBtYXAuZ2V0KGtleSkgOiBhQ2FsbGFibGUobGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCkoa2V5LCBtYXApO1xuICAgIG1hcC5zZXQoa2V5LCBjYWxsYmFjayh2YWx1ZSwga2V5LCBtYXApKTtcbiAgICByZXR1cm4gbWFwO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLnVwc2VydGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGh1bWJzdXBlcC9wcm9wb3NhbC11cHNlcnRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdXBzZXJ0KGtleSwgdXBkYXRlRm4gLyogLCBpbnNlcnRGbiAqLykge1xuICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciBpbnNlcnRGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgdmFsdWU7XG4gIGlmICghaXNDYWxsYWJsZSh1cGRhdGVGbikgJiYgIWlzQ2FsbGFibGUoaW5zZXJ0Rm4pKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdBdCBsZWFzdCBvbmUgY2FsbGJhY2sgcmVxdWlyZWQnKTtcbiAgfVxuICBpZiAobWFwLmhhcyhrZXkpKSB7XG4gICAgdmFsdWUgPSBtYXAuZ2V0KGtleSk7XG4gICAgaWYgKGlzQ2FsbGFibGUodXBkYXRlRm4pKSB7XG4gICAgICB2YWx1ZSA9IHVwZGF0ZUZuKHZhbHVlKTtcbiAgICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQ2FsbGFibGUoaW5zZXJ0Rm4pKSB7XG4gICAgdmFsdWUgPSBpbnNlcnRGbigpO1xuICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IHJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciAkdXBzZXJ0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hcC11cHNlcnQnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUudXBkYXRlT3JJbnNlcnRgIG1ldGhvZCAocmVwbGFjZWQgYnkgYE1hcC5wcm90b3R5cGUuZW1wbGFjZWApXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGh1bWJzdXBlcC9wcm9wb3NhbC11cHNlcnRcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgbmFtZTogJ3Vwc2VydCcsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHVwZGF0ZU9ySW5zZXJ0OiAkdXBzZXJ0XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IHJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciAkdXBzZXJ0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hcC11cHNlcnQnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUudXBzZXJ0YCBtZXRob2QgKHJlcGxhY2VkIGJ5IGBNYXAucHJvdG90eXBlLmVtcGxhY2VgKVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RodW1ic3VwZXAvcHJvcG9zYWwtdXBzZXJ0XG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHVwc2VydDogJHVwc2VydFxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIG1heCA9IE1hdGgubWF4O1xuXG4vLyBgTWF0aC5jbGFtcGAgbWV0aG9kXG4vLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBjbGFtcDogZnVuY3Rpb24gY2xhbXAoeCwgbG93ZXIsIHVwcGVyKSB7XG4gICAgcmV0dXJuIG1pbih1cHBlciwgbWF4KGxvd2VyLCB4KSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLkRFR19QRVJfUkFEYCBjb25zdGFudFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODBcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbnZhciBSQURfUEVSX0RFRyA9IDE4MCAvIE1hdGguUEk7XG5cbi8vIGBNYXRoLmRlZ3JlZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZGVncmVlczogZnVuY3Rpb24gZGVncmVlcyhyYWRpYW5zKSB7XG4gICAgcmV0dXJuIHJhZGlhbnMgKiBSQURfUEVSX0RFRztcbiAgfVxufSk7XG4iLCIvLyBgTWF0aC5zY2FsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2NhbGUgfHwgZnVuY3Rpb24gc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gIGlmIChcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAwXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrICovXG4gICAgICB8fCB4ICE9IHhcbiAgICAgIHx8IGluTG93ICE9IGluTG93XG4gICAgICB8fCBpbkhpZ2ggIT0gaW5IaWdoXG4gICAgICB8fCBvdXRMb3cgIT0gb3V0TG93XG4gICAgICB8fCBvdXRIaWdoICE9IG91dEhpZ2hcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVjayAqL1xuICApIHJldHVybiBOYU47XG4gIGlmICh4ID09PSBJbmZpbml0eSB8fCB4ID09PSAtSW5maW5pdHkpIHJldHVybiB4O1xuICByZXR1cm4gKHggLSBpbkxvdykgKiAob3V0SGlnaCAtIG91dExvdykgLyAoaW5IaWdoIC0gaW5Mb3cpICsgb3V0TG93O1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgc2NhbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1zY2FsZScpO1xudmFyIGZyb3VuZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLWZyb3VuZCcpO1xuXG4vLyBgTWF0aC5mc2NhbGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnNjYWxlOiBmdW5jdGlvbiBmc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSB7XG4gICAgcmV0dXJuIGZyb3VuZChzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE1hdGguaWFkZGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBpYWRkaDogZnVuY3Rpb24gaWFkZGgoeDAsIHgxLCB5MCwgeTEpIHtcbiAgICB2YXIgJHgwID0geDAgPj4+IDA7XG4gICAgdmFyICR4MSA9IHgxID4+PiAwO1xuICAgIHZhciAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxICsgKHkxID4+PiAwKSArICgoJHgwICYgJHkwIHwgKCR4MCB8ICR5MCkgJiB+KCR4MCArICR5MCA+Pj4gMCkpID4+PiAzMSkgfCAwO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTWF0aC5pbXVsaGAgbWV0aG9kXG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGltdWxoOiBmdW5jdGlvbiBpbXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4RkZGRjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE1hdGguaXN1YmhgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBpc3ViaDogZnVuY3Rpb24gaXN1YmgoeDAsIHgxLCB5MCwgeTEpIHtcbiAgICB2YXIgJHgwID0geDAgPj4+IDA7XG4gICAgdmFyICR4MSA9IHgxID4+PiAwO1xuICAgIHZhciAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxIC0gKHkxID4+PiAwKSAtICgofiR4MCAmICR5MCB8IH4oJHgwIF4gJHkwKSAmICR4MCAtICR5MCA+Pj4gMCkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLlJBRF9QRVJfREVHYCBjb25zdGFudFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgUkFEX1BFUl9ERUc6IDE4MCAvIE1hdGguUElcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbnZhciBERUdfUEVSX1JBRCA9IE1hdGguUEkgLyAxODA7XG5cbi8vIGBNYXRoLnJhZGlhbnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgcmFkaWFuczogZnVuY3Rpb24gcmFkaWFucyhkZWdyZWVzKSB7XG4gICAgcmV0dXJuIGRlZ3JlZXMgKiBERUdfUEVSX1JBRDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBzY2FsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXNjYWxlJyk7XG5cbi8vIGBNYXRoLnNjYWxlYCBtZXRob2Rcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNjYWxlOiBzY2FsZVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBudW1iZXJJc0Zpbml0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItaXMtZmluaXRlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBTRUVERURfUkFORE9NID0gJ1NlZWRlZCBSYW5kb20nO1xudmFyIFNFRURFRF9SQU5ET01fR0VORVJBVE9SID0gU0VFREVEX1JBTkRPTSArICcgR2VuZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNFRURFRF9SQU5ET01fR0VORVJBVE9SKTtcbnZhciBTRUVEX1RZUEVfRVJST1IgPSAnTWF0aC5zZWVkZWRQUk5HKCkgYXJndW1lbnQgc2hvdWxkIGhhdmUgYSBcInNlZWRcIiBmaWVsZCB3aXRoIGEgZmluaXRlIHZhbHVlLic7XG5cbnZhciAkU2VlZGVkUmFuZG9tR2VuZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBTZWVkZWRSYW5kb21HZW5lcmF0b3Ioc2VlZCkge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBTRUVERURfUkFORE9NX0dFTkVSQVRPUixcbiAgICBzZWVkOiBzZWVkICUgMjE0NzQ4MzY0N1xuICB9KTtcbn0sIFNFRURFRF9SQU5ET00sIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciBzZWVkID0gc3RhdGUuc2VlZCA9IChzdGF0ZS5zZWVkICogMTEwMzUxNTI0NSArIDEyMzQ1KSAlIDIxNDc0ODM2NDc7XG4gIHJldHVybiB7IHZhbHVlOiAoc2VlZCAmIDEwNzM3NDE4MjMpIC8gMTA3Mzc0MTgyMywgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4vLyBgTWF0aC5zZWVkZWRQUk5HYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNlZWRlZC1yYW5kb21cbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNlZWRlZC1yYW5kb20vYmxvYi83OGI4MjU4ODM1YjU3ZmMyMTAwZDA3NjE1MWFiNTA2YmMzMjAyYWU2L2RlbW8uaHRtbFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICBzZWVkZWRQUk5HOiBmdW5jdGlvbiBzZWVkZWRQUk5HKGl0KSB7XG4gICAgdmFyIHNlZWQgPSBhbk9iamVjdChpdCkuc2VlZDtcbiAgICBpZiAoIW51bWJlcklzRmluaXRlKHNlZWQpKSB0aHJvdyBUeXBlRXJyb3IoU0VFRF9UWVBFX0VSUk9SKTtcbiAgICByZXR1cm4gbmV3ICRTZWVkZWRSYW5kb21HZW5lcmF0b3Ioc2VlZCk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLnNpZ25iaXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtTWF0aC5zaWduYml0XG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBzaWduYml0OiBmdW5jdGlvbiBzaWduYml0KHgpIHtcbiAgICByZXR1cm4gKHggPSAreCkgPT0geCAmJiB4ID09IDAgPyAxIC8geCA9PSAtSW5maW5pdHkgOiB4IDwgMDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE1hdGgudW11bGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICB1bXVsaDogZnVuY3Rpb24gdW11bGgodSwgdikge1xuICAgIHZhciBVSU5UMTYgPSAweEZGRkY7XG4gICAgdmFyICR1ID0gK3U7XG4gICAgdmFyICR2ID0gK3Y7XG4gICAgdmFyIHUwID0gJHUgJiBVSU5UMTY7XG4gICAgdmFyIHYwID0gJHYgJiBVSU5UMTY7XG4gICAgdmFyIHUxID0gJHUgPj4+IDE2O1xuICAgIHZhciB2MSA9ICR2ID4+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+Pj4gMTYpICsgKCh1MCAqIHYxID4+PiAwKSArICh0ICYgVUlOVDE2KSA+Pj4gMTYpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHBhcnNlSW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1wYXJzZS1pbnQnKTtcblxudmFyIElOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OID0gJ0ludmFsaWQgbnVtYmVyIHJlcHJlc2VudGF0aW9uJztcbnZhciBJTlZBTElEX1JBRElYID0gJ0ludmFsaWQgcmFkaXgnO1xudmFyIHZhbGlkID0gL15bXFxkYS16XSskLztcblxuLy8gYE51bWJlci5mcm9tU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW51bWJlci1mcm9tc3RyaW5nXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZyb21TdHJpbmc6IGZ1bmN0aW9uIGZyb21TdHJpbmcoc3RyaW5nLCByYWRpeCkge1xuICAgIHZhciBzaWduID0gMTtcbiAgICB2YXIgUiwgbWF0aE51bTtcbiAgICBpZiAodHlwZW9mIHN0cmluZyAhPSAnc3RyaW5nJykgdGhyb3cgVHlwZUVycm9yKElOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OKTtcbiAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHRocm93IFN5bnRheEVycm9yKElOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OKTtcbiAgICBpZiAoc3RyaW5nLmNoYXJBdCgwKSA9PSAnLScpIHtcbiAgICAgIHNpZ24gPSAtMTtcbiAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZSgxKTtcbiAgICAgIGlmICghc3RyaW5nLmxlbmd0aCkgdGhyb3cgU3ludGF4RXJyb3IoSU5WQUxJRF9OVU1CRVJfUkVQUkVTRU5UQVRJT04pO1xuICAgIH1cbiAgICBSID0gcmFkaXggPT09IHVuZGVmaW5lZCA/IDEwIDogdG9JbnRlZ2VyT3JJbmZpbml0eShyYWRpeCk7XG4gICAgaWYgKFIgPCAyIHx8IFIgPiAzNikgdGhyb3cgUmFuZ2VFcnJvcihJTlZBTElEX1JBRElYKTtcbiAgICBpZiAoIXZhbGlkLnRlc3Qoc3RyaW5nKSB8fCAobWF0aE51bSA9IHBhcnNlSW50KHN0cmluZywgUikpLnRvU3RyaW5nKFIpICE9PSBzdHJpbmcpIHtcbiAgICAgIHRocm93IFN5bnRheEVycm9yKElOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ24gKiBtYXRoTnVtO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE51bWVyaWNSYW5nZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWVyaWMtcmFuZ2UtaXRlcmF0b3InKTtcblxuLy8gYE51bWJlci5yYW5nZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1OdW1iZXIucmFuZ2VcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgcmFuZ2U6IGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbikge1xuICAgIHJldHVybiBuZXcgTnVtZXJpY1JhbmdlSXRlcmF0b3Ioc3RhcnQsIGVuZCwgb3B0aW9uLCAnbnVtYmVyJywgMCwgMSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgT0JKRUNUX0lURVJBVE9SID0gJ09iamVjdCBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihPQkpFQ1RfSVRFUkFUT1IpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gT2JqZWN0SXRlcmF0b3Ioc291cmNlLCBtb2RlKSB7XG4gIHZhciBvYmplY3QgPSB0b09iamVjdChzb3VyY2UpO1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBPQkpFQ1RfSVRFUkFUT1IsXG4gICAgbW9kZTogbW9kZSxcbiAgICBvYmplY3Q6IG9iamVjdCxcbiAgICBrZXlzOiBvYmplY3RLZXlzKG9iamVjdCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG59LCAnT2JqZWN0JywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIGtleXMgPSBzdGF0ZS5rZXlzO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChrZXlzID09PSBudWxsIHx8IHN0YXRlLmluZGV4ID49IGtleXMubGVuZ3RoKSB7XG4gICAgICBzdGF0ZS5vYmplY3QgPSBzdGF0ZS5rZXlzID0gbnVsbDtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICB9XG4gICAgdmFyIGtleSA9IGtleXNbc3RhdGUuaW5kZXgrK107XG4gICAgdmFyIG9iamVjdCA9IHN0YXRlLm9iamVjdDtcbiAgICBpZiAoIWhhc093bihvYmplY3QsIGtleSkpIGNvbnRpbnVlO1xuICAgIHN3aXRjaCAoc3RhdGUubW9kZSkge1xuICAgICAgY2FzZSAna2V5cyc6IHJldHVybiB7IHZhbHVlOiBrZXksIGRvbmU6IGZhbHNlIH07XG4gICAgICBjYXNlICd2YWx1ZXMnOiByZXR1cm4geyB2YWx1ZTogb2JqZWN0W2tleV0sIGRvbmU6IGZhbHNlIH07XG4gICAgfSAvKiBlbnRyaWVzICovIHJldHVybiB7IHZhbHVlOiBba2V5LCBvYmplY3Rba2V5XV0sIGRvbmU6IGZhbHNlIH07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgT2JqZWN0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWl0ZXJhdG9yJyk7XG5cbi8vIGBPYmplY3QuaXRlcmF0ZUVudHJpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWl0ZXJhdGlvblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBpdGVyYXRlRW50cmllczogZnVuY3Rpb24gaXRlcmF0ZUVudHJpZXMob2JqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBPYmplY3RJdGVyYXRvcihvYmplY3QsICdlbnRyaWVzJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgT2JqZWN0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWl0ZXJhdG9yJyk7XG5cbi8vIGBPYmplY3QuaXRlcmF0ZUtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWl0ZXJhdGlvblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBpdGVyYXRlS2V5czogZnVuY3Rpb24gaXRlcmF0ZUtleXMob2JqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBPYmplY3RJdGVyYXRvcihvYmplY3QsICdrZXlzJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgT2JqZWN0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWl0ZXJhdG9yJyk7XG5cbi8vIGBPYmplY3QuaXRlcmF0ZVZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtaXRlcmF0aW9uXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGl0ZXJhdGVWYWx1ZXM6IGZ1bmN0aW9uIGl0ZXJhdGVWYWx1ZXMob2JqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBPYmplY3RJdGVyYXRvcihvYmplY3QsICd2YWx1ZXMnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYnNlcnZhYmxlXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBob3N0UmVwb3J0RXJyb3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIE9CU0VSVkFCTEUgPSB3ZWxsS25vd25TeW1ib2woJ29ic2VydmFibGUnKTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xuXG52YXIgY2xlYW51cFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb25TdGF0ZSkge1xuICB2YXIgY2xlYW51cCA9IHN1YnNjcmlwdGlvblN0YXRlLmNsZWFudXA7XG4gIGlmIChjbGVhbnVwKSB7XG4gICAgc3Vic2NyaXB0aW9uU3RhdGUuY2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgY2xlYW51cCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBob3N0UmVwb3J0RXJyb3JzKGVycm9yKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBzdWJzY3JpcHRpb25DbG9zZWQgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uU3RhdGUpIHtcbiAgcmV0dXJuIHN1YnNjcmlwdGlvblN0YXRlLm9ic2VydmVyID09PSB1bmRlZmluZWQ7XG59O1xuXG52YXIgY2xvc2UgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uU3RhdGUpIHtcbiAgdmFyIHN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvblN0YXRlLmZhY2FkZTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHN1YnNjcmlwdGlvbi5jbG9zZWQgPSB0cnVlO1xuICAgIHZhciBzdWJzY3JpcHRpb25PYnNlcnZlciA9IHN1YnNjcmlwdGlvblN0YXRlLnN1YnNjcmlwdGlvbk9ic2VydmVyO1xuICAgIGlmIChzdWJzY3JpcHRpb25PYnNlcnZlcikgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIuY2xvc2VkID0gdHJ1ZTtcbiAgfSBzdWJzY3JpcHRpb25TdGF0ZS5vYnNlcnZlciA9IHVuZGVmaW5lZDtcbn07XG5cbnZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAob2JzZXJ2ZXIsIHN1YnNjcmliZXIpIHtcbiAgdmFyIHN1YnNjcmlwdGlvblN0YXRlID0gc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgY2xlYW51cDogdW5kZWZpbmVkLFxuICAgIG9ic2VydmVyOiBhbk9iamVjdChvYnNlcnZlciksXG4gICAgc3Vic2NyaXB0aW9uT2JzZXJ2ZXI6IHVuZGVmaW5lZFxuICB9KTtcbiAgdmFyIHN0YXJ0O1xuICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLmNsb3NlZCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGlmIChzdGFydCA9IGdldE1ldGhvZChvYnNlcnZlciwgJ3N0YXJ0JykpIHN0YXJ0LmNhbGwob2JzZXJ2ZXIsIHRoaXMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhvc3RSZXBvcnRFcnJvcnMoZXJyb3IpO1xuICB9XG4gIGlmIChzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uU3RhdGUpKSByZXR1cm47XG4gIHZhciBzdWJzY3JpcHRpb25PYnNlcnZlciA9IHN1YnNjcmlwdGlvblN0YXRlLnN1YnNjcmlwdGlvbk9ic2VydmVyID0gbmV3IFN1YnNjcmlwdGlvbk9ic2VydmVyKHRoaXMpO1xuICB0cnkge1xuICAgIHZhciBjbGVhbnVwID0gc3Vic2NyaWJlcihzdWJzY3JpcHRpb25PYnNlcnZlcik7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IGNsZWFudXA7XG4gICAgaWYgKGNsZWFudXAgIT0gbnVsbCkgc3Vic2NyaXB0aW9uU3RhdGUuY2xlYW51cCA9IGlzQ2FsbGFibGUoY2xlYW51cC51bnN1YnNjcmliZSlcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgfVxuICAgICAgOiBhQ2FsbGFibGUoY2xlYW51cCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfSBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvblN0YXRlKSkgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25TdGF0ZSk7XG59O1xuXG5TdWJzY3JpcHRpb24ucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIHZhciBzdWJzY3JpcHRpb25TdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uU3RhdGUpKSB7XG4gICAgICBjbG9zZShzdWJzY3JpcHRpb25TdGF0ZSk7XG4gICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvblN0YXRlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5pZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KFN1YnNjcmlwdGlvbi5wcm90b3R5cGUsICdjbG9zZWQnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbkNsb3NlZChnZXRJbnRlcm5hbFN0YXRlKHRoaXMpKTtcbiAgfVxufSk7XG5cbnZhciBTdWJzY3JpcHRpb25PYnNlcnZlciA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7IHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uIH0pO1xuICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLmNsb3NlZCA9IGZhbHNlO1xufTtcblxuU3Vic2NyaXB0aW9uT2JzZXJ2ZXIucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgbmV4dDogZnVuY3Rpb24gbmV4dCh2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb25TdGF0ZSA9IGdldEludGVybmFsU3RhdGUoZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdWJzY3JpcHRpb24pO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvblN0YXRlKSkge1xuICAgICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uU3RhdGUub2JzZXJ2ZXI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmV4dE1ldGhvZCA9IGdldE1ldGhvZChvYnNlcnZlciwgJ25leHQnKTtcbiAgICAgICAgaWYgKG5leHRNZXRob2QpIG5leHRNZXRob2QuY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaG9zdFJlcG9ydEVycm9ycyhlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBlcnJvcjogZnVuY3Rpb24gZXJyb3IodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uU3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKGdldEludGVybmFsU3RhdGUodGhpcykuc3Vic2NyaXB0aW9uKTtcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb25TdGF0ZSkpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvblN0YXRlLm9ic2VydmVyO1xuICAgICAgY2xvc2Uoc3Vic2NyaXB0aW9uU3RhdGUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGVycm9yTWV0aG9kID0gZ2V0TWV0aG9kKG9ic2VydmVyLCAnZXJyb3InKTtcbiAgICAgICAgaWYgKGVycm9yTWV0aG9kKSBlcnJvck1ldGhvZC5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICAgIGVsc2UgaG9zdFJlcG9ydEVycm9ycyh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaG9zdFJlcG9ydEVycm9ycyhlcnIpO1xuICAgICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvblN0YXRlKTtcbiAgICB9XG4gIH0sXG4gIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZSgpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uU3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKGdldEludGVybmFsU3RhdGUodGhpcykuc3Vic2NyaXB0aW9uKTtcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb25TdGF0ZSkpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvblN0YXRlLm9ic2VydmVyO1xuICAgICAgY2xvc2Uoc3Vic2NyaXB0aW9uU3RhdGUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGNvbXBsZXRlTWV0aG9kID0gZ2V0TWV0aG9kKG9ic2VydmVyLCAnY29tcGxldGUnKTtcbiAgICAgICAgaWYgKGNvbXBsZXRlTWV0aG9kKSBjb21wbGV0ZU1ldGhvZC5jYWxsKG9ic2VydmVyKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhvc3RSZXBvcnRFcnJvcnMoZXJyb3IpO1xuICAgICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvblN0YXRlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5pZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KFN1YnNjcmlwdGlvbk9ic2VydmVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uQ2xvc2VkKGdldEludGVybmFsU3RhdGUoZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdWJzY3JpcHRpb24pKTtcbiAgfVxufSk7XG5cbnZhciAkT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlcikge1xuICBhbkluc3RhbmNlKHRoaXMsICRPYnNlcnZhYmxlLCAnT2JzZXJ2YWJsZScpO1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHsgc3Vic2NyaWJlcjogYUNhbGxhYmxlKHN1YnNjcmliZXIpIH0pO1xufTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUucHJvdG90eXBlLCB7XG4gIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24oaXNDYWxsYWJsZShvYnNlcnZlcikgPyB7XG4gICAgICBuZXh0OiBvYnNlcnZlcixcbiAgICAgIGVycm9yOiBsZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLFxuICAgICAgY29tcGxldGU6IGxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWRcbiAgICB9IDogaXNPYmplY3Qob2JzZXJ2ZXIpID8gb2JzZXJ2ZXIgOiB7fSwgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdWJzY3JpYmVyKTtcbiAgfVxufSk7XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLCB7XG4gIGZyb206IGZ1bmN0aW9uIGZyb20oeCkge1xuICAgIHZhciBDID0gaXNDb25zdHJ1Y3Rvcih0aGlzKSA/IHRoaXMgOiAkT2JzZXJ2YWJsZTtcbiAgICB2YXIgb2JzZXJ2YWJsZU1ldGhvZCA9IGdldE1ldGhvZChhbk9iamVjdCh4KSwgT0JTRVJWQUJMRSk7XG4gICAgaWYgKG9ic2VydmFibGVNZXRob2QpIHtcbiAgICAgIHZhciBvYnNlcnZhYmxlID0gYW5PYmplY3Qob2JzZXJ2YWJsZU1ldGhvZC5jYWxsKHgpKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDID8gb2JzZXJ2YWJsZSA6IG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKHgpO1xuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChpdCwgc3RvcCkge1xuICAgICAgICBvYnNlcnZlci5uZXh0KGl0KTtcbiAgICAgICAgaWYgKG9ic2VydmVyLmNsb3NlZCkgcmV0dXJuIHN0b3AoKTtcbiAgICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfSxcbiAgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIHZhciBDID0gaXNDb25zdHJ1Y3Rvcih0aGlzKSA/IHRoaXMgOiAkT2JzZXJ2YWJsZTtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaXRlbXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgaXRlbXNbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4KytdO1xuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChpdGVtc1tpXSk7XG4gICAgICAgIGlmIChvYnNlcnZlci5jbG9zZWQpIHJldHVybjtcbiAgICAgIH0gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbnJlZGVmaW5lKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwgT0JTRVJWQUJMRSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbiQoeyBnbG9iYWw6IHRydWUgfSwge1xuICBPYnNlcnZhYmxlOiAkT2JzZXJ2YWJsZVxufSk7XG5cbnNldFNwZWNpZXMoJ09ic2VydmFibGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcblxuLy8gYFByb21pc2UudHJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUgfSwge1xuICAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAgIChyZXN1bHQuZXJyb3IgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG52YXIgTWFwID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5tYXAnKTtcbnZhciBXZWFrTWFwID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy53ZWFrLW1hcCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcblxudmFyIG1ldGFkYXRhID0gc2hhcmVkKCdtZXRhZGF0YScpO1xudmFyIHN0b3JlID0gbWV0YWRhdGEuc3RvcmUgfHwgKG1ldGFkYXRhLnN0b3JlID0gbmV3IFdlYWtNYXAoKSk7XG5cbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBjcmVhdGUpIHtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuO1xuICAgIHN0b3JlLnNldCh0YXJnZXQsIHRhcmdldE1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfVxuICB2YXIga2V5TWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YS5nZXQodGFyZ2V0S2V5KTtcbiAgaWYgKCFrZXlNZXRhZGF0YSkge1xuICAgIGlmICghY3JlYXRlKSByZXR1cm47XG4gICAgdGFyZ2V0TWV0YWRhdGEuc2V0KHRhcmdldEtleSwga2V5TWV0YWRhdGEgPSBuZXcgTWFwKCkpO1xuICB9IHJldHVybiBrZXlNZXRhZGF0YTtcbn07XG5cbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KTtcbn07XG5cbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG1ldGFkYXRhTWFwLmdldChNZXRhZGF0YUtleSk7XG59O1xuXG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIHRydWUpLnNldChNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSk7XG59O1xuXG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHRhcmdldEtleSwgZmFsc2UpO1xuICB2YXIga2V5cyA9IFtdO1xuICBpZiAobWV0YWRhdGFNYXApIG1ldGFkYXRhTWFwLmZvckVhY2goZnVuY3Rpb24gKF8sIGtleSkgeyBrZXlzLnB1c2goa2V5KTsgfSk7XG4gIHJldHVybiBrZXlzO1xufTtcblxudmFyIHRvTWV0YWRhdGFLZXkgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0b3JlOiBzdG9yZSxcbiAgZ2V0TWFwOiBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwLFxuICBoYXM6IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEsXG4gIGdldDogb3JkaW5hcnlHZXRPd25NZXRhZGF0YSxcbiAgc2V0OiBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhLFxuICBrZXlzOiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyxcbiAgdG9LZXk6IHRvTWV0YWRhdGFLZXlcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBSZWZsZWN0TWV0YWRhdGFNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVmbGVjdC1tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcbnZhciBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnNldDtcblxuLy8gYFJlZmxlY3QuZGVmaW5lTWV0YWRhdGFgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGRlZmluZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbM10pO1xuICAgIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG52YXIgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5nZXRNYXA7XG52YXIgc3RvcmUgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuc3RvcmU7XG5cbi8vIGBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9yZWZsZWN0LW1ldGFkYXRhXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBkZWxldGVNZXRhZGF0YTogZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICAgIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YWRhdGFLZXkoYXJndW1lbnRzWzJdKTtcbiAgICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSwgZmFsc2UpO1xuICAgIGlmIChtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkIHx8ICFtZXRhZGF0YU1hcFsnZGVsZXRlJ10obWV0YWRhdGFLZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG1ldGFkYXRhTWFwLnNpemUpIHJldHVybiB0cnVlO1xuICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IHN0b3JlLmdldCh0YXJnZXQpO1xuICAgIHRhcmdldE1ldGFkYXRhWydkZWxldGUnXSh0YXJnZXRLZXkpO1xuICAgIHJldHVybiAhIXRhcmdldE1ldGFkYXRhLnNpemUgfHwgc3RvcmVbJ2RlbGV0ZSddKHRhcmdldCk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5oYXM7XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5nZXQ7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxudmFyIG9yZGluYXJ5R2V0TWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG4vLyBgUmVmbGVjdC5nZXRNZXRhZGF0YWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFkYXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gICAgcmV0dXJuIG9yZGluYXJ5R2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG4vLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxudmFyIFNldCA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUua2V5cztcbnZhciB0b01ldGFkYXRhS2V5ID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnRvS2V5O1xuXG52YXIgZnJvbSA9IGZ1bmN0aW9uIChpdGVyKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaXRlcmF0ZShpdGVyLCByZXN1bHQucHVzaCwgeyB0aGF0OiByZXN1bHQgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgb3JkaW5hcnlNZXRhZGF0YUtleXMgPSBmdW5jdGlvbiAoTywgUCkge1xuICB2YXIgb0tleXMgPSBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgdmFyIHBhcmVudCA9IGdldFByb3RvdHlwZU9mKE8pO1xuICBpZiAocGFyZW50ID09PSBudWxsKSByZXR1cm4gb0tleXM7XG4gIHZhciBwS2V5cyA9IG9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gIHJldHVybiBwS2V5cy5sZW5ndGggPyBvS2V5cy5sZW5ndGggPyBmcm9tKG5ldyBTZXQob0tleXMuY29uY2F0KHBLZXlzKSkpIDogcEtleXMgOiBvS2V5cztcbn07XG5cbi8vIGBSZWZsZWN0LmdldE1ldGFkYXRhS2V5c2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZ2V0TWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMV0pO1xuICAgIHJldHVybiBvcmRpbmFyeU1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLmdldDtcbnZhciB0b01ldGFkYXRhS2V5ID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnRvS2V5O1xuXG4vLyBgUmVmbGVjdC5nZXRPd25NZXRhZGF0YWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZ2V0T3duTWV0YWRhdGE6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFkYXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gICAgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLmtleXM7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxuLy8gYFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9yZWZsZWN0LW1ldGFkYXRhXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBnZXRPd25NZXRhZGF0YUtleXM6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiB0b01ldGFkYXRhS2V5KGFyZ3VtZW50c1sxXSk7XG4gICAgcmV0dXJuIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5oYXM7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxudmFyIG9yZGluYXJ5SGFzTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHBhcmVudCA9IGdldFByb3RvdHlwZU9mKE8pO1xuICByZXR1cm4gcGFyZW50ICE9PSBudWxsID8gb3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKSA6IGZhbHNlO1xufTtcblxuLy8gYFJlZmxlY3QuaGFzTWV0YWRhdGFgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGhhc01ldGFkYXRhOiBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMl0pO1xuICAgIHJldHVybiBvcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLmhhcztcbnZhciB0b01ldGFkYXRhS2V5ID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnRvS2V5O1xuXG4vLyBgUmVmbGVjdC5oYXNPd25NZXRhZGF0YWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaGFzT3duTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFkYXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gICAgcmV0dXJuIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5zZXQ7XG5cbi8vIGBSZWZsZWN0Lm1ldGFkYXRhYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9yZWZsZWN0LW1ldGFkYXRhXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBtZXRhZGF0YTogZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gZGVjb3JhdG9yKHRhcmdldCwga2V5KSB7XG4gICAgICBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCBhbk9iamVjdCh0YXJnZXQpLCB0b01ldGFkYXRhS2V5KGtleSkpO1xuICAgIH07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2NvbGxlY3Rpb24tbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgYWRkZXIgPSBhQ2FsbGFibGUoc2V0LmFkZCk7XG4gIGZvciAodmFyIGsgPSAwLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICBhZGRlci5jYWxsKHNldCwgYXJndW1lbnRzW2tdKTtcbiAgfVxuICByZXR1cm4gc2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGNvbGxlY3Rpb25BZGRBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1hZGQtYWxsJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmFkZEFsbGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgYWRkQWxsOiBmdW5jdGlvbiBhZGRBbGwoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbkFkZEFsbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGNvbGxlY3Rpb25EZWxldGVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1kZWxldGUtYWxsJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmRlbGV0ZUFsbGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZGVsZXRlQWxsOiBmdW5jdGlvbiBkZWxldGVBbGwoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbkRlbGV0ZUFsbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5kaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGRpZmZlcmVuY2U6IGZ1bmN0aW9uIGRpZmZlcmVuY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIG5ld1NldCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHNldCwgZ2V0QnVpbHRJbignU2V0JykpKShzZXQpO1xuICAgIHZhciByZW1vdmVyID0gYUNhbGxhYmxlKG5ld1NldFsnZGVsZXRlJ10pO1xuICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmVtb3Zlci5jYWxsKG5ld1NldCwgdmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXNldCAtLSBzYWZlXG4gIHJldHVybiBTZXQucHJvdG90eXBlLnZhbHVlcy5jYWxsKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldFNldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgcmV0dXJuICFpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmICghYm91bmRGdW5jdGlvbih2YWx1ZSwgdmFsdWUsIHNldCkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGdldFNldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIG5ld1NldCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHNldCwgZ2V0QnVpbHRJbignU2V0JykpKSgpO1xuICAgIHZhciBhZGRlciA9IGFDYWxsYWJsZShuZXdTZXQuYWRkKTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCB2YWx1ZSwgc2V0KSkgYWRkZXIuY2FsbChuZXdTZXQsIHZhbHVlKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRTZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCB2YWx1ZSwgc2V0KSkgcmV0dXJuIHN0b3AodmFsdWUpO1xuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZnJvbScpO1xuXG4vLyBgU2V0LmZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0LmZyb21cbiQoeyB0YXJnZXQ6ICdTZXQnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbTogZnJvbVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGludGVyc2VjdGlvbjogZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGl0ZXJhYmxlKSB7XG4gICAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBuZXdTZXQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihzZXQsIGdldEJ1aWx0SW4oJ1NldCcpKSkoKTtcbiAgICB2YXIgaGFzQ2hlY2sgPSBhQ2FsbGFibGUoc2V0Lmhhcyk7XG4gICAgdmFyIGFkZGVyID0gYUNhbGxhYmxlKG5ld1NldC5hZGQpO1xuICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKGhhc0NoZWNrLmNhbGwoc2V0LCB2YWx1ZSkpIGFkZGVyLmNhbGwobmV3U2V0LCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld1NldDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzRGlzam9pbnRGcm9tXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGlzRGlzam9pbnRGcm9tOiBmdW5jdGlvbiBpc0Rpc2pvaW50RnJvbShpdGVyYWJsZSkge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaGFzQ2hlY2sgPSBhQ2FsbGFibGUoc2V0Lmhhcyk7XG4gICAgcmV0dXJuICFpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChoYXNDaGVjay5jYWxsKHNldCwgdmFsdWUpID09PSB0cnVlKSByZXR1cm4gc3RvcCgpO1xuICAgIH0sIHsgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1YnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0LW1ldGhvZHMvI1NldC5wcm90b3R5cGUuaXNTdWJzZXRPZlxuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBpc1N1YnNldE9mOiBmdW5jdGlvbiBpc1N1YnNldE9mKGl0ZXJhYmxlKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IodGhpcyk7XG4gICAgdmFyIG90aGVyU2V0ID0gYW5PYmplY3QoaXRlcmFibGUpO1xuICAgIHZhciBoYXNDaGVjayA9IG90aGVyU2V0LmhhcztcbiAgICBpZiAoIWlzQ2FsbGFibGUoaGFzQ2hlY2spKSB7XG4gICAgICBvdGhlclNldCA9IG5ldyAoZ2V0QnVpbHRJbignU2V0JykpKGl0ZXJhYmxlKTtcbiAgICAgIGhhc0NoZWNrID0gYUNhbGxhYmxlKG90aGVyU2V0Lmhhcyk7XG4gICAgfVxuICAgIHJldHVybiAhaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoaGFzQ2hlY2suY2FsbChvdGhlclNldCwgdmFsdWUpID09PSBmYWxzZSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3VwZXJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzU3VwZXJzZXRPZlxuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBpc1N1cGVyc2V0T2Y6IGZ1bmN0aW9uIGlzU3VwZXJzZXRPZihpdGVyYWJsZSkge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaGFzQ2hlY2sgPSBhQ2FsbGFibGUoc2V0Lmhhcyk7XG4gICAgcmV0dXJuICFpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChoYXNDaGVjay5jYWxsKHNldCwgdmFsdWUpID09PSBmYWxzZSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0U2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5qb2luYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBzZXAgPSBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IFN0cmluZyhzZXBhcmF0b3IpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCByZXN1bHQucHVzaCwgeyB0aGF0OiByZXN1bHQsIElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiByZXN1bHQuam9pbihzZXApO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0U2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldFNldEl0ZXJhdG9yKHNldCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICB2YXIgbmV3U2V0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Ioc2V0LCBnZXRCdWlsdEluKCdTZXQnKSkpKCk7XG4gICAgdmFyIGFkZGVyID0gYUNhbGxhYmxlKG5ld1NldC5hZGQpO1xuICAgIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgYWRkZXIuY2FsbChuZXdTZXQsIGJvdW5kRnVuY3Rpb24odmFsdWUsIHZhbHVlLCBzZXQpKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1vZicpO1xuXG4vLyBgU2V0Lm9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5vZlxuJCh7IHRhcmdldDogJ1NldCcsIHN0YXQ6IHRydWUgfSwge1xuICBvZjogb2Zcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRTZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBub0luaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDwgMjtcbiAgICB2YXIgYWNjdW11bGF0b3IgPSBub0luaXRpYWwgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgYUNhbGxhYmxlKGNhbGxiYWNrZm4pO1xuICAgIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKG5vSW5pdGlhbCkge1xuICAgICAgICBub0luaXRpYWwgPSBmYWxzZTtcbiAgICAgICAgYWNjdW11bGF0b3IgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gY2FsbGJhY2tmbihhY2N1bXVsYXRvciwgdmFsdWUsIHZhbHVlLCBzZXQpO1xuICAgICAgfVxuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUgfSk7XG4gICAgaWYgKG5vSW5pdGlhbCkgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgc2V0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldFNldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgcmV0dXJuIGl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uICh2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKGJvdW5kRnVuY3Rpb24odmFsdWUsIHZhbHVlLCBzZXQpKSByZXR1cm4gc3RvcCgpO1xuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnN5bW1ldHJpY0RpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgc3ltbWV0cmljRGlmZmVyZW5jZTogZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShpdGVyYWJsZSkge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgbmV3U2V0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Ioc2V0LCBnZXRCdWlsdEluKCdTZXQnKSkpKHNldCk7XG4gICAgdmFyIHJlbW92ZXIgPSBhQ2FsbGFibGUobmV3U2V0WydkZWxldGUnXSk7XG4gICAgdmFyIGFkZGVyID0gYUNhbGxhYmxlKG5ld1NldC5hZGQpO1xuICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmVtb3Zlci5jYWxsKG5ld1NldCwgdmFsdWUpIHx8IGFkZGVyLmNhbGwobmV3U2V0LCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld1NldDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUudW5pb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgdW5pb246IGZ1bmN0aW9uIHVuaW9uKGl0ZXJhYmxlKSB7XG4gICAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBuZXdTZXQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihzZXQsIGdldEJ1aWx0SW4oJ1NldCcpKSkoc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBhQ2FsbGFibGUobmV3U2V0LmFkZCksIHsgdGhhdDogbmV3U2V0IH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICfwoK63Jy5hdCgwKSAhPT0gJ/CgrrcnO1xufSk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBhdDogZnVuY3Rpb24gYXQocG9zKSB7XG4gICAgcmV0dXJuIGNoYXJBdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgU3RyaW5nTXVsdGlieXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKTtcblxudmFyIGNvZGVBdCA9IFN0cmluZ011bHRpYnl0ZU1vZHVsZS5jb2RlQXQ7XG52YXIgY2hhckF0ID0gU3RyaW5nTXVsdGlieXRlTW9kdWxlLmNoYXJBdDtcbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIFRPRE86IHVuaWZ5IHdpdGggU3RyaW5nI0BAaXRlcmF0b3JcbnZhciAkU3RyaW5nSXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKGZ1bmN0aW9uIFN0cmluZ0l0ZXJhdG9yKHN0cmluZykge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBTVFJJTkdfSVRFUkFUT1IsXG4gICAgc3RyaW5nOiBzdHJpbmcsXG4gICAgaW5kZXg6IDBcbiAgfSk7XG59LCAnU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjaGFyQXQoc3RyaW5nLCBpbmRleCk7XG4gIHN0YXRlLmluZGV4ICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHsgY29kZVBvaW50OiBjb2RlQXQocG9pbnQsIDApLCBwb3NpdGlvbjogaW5kZXggfSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wcm90b3R5cGUtY29kZXBvaW50c1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlIH0sIHtcbiAgY29kZVBvaW50czogZnVuY3Rpb24gY29kZVBvaW50cygpIHtcbiAgICByZXR1cm4gbmV3ICRTdHJpbmdJdGVyYXRvcih0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKSk7XG4gIH1cbn0pO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5hc3luY0Rpc3Bvc2VgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC11c2luZy1zdGF0ZW1lbnRcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnYXN5bmNEaXNwb3NlJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLmRpc3Bvc2VgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC11c2luZy1zdGF0ZW1lbnRcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnZGlzcG9zZScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5tYXRjaGVyYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcGF0dGVybi1tYXRjaGluZ1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtYXRjaGVyJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLm1ldGFkYXRhYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZGVjb3JhdG9yc1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtZXRhZGF0YScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5vYnNlcnZhYmxlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdvYnNlcnZhYmxlJyk7XG4iLCIvLyBUT0RPOiByZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5wYXR0ZXJuTWF0Y2hgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wYXR0ZXJuLW1hdGNoaW5nXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3BhdHRlcm5NYXRjaCcpO1xuIiwiLy8gVE9ETzogcmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbmRlZmluZVdlbGxLbm93blN5bWJvbCgncmVwbGFjZUFsbCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciBhcnJheUZyb21Bc3luYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tLWFzeW5jJyk7XG52YXIgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycycpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIGFycmF5RnJvbUNvbnN0cnVjdG9yQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tLWNvbnN0cnVjdG9yLWFuZC1saXN0Jyk7XG5cbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUuZnJvbUFzeW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZyb20tYXN5bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAtLSByZXF1aXJlZCBmb3IgLmxlbmd0aFxuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCgnZnJvbUFzeW5jJywgZnVuY3Rpb24gZnJvbUFzeW5jKGFzeW5jSXRlbXMgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICB2YXIgQyA9IHRoaXM7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiBuZXcgKGdldEJ1aWx0SW4oJ1Byb21pc2UnKSkoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBhQ29uc3RydWN0b3IoQyk7XG4gICAgcmVzb2x2ZShhcnJheUZyb21Bc3luYyhhc3luY0l0ZW1zLCBtYXBmbiwgdGhpc0FyZykpO1xuICB9KS50aGVuKGZ1bmN0aW9uIChsaXN0KSB7XG4gICAgcmV0dXJuIGFycmF5RnJvbUNvbnN0cnVjdG9yQW5kTGlzdChhVHlwZWRBcnJheUNvbnN0cnVjdG9yKEMpLCBsaXN0KTtcbiAgfSk7XG59LCBUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbHRlclJlamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maWx0ZXJSZWplY3Q7XG52YXIgZnJvbVNwZWNpZXNBbmRMaXN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20tc3BlY2llcy1hbmQtbGlzdCcpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbHRlck91dGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maWx0ZXJpbmdcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZpbHRlck91dCcsIGZ1bmN0aW9uIGZpbHRlck91dChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICB2YXIgbGlzdCA9ICRmaWx0ZXJSZWplY3QoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgcmV0dXJuIGZyb21TcGVjaWVzQW5kTGlzdCh0aGlzLCBsaXN0KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmaWx0ZXJSZWplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyUmVqZWN0O1xudmFyIGZyb21TcGVjaWVzQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLXNwZWNpZXMtYW5kLWxpc3QnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maWx0ZXJSZWplY3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaWx0ZXJSZWplY3QnLCBmdW5jdGlvbiBmaWx0ZXJSZWplY3QoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgdmFyIGxpc3QgPSAkZmlsdGVyUmVqZWN0KGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIHJldHVybiBmcm9tU3BlY2llc0FuZExpc3QodGhpcywgbGlzdCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZExhc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdCcpLmZpbmRMYXN0O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbmRMYXN0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbmQtZnJvbS1sYXN0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kTGFzdCcsIGZ1bmN0aW9uIGZpbmRMYXN0KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmaW5kTGFzdChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZExhc3RJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24tZnJvbS1sYXN0JykuZmluZExhc3RJbmRleDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maW5kTGFzdEluZGV4YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbmQtZnJvbS1sYXN0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kTGFzdEluZGV4JywgZnVuY3Rpb24gZmluZExhc3RJbmRleChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZmluZExhc3RJbmRleChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZ3JvdXBCeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1ncm91cC1ieScpO1xudmFyIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmdyb3VwQnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZ3JvdXBpbmdcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2dyb3VwQnknLCBmdW5jdGlvbiBncm91cEJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiAkZ3JvdXBCeShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgdGhpc0FyZywgdHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3Rvcik7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciBhcnJheVVuaXF1ZUJ5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXVuaXF1ZS1ieScpO1xudmFyIGZyb21TcGVjaWVzQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLXNwZWNpZXMtYW5kLWxpc3QnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS51bmlxdWVCeWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS11bmlxdWVcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3VuaXF1ZUJ5JywgZnVuY3Rpb24gdW5pcXVlQnkocmVzb2x2ZXIpIHtcbiAgcmV0dXJuIGZyb21TcGVjaWVzQW5kTGlzdCh0aGlzLCBhcnJheVVuaXF1ZUJ5LmNhbGwoYVR5cGVkQXJyYXkodGhpcyksIHJlc29sdmVyKSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGNvbGxlY3Rpb25EZWxldGVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1kZWxldGUtYWxsJyk7XG5cbi8vIGBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGVBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnV2Vha01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBkZWxldGVBbGw6IGZ1bmN0aW9uIGRlbGV0ZUFsbCgvKiAuLi5lbGVtZW50cyAqLykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uRGVsZXRlQWxsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWZyb20nKTtcblxuLy8gYFdlYWtNYXAuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLmZyb21cbiQoeyB0YXJnZXQ6ICdXZWFrTWFwJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1vZicpO1xuXG4vLyBgV2Vha01hcC5vZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLm9mXG4kKHsgdGFyZ2V0OiAnV2Vha01hcCcsIHN0YXQ6IHRydWUgfSwge1xuICBvZjogb2Zcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgJGVtcGxhY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFwLWVtcGxhY2UnKTtcblxuLy8gYFdlYWtNYXAucHJvdG90eXBlLmVtcGxhY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdXBzZXJ0XG4kKHsgdGFyZ2V0OiAnV2Vha01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBlbXBsYWNlOiAkZW1wbGFjZVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiByZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgJHVwc2VydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXAtdXBzZXJ0Jyk7XG5cbi8vIGBXZWFrTWFwLnByb3RvdHlwZS51cHNlcnRgIG1ldGhvZCAocmVwbGFjZWQgYnkgYFdlYWtNYXAucHJvdG90eXBlLmVtcGxhY2VgKVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdXBzZXJ0XG4kKHsgdGFyZ2V0OiAnV2Vha01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICB1cHNlcnQ6ICR1cHNlcnRcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgY29sbGVjdGlvbkFkZEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWFkZC1hbGwnKTtcblxuLy8gYFdlYWtTZXQucHJvdG90eXBlLmFkZEFsbGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdXZWFrU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGFkZEFsbDogZnVuY3Rpb24gYWRkQWxsKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25BZGRBbGwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBjb2xsZWN0aW9uRGVsZXRlQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZGVsZXRlLWFsbCcpO1xuXG4vLyBgV2Vha1NldC5wcm90b3R5cGUuZGVsZXRlQWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1dlYWtTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZGVsZXRlQWxsOiBmdW5jdGlvbiBkZWxldGVBbGwoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbkRlbGV0ZUFsbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1mcm9tJyk7XG5cbi8vIGBXZWFrU2V0LmZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha3NldC5mcm9tXG4kKHsgdGFyZ2V0OiAnV2Vha1NldCcsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tOiBmcm9tXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tb2YnKTtcblxuLy8gYFdlYWtTZXQub2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha3NldC5vZlxuJCh7IHRhcmdldDogJ1dlYWtTZXQnLCBzdGF0OiB0cnVlIH0sIHtcbiAgb2Y6IG9mXG59KTtcbiIsIi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwiLy8gaW4gb2xkIFdlYktpdCB2ZXJzaW9ucywgYGVsZW1lbnQuY2xhc3NMaXN0YCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgZ2xvYmFsIGBET01Ub2tlbkxpc3RgXG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbnZhciBjbGFzc0xpc3QgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ3NwYW4nKS5jbGFzc0xpc3Q7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gY2xhc3NMaXN0ICYmIGNsYXNzTGlzdC5jb25zdHJ1Y3RvciAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVRva2VuTGlzdFByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSA/IHVuZGVmaW5lZCA6IERPTVRva2VuTGlzdFByb3RvdHlwZTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBET01Ub2tlbkxpc3RQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLXRva2VuLWxpc3QtcHJvdG90eXBlJyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxudmFyIGhhbmRsZVByb3RvdHlwZSA9IGZ1bmN0aW9uIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZSAmJiBDb2xsZWN0aW9uUHJvdG90eXBlLmZvckVhY2ggIT09IGZvckVhY2gpIHRyeSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsICdmb3JFYWNoJywgZm9yRWFjaCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgQ29sbGVjdGlvblByb3RvdHlwZS5mb3JFYWNoID0gZm9yRWFjaDtcbiAgfVxufTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICBpZiAoRE9NSXRlcmFibGVzW0NPTExFQ1RJT05fTkFNRV0pIHtcbiAgICBoYW5kbGVQcm90b3R5cGUoZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV0gJiYgZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV0ucHJvdG90eXBlKTtcbiAgfVxufVxuXG5oYW5kbGVQcm90b3R5cGUoRE9NVG9rZW5MaXN0UHJvdG90eXBlKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBET01Ub2tlbkxpc3RQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLXRva2VuLWxpc3QtcHJvdG90eXBlJyk7XG52YXIgQXJyYXlJdGVyYXRvck1ldGhvZHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciBBcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JNZXRob2RzLnZhbHVlcztcblxudmFyIGhhbmRsZVByb3RvdHlwZSA9IGZ1bmN0aW9uIChDb2xsZWN0aW9uUHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUpIHtcbiAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGUpIHtcbiAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZVtJVEVSQVRPUl0gIT09IEFycmF5VmFsdWVzKSB0cnkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdID0gQXJyYXlWYWx1ZXM7XG4gICAgfVxuICAgIGlmICghQ29sbGVjdGlvblByb3RvdHlwZVtUT19TVFJJTkdfVEFHXSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIENPTExFQ1RJT05fTkFNRSk7XG4gICAgfVxuICAgIGlmIChET01JdGVyYWJsZXNbQ09MTEVDVElPTl9OQU1FXSkgZm9yICh2YXIgTUVUSE9EX05BTUUgaW4gQXJyYXlJdGVyYXRvck1ldGhvZHMpIHtcbiAgICAgIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICAgICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdICE9PSBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV0pIHRyeSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBNRVRIT0RfTkFNRSwgQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdID0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICBoYW5kbGVQcm90b3R5cGUoZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV0gJiYgZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV0ucHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUpO1xufVxuXG5oYW5kbGVQcm90b3R5cGUoRE9NVG9rZW5MaXN0UHJvdG90eXBlLCAnRE9NVG9rZW5MaXN0Jyk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90YXNrJyk7XG5cbnZhciBGT1JDRUQgPSAhZ2xvYmFsLnNldEltbWVkaWF0ZSB8fCAhZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xuXG4vLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9zZXRJbW1lZGlhdGUvXG4kKHsgZ2xvYmFsOiB0cnVlLCBiaW5kOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIC8vIGBzZXRJbW1lZGlhdGVgIG1ldGhvZFxuICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9zZXRJbW1lZGlhdGUvI3NpLXNldEltbWVkaWF0ZVxuICBzZXRJbW1lZGlhdGU6IHRhc2suc2V0LFxuICAvLyBgY2xlYXJJbW1lZGlhdGVgIG1ldGhvZFxuICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9zZXRJbW1lZGlhdGUvI3NpLWNsZWFySW1tZWRpYXRlXG4gIGNsZWFySW1tZWRpYXRlOiB0YXNrLmNsZWFyXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWljcm90YXNrJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xuXG4vLyBgcXVldWVNaWNyb3Rhc2tgIG1ldGhvZFxuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGltZXJzLWFuZC11c2VyLXByb21wdHMuaHRtbCNkb20tcXVldWVtaWNyb3Rhc2tcbiQoeyBnbG9iYWw6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIG5vVGFyZ2V0R2V0OiB0cnVlIH0sIHtcbiAgcXVldWVNaWNyb3Rhc2s6IGZ1bmN0aW9uIHF1ZXVlTWljcm90YXNrKGZuKSB7XG4gICAgdmFyIGRvbWFpbiA9IElTX05PREUgJiYgcHJvY2Vzcy5kb21haW47XG4gICAgbWljcm90YXNrKGRvbWFpbiA/IGRvbWFpbi5iaW5kKGZuKSA6IGZuKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHNjaGVkdWxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQgLyogLCAuLi5hcmd1bWVudHMgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHNjaGVkdWxlcihib3VuZEFyZ3MgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gc3BlYyByZXF1aXJlbWVudFxuICAgICAgKGlzQ2FsbGFibGUoaGFuZGxlcikgPyBoYW5kbGVyIDogRnVuY3Rpb24oaGFuZGxlcikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBoYW5kbGVyLCB0aW1lb3V0KTtcbiAgfTtcbn07XG5cbi8vIGllOS0gc2V0VGltZW91dCAmIHNldEludGVydmFsIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmaXhcbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RpbWVycy1hbmQtdXNlci1wcm9tcHRzLmh0bWwjdGltZXJzXG4kKHsgZ2xvYmFsOiB0cnVlLCBiaW5kOiB0cnVlLCBmb3JjZWQ6IE1TSUUgfSwge1xuICAvLyBgc2V0VGltZW91dGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RpbWVycy1hbmQtdXNlci1wcm9tcHRzLmh0bWwjZG9tLXNldHRpbWVvdXRcbiAgc2V0VGltZW91dDogd3JhcChnbG9iYWwuc2V0VGltZW91dCksXG4gIC8vIGBzZXRJbnRlcnZhbGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RpbWVycy1hbmQtdXNlci1wcm9tcHRzLmh0bWwjZG9tLXNldGludGVydmFsXG4gIHNldEludGVydmFsOiB3cmFwKGdsb2JhbC5zZXRJbnRlcnZhbClcbn0pO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gbmV3IFVSTCgnYj9hPTEmYj0yJmM9MycsICdodHRwOi8vYScpO1xuICB2YXIgc2VhcmNoUGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcztcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB1cmwucGF0aG5hbWUgPSAnYyUyMGQnO1xuICBzZWFyY2hQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHNlYXJjaFBhcmFtc1snZGVsZXRlJ10oJ2InKTtcbiAgICByZXN1bHQgKz0ga2V5ICsgdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gKElTX1BVUkUgJiYgIXVybC50b0pTT04pXG4gICAgfHwgIXNlYXJjaFBhcmFtcy5zb3J0XG4gICAgfHwgdXJsLmhyZWYgIT09ICdodHRwOi8vYS9jJTIwZD9hPTEmYz0zJ1xuICAgIHx8IHNlYXJjaFBhcmFtcy5nZXQoJ2MnKSAhPT0gJzMnXG4gICAgfHwgU3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoJz9hPTEnKSkgIT09ICdhPTEnXG4gICAgfHwgIXNlYXJjaFBhcmFtc1tJVEVSQVRPUl1cbiAgICAvLyB0aHJvd3MgaW4gRWRnZVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYUBiJykudXNlcm5hbWUgIT09ICdhJ1xuICAgIHx8IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygnYT1iJykpLmdldCgnYScpICE9PSAnYidcbiAgICAvLyBub3QgcHVueWNvZGVkIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwOi8v0YLQtdGB0YInKS5ob3N0ICE9PSAneG4tLWUxYXliYydcbiAgICAvLyBub3QgZXNjYXBlZCBpbiBDaHJvbWUgNjItXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL2Ej0LEnKS5oYXNoICE9PSAnIyVEMCVCMSdcbiAgICAvLyBmYWlscyBpbiBDaHJvbWUgNjYtXG4gICAgfHwgcmVzdWx0ICE9PSAnYTFjMydcbiAgICAvLyB0aHJvd3MgaW4gU2FmYXJpXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL3gnLCB1bmRlZmluZWQpLmhvc3QgIT09ICd4Jztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzL2Jsb2IvbWFzdGVyL3B1bnljb2RlLmpzXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx1MDA3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvWy5cXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcbnZhciBPVkVSRkxPV19FUlJPUiA9ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2Vzcyc7XG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqL1xudmFyIHVjczJkZWNvZGUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGNvdW50ZXIgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIEl0J3MgYSBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICB2YXIgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIExvdyBzdXJyb2dhdGUuXG4gICAgICAgIG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuICAgICAgICAvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgICBjb3VudGVyLS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuICovXG52YXIgZGlnaXRUb0Jhc2ljID0gZnVuY3Rpb24gKGRpZ2l0KSB7XG4gIC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG4gIC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuICByZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpO1xufTtcblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqL1xudmFyIGFkYXB0ID0gZnVuY3Rpb24gKGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuICB2YXIgayA9IDA7XG4gIGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG4gIGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcbiAgZm9yICg7IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG4gICAgZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuICB9XG4gIHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG4gIGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cbiAgLy8gQ2FjaGUgdGhlIGxlbmd0aC5cbiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuICB2YXIgbiA9IGluaXRpYWxOO1xuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuICB2YXIgaSwgY3VycmVudFZhbHVlO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDsgLy8gbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuICB2YXIgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDsgLy8gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cbiAgLy8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgb3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcbiAgfVxuXG4gIC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcbiAgd2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcbiAgICAvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0IGxhcmdlciBvbmU6XG4gICAgdmFyIG0gPSBtYXhJbnQ7XG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG4gICAgICAgIG0gPSBjdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LCBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy5cbiAgICB2YXIgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICB0aHJvdyBSYW5nZUVycm9yKE9WRVJGTE9XX0VSUk9SKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcbiAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG4pIHtcbiAgICAgICAgLy8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgIHZhciBxID0gZGVsdGE7XG4gICAgICAgIGZvciAodmFyIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuICAgICAgICAgIHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcbiAgICAgICAgICBpZiAocSA8IHQpIGJyZWFrO1xuICAgICAgICAgIHZhciBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgdmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcbiAgICAgICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCkpKTtcbiAgICAgICAgICBxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxKSkpO1xuICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuICAgICAgICBkZWx0YSA9IDA7XG4gICAgICAgICsraGFuZGxlZENQQ291bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKytkZWx0YTtcbiAgICArK247XG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBlbmNvZGVkID0gW107XG4gIHZhciBsYWJlbHMgPSBpbnB1dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx1MDAyRScpLnNwbGl0KCcuJyk7XG4gIHZhciBpLCBsYWJlbDtcbiAgZm9yIChpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgIGxhYmVsID0gbGFiZWxzW2ldO1xuICAgIGVuY29kZWQucHVzaChyZWdleE5vbkFTQ0lJLnRlc3QobGFiZWwpID8gJ3huLS0nICsgZW5jb2RlKGxhYmVsKSA6IGxhYmVsKTtcbiAgfVxuICByZXR1cm4gZW5jb2RlZC5qb2luKCcuJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXVybCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciAkdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBuYXRpdmVGZXRjaCA9IGdldEJ1aWx0SW4oJ2ZldGNoJyk7XG52YXIgTmF0aXZlUmVxdWVzdCA9IGdldEJ1aWx0SW4oJ1JlcXVlc3QnKTtcbnZhciBSZXF1ZXN0UHJvdG90eXBlID0gTmF0aXZlUmVxdWVzdCAmJiBOYXRpdmVSZXF1ZXN0LnByb3RvdHlwZTtcbnZhciBIZWFkZXJzID0gZ2V0QnVpbHRJbignSGVhZGVycycpO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFVSTF9TRUFSQ0hfUEFSQU1TID0gJ1VSTFNlYXJjaFBhcmFtcyc7XG52YXIgVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IgPSBVUkxfU0VBUkNIX1BBUkFNUyArICdJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsUGFyYW1zU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihVUkxfU0VBUkNIX1BBUkFNUyk7XG52YXIgZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IpO1xuXG52YXIgcGx1cyA9IC9cXCsvZztcbnZhciBzZXF1ZW5jZXMgPSBBcnJheSg0KTtcblxudmFyIHBlcmNlbnRTZXF1ZW5jZSA9IGZ1bmN0aW9uIChieXRlcykge1xuICByZXR1cm4gc2VxdWVuY2VzW2J5dGVzIC0gMV0gfHwgKHNlcXVlbmNlc1tieXRlcyAtIDFdID0gUmVnRXhwKCcoKD86JVtcXFxcZGEtZl17Mn0peycgKyBieXRlcyArICd9KScsICdnaScpKTtcbn07XG5cbnZhciBwZXJjZW50RGVjb2RlID0gZnVuY3Rpb24gKHNlcXVlbmNlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzZXF1ZW5jZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlO1xuICB9XG59O1xuXG52YXIgZGVzZXJpYWxpemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IGl0LnJlcGxhY2UocGx1cywgJyAnKTtcbiAgdmFyIGJ5dGVzID0gNDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgd2hpbGUgKGJ5dGVzKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShwZXJjZW50U2VxdWVuY2UoYnl0ZXMtLSksIHBlcmNlbnREZWNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuXG52YXIgZmluZCA9IC9bIScoKX5dfCUyMC9nO1xuXG52YXIgcmVwbGFjZSA9IHtcbiAgJyEnOiAnJTIxJyxcbiAgXCInXCI6ICclMjcnLFxuICAnKCc6ICclMjgnLFxuICAnKSc6ICclMjknLFxuICAnfic6ICclN0UnLFxuICAnJTIwJzogJysnXG59O1xuXG52YXIgcmVwbGFjZXIgPSBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgcmV0dXJuIHJlcGxhY2VbbWF0Y2hdO1xufTtcblxudmFyIHNlcmlhbGl6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGl0KS5yZXBsYWNlKGZpbmQsIHJlcGxhY2VyKTtcbn07XG5cbnZhciBwYXJzZVNlYXJjaFBhcmFtcyA9IGZ1bmN0aW9uIChyZXN1bHQsIHF1ZXJ5KSB7XG4gIGlmIChxdWVyeSkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gcXVlcnkuc3BsaXQoJyYnKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBhdHRyaWJ1dGUsIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2luZGV4KytdO1xuICAgICAgaWYgKGF0dHJpYnV0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW50cnkgPSBhdHRyaWJ1dGUuc3BsaXQoJz0nKTtcbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgIGtleTogZGVzZXJpYWxpemUoZW50cnkuc2hpZnQoKSksXG4gICAgICAgICAgdmFsdWU6IGRlc2VyaWFsaXplKGVudHJ5LmpvaW4oJz0nKSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgdXBkYXRlU2VhcmNoUGFyYW1zID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIHRoaXMuZW50cmllcy5sZW5ndGggPSAwO1xuICBwYXJzZVNlYXJjaFBhcmFtcyh0aGlzLmVudHJpZXMsIHF1ZXJ5KTtcbn07XG5cbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IGZ1bmN0aW9uIChwYXNzZWQsIHJlcXVpcmVkKSB7XG4gIGlmIChwYXNzZWQgPCByZXF1aXJlZCkgdGhyb3cgVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBJdGVyYXRvcihwYXJhbXMsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IsXG4gICAgaXRlcmF0b3I6IGdldEl0ZXJhdG9yKGdldEludGVybmFsUGFyYW1zU3RhdGUocGFyYW1zKS5lbnRyaWVzKSxcbiAgICBraW5kOiBraW5kXG4gIH0pO1xufSwgJ0l0ZXJhdG9yJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlKHRoaXMpO1xuICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gIHZhciBzdGVwID0gc3RhdGUuaXRlcmF0b3IubmV4dCgpO1xuICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICBpZiAoIXN0ZXAuZG9uZSkge1xuICAgIHN0ZXAudmFsdWUgPSBraW5kID09PSAna2V5cycgPyBlbnRyeS5rZXkgOiBraW5kID09PSAndmFsdWVzJyA/IGVudHJ5LnZhbHVlIDogW2VudHJ5LmtleSwgZW50cnkudmFsdWVdO1xuICB9IHJldHVybiBzdGVwO1xufSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXNgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS11cmxzZWFyY2hwYXJhbXNcbnZhciBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTFNlYXJjaFBhcmFtcygvKiBpbml0ICovKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsIFVSTF9TRUFSQ0hfUEFSQU1TKTtcbiAgdmFyIGluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIgZW50cmllcyA9IFtdO1xuICB2YXIgaXRlcmF0b3JNZXRob2QsIGl0ZXJhdG9yLCBuZXh0LCBzdGVwLCBlbnRyeUl0ZXJhdG9yLCBlbnRyeU5leHQsIGZpcnN0LCBzZWNvbmQsIGtleTtcblxuICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICB0eXBlOiBVUkxfU0VBUkNIX1BBUkFNUyxcbiAgICBlbnRyaWVzOiBlbnRyaWVzLFxuICAgIHVwZGF0ZVVSTDogZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LFxuICAgIHVwZGF0ZVNlYXJjaFBhcmFtczogdXBkYXRlU2VhcmNoUGFyYW1zXG4gIH0pO1xuXG4gIGlmIChpbml0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNPYmplY3QoaW5pdCkpIHtcbiAgICAgIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2QoaW5pdCk7XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpbml0LCBpdGVyYXRvck1ldGhvZCk7XG4gICAgICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gbmV4dC5jYWxsKGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgICAgICAgIGVudHJ5SXRlcmF0b3IgPSBnZXRJdGVyYXRvcihhbk9iamVjdChzdGVwLnZhbHVlKSk7XG4gICAgICAgICAgZW50cnlOZXh0ID0gZW50cnlJdGVyYXRvci5uZXh0O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChmaXJzdCA9IGVudHJ5TmV4dC5jYWxsKGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgICAoc2Vjb25kID0gZW50cnlOZXh0LmNhbGwoZW50cnlJdGVyYXRvcikpLmRvbmUgfHxcbiAgICAgICAgICAgICFlbnRyeU5leHQuY2FsbChlbnRyeUl0ZXJhdG9yKS5kb25lXG4gICAgICAgICAgKSB0aHJvdyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNlcXVlbmNlIHdpdGggbGVuZ3RoIDInKTtcbiAgICAgICAgICBlbnRyaWVzLnB1c2goeyBrZXk6ICR0b1N0cmluZyhmaXJzdC52YWx1ZSksIHZhbHVlOiAkdG9TdHJpbmcoc2Vjb25kLnZhbHVlKSB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGZvciAoa2V5IGluIGluaXQpIGlmIChoYXNPd24oaW5pdCwga2V5KSkgZW50cmllcy5wdXNoKHsga2V5OiBrZXksIHZhbHVlOiAkdG9TdHJpbmcoaW5pdFtrZXldKSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VTZWFyY2hQYXJhbXMoXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIHR5cGVvZiBpbml0ID09PSAnc3RyaW5nJyA/IGluaXQuY2hhckF0KDApID09PSAnPycgPyBpbml0LnNsaWNlKDEpIDogaW5pdCA6ICR0b1N0cmluZyhpbml0KVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbnJlZGVmaW5lQWxsKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwge1xuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5hcHBlbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtYXBwZW5kXG4gIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMik7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICBzdGF0ZS5lbnRyaWVzLnB1c2goeyBrZXk6ICR0b1N0cmluZyhuYW1lKSwgdmFsdWU6ICR0b1N0cmluZyh2YWx1ZSkgfSk7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmRlbGV0ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1kZWxldGVcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleF0ua2V5ID09PSBrZXkpIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGVsc2UgaW5kZXgrKztcbiAgICB9XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmdldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1nZXRcbiAgZ2V0OiBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSByZXR1cm4gZW50cmllc1tpbmRleF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRBbGxgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0YWxsXG4gIGdldEFsbDogZnVuY3Rpb24gZ2V0QWxsKG5hbWUpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleF0ua2V5ID09PSBrZXkpIHJlc3VsdC5wdXNoKGVudHJpZXNbaW5kZXhdLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaGFzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWhhc1xuICBoYXM6IGZ1bmN0aW9uIGhhcyhuYW1lKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleCsrXS5rZXkgPT09IGtleSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2V0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNldFxuICBzZXQ6IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFyIGVudHJpZXMgPSBzdGF0ZS5lbnRyaWVzO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbCA9ICR0b1N0cmluZyh2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICBpZiAoZW50cnkua2V5ID09PSBrZXkpIHtcbiAgICAgICAgaWYgKGZvdW5kKSBlbnRyaWVzLnNwbGljZShpbmRleC0tLCAxKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGVudHJ5LnZhbHVlID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZm91bmQpIGVudHJpZXMucHVzaCh7IGtleToga2V5LCB2YWx1ZTogdmFsIH0pO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zb3J0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNvcnRcbiAgc29ydDogZnVuY3Rpb24gc29ydCgpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICAvLyBBcnJheSNzb3J0IGlzIG5vdCBzdGFibGUgaW4gc29tZSBlbmdpbmVzXG4gICAgdmFyIHNsaWNlID0gZW50cmllcy5zbGljZSgpO1xuICAgIHZhciBlbnRyeSwgZW50cmllc0luZGV4LCBzbGljZUluZGV4O1xuICAgIGVudHJpZXMubGVuZ3RoID0gMDtcbiAgICBmb3IgKHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2UubGVuZ3RoOyBzbGljZUluZGV4KyspIHtcbiAgICAgIGVudHJ5ID0gc2xpY2Vbc2xpY2VJbmRleF07XG4gICAgICBmb3IgKGVudHJpZXNJbmRleCA9IDA7IGVudHJpZXNJbmRleCA8IHNsaWNlSW5kZXg7IGVudHJpZXNJbmRleCsrKSB7XG4gICAgICAgIGlmIChlbnRyaWVzW2VudHJpZXNJbmRleF0ua2V5ID4gZW50cnkua2V5KSB7XG4gICAgICAgICAgZW50cmllcy5zcGxpY2UoZW50cmllc0luZGV4LCAwLCBlbnRyeSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlbnRyaWVzSW5kZXggPT09IHNsaWNlSW5kZXgpIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfVxuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2ssIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgYm91bmRGdW5jdGlvbihlbnRyeS52YWx1ZSwgZW50cnkua2V5LCB0aGlzKTtcbiAgICB9XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2tleXMnKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUudmFsdWVzYCBtZXRob2RcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAndmFsdWVzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2VudHJpZXMnKTtcbiAgfVxufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG5yZWRlZmluZShVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsIElURVJBVE9SLCBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZW50cmllcywgeyBuYW1lOiAnZW50cmllcycgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsc2VhcmNocGFyYW1zLXN0cmluZ2lmaWNhdGlvbi1iZWhhdmlvclxucmVkZWZpbmUoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGVudHJ5O1xuICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICByZXN1bHQucHVzaChzZXJpYWxpemUoZW50cnkua2V5KSArICc9JyArIHNlcmlhbGl6ZShlbnRyeS52YWx1ZSkpO1xuICB9IHJldHVybiByZXN1bHQuam9pbignJicpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG5zZXRUb1N0cmluZ1RhZyhVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciwgVVJMX1NFQVJDSF9QQVJBTVMpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCB9LCB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3Jcbn0pO1xuXG4vLyBXcmFwIGBmZXRjaGAgYW5kIGBSZXF1ZXN0YCBmb3IgY29ycmVjdCB3b3JrIHdpdGggcG9seWZpbGxlZCBgVVJMU2VhcmNoUGFyYW1zYFxuaWYgKCFVU0VfTkFUSVZFX1VSTCAmJiBpc0NhbGxhYmxlKEhlYWRlcnMpKSB7XG4gIHZhciB3cmFwUmVxdWVzdE9wdGlvbnMgPSBmdW5jdGlvbiAoaW5pdCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkge1xuICAgICAgdmFyIGJvZHkgPSBpbml0LmJvZHk7XG4gICAgICB2YXIgaGVhZGVycztcbiAgICAgIGlmIChjbGFzc29mKGJvZHkpID09PSBVUkxfU0VBUkNIX1BBUkFNUykge1xuICAgICAgICBoZWFkZXJzID0gaW5pdC5oZWFkZXJzID8gbmV3IEhlYWRlcnMoaW5pdC5oZWFkZXJzKSA6IG5ldyBIZWFkZXJzKCk7XG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgICAgaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGUoaW5pdCwge1xuICAgICAgICAgIGJvZHk6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCBTdHJpbmcoYm9keSkpLFxuICAgICAgICAgIGhlYWRlcnM6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCBoZWFkZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IHJldHVybiBpbml0O1xuICB9O1xuXG4gIGlmIChpc0NhbGxhYmxlKG5hdGl2ZUZldGNoKSkge1xuICAgICQoeyBnbG9iYWw6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBmZXRjaDogZnVuY3Rpb24gZmV0Y2goaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVGZXRjaChpbnB1dCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB3cmFwUmVxdWVzdE9wdGlvbnMoYXJndW1lbnRzWzFdKSA6IHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpc0NhbGxhYmxlKE5hdGl2ZVJlcXVlc3QpKSB7XG4gICAgdmFyIFJlcXVlc3RDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsIFJlcXVlc3RDb25zdHJ1Y3RvciwgJ1JlcXVlc3QnKTtcbiAgICAgIHJldHVybiBuZXcgTmF0aXZlUmVxdWVzdChpbnB1dCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB3cmFwUmVxdWVzdE9wdGlvbnMoYXJndW1lbnRzWzFdKSA6IHt9KTtcbiAgICB9O1xuXG4gICAgUmVxdWVzdFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlcXVlc3RDb25zdHJ1Y3RvcjtcbiAgICBSZXF1ZXN0Q29uc3RydWN0b3IucHJvdG90eXBlID0gUmVxdWVzdFByb3RvdHlwZTtcblxuICAgICQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBSZXF1ZXN0OiBSZXF1ZXN0Q29uc3RydWN0b3JcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVVJMU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvcixcbiAgZ2V0U3RhdGU6IGdldEludGVybmFsUGFyYW1zU3RhdGVcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3InKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXVybCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24nKTtcbnZhciBhcnJheUZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbScpO1xudmFyIGNvZGVBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY29kZUF0O1xudmFyIHRvQVNDSUkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXB1bnljb2RlLXRvLWFzY2lpJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgVVJMU2VhcmNoUGFyYW1zTW9kdWxlID0gcmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBOYXRpdmVVUkwgPSBnbG9iYWwuVVJMO1xudmFyIFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5VUkxTZWFyY2hQYXJhbXM7XG52YXIgZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5nZXRTdGF0ZTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxVUkxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKCdVUkwnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgcG93ID0gTWF0aC5wb3c7XG5cbnZhciBJTlZBTElEX0FVVEhPUklUWSA9ICdJbnZhbGlkIGF1dGhvcml0eSc7XG52YXIgSU5WQUxJRF9TQ0hFTUUgPSAnSW52YWxpZCBzY2hlbWUnO1xudmFyIElOVkFMSURfSE9TVCA9ICdJbnZhbGlkIGhvc3QnO1xudmFyIElOVkFMSURfUE9SVCA9ICdJbnZhbGlkIHBvcnQnO1xuXG52YXIgQUxQSEEgPSAvW2Etel0vaTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tb2JzY3VyZS1yYW5nZSAtLSBzYWZlXG52YXIgQUxQSEFOVU1FUklDID0gL1tcXGQrLS5hLXpdL2k7XG52YXIgRElHSVQgPSAvXFxkLztcbnZhciBIRVhfU1RBUlQgPSAvXjB4L2k7XG52YXIgT0NUID0gL15bMC03XSskLztcbnZhciBERUMgPSAvXlxcZCskLztcbnZhciBIRVggPSAvXltcXGRhLWZdKyQvaTtcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1jb250cm9sLWNoYXJhY3RlciAtLSBzYWZlICovXG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCA9IC9bXFwwXFx0XFxuXFxyICMlLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQgPSAvW1xcMFxcdFxcblxcciAjLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIExFQURJTkdfQU5EX1RSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UgPSAvXltcXHUwMDAwLVxcdTAwMjBdK3xbXFx1MDAwMC1cXHUwMDIwXSskL2c7XG52YXIgVEFCX0FORF9ORVdfTElORSA9IC9bXFx0XFxuXFxyXS9nO1xuLyogZXNsaW50LWVuYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEVPRjtcblxudmFyIHBhcnNlSG9zdCA9IGZ1bmN0aW9uICh1cmwsIGlucHV0KSB7XG4gIHZhciByZXN1bHQsIGNvZGVQb2ludHMsIGluZGV4O1xuICBpZiAoaW5wdXQuY2hhckF0KDApID09ICdbJykge1xuICAgIGlmIChpbnB1dC5jaGFyQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT0gJ10nKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHJlc3VsdCA9IHBhcnNlSVB2NihpbnB1dC5zbGljZSgxLCAtMSkpO1xuICAgIGlmICghcmVzdWx0KSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHVybC5ob3N0ID0gcmVzdWx0O1xuICAvLyBvcGFxdWUgaG9zdFxuICB9IGVsc2UgaWYgKCFpc1NwZWNpYWwodXJsKSkge1xuICAgIGlmIChGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5ULnRlc3QoaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHJlc3VsdCA9ICcnO1xuICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNvZGVQb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICByZXN1bHQgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2luZGV4XSwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICAgIHVybC5ob3N0ID0gcmVzdWx0O1xuICB9IGVsc2Uge1xuICAgIGlucHV0ID0gdG9BU0NJSShpbnB1dCk7XG4gICAgaWYgKEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlQudGVzdChpbnB1dCkpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgcmVzdWx0ID0gcGFyc2VJUHY0KGlucHV0KTtcbiAgICBpZiAocmVzdWx0ID09PSBudWxsKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHVybC5ob3N0ID0gcmVzdWx0O1xuICB9XG59O1xuXG52YXIgcGFyc2VJUHY0ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBwYXJ0cyA9IGlucHV0LnNwbGl0KCcuJyk7XG4gIHZhciBwYXJ0c0xlbmd0aCwgbnVtYmVycywgaW5kZXgsIHBhcnQsIHJhZGl4LCBudW1iZXIsIGlwdjQ7XG4gIGlmIChwYXJ0cy5sZW5ndGggJiYgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT0gJycpIHtcbiAgICBwYXJ0cy5wb3AoKTtcbiAgfVxuICBwYXJ0c0xlbmd0aCA9IHBhcnRzLmxlbmd0aDtcbiAgaWYgKHBhcnRzTGVuZ3RoID4gNCkgcmV0dXJuIGlucHV0O1xuICBudW1iZXJzID0gW107XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHBhcnRzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgcGFydCA9IHBhcnRzW2luZGV4XTtcbiAgICBpZiAocGFydCA9PSAnJykgcmV0dXJuIGlucHV0O1xuICAgIHJhZGl4ID0gMTA7XG4gICAgaWYgKHBhcnQubGVuZ3RoID4gMSAmJiBwYXJ0LmNoYXJBdCgwKSA9PSAnMCcpIHtcbiAgICAgIHJhZGl4ID0gSEVYX1NUQVJULnRlc3QocGFydCkgPyAxNiA6IDg7XG4gICAgICBwYXJ0ID0gcGFydC5zbGljZShyYWRpeCA9PSA4ID8gMSA6IDIpO1xuICAgIH1cbiAgICBpZiAocGFydCA9PT0gJycpIHtcbiAgICAgIG51bWJlciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKHJhZGl4ID09IDEwID8gREVDIDogcmFkaXggPT0gOCA/IE9DVCA6IEhFWCkudGVzdChwYXJ0KSkgcmV0dXJuIGlucHV0O1xuICAgICAgbnVtYmVyID0gcGFyc2VJbnQocGFydCwgcmFkaXgpO1xuICAgIH1cbiAgICBudW1iZXJzLnB1c2gobnVtYmVyKTtcbiAgfVxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIG51bWJlciA9IG51bWJlcnNbaW5kZXhdO1xuICAgIGlmIChpbmRleCA9PSBwYXJ0c0xlbmd0aCAtIDEpIHtcbiAgICAgIGlmIChudW1iZXIgPj0gcG93KDI1NiwgNSAtIHBhcnRzTGVuZ3RoKSkgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPiAyNTUpIHJldHVybiBudWxsO1xuICB9XG4gIGlwdjQgPSBudW1iZXJzLnBvcCgpO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlwdjQgKz0gbnVtYmVyc1tpbmRleF0gKiBwb3coMjU2LCAzIC0gaW5kZXgpO1xuICB9XG4gIHJldHVybiBpcHY0O1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbnZhciBwYXJzZUlQdjYgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIGFkZHJlc3MgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gIHZhciBwaWVjZUluZGV4ID0gMDtcbiAgdmFyIGNvbXByZXNzID0gbnVsbDtcbiAgdmFyIHBvaW50ZXIgPSAwO1xuICB2YXIgdmFsdWUsIGxlbmd0aCwgbnVtYmVyc1NlZW4sIGlwdjRQaWVjZSwgbnVtYmVyLCBzd2Fwcywgc3dhcDtcblxuICB2YXIgY2hyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpbnB1dC5jaGFyQXQocG9pbnRlcik7XG4gIH07XG5cbiAgaWYgKGNocigpID09ICc6Jykge1xuICAgIGlmIChpbnB1dC5jaGFyQXQoMSkgIT0gJzonKSByZXR1cm47XG4gICAgcG9pbnRlciArPSAyO1xuICAgIHBpZWNlSW5kZXgrKztcbiAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gIH1cbiAgd2hpbGUgKGNocigpKSB7XG4gICAgaWYgKHBpZWNlSW5kZXggPT0gOCkgcmV0dXJuO1xuICAgIGlmIChjaHIoKSA9PSAnOicpIHtcbiAgICAgIGlmIChjb21wcmVzcyAhPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgcGllY2VJbmRleCsrO1xuICAgICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhbHVlID0gbGVuZ3RoID0gMDtcbiAgICB3aGlsZSAobGVuZ3RoIDwgNCAmJiBIRVgudGVzdChjaHIoKSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKiAxNiArIHBhcnNlSW50KGNocigpLCAxNik7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBsZW5ndGgrKztcbiAgICB9XG4gICAgaWYgKGNocigpID09ICcuJykge1xuICAgICAgaWYgKGxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICBwb2ludGVyIC09IGxlbmd0aDtcbiAgICAgIGlmIChwaWVjZUluZGV4ID4gNikgcmV0dXJuO1xuICAgICAgbnVtYmVyc1NlZW4gPSAwO1xuICAgICAgd2hpbGUgKGNocigpKSB7XG4gICAgICAgIGlwdjRQaWVjZSA9IG51bGw7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA+IDApIHtcbiAgICAgICAgICBpZiAoY2hyKCkgPT0gJy4nICYmIG51bWJlcnNTZWVuIDwgNCkgcG9pbnRlcisrO1xuICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghRElHSVQudGVzdChjaHIoKSkpIHJldHVybjtcbiAgICAgICAgd2hpbGUgKERJR0lULnRlc3QoY2hyKCkpKSB7XG4gICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQoY2hyKCksIDEwKTtcbiAgICAgICAgICBpZiAoaXB2NFBpZWNlID09PSBudWxsKSBpcHY0UGllY2UgPSBudW1iZXI7XG4gICAgICAgICAgZWxzZSBpZiAoaXB2NFBpZWNlID09IDApIHJldHVybjtcbiAgICAgICAgICBlbHNlIGlwdjRQaWVjZSA9IGlwdjRQaWVjZSAqIDEwICsgbnVtYmVyO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPiAyNTUpIHJldHVybjtcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIH1cbiAgICAgICAgYWRkcmVzc1twaWVjZUluZGV4XSA9IGFkZHJlc3NbcGllY2VJbmRleF0gKiAyNTYgKyBpcHY0UGllY2U7XG4gICAgICAgIG51bWJlcnNTZWVuKys7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA9PSAyIHx8IG51bWJlcnNTZWVuID09IDQpIHBpZWNlSW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGlmIChudW1iZXJzU2VlbiAhPSA0KSByZXR1cm47XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNocigpID09ICc6Jykge1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgaWYgKCFjaHIoKSkgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoY2hyKCkpIHJldHVybjtcbiAgICBhZGRyZXNzW3BpZWNlSW5kZXgrK10gPSB2YWx1ZTtcbiAgfVxuICBpZiAoY29tcHJlc3MgIT09IG51bGwpIHtcbiAgICBzd2FwcyA9IHBpZWNlSW5kZXggLSBjb21wcmVzcztcbiAgICBwaWVjZUluZGV4ID0gNztcbiAgICB3aGlsZSAocGllY2VJbmRleCAhPSAwICYmIHN3YXBzID4gMCkge1xuICAgICAgc3dhcCA9IGFkZHJlc3NbcGllY2VJbmRleF07XG4gICAgICBhZGRyZXNzW3BpZWNlSW5kZXgtLV0gPSBhZGRyZXNzW2NvbXByZXNzICsgc3dhcHMgLSAxXTtcbiAgICAgIGFkZHJlc3NbY29tcHJlc3MgKyAtLXN3YXBzXSA9IHN3YXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKHBpZWNlSW5kZXggIT0gOCkgcmV0dXJuO1xuICByZXR1cm4gYWRkcmVzcztcbn07XG5cbnZhciBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSA9IGZ1bmN0aW9uIChpcHY2KSB7XG4gIHZhciBtYXhJbmRleCA9IG51bGw7XG4gIHZhciBtYXhMZW5ndGggPSAxO1xuICB2YXIgY3VyclN0YXJ0ID0gbnVsbDtcbiAgdmFyIGN1cnJMZW5ndGggPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuICBmb3IgKDsgaW5kZXggPCA4OyBpbmRleCsrKSB7XG4gICAgaWYgKGlwdjZbaW5kZXhdICE9PSAwKSB7XG4gICAgICBpZiAoY3Vyckxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBtYXhJbmRleCA9IGN1cnJTdGFydDtcbiAgICAgICAgbWF4TGVuZ3RoID0gY3Vyckxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGN1cnJTdGFydCA9IG51bGw7XG4gICAgICBjdXJyTGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJTdGFydCA9PT0gbnVsbCkgY3VyclN0YXJ0ID0gaW5kZXg7XG4gICAgICArK2N1cnJMZW5ndGg7XG4gICAgfVxuICB9XG4gIGlmIChjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgbWF4SW5kZXggPSBjdXJyU3RhcnQ7XG4gICAgbWF4TGVuZ3RoID0gY3Vyckxlbmd0aDtcbiAgfVxuICByZXR1cm4gbWF4SW5kZXg7XG59O1xuXG52YXIgc2VyaWFsaXplSG9zdCA9IGZ1bmN0aW9uIChob3N0KSB7XG4gIHZhciByZXN1bHQsIGluZGV4LCBjb21wcmVzcywgaWdub3JlMDtcbiAgLy8gaXB2NFxuICBpZiAodHlwZW9mIGhvc3QgPT0gJ251bWJlcicpIHtcbiAgICByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0OyBpbmRleCsrKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChob3N0ICUgMjU2KTtcbiAgICAgIGhvc3QgPSBmbG9vcihob3N0IC8gMjU2KTtcbiAgICB9IHJldHVybiByZXN1bHQuam9pbignLicpO1xuICAvLyBpcHY2XG4gIH0gZWxzZSBpZiAodHlwZW9mIGhvc3QgPT0gJ29iamVjdCcpIHtcbiAgICByZXN1bHQgPSAnJztcbiAgICBjb21wcmVzcyA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGhvc3QpO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpZ25vcmUwICYmIGhvc3RbaW5kZXhdID09PSAwKSBjb250aW51ZTtcbiAgICAgIGlmIChpZ25vcmUwKSBpZ25vcmUwID0gZmFsc2U7XG4gICAgICBpZiAoY29tcHJlc3MgPT09IGluZGV4KSB7XG4gICAgICAgIHJlc3VsdCArPSBpbmRleCA/ICc6JyA6ICc6Oic7XG4gICAgICAgIGlnbm9yZTAgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IGhvc3RbaW5kZXhdLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgaWYgKGluZGV4IDwgNykgcmVzdWx0ICs9ICc6JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICdbJyArIHJlc3VsdCArICddJztcbiAgfSByZXR1cm4gaG9zdDtcbn07XG5cbnZhciBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0ID0ge307XG52YXIgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcgJzogMSwgJ1wiJzogMSwgJzwnOiAxLCAnPic6IDEsICdgJzogMVxufSk7XG52YXIgcGF0aFBlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCwge1xuICAnIyc6IDEsICc/JzogMSwgJ3snOiAxLCAnfSc6IDFcbn0pO1xudmFyIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgcGF0aFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJy8nOiAxLCAnOic6IDEsICc7JzogMSwgJz0nOiAxLCAnQCc6IDEsICdbJzogMSwgJ1xcXFwnOiAxLCAnXSc6IDEsICdeJzogMSwgJ3wnOiAxXG59KTtcblxudmFyIHBlcmNlbnRFbmNvZGUgPSBmdW5jdGlvbiAoY2hyLCBzZXQpIHtcbiAgdmFyIGNvZGUgPSBjb2RlQXQoY2hyLCAwKTtcbiAgcmV0dXJuIGNvZGUgPiAweDIwICYmIGNvZGUgPCAweDdGICYmICFoYXNPd24oc2V0LCBjaHIpID8gY2hyIDogZW5jb2RlVVJJQ29tcG9uZW50KGNocik7XG59O1xuXG52YXIgc3BlY2lhbFNjaGVtZXMgPSB7XG4gIGZ0cDogMjEsXG4gIGZpbGU6IG51bGwsXG4gIGh0dHA6IDgwLFxuICBodHRwczogNDQzLFxuICB3czogODAsXG4gIHdzczogNDQzXG59O1xuXG52YXIgaXNTcGVjaWFsID0gZnVuY3Rpb24gKHVybCkge1xuICByZXR1cm4gaGFzT3duKHNwZWNpYWxTY2hlbWVzLCB1cmwuc2NoZW1lKTtcbn07XG5cbnZhciBpbmNsdWRlc0NyZWRlbnRpYWxzID0gZnVuY3Rpb24gKHVybCkge1xuICByZXR1cm4gdXJsLnVzZXJuYW1lICE9ICcnIHx8IHVybC5wYXNzd29yZCAhPSAnJztcbn07XG5cbnZhciBjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQgPSBmdW5jdGlvbiAodXJsKSB7XG4gIHJldHVybiAhdXJsLmhvc3QgfHwgdXJsLmNhbm5vdEJlQUJhc2VVUkwgfHwgdXJsLnNjaGVtZSA9PSAnZmlsZSc7XG59O1xuXG52YXIgaXNXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiAoc3RyaW5nLCBub3JtYWxpemVkKSB7XG4gIHZhciBzZWNvbmQ7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID09IDIgJiYgQUxQSEEudGVzdChzdHJpbmcuY2hhckF0KDApKVxuICAgICYmICgoc2Vjb25kID0gc3RyaW5nLmNoYXJBdCgxKSkgPT0gJzonIHx8ICghbm9ybWFsaXplZCAmJiBzZWNvbmQgPT0gJ3wnKSk7XG59O1xuXG52YXIgc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIHRoaXJkO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA+IDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoc3RyaW5nLnNsaWNlKDAsIDIpKSAmJiAoXG4gICAgc3RyaW5nLmxlbmd0aCA9PSAyIHx8XG4gICAgKCh0aGlyZCA9IHN0cmluZy5jaGFyQXQoMikpID09PSAnLycgfHwgdGhpcmQgPT09ICdcXFxcJyB8fCB0aGlyZCA9PT0gJz8nIHx8IHRoaXJkID09PSAnIycpXG4gICk7XG59O1xuXG52YXIgc2hvcnRlblVSTHNQYXRoID0gZnVuY3Rpb24gKHVybCkge1xuICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICB2YXIgcGF0aFNpemUgPSBwYXRoLmxlbmd0aDtcbiAgaWYgKHBhdGhTaXplICYmICh1cmwuc2NoZW1lICE9ICdmaWxlJyB8fCBwYXRoU2l6ZSAhPSAxIHx8ICFpc1dpbmRvd3NEcml2ZUxldHRlcihwYXRoWzBdLCB0cnVlKSkpIHtcbiAgICBwYXRoLnBvcCgpO1xuICB9XG59O1xuXG52YXIgaXNTaW5nbGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICByZXR1cm4gc2VnbWVudCA9PT0gJy4nIHx8IHNlZ21lbnQudG9Mb3dlckNhc2UoKSA9PT0gJyUyZSc7XG59O1xuXG52YXIgaXNEb3VibGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICBzZWdtZW50ID0gc2VnbWVudC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gc2VnbWVudCA9PT0gJy4uJyB8fCBzZWdtZW50ID09PSAnJTJlLicgfHwgc2VnbWVudCA9PT0gJy4lMmUnIHx8IHNlZ21lbnQgPT09ICclMmUlMmUnO1xufTtcblxuLy8gU3RhdGVzOlxudmFyIFNDSEVNRV9TVEFSVCA9IHt9O1xudmFyIFNDSEVNRSA9IHt9O1xudmFyIE5PX1NDSEVNRSA9IHt9O1xudmFyIFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUEFUSF9PUl9BVVRIT1JJVFkgPSB7fTtcbnZhciBSRUxBVElWRSA9IHt9O1xudmFyIFJFTEFUSVZFX1NMQVNIID0ge307XG52YXIgU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUyA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTID0ge307XG52YXIgQVVUSE9SSVRZID0ge307XG52YXIgSE9TVCA9IHt9O1xudmFyIEhPU1ROQU1FID0ge307XG52YXIgUE9SVCA9IHt9O1xudmFyIEZJTEUgPSB7fTtcbnZhciBGSUxFX1NMQVNIID0ge307XG52YXIgRklMRV9IT1NUID0ge307XG52YXIgUEFUSF9TVEFSVCA9IHt9O1xudmFyIFBBVEggPSB7fTtcbnZhciBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIID0ge307XG52YXIgUVVFUlkgPSB7fTtcbnZhciBGUkFHTUVOVCA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xudmFyIHBhcnNlVVJMID0gZnVuY3Rpb24gKHVybCwgaW5wdXQsIHN0YXRlT3ZlcnJpZGUsIGJhc2UpIHtcbiAgdmFyIHN0YXRlID0gc3RhdGVPdmVycmlkZSB8fCBTQ0hFTUVfU1RBUlQ7XG4gIHZhciBwb2ludGVyID0gMDtcbiAgdmFyIGJ1ZmZlciA9ICcnO1xuICB2YXIgc2VlbkF0ID0gZmFsc2U7XG4gIHZhciBzZWVuQnJhY2tldCA9IGZhbHNlO1xuICB2YXIgc2VlblBhc3N3b3JkVG9rZW4gPSBmYWxzZTtcbiAgdmFyIGNvZGVQb2ludHMsIGNociwgYnVmZmVyQ29kZVBvaW50cywgZmFpbHVyZTtcblxuICBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICB1cmwuc2NoZW1lID0gJyc7XG4gICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgdXJsLnBhc3N3b3JkID0gJyc7XG4gICAgdXJsLmhvc3QgPSBudWxsO1xuICAgIHVybC5wb3J0ID0gbnVsbDtcbiAgICB1cmwucGF0aCA9IFtdO1xuICAgIHVybC5xdWVyeSA9IG51bGw7XG4gICAgdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlO1xuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShMRUFESU5HX0FORF9UUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFLCAnJyk7XG4gIH1cblxuICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoVEFCX0FORF9ORVdfTElORSwgJycpO1xuXG4gIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuXG4gIHdoaWxlIChwb2ludGVyIDw9IGNvZGVQb2ludHMubGVuZ3RoKSB7XG4gICAgY2hyID0gY29kZVBvaW50c1twb2ludGVyXTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFNDSEVNRV9TVEFSVDpcbiAgICAgICAgaWYgKGNociAmJiBBTFBIQS50ZXN0KGNocikpIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2hyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgc3RhdGUgPSBTQ0hFTUU7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICBzdGF0ZSA9IE5PX1NDSEVNRTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU0NIRU1FOlxuICAgICAgICBpZiAoY2hyICYmIChBTFBIQU5VTUVSSUMudGVzdChjaHIpIHx8IGNociA9PSAnKycgfHwgY2hyID09ICctJyB8fCBjaHIgPT0gJy4nKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSBjaHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJzonKSB7XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgKFxuICAgICAgICAgICAgKGlzU3BlY2lhbCh1cmwpICE9IGhhc093bihzcGVjaWFsU2NoZW1lcywgYnVmZmVyKSkgfHxcbiAgICAgICAgICAgIChidWZmZXIgPT0gJ2ZpbGUnICYmIChpbmNsdWRlc0NyZWRlbnRpYWxzKHVybCkgfHwgdXJsLnBvcnQgIT09IG51bGwpKSB8fFxuICAgICAgICAgICAgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnICYmICF1cmwuaG9zdClcbiAgICAgICAgICApKSByZXR1cm47XG4gICAgICAgICAgdXJsLnNjaGVtZSA9IGJ1ZmZlcjtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgaWYgKGlzU3BlY2lhbCh1cmwpICYmIHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdID09IHVybC5wb3J0KSB1cmwucG9ydCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09ICdmaWxlJykge1xuICAgICAgICAgICAgc3RhdGUgPSBGSUxFO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNTcGVjaWFsKHVybCkgJiYgYmFzZSAmJiBiYXNlLnNjaGVtZSA9PSB1cmwuc2NoZW1lKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNTcGVjaWFsKHVybCkpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVQb2ludHNbcG9pbnRlciArIDFdID09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX09SX0FVVEhPUklUWTtcbiAgICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgdXJsLnBhdGgucHVzaCgnJyk7XG4gICAgICAgICAgICBzdGF0ZSA9IENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEg7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgcG9pbnRlciA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5PX1NDSEVNRTpcbiAgICAgICAgaWYgKCFiYXNlIHx8IChiYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgY2hyICE9ICcjJykpIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgaWYgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgdXJsLnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7XG4gICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IGJhc2Uuc2NoZW1lID09ICdmaWxlJyA/IEZJTEUgOiBSRUxBVElWRTtcbiAgICAgICAgY29udGludWU7XG5cbiAgICAgIGNhc2UgU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFk6XG4gICAgICAgIGlmIChjaHIgPT0gJy8nICYmIGNvZGVQb2ludHNbcG9pbnRlciArIDFdID09ICcvJykge1xuICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gUkVMQVRJVkU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUEFUSF9PUl9BVVRIT1JJVFk6XG4gICAgICAgIGlmIChjaHIgPT0gJy8nKSB7XG4gICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVMQVRJVkU6XG4gICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgaWYgKGNociA9PSBFT0YpIHtcbiAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgdXJsLnBhdGggPSBiYXNlLnBhdGguc2xpY2UoKTtcbiAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnLycgfHwgKGNociA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpKSB7XG4gICAgICAgICAgc3RhdGUgPSBSRUxBVElWRV9TTEFTSDtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJz8nKSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5wYXRoLnBvcCgpO1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBSRUxBVElWRV9TTEFTSDpcbiAgICAgICAgaWYgKGlzU3BlY2lhbCh1cmwpICYmIChjaHIgPT0gJy8nIHx8IGNociA9PSAnXFxcXCcpKSB7XG4gICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJy8nKSB7XG4gICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTOlxuICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICBpZiAoY2hyICE9ICcvJyB8fCBidWZmZXIuY2hhckF0KHBvaW50ZXIgKyAxKSAhPSAnLycpIGNvbnRpbnVlO1xuICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTOlxuICAgICAgICBpZiAoY2hyICE9ICcvJyAmJiBjaHIgIT0gJ1xcXFwnKSB7XG4gICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgQVVUSE9SSVRZOlxuICAgICAgICBpZiAoY2hyID09ICdAJykge1xuICAgICAgICAgIGlmIChzZWVuQXQpIGJ1ZmZlciA9ICclNDAnICsgYnVmZmVyO1xuICAgICAgICAgIHNlZW5BdCA9IHRydWU7XG4gICAgICAgICAgYnVmZmVyQ29kZVBvaW50cyA9IGFycmF5RnJvbShidWZmZXIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyQ29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IGJ1ZmZlckNvZGVQb2ludHNbaV07XG4gICAgICAgICAgICBpZiAoY29kZVBvaW50ID09ICc6JyAmJiAhc2VlblBhc3N3b3JkVG9rZW4pIHtcbiAgICAgICAgICAgICAgc2VlblBhc3N3b3JkVG9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlbmNvZGVkQ29kZVBvaW50cyA9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50LCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgICAgaWYgKHNlZW5QYXNzd29yZFRva2VuKSB1cmwucGFzc3dvcmQgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgICBlbHNlIHVybC51c2VybmFtZSArPSBlbmNvZGVkQ29kZVBvaW50cztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgY2hyID09IEVPRiB8fCBjaHIgPT0gJy8nIHx8IGNociA9PSAnPycgfHwgY2hyID09ICcjJyB8fFxuICAgICAgICAgIChjaHIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoc2VlbkF0ICYmIGJ1ZmZlciA9PSAnJykgcmV0dXJuIElOVkFMSURfQVVUSE9SSVRZO1xuICAgICAgICAgIHBvaW50ZXIgLT0gYXJyYXlGcm9tKGJ1ZmZlcikubGVuZ3RoICsgMTtcbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEhPU1Q7XG4gICAgICAgIH0gZWxzZSBidWZmZXIgKz0gY2hyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBIT1NUOlxuICAgICAgY2FzZSBIT1NUTkFNRTpcbiAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgdXJsLnNjaGVtZSA9PSAnZmlsZScpIHtcbiAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJzonICYmICFzZWVuQnJhY2tldCkge1xuICAgICAgICAgIGlmIChidWZmZXIgPT0gJycpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICAgICAgZmFpbHVyZSA9IHBhcnNlSG9zdCh1cmwsIGJ1ZmZlcik7XG4gICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUE9SVDtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSA9PSBIT1NUTkFNRSkgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fCBjaHIgPT0gJz8nIHx8IGNociA9PSAnIycgfHxcbiAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGlzU3BlY2lhbCh1cmwpICYmIGJ1ZmZlciA9PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiBidWZmZXIgPT0gJycgJiYgKGluY2x1ZGVzQ3JlZGVudGlhbHModXJsKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHJldHVybjtcbiAgICAgICAgICBmYWlsdXJlID0gcGFyc2VIb3N0KHVybCwgYnVmZmVyKTtcbiAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNociA9PSAnWycpIHNlZW5CcmFja2V0ID0gdHJ1ZTtcbiAgICAgICAgICBlbHNlIGlmIChjaHIgPT0gJ10nKSBzZWVuQnJhY2tldCA9IGZhbHNlO1xuICAgICAgICAgIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUE9SVDpcbiAgICAgICAgaWYgKERJR0lULnRlc3QoY2hyKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgY2hyID09IEVPRiB8fCBjaHIgPT0gJy8nIHx8IGNociA9PSAnPycgfHwgY2hyID09ICcjJyB8fFxuICAgICAgICAgIChjaHIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSB8fFxuICAgICAgICAgIHN0YXRlT3ZlcnJpZGVcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGJ1ZmZlciAhPSAnJykge1xuICAgICAgICAgICAgdmFyIHBvcnQgPSBwYXJzZUludChidWZmZXIsIDEwKTtcbiAgICAgICAgICAgIGlmIChwb3J0ID4gMHhGRkZGKSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgICAgdXJsLnBvcnQgPSAoaXNTcGVjaWFsKHVybCkgJiYgcG9ydCA9PT0gc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0pID8gbnVsbCA6IHBvcnQ7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBGSUxFOlxuICAgICAgICB1cmwuc2NoZW1lID0gJ2ZpbGUnO1xuICAgICAgICBpZiAoY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnKSBzdGF0ZSA9IEZJTEVfU0xBU0g7XG4gICAgICAgIGVsc2UgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgaWYgKGNociA9PSBFT0YpIHtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBiYXNlLnBhdGguc2xpY2UoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoY29kZVBvaW50cy5zbGljZShwb2ludGVyKS5qb2luKCcnKSkpIHtcbiAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICAgIHNob3J0ZW5VUkxzUGF0aCh1cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBGSUxFX1NMQVNIOlxuICAgICAgICBpZiAoY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnKSB7XG4gICAgICAgICAgc3RhdGUgPSBGSUxFX0hPU1Q7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT0gJ2ZpbGUnICYmICFzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyKGNvZGVQb2ludHMuc2xpY2UocG9pbnRlcikuam9pbignJykpKSB7XG4gICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGJhc2UucGF0aFswXSwgdHJ1ZSkpIHVybC5wYXRoLnB1c2goYmFzZS5wYXRoWzBdKTtcbiAgICAgICAgICBlbHNlIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgY29udGludWU7XG5cbiAgICAgIGNhc2UgRklMRV9IT1NUOlxuICAgICAgICBpZiAoY2hyID09IEVPRiB8fCBjaHIgPT0gJy8nIHx8IGNociA9PSAnXFxcXCcgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciA9PSAnJykge1xuICAgICAgICAgICAgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZhaWx1cmUgPSBwYXJzZUhvc3QodXJsLCBidWZmZXIpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgaWYgKHVybC5ob3N0ID09ICdsb2NhbGhvc3QnKSB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIH0gY29udGludWU7XG4gICAgICAgIH0gZWxzZSBidWZmZXIgKz0gY2hyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBQQVRIX1NUQVJUOlxuICAgICAgICBpZiAoaXNTcGVjaWFsKHVybCkpIHtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgaWYgKGNociAhPSAnLycgJiYgY2hyICE9ICdcXFxcJykgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09ICc/Jykge1xuICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09ICcjJykge1xuICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyICE9IEVPRikge1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBpZiAoY2hyICE9ICcvJykgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUEFUSDpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fFxuICAgICAgICAgIChjaHIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSB8fFxuICAgICAgICAgICghc3RhdGVPdmVycmlkZSAmJiAoY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGlzRG91YmxlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgIHNob3J0ZW5VUkxzUGF0aCh1cmwpO1xuICAgICAgICAgICAgaWYgKGNociAhPSAnLycgJiYgIShjaHIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSkge1xuICAgICAgICAgICAgICB1cmwucGF0aC5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzU2luZ2xlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmICEoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSkpIHtcbiAgICAgICAgICAgICAgdXJsLnBhdGgucHVzaCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09ICdmaWxlJyAmJiAhdXJsLnBhdGgubGVuZ3RoICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgaWYgKHVybC5ob3N0KSB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICBidWZmZXIgPSBidWZmZXIuY2hhckF0KDApICsgJzonOyAvLyBub3JtYWxpemUgd2luZG93cyBkcml2ZSBsZXR0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybC5wYXRoLnB1c2goYnVmZmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnICYmIChjaHIgPT0gRU9GIHx8IGNociA9PSAnPycgfHwgY2hyID09ICcjJykpIHtcbiAgICAgICAgICAgIHdoaWxlICh1cmwucGF0aC5sZW5ndGggPiAxICYmIHVybC5wYXRoWzBdID09PSAnJykge1xuICAgICAgICAgICAgICB1cmwucGF0aC5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hyID09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBidWZmZXIgKz0gcGVyY2VudEVuY29kZShjaHIsIHBhdGhQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIOlxuICAgICAgICBpZiAoY2hyID09ICc/Jykge1xuICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcjJykge1xuICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyICE9IEVPRikge1xuICAgICAgICAgIHVybC5wYXRoWzBdICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBRVUVSWTpcbiAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PSAnIycpIHtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICB9IGVsc2UgaWYgKGNociAhPSBFT0YpIHtcbiAgICAgICAgICBpZiAoY2hyID09IFwiJ1wiICYmIGlzU3BlY2lhbCh1cmwpKSB1cmwucXVlcnkgKz0gJyUyNyc7XG4gICAgICAgICAgZWxzZSBpZiAoY2hyID09ICcjJykgdXJsLnF1ZXJ5ICs9ICclMjMnO1xuICAgICAgICAgIGVsc2UgdXJsLnF1ZXJ5ICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBGUkFHTUVOVDpcbiAgICAgICAgaWYgKGNociAhPSBFT0YpIHVybC5mcmFnbWVudCArPSBwZXJjZW50RW5jb2RlKGNociwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcG9pbnRlcisrO1xuICB9XG59O1xuXG4vLyBgVVJMYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtY2xhc3NcbnZhciBVUkxDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTCh1cmwgLyogLCBiYXNlICovKSB7XG4gIHZhciB0aGF0ID0gYW5JbnN0YW5jZSh0aGlzLCBVUkxDb25zdHJ1Y3RvciwgJ1VSTCcpO1xuICB2YXIgYmFzZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgdXJsU3RyaW5nID0gJHRvU3RyaW5nKHVybCk7XG4gIHZhciBzdGF0ZSA9IHNldEludGVybmFsU3RhdGUodGhhdCwgeyB0eXBlOiAnVVJMJyB9KTtcbiAgdmFyIGJhc2VTdGF0ZSwgZmFpbHVyZTtcbiAgaWYgKGJhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiYXNlIGluc3RhbmNlb2YgVVJMQ29uc3RydWN0b3IpIGJhc2VTdGF0ZSA9IGdldEludGVybmFsVVJMU3RhdGUoYmFzZSk7XG4gICAgZWxzZSB7XG4gICAgICBmYWlsdXJlID0gcGFyc2VVUkwoYmFzZVN0YXRlID0ge30sICR0b1N0cmluZyhiYXNlKSk7XG4gICAgICBpZiAoZmFpbHVyZSkgdGhyb3cgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgIH1cbiAgfVxuICBmYWlsdXJlID0gcGFyc2VVUkwoc3RhdGUsIHVybFN0cmluZywgbnVsbCwgYmFzZVN0YXRlKTtcbiAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgdmFyIHNlYXJjaFBhcmFtcyA9IHN0YXRlLnNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgdmFyIHNlYXJjaFBhcmFtc1N0YXRlID0gZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZShzZWFyY2hQYXJhbXMpO1xuICBzZWFyY2hQYXJhbXNTdGF0ZS51cGRhdGVTZWFyY2hQYXJhbXMoc3RhdGUucXVlcnkpO1xuICBzZWFyY2hQYXJhbXNTdGF0ZS51cGRhdGVVUkwgPSBmdW5jdGlvbiAoKSB7XG4gICAgc3RhdGUucXVlcnkgPSBTdHJpbmcoc2VhcmNoUGFyYW1zKSB8fCBudWxsO1xuICB9O1xuICBpZiAoIURFU0NSSVBUT1JTKSB7XG4gICAgdGhhdC5ocmVmID0gc2VyaWFsaXplVVJMLmNhbGwodGhhdCk7XG4gICAgdGhhdC5vcmlnaW4gPSBnZXRPcmlnaW4uY2FsbCh0aGF0KTtcbiAgICB0aGF0LnByb3RvY29sID0gZ2V0UHJvdG9jb2wuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnVzZXJuYW1lID0gZ2V0VXNlcm5hbWUuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnBhc3N3b3JkID0gZ2V0UGFzc3dvcmQuY2FsbCh0aGF0KTtcbiAgICB0aGF0Lmhvc3QgPSBnZXRIb3N0LmNhbGwodGhhdCk7XG4gICAgdGhhdC5ob3N0bmFtZSA9IGdldEhvc3RuYW1lLmNhbGwodGhhdCk7XG4gICAgdGhhdC5wb3J0ID0gZ2V0UG9ydC5jYWxsKHRoYXQpO1xuICAgIHRoYXQucGF0aG5hbWUgPSBnZXRQYXRobmFtZS5jYWxsKHRoYXQpO1xuICAgIHRoYXQuc2VhcmNoID0gZ2V0U2VhcmNoLmNhbGwodGhhdCk7XG4gICAgdGhhdC5zZWFyY2hQYXJhbXMgPSBnZXRTZWFyY2hQYXJhbXMuY2FsbCh0aGF0KTtcbiAgICB0aGF0Lmhhc2ggPSBnZXRIYXNoLmNhbGwodGhhdCk7XG4gIH1cbn07XG5cbnZhciBVUkxQcm90b3R5cGUgPSBVUkxDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbnZhciBzZXJpYWxpemVVUkwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICB2YXIgc2NoZW1lID0gdXJsLnNjaGVtZTtcbiAgdmFyIHVzZXJuYW1lID0gdXJsLnVzZXJuYW1lO1xuICB2YXIgcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQ7XG4gIHZhciBob3N0ID0gdXJsLmhvc3Q7XG4gIHZhciBwb3J0ID0gdXJsLnBvcnQ7XG4gIHZhciBwYXRoID0gdXJsLnBhdGg7XG4gIHZhciBxdWVyeSA9IHVybC5xdWVyeTtcbiAgdmFyIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50O1xuICB2YXIgb3V0cHV0ID0gc2NoZW1lICsgJzonO1xuICBpZiAoaG9zdCAhPT0gbnVsbCkge1xuICAgIG91dHB1dCArPSAnLy8nO1xuICAgIGlmIChpbmNsdWRlc0NyZWRlbnRpYWxzKHVybCkpIHtcbiAgICAgIG91dHB1dCArPSB1c2VybmFtZSArIChwYXNzd29yZCA/ICc6JyArIHBhc3N3b3JkIDogJycpICsgJ0AnO1xuICAgIH1cbiAgICBvdXRwdXQgKz0gc2VyaWFsaXplSG9zdChob3N0KTtcbiAgICBpZiAocG9ydCAhPT0gbnVsbCkgb3V0cHV0ICs9ICc6JyArIHBvcnQ7XG4gIH0gZWxzZSBpZiAoc2NoZW1lID09ICdmaWxlJykgb3V0cHV0ICs9ICcvLyc7XG4gIG91dHB1dCArPSB1cmwuY2Fubm90QmVBQmFzZVVSTCA/IHBhdGhbMF0gOiBwYXRoLmxlbmd0aCA/ICcvJyArIHBhdGguam9pbignLycpIDogJyc7XG4gIGlmIChxdWVyeSAhPT0gbnVsbCkgb3V0cHV0ICs9ICc/JyArIHF1ZXJ5O1xuICBpZiAoZnJhZ21lbnQgIT09IG51bGwpIG91dHB1dCArPSAnIycgKyBmcmFnbWVudDtcbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbnZhciBnZXRPcmlnaW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICB2YXIgc2NoZW1lID0gdXJsLnNjaGVtZTtcbiAgdmFyIHBvcnQgPSB1cmwucG9ydDtcbiAgaWYgKHNjaGVtZSA9PSAnYmxvYicpIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkxDb25zdHJ1Y3RvcihzY2hlbWUucGF0aFswXSkub3JpZ2luO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH1cbiAgaWYgKHNjaGVtZSA9PSAnZmlsZScgfHwgIWlzU3BlY2lhbCh1cmwpKSByZXR1cm4gJ251bGwnO1xuICByZXR1cm4gc2NoZW1lICsgJzovLycgKyBzZXJpYWxpemVIb3N0KHVybC5ob3N0KSArIChwb3J0ICE9PSBudWxsID8gJzonICsgcG9ydCA6ICcnKTtcbn07XG5cbnZhciBnZXRQcm90b2NvbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2NoZW1lICsgJzonO1xufTtcblxudmFyIGdldFVzZXJuYW1lID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS51c2VybmFtZTtcbn07XG5cbnZhciBnZXRQYXNzd29yZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykucGFzc3dvcmQ7XG59O1xuXG52YXIgZ2V0SG9zdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gIHZhciBob3N0ID0gdXJsLmhvc3Q7XG4gIHZhciBwb3J0ID0gdXJsLnBvcnQ7XG4gIHJldHVybiBob3N0ID09PSBudWxsID8gJydcbiAgICA6IHBvcnQgPT09IG51bGwgPyBzZXJpYWxpemVIb3N0KGhvc3QpXG4gICAgOiBzZXJpYWxpemVIb3N0KGhvc3QpICsgJzonICsgcG9ydDtcbn07XG5cbnZhciBnZXRIb3N0bmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvc3QgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLmhvc3Q7XG4gIHJldHVybiBob3N0ID09PSBudWxsID8gJycgOiBzZXJpYWxpemVIb3N0KGhvc3QpO1xufTtcblxudmFyIGdldFBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwb3J0ID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5wb3J0O1xuICByZXR1cm4gcG9ydCA9PT0gbnVsbCA/ICcnIDogU3RyaW5nKHBvcnQpO1xufTtcblxudmFyIGdldFBhdGhuYW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIHBhdGggPSB1cmwucGF0aDtcbiAgcmV0dXJuIHVybC5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgcGF0aC5qb2luKCcvJykgOiAnJztcbn07XG5cbnZhciBnZXRTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBxdWVyeSA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcykucXVlcnk7XG4gIHJldHVybiBxdWVyeSA/ICc/JyArIHF1ZXJ5IDogJyc7XG59O1xuXG52YXIgZ2V0U2VhcmNoUGFyYW1zID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5zZWFyY2hQYXJhbXM7XG59O1xuXG52YXIgZ2V0SGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGZyYWdtZW50ID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5mcmFnbWVudDtcbiAgcmV0dXJuIGZyYWdtZW50ID8gJyMnICsgZnJhZ21lbnQgOiAnJztcbn07XG5cbnZhciBhY2Nlc3NvckRlc2NyaXB0b3IgPSBmdW5jdGlvbiAoZ2V0dGVyLCBzZXR0ZXIpIHtcbiAgcmV0dXJuIHsgZ2V0OiBnZXR0ZXIsIHNldDogc2V0dGVyLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUgfTtcbn07XG5cbmlmIChERVNDUklQVE9SUykge1xuICBkZWZpbmVQcm9wZXJ0aWVzKFVSTFByb3RvdHlwZSwge1xuICAgIC8vIGBVUkwucHJvdG90eXBlLmhyZWZgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhyZWZcbiAgICBocmVmOiBhY2Nlc3NvckRlc2NyaXB0b3Ioc2VyaWFsaXplVVJMLCBmdW5jdGlvbiAoaHJlZikge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICB2YXIgdXJsU3RyaW5nID0gJHRvU3RyaW5nKGhyZWYpO1xuICAgICAgdmFyIGZhaWx1cmUgPSBwYXJzZVVSTCh1cmwsIHVybFN0cmluZyk7XG4gICAgICBpZiAoZmFpbHVyZSkgdGhyb3cgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgICAgZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSh1cmwuc2VhcmNoUGFyYW1zKS51cGRhdGVTZWFyY2hQYXJhbXModXJsLnF1ZXJ5KTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5vcmlnaW5gIGdldHRlclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1vcmlnaW5cbiAgICBvcmlnaW46IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRPcmlnaW4pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnByb3RvY29sYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wcm90b2NvbFxuICAgIHByb3RvY29sOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0UHJvdG9jb2wsIGZ1bmN0aW9uIChwcm90b2NvbCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBwYXJzZVVSTCh1cmwsICR0b1N0cmluZyhwcm90b2NvbCkgKyAnOicsIFNDSEVNRV9TVEFSVCk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUudXNlcm5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXVzZXJuYW1lXG4gICAgdXNlcm5hbWU6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRVc2VybmFtZSwgZnVuY3Rpb24gKHVzZXJuYW1lKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyh1c2VybmFtZSkpO1xuICAgICAgaWYgKGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCh1cmwpKSByZXR1cm47XG4gICAgICB1cmwudXNlcm5hbWUgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1cmwudXNlcm5hbWUgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2ldLCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnBhc3N3b3JkYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXNzd29yZFxuICAgIHBhc3N3b3JkOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0UGFzc3dvcmQsIGZ1bmN0aW9uIChwYXNzd29yZCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICB2YXIgY29kZVBvaW50cyA9IGFycmF5RnJvbSgkdG9TdHJpbmcocGFzc3dvcmQpKTtcbiAgICAgIGlmIChjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQodXJsKSkgcmV0dXJuO1xuICAgICAgdXJsLnBhc3N3b3JkID0gJyc7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXJsLnBhc3N3b3JkICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpXSwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0YCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0XG4gICAgaG9zdDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldEhvc3QsIGZ1bmN0aW9uIChob3N0KSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgICAgcGFyc2VVUkwodXJsLCAkdG9TdHJpbmcoaG9zdCksIEhPU1QpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLmhvc3RuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0bmFtZVxuICAgIGhvc3RuYW1lOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0SG9zdG5hbWUsIGZ1bmN0aW9uIChob3N0bmFtZSkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICAgIHBhcnNlVVJMKHVybCwgJHRvU3RyaW5nKGhvc3RuYW1lKSwgSE9TVE5BTUUpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnBvcnRgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBvcnRcbiAgICBwb3J0OiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0UG9ydCwgZnVuY3Rpb24gKHBvcnQpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgaWYgKGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCh1cmwpKSByZXR1cm47XG4gICAgICBwb3J0ID0gJHRvU3RyaW5nKHBvcnQpO1xuICAgICAgaWYgKHBvcnQgPT0gJycpIHVybC5wb3J0ID0gbnVsbDtcbiAgICAgIGVsc2UgcGFyc2VVUkwodXJsLCBwb3J0LCBQT1JUKTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5wYXRobmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWVcbiAgICBwYXRobmFtZTogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFBhdGhuYW1lLCBmdW5jdGlvbiAocGF0aG5hbWUpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgICB1cmwucGF0aCA9IFtdO1xuICAgICAgcGFyc2VVUkwodXJsLCAkdG9TdHJpbmcocGF0aG5hbWUpLCBQQVRIX1NUQVJUKTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5zZWFyY2hgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaFxuICAgIHNlYXJjaDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFNlYXJjaCwgZnVuY3Rpb24gKHNlYXJjaCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBzZWFyY2ggPSAkdG9TdHJpbmcoc2VhcmNoKTtcbiAgICAgIGlmIChzZWFyY2ggPT0gJycpIHtcbiAgICAgICAgdXJsLnF1ZXJ5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgnPycgPT0gc2VhcmNoLmNoYXJBdCgwKSkgc2VhcmNoID0gc2VhcmNoLnNsaWNlKDEpO1xuICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgcGFyc2VVUkwodXJsLCBzZWFyY2gsIFFVRVJZKTtcbiAgICAgIH1cbiAgICAgIGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUodXJsLnNlYXJjaFBhcmFtcykudXBkYXRlU2VhcmNoUGFyYW1zKHVybC5xdWVyeSk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoUGFyYW1zYCBnZXR0ZXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNocGFyYW1zXG4gICAgc2VhcmNoUGFyYW1zOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0U2VhcmNoUGFyYW1zKSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5oYXNoYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gICAgaGFzaDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldEhhc2gsIGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIGhhc2ggPSAkdG9TdHJpbmcoaGFzaCk7XG4gICAgICBpZiAoaGFzaCA9PSAnJykge1xuICAgICAgICB1cmwuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoJyMnID09IGhhc2guY2hhckF0KDApKSBoYXNoID0gaGFzaC5zbGljZSgxKTtcbiAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgcGFyc2VVUkwodXJsLCBoYXNoLCBGUkFHTUVOVCk7XG4gICAgfSlcbiAgfSk7XG59XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvSlNPTmAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdG9qc29uXG5yZWRlZmluZShVUkxQcm90b3R5cGUsICd0b0pTT04nLCBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIHJldHVybiBzZXJpYWxpemVVUkwuY2FsbCh0aGlzKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNVUkwtc3RyaW5naWZpY2F0aW9uLWJlaGF2aW9yXG5yZWRlZmluZShVUkxQcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gc2VyaWFsaXplVVJMLmNhbGwodGhpcyk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbmlmIChOYXRpdmVVUkwpIHtcbiAgdmFyIG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5jcmVhdGVPYmplY3RVUkw7XG4gIHZhciBuYXRpdmVSZXZva2VPYmplY3RVUkwgPSBOYXRpdmVVUkwucmV2b2tlT2JqZWN0VVJMO1xuICAvLyBgVVJMLmNyZWF0ZU9iamVjdFVSTGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvY3JlYXRlT2JqZWN0VVJMXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGlmIChuYXRpdmVDcmVhdGVPYmplY3RVUkwpIHJlZGVmaW5lKFVSTENvbnN0cnVjdG9yLCAnY3JlYXRlT2JqZWN0VVJMJywgZnVuY3Rpb24gY3JlYXRlT2JqZWN0VVJMKGJsb2IpIHtcbiAgICByZXR1cm4gbmF0aXZlQ3JlYXRlT2JqZWN0VVJMLmFwcGx5KE5hdGl2ZVVSTCwgYXJndW1lbnRzKTtcbiAgfSk7XG4gIC8vIGBVUkwucmV2b2tlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9yZXZva2VPYmplY3RVUkxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgaWYgKG5hdGl2ZVJldm9rZU9iamVjdFVSTCkgcmVkZWZpbmUoVVJMQ29uc3RydWN0b3IsICdyZXZva2VPYmplY3RVUkwnLCBmdW5jdGlvbiByZXZva2VPYmplY3RVUkwodXJsKSB7XG4gICAgcmV0dXJuIG5hdGl2ZVJldm9rZU9iamVjdFVSTC5hcHBseShOYXRpdmVVUkwsIGFyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5zZXRUb1N0cmluZ1RhZyhVUkxDb25zdHJ1Y3RvciwgJ1VSTCcpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgVVJMOiBVUkxDb25zdHJ1Y3RvclxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYFVSTC5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC10b2pzb25cbiQoeyB0YXJnZXQ6ICdVUkwnLCBwcm90bzogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9LCB7XG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiBVUkwucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH1cbn0pO1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxudmFyIGhhc1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgOiAweGVhYzc7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKSA6IDB4ZWFjYTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKSA6IDB4ZWFjYjtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKSA6IDB4ZWFjYztcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKSA6IDB4ZWFkMjtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKSA6IDB4ZWFjZDtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0JykgOiAweGVhY2U7IC8vIFRPRE86IFdlIGRvbid0IHVzZSBBc3luY01vZGUgb3IgQ29uY3VycmVudE1vZGUgYW55bW9yZS4gVGhleSB3ZXJlIHRlbXBvcmFyeVxuLy8gKHVuc3RhYmxlKSBBUElzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuIENhbiB3ZSByZW1vdmUgdGhlIHN5bWJvbHM/XG5cbnZhciBSRUFDVF9BU1lOQ19NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5hc3luY19tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5jb25jdXJyZW50X21vZGUnKSA6IDB4ZWFjZjtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKSA6IDB4ZWFkMDtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKSA6IDB4ZWFkMTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0JykgOiAweGVhZDg7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QubWVtbycpIDogMHhlYWQzO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKSA6IDB4ZWFkNDtcbnZhciBSRUFDVF9CTE9DS19UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYmxvY2snKSA6IDB4ZWFkOTtcbnZhciBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZnVuZGFtZW50YWwnKSA6IDB4ZWFkNTtcbnZhciBSRUFDVF9SRVNQT05ERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnJlc3BvbmRlcicpIDogMHhlYWQ2O1xudmFyIFJFQUNUX1NDT1BFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zY29wZScpIDogMHhlYWQ3O1xuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IC8vIE5vdGU6IGl0cyB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyBpZiBpdCdzIGEgcG9seWZpbGwuXG4gIHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9SRVNQT05ERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9TQ09QRV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0JMT0NLX1RZUEUpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2Yob2JqZWN0KSB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHtcbiAgICB2YXIgJCR0eXBlb2YgPSBvYmplY3QuJCR0eXBlb2Y7XG5cbiAgICBzd2l0Y2ggKCQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgdmFyIHR5cGUgPSBvYmplY3QudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0FTWU5DX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhciAkJHR5cGVvZlR5cGUgPSB0eXBlICYmIHR5cGUuJCR0eXBlb2Y7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoJCR0eXBlb2ZUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICAgICAgICAgIHJldHVybiAkJHR5cGVvZlR5cGU7XG5cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2Y7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICByZXR1cm4gJCR0eXBlb2Y7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn0gLy8gQXN5bmNNb2RlIGlzIGRlcHJlY2F0ZWQgYWxvbmcgd2l0aCBpc0FzeW5jTW9kZVxuXG52YXIgQXN5bmNNb2RlID0gUkVBQ1RfQVNZTkNfTU9ERV9UWVBFO1xudmFyIENvbmN1cnJlbnRNb2RlID0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU7XG52YXIgQ29udGV4dENvbnN1bWVyID0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xudmFyIENvbnRleHRQcm92aWRlciA9IFJFQUNUX1BST1ZJREVSX1RZUEU7XG52YXIgRWxlbWVudCA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcbnZhciBGb3J3YXJkUmVmID0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbnZhciBGcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG52YXIgTGF6eSA9IFJFQUNUX0xBWllfVFlQRTtcbnZhciBNZW1vID0gUkVBQ1RfTUVNT19UWVBFO1xudmFyIFBvcnRhbCA9IFJFQUNUX1BPUlRBTF9UWVBFO1xudmFyIFByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbnZhciBTdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbnZhciBTdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG52YXIgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUgPSBmYWxzZTsgLy8gQXN5bmNNb2RlIHNob3VsZCBiZSBkZXByZWNhdGVkXG5cbmZ1bmN0aW9uIGlzQXN5bmNNb2RlKG9iamVjdCkge1xuICB7XG4gICAgaWYgKCFoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSkge1xuICAgICAgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUgPSB0cnVlOyAvLyBVc2luZyBjb25zb2xlWyd3YXJuJ10gdG8gZXZhZGUgQmFiZWwgYW5kIEVTTGludFxuXG4gICAgICBjb25zb2xlWyd3YXJuJ10oJ1RoZSBSZWFjdElzLmlzQXN5bmNNb2RlKCkgYWxpYXMgaGFzIGJlZW4gZGVwcmVjYXRlZCwgJyArICdhbmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IDE3Ky4gVXBkYXRlIHlvdXIgY29kZSB0byB1c2UgJyArICdSZWFjdElzLmlzQ29uY3VycmVudE1vZGUoKSBpbnN0ZWFkLiBJdCBoYXMgdGhlIGV4YWN0IHNhbWUgQVBJLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkgfHwgdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbnRleHRDb25zdW1lcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9DT05URVhUX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbnRleHRQcm92aWRlcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QUk9WSURFUl9UWVBFO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNGb3J3YXJkUmVmKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZyYWdtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0xhenkob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTEFaWV9UWVBFO1xufVxuZnVuY3Rpb24gaXNNZW1vKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX01FTU9fVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUG9ydGFsKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BPUlRBTF9UWVBFO1xufVxuZnVuY3Rpb24gaXNQcm9maWxlcihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdHJpY3RNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N1c3BlbnNlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG59XG5cbmV4cG9ydHMuQXN5bmNNb2RlID0gQXN5bmNNb2RlO1xuZXhwb3J0cy5Db25jdXJyZW50TW9kZSA9IENvbmN1cnJlbnRNb2RlO1xuZXhwb3J0cy5Db250ZXh0Q29uc3VtZXIgPSBDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLkNvbnRleHRQcm92aWRlciA9IENvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG5leHBvcnRzLkZvcndhcmRSZWYgPSBGb3J3YXJkUmVmO1xuZXhwb3J0cy5GcmFnbWVudCA9IEZyYWdtZW50O1xuZXhwb3J0cy5MYXp5ID0gTGF6eTtcbmV4cG9ydHMuTWVtbyA9IE1lbW87XG5leHBvcnRzLlBvcnRhbCA9IFBvcnRhbDtcbmV4cG9ydHMuUHJvZmlsZXIgPSBQcm9maWxlcjtcbmV4cG9ydHMuU3RyaWN0TW9kZSA9IFN0cmljdE1vZGU7XG5leHBvcnRzLlN1c3BlbnNlID0gU3VzcGVuc2U7XG5leHBvcnRzLmlzQXN5bmNNb2RlID0gaXNBc3luY01vZGU7XG5leHBvcnRzLmlzQ29uY3VycmVudE1vZGUgPSBpc0NvbmN1cnJlbnRNb2RlO1xuZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lciA9IGlzQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlciA9IGlzQ29udGV4dFByb3ZpZGVyO1xuZXhwb3J0cy5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG5leHBvcnRzLmlzRm9yd2FyZFJlZiA9IGlzRm9yd2FyZFJlZjtcbmV4cG9ydHMuaXNGcmFnbWVudCA9IGlzRnJhZ21lbnQ7XG5leHBvcnRzLmlzTGF6eSA9IGlzTGF6eTtcbmV4cG9ydHMuaXNNZW1vID0gaXNNZW1vO1xuZXhwb3J0cy5pc1BvcnRhbCA9IGlzUG9ydGFsO1xuZXhwb3J0cy5pc1Byb2ZpbGVyID0gaXNQcm9maWxlcjtcbmV4cG9ydHMuaXNTdHJpY3RNb2RlID0gaXNTdHJpY3RNb2RlO1xuZXhwb3J0cy5pc1N1c3BlbnNlID0gaXNTdXNwZW5zZTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlO1xuZXhwb3J0cy50eXBlT2YgPSB0eXBlT2Y7XG4gIH0pKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuXG4gIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgdGV4dDtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcbiAgICAgICAgICAgICAgKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICtcbiAgICAgICAgICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yID0gZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yICYmICEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAnICtcbiAgICAgICAgICAgIGxvY2F0aW9uICsgJyBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJyArIHR5cGVvZiBlcnJvciArICcuICcgK1xuICAgICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgK1xuICAgICAgICAgICAgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArXG4gICAgICAgICAgICAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAnRmFpbGVkICcgKyBsb2NhdGlvbiArICcgdHlwZTogJyArIGVycm9yLm1lc3NhZ2UgKyAoc3RhY2sgIT0gbnVsbCA/IHN0YWNrIDogJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc2V0cyB3YXJuaW5nIGNhY2hlIHdoZW4gdGVzdGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jaGVja1Byb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBjaGVja1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4vY2hlY2tQcm9wVHlwZXMnKTtcblxudmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBlbGVtZW50VHlwZTogY3JlYXRlRWxlbWVudFR5cGVUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcbiAgICBleGFjdDogY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcixcbiAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGFjayA9ICcnO1xuICB9XG4gIC8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVkIGVycm9ycy5cbiAgUHJvcFR5cGVFcnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPSAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICAgIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgIHByb3BGdWxsTmFtZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcblxuICAgICAgaWYgKHNlY3JldCAhPT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgICAgaWYgKHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgICAgICAgICAvLyBOZXcgYmVoYXZpb3Igb25seSBmb3IgdXNlcnMgb2YgYHByb3AtdHlwZXNgIHBhY2thZ2VcbiAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAgICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICAgICAgICApO1xuICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIE9sZCBiZWhhdmlvciBmb3IgcGVvcGxlIHVzaW5nIFJlYWN0LlByb3BUeXBlc1xuICAgICAgICAgIHZhciBjYWNoZUtleSA9IGNvbXBvbmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldICYmXG4gICAgICAgICAgICAvLyBBdm9pZCBzcGFtbWluZyB0aGUgY29uc29sZSBiZWNhdXNlIHRoZXkgYXJlIG9mdGVuIG5vdCBhY3Rpb25hYmxlIGV4Y2VwdCBmb3IgbGliIGF1dGhvcnNcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50IDwgM1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgcHJvcCBvbiBgJyArIGNvbXBvbmVudE5hbWUgICsgJ2AuIFRoaXMgaXMgZGVwcmVjYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2FuZCB3aWxsIHRocm93IGluIHRoZSBzdGFuZGFsb25lIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICAgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgJyArXG4gICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGwpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlVHlwZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFSZWFjdElzLmlzVmFsaWRFbGVtZW50VHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudCB0eXBlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENsYXNzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xuICAgICAgICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBhcnJheSwgZ290ICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMuICcgK1xuICAgICAgICAgICAgJ0EgY29tbW9uIG1pc3Rha2UgaXMgdG8gd3JpdGUgb25lT2YoeCwgeSwgeikgaW5zdGVhZCBvZiBvbmVPZihbeCwgeSwgel0pLidcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXkuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzLCBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7XG4gICAgICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBTdHJpbmcocHJvcFZhbHVlKSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUgb2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkge1xuICAgICAgICBpZiAoaGFzKHByb3BWYWx1ZSwga2V5KSkge1xuICAgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihhcnJheU9mVHlwZUNoZWNrZXJzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gcHJpbnRXYXJuaW5nKCdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAncmVjZWl2ZWQgJyArIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyhjaGVja2VyKSArICcgYXQgaW5kZXggJyArIGkgKyAnLidcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb21cbiAgICAgIC8vIHByb3BzLlxuICAgICAgdmFyIGFsbEtleXMgPSBhc3NpZ24oe30sIHByb3BzW3Byb3BOYW1lXSwgc2hhcGVUeXBlcyk7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gYWxsS2V5cykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKFxuICAgICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGtleSBgJyArIGtleSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLicgK1xuICAgICAgICAgICAgJ1xcbkJhZCBvYmplY3Q6ICcgKyBKU09OLnN0cmluZ2lmeShwcm9wc1twcm9wTmFtZV0sIG51bGwsICcgICcpICtcbiAgICAgICAgICAgICdcXG5WYWxpZCBrZXlzOiAnICsgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZhbHN5IHZhbHVlIGNhbid0IGJlIGEgU3ltYm9sXG4gICAgaWYgKCFwcm9wVmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiXG5cbi8qOjogdHlwZSBBdHRyID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSAqL1xuLyo6OiB0eXBlIE9wdHMgPSB7IHByZXNlcnZlTnVtYmVyczogP2Jvb2xlYW4gfSAqL1xuXG4vKlxuXG5zdHlsZS1hdHRyXG49PT09XG5cblZlcnkgc2ltcGxlIHBhcnNpbmcgYW5kIHN0cmluZ2lmeWluZyBvZiBzdHlsZSBhdHRyaWJ1dGVzLlxuXG5gcGFyc2VgXG4tLS0tXG5cbkNvbnZlcnQgYSBzdHlsZSBhdHRyaWJ1dGUgc3RyaW5nIHRvIGFuIG9iamVjdC5cblxuKi9cblxuLyo6OiBkZWNsYXJlIGZ1bmN0aW9uIHBhcnNlIChyYXc6IHN0cmluZywgb3B0czogP09wdHMpOiBBdHRyICovXG5mdW5jdGlvbiBwYXJzZShyYXcsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG5cbiAgdmFyIHByZXNlcnZlTnVtYmVycyA9IG9wdHMucHJlc2VydmVOdW1iZXJzO1xuICB2YXIgdHJpbSA9IGZ1bmN0aW9uIChzKSB7XG4gICAgcmV0dXJuIHMudHJpbSgpO1xuICB9O1xuICB2YXIgb2JqID0ge307XG5cbiAgZ2V0S2V5VmFsdWVDaHVua3MocmF3KS5tYXAodHJpbSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAvLyBzcGxpdCB3aXRoIGAuaW5kZXhPZmAgcmF0aGVyIHRoYW4gYC5zcGxpdGAgYmVjYXVzZSB0aGUgdmFsdWUgbWF5IGFsc28gY29udGFpbiBjb2xvbnMuXG4gICAgdmFyIHBvcyA9IGl0ZW0uaW5kZXhPZignOicpO1xuICAgIHZhciBrZXkgPSBpdGVtLnN1YnN0cigwLCBwb3MpLnRyaW0oKTtcbiAgICB2YXIgdmFsID0gaXRlbS5zdWJzdHIocG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChwcmVzZXJ2ZU51bWJlcnMgJiYgaXNOdW1lcmljKHZhbCkpIHtcbiAgICAgIHZhbCA9IE51bWJlcih2YWwpO1xuICAgIH1cblxuICAgIG9ialtrZXldID0gdmFsO1xuICB9KTtcblxuICByZXR1cm4gb2JqO1xufVxuXG4vKlxuXG5gaXNOdW1lcmljYFxuLS0tLVxuXG5DaGVjayBpZiBhIHZhbHVlIGlzIG51bWVyaWMuXG5WaWE6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xODMwODQ0LzkzMjRcblxuKi9cblxuLyo6OiBkZWNsYXJlIGZ1bmN0aW9uIGlzTnVtZXJpYyAobjogYW55KTogYm9vbGVhbiAqL1xuXG5mdW5jdGlvbiBpc051bWVyaWMobikge1xuICByZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQobikpICYmIGlzRmluaXRlKG4pO1xufVxuXG4vKlxuXG5gZ2V0S2V5VmFsdWVDaHVua3NgXG4tLS0tXG5cblNwbGl0IGEgc3RyaW5nIGludG8gY2h1bmtzIG1hdGNoaW5nIGA8a2V5PjogPHZhbHVlPmBcblxuKi9cbi8qOjogZGVjbGFyZSBmdW5jdGlvbiBnZXRLZXlWYWx1ZUNodW5rcyAocmF3OiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+ICovXG5mdW5jdGlvbiBnZXRLZXlWYWx1ZUNodW5rcyhyYXcpIHtcbiAgdmFyIGNodW5rcyA9IFtdO1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIHNlcCA9ICc7JztcbiAgdmFyIGhhc1VuY2xvc2VkVXJsID0gL3VybFxcKFteXFwpXSskLztcbiAgdmFyIGNodW5rID0gJyc7XG4gIHZhciBuZXh0U3BsaXQ7XG4gIHdoaWxlIChvZmZzZXQgPCByYXcubGVuZ3RoKSB7XG4gICAgbmV4dFNwbGl0ID0gcmF3LmluZGV4T2Yoc2VwLCBvZmZzZXQpO1xuICAgIGlmIChuZXh0U3BsaXQgPT09IC0xKSB7XG4gICAgICBuZXh0U3BsaXQgPSByYXcubGVuZ3RoO1xuICAgIH1cblxuICAgIGNodW5rICs9IHJhdy5zdWJzdHJpbmcob2Zmc2V0LCBuZXh0U3BsaXQpO1xuXG4gICAgLy8gZGF0YSBVUklzIGNhbiBjb250YWluIHNlbWljb2xvbnMsIHNvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHdob2xlIHRoaW5nXG4gICAgaWYgKGhhc1VuY2xvc2VkVXJsLnRlc3QoY2h1bmspKSB7XG4gICAgICBjaHVuayArPSAnOyc7XG4gICAgICBvZmZzZXQgPSBuZXh0U3BsaXQgKyAxO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIGNodW5rID0gJyc7XG4gICAgb2Zmc2V0ID0gbmV4dFNwbGl0ICsgMTtcbiAgfVxuXG4gIHJldHVybiBjaHVua3M7XG59XG5cbi8qXG5cbmBzdHJpbmdpZnlgXG4tLS0tXG5cbkNvbnZlcnQgYW4gb2JqZWN0IGludG8gYW4gYXR0cmlidXRlIHN0cmluZ1xuXG4qL1xuLyo6OiBkZWNsYXJlIGZ1bmN0aW9uIHN0cmluZ2lmeSAob2JqOiBBdHRyKTogc3RyaW5nICovXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleSArICc6JyArIG9ialtrZXldO1xuICB9KS5qb2luKCc7Jyk7XG59XG5cbi8qXG5cbmBub3JtYWxpemVgXG4tLS0tXG5cbk5vcm1hbGl6ZSBhbiBhdHRyaWJ1dGUgc3RyaW5nIChlZy4gY29sbGFwc2UgZHVwbGljYXRlcylcblxuKi9cbi8qOjogZGVjbGFyZSBmdW5jdGlvbiBub3JtYWxpemUgKHN0cjogc3RyaW5nLCBvcHRzOiA/T3B0cyk6IHN0cmluZyAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKHN0ciwgb3B0cykge1xuICByZXR1cm4gc3RyaW5naWZ5KHBhcnNlKHN0ciwgb3B0cykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xubW9kdWxlLmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5O1xubW9kdWxlLmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplOyIsIi8qKlxuICogYXR0ciBmaXggZm9yIG9sZCBpZVxuICogQGF1dGhvciB5aW1pbmdoZUBnbWFpbC5jb21cbiAqL1xudmFyIFJfQk9PTEVBTiA9IC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLFxuICBSX0ZPQ1VTQUJMRSA9IC9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLFxuICBSX0NMSUNLQUJMRSA9IC9eYSg/OnJlYSk/JC9pLFxuICBSX0lOVkFMSURfQ0hBUiA9IC86fF5vbi87XG5cbnZhciBhdHRyRml4ID0ge30sXG4gIHByb3BGaXgsXG4gIGF0dHJIb29rcyA9IHtcbiAgICAvLyBodHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuICAgIHRhYmluZGV4OiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG4gICAgICAgIHZhciBhdHRyaWJ1dGVOb2RlID0gZWwuZ2V0QXR0cmlidXRlTm9kZSgndGFiaW5kZXgnKTtcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5vZGUgJiYgYXR0cmlidXRlTm9kZS5zcGVjaWZpZWQgP1xuICAgICAgICAgIHBhcnNlSW50KGF0dHJpYnV0ZU5vZGUudmFsdWUsIDEwKSA6XG4gICAgICAgICAgUl9GT0NVU0FCTEUudGVzdChlbC5ub2RlTmFtZSkgfHxcbiAgICAgICAgICBSX0NMSUNLQUJMRS50ZXN0KGVsLm5vZGVOYW1lKSAmJiBlbC5ocmVmID9cbiAgICAgICAgICAgIDAgOlxuICAgICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgYm9vbEhvb2sgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoZWxlbSwgbmFtZSkge1xuICAgICAgLy8g6L2s5Y+R5YiwIHByb3Ag5pa55rOVXG4gICAgICByZXR1cm4gZWxlbVtwcm9wRml4W25hbWVdIHx8IG5hbWVdID9cbiAgICAgICAgLy8g5qC55o2uIHczYyBhdHRyaWJ1dGUgLCB0cnVlIOaXtui/lOWbnuWxnuaAp+WQjeWtl+espuS4slxuICAgICAgICBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuICAgICAgICB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICBhdHRyTm9kZUhvb2sgPSB7fTtcblxuYXR0ckhvb2tzLnN0eWxlID0ge1xuICBnZXQ6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBlbC5zdHlsZS5jc3NUZXh0O1xuICB9XG59O1xuXG5wcm9wRml4ID0ge1xuICBoaWRlZm9jdXM6ICdoaWRlRm9jdXMnLFxuICB0YWJpbmRleDogJ3RhYkluZGV4JyxcbiAgcmVhZG9ubHk6ICdyZWFkT25seScsXG4gICdmb3InOiAnaHRtbEZvcicsXG4gICdjbGFzcyc6ICdjbGFzc05hbWUnLFxuICBtYXhsZW5ndGg6ICdtYXhMZW5ndGgnLFxuICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJyxcbiAgY2VsbHBhZGRpbmc6ICdjZWxsUGFkZGluZycsXG4gIHJvd3NwYW46ICdyb3dTcGFuJyxcbiAgY29sc3BhbjogJ2NvbFNwYW4nLFxuICB1c2VtYXA6ICd1c2VNYXAnLFxuICBmcmFtZWJvcmRlcjogJ2ZyYW1lQm9yZGVyJyxcbiAgY29udGVudGVkaXRhYmxlOiAnY29udGVudEVkaXRhYmxlJ1xufTtcblxudmFyIHVhID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50IDogJyc7XG52YXIgZG9jID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50IDoge307XG5cbmZ1bmN0aW9uIG51bWJlcmlmeShzKSB7XG4gIHZhciBjID0gMDtcbiAgLy8gY29udmVydCAnMS4yLjMuNCcgdG8gMS4yMzRcbiAgcmV0dXJuIHBhcnNlRmxvYXQocy5yZXBsYWNlKC9cXC4vZywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoYysrID09PSAwKSA/ICcuJyA6ICcnO1xuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGllVmVyc2lvbigpIHtcbiAgdmFyIG0sIHY7XG4gIGlmICgobSA9IHVhLm1hdGNoKC9NU0lFIChbXjtdKil8VHJpZGVudC4qOyBydig/Olxcc3w6KT8oWzAtOS5dKykvKSkgJiZcbiAgICAodiA9IChtWzFdIHx8IG1bMl0pKSkge1xuICAgIHJldHVybiBkb2MuZG9jdW1lbnRNb2RlIHx8IG51bWJlcmlmeSh2KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtaXgocywgdCkge1xuICBmb3IgKHZhciBwIGluIHQpIHtcbiAgICBzW3BdID0gdFtwXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlYWNoKGFyciwgZm4pIHtcbiAgdmFyIGkgPSAwLCBsID0gYXJyLmxlbmd0aDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoZm4oYXJyW2ldLCBpKSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxudmFyIGllID0gaWVWZXJzaW9uKCk7XG5cbmlmIChpZSAmJiBpZSA8IDgpIHtcbiAgYXR0ckhvb2tzLnN0eWxlLnNldCA9IGZ1bmN0aW9uIChlbCwgdmFsKSB7XG4gICAgZWwuc3R5bGUuY3NzVGV4dCA9IHZhbDtcbiAgfTtcblxuICAvLyBnZXQgYXR0cmlidXRlIHZhbHVlIGZyb20gYXR0cmlidXRlIG5vZGUgZm9yIGllXG4gIG1peChhdHRyTm9kZUhvb2ssIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIChlbGVtLCBuYW1lKSB7XG4gICAgICB2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpO1xuICAgICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBhdHRyaWJ1dGUgbm9kZSBzcGVjaWZpZWQgYnkgdXNlclxuICAgICAgcmV0dXJuIHJldCAmJiAoXG4gICAgICAgIC8vIGZpeCAjMTAwXG4gICAgICByZXQuc3BlY2lmaWVkIHx8IHJldC5ub2RlVmFsdWUpID9cbiAgICAgICAgcmV0Lm5vZGVWYWx1ZSA6XG4gICAgICAgIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIGllNiw3IOS4jeWMuuWIhiBhdHRyaWJ1dGUg5LiOIHByb3BlcnR5XG4gIG1peChhdHRyRml4LCBwcm9wRml4KTtcblxuICAvLyBodHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuICBhdHRySG9va3MudGFiSW5kZXggPSBhdHRySG9va3MudGFiaW5kZXg7XG5cbiAgLy8g5LiN5YWJ5pivIGhyZWYsIHNyYywg6L+Y5pyJIHJvd3NwYW4g562J6Z2eIG1hcHBpbmcg5bGe5oCn77yM5Lmf6ZyA6KaB55So56ysIDIg5Liq5Y+C5pWw5p2l6I635Y+W5Y6f5aeL5YC8XG4gIC8vIOazqOaEjyBjb2xTcGFuIHJvd1NwYW4g5bey57uP55SxIHByb3BGaXgg6L2s5Li65aSn5YaZXG4gIGVhY2goWydocmVmJywgJ3NyYycsICd3aWR0aCcsICdoZWlnaHQnLCAnY29sU3BhbicsICdyb3dTcGFuJ10sIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgYXR0ckhvb2tzW25hbWVdID0ge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICB2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSwgMik7XG4gICAgICAgIHJldHVybiByZXQgPT09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgYXR0ckhvb2tzLnBsYWNlaG9sZGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gKGVsZW0sIG5hbWUpIHtcbiAgICAgIHJldHVybiBlbGVtW25hbWVdIHx8IGF0dHJOb2RlSG9vay5nZXQoZWxlbSwgbmFtZSk7XG4gICAgfVxuICB9O1xufVxuXG5pZiAoaWUpIHtcbiAgdmFyIGhyZWZGaXggPSBhdHRySG9va3MuaHJlZiA9IGF0dHJIb29rcy5ocmVmIHx8IHt9O1xuICBocmVmRml4LnNldCA9IGZ1bmN0aW9uIChlbCwgdmFsLCBuYW1lKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBlbC5jaGlsZE5vZGVzLFxuICAgICAgYixcbiAgICAgIGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgYWxsVGV4dCA9IGxlbiA+IDA7XG4gICAgZm9yIChsZW4gPSBsZW4gLSAxOyBsZW4gPj0gMDsgbGVuLS0pIHtcbiAgICAgIGlmIChjaGlsZE5vZGVzW2xlbl0ubm9kZVR5cGUgIT09IDMpIHtcbiAgICAgICAgYWxsVGV4dCA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhbGxUZXh0KSB7XG4gICAgICBiID0gZWwub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7XG4gICAgICBiLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBlbC5hcHBlbmRDaGlsZChiKTtcbiAgICB9XG4gICAgZWwuc2V0QXR0cmlidXRlKG5hbWUsICcnICsgdmFsKTtcbiAgICBpZiAoYikge1xuICAgICAgZWwucmVtb3ZlQ2hpbGQoYik7XG4gICAgfVxuICB9O1xufVxuXG52YXIgUkVfVFJJTSA9IC9eW1xcc1xceGEwXSt8W1xcc1xceGEwXSskL2csXG4gIHRyaW0gPSBTdHJpbmcucHJvdG90eXBlLnRyaW07XG52YXIgU1BBQ0UgPSAnICc7XG5cbnZhciBnZXRFbGVtZW50c0J5VGFnTmFtZTtcbmdldEVsZW1lbnRzQnlUYWdOYW1lID0gZnVuY3Rpb24gKG5hbWUsIGNvbnRleHQpIHtcbiAgcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSk7XG59O1xuXG5pZiAoZG9jLmNyZWF0ZUVsZW1lbnQpIHtcbiAgdmFyIGRpdiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpKTtcbiAgaWYgKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpLmxlbmd0aCkge1xuICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lID0gZnVuY3Rpb24gKG5hbWUsIGNvbnRleHQpIHtcbiAgICAgIHZhciBub2RlcyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSksXG4gICAgICAgIG5lZWRzRmlsdGVyID0gbmFtZSA9PT0gJyonO1xuICAgICAgLy8gPGlucHV0IGlkPSdsZW5ndGgnPlxuICAgICAgaWYgKG5lZWRzRmlsdGVyIHx8IHR5cGVvZiBub2Rlcy5sZW5ndGggIT09ICdudW1iZXInKSB7XG4gICAgICAgIHZhciByZXQgPSBbXSxcbiAgICAgICAgICBpID0gMCxcbiAgICAgICAgICBlbDtcbiAgICAgICAgd2hpbGUgKChlbCA9IG5vZGVzW2krK10pKSB7XG4gICAgICAgICAgaWYgKCFuZWVkc0ZpbHRlciB8fCBlbC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgcmV0LnB1c2goZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxudmFyIGNvbXBhcmVOb2RlT3JkZXIgPSAoJ3NvdXJjZUluZGV4JyBpbiAoZG9jICYmIGRvYy5kb2N1bWVudEVsZW1lbnQgfHwge30pKSA/IGZ1bmN0aW9uIChhLCBiKSB7XG4gIHJldHVybiBhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDtcbn0gOiBmdW5jdGlvbiAoYSwgYikge1xuICBpZiAoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gfHwgIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAgICByZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IC0xIDogMTtcbiAgfVxuICB2YXIgYml0ID0gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSAmIDQ7XG4gIHJldHVybiBiaXQgPyAtMSA6IDE7XG59O1xuXG52YXIgdXRpbCA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBpZTogaWUsXG5cbiAgdW5pcXVlOiAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYXNEdXBsaWNhdGUsXG4gICAgICBiYXNlSGFzRHVwbGljYXRlID0gdHJ1ZTtcblxuICAgIC8vIEhlcmUgd2UgY2hlY2sgaWYgdGhlIEphdmFTY3JpcHQgZW5naW5lIGlzIHVzaW5nIHNvbWUgc29ydCBvZlxuICAgIC8vIG9wdGltaXphdGlvbiB3aGVyZSBpdCBkb2VzIG5vdCBhbHdheXMgY2FsbCBvdXIgY29tcGFyaXNvblxuICAgIC8vIGZ1bmN0aW9uLiBJZiB0aGF0IGlzIHRoZSBjYXNlLCBkaXNjYXJkIHRoZSBoYXNEdXBsaWNhdGUgdmFsdWUuXG4gICAgLy8gVGh1cyBmYXIgdGhhdCBpbmNsdWRlcyBHb29nbGUgQ2hyb21lLlxuICAgIFswLCAwXS5zb3J0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2VIYXNEdXBsaWNhdGUgPSBmYWxzZTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gc29ydE9yZGVyKGEsIGIpIHtcbiAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGFyZU5vZGVPcmRlcihhLCBiKTtcbiAgICB9XG5cbiAgICAvLyDmjpLluo/ljrvph41cbiAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnRzKSB7XG4gICAgICBoYXNEdXBsaWNhdGUgPSBiYXNlSGFzRHVwbGljYXRlO1xuICAgICAgZWxlbWVudHMuc29ydChzb3J0T3JkZXIpO1xuXG4gICAgICBpZiAoaGFzRHVwbGljYXRlKSB7XG4gICAgICAgIHZhciBpID0gMSwgbGVuID0gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgICAgIGlmIChlbGVtZW50c1tpXSA9PT0gZWxlbWVudHNbaSAtIDFdKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAtLWxlbjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH07XG4gIH0pKCksXG5cbiAgZ2V0RWxlbWVudHNCeVRhZ05hbWU6IGdldEVsZW1lbnRzQnlUYWdOYW1lLFxuXG4gIGdldFNpbXBsZUF0dHI6IGZ1bmN0aW9uIChlbCwgbmFtZSkge1xuICAgIHZhciByZXQgPSBlbCAmJiBlbC5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpO1xuICAgIGlmIChyZXQgJiYgcmV0LnNwZWNpZmllZCkge1xuICAgICAgcmV0dXJuICd2YWx1ZScgaW4gcmV0ID8gcmV0LnZhbHVlIDogcmV0Lm5vZGVWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcblxuICBjb250YWluczogaWUgPyBmdW5jdGlvbiAoYSwgYikge1xuICAgIGlmIChhLm5vZGVUeXBlID09PSA5KSB7XG4gICAgICBhID0gYS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vICFhLmNvbnRhaW5zID0+IGE9PT1kb2N1bWVudCB8fCB0ZXh0XG4gICAgLy8g5rOo5oSP5Y6f55SfIGNvbnRhaW5zIOWIpOaWreaXtiBhPT09YiDkuZ/ov5Tlm54gdHJ1ZVxuICAgIGIgPSBiLnBhcmVudE5vZGU7XG5cbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gd2hlbiBiIGlzIGRvY3VtZW50LCBhLmNvbnRhaW5zKGIpIOS4jeaUr+aMgeeahOaOpeWPoyBpbiBpZVxuICAgIGlmIChiICYmIGIubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgIHJldHVybiBhLmNvbnRhaW5zICYmIGEuY29udGFpbnMoYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gOiBmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiAhIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpICYgMTYpO1xuICB9LFxuXG4gIGlzVGFnOiBmdW5jdGlvbiAoZWwsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnKicgfHwgZWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgfSxcblxuICBoYXNTaW5nbGVDbGFzczogZnVuY3Rpb24gKGVsLCBjbHMpIHtcbiAgICAvLyBjb25zaWRlciB4bWxcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20va2lzc3l0ZWFtL2tpc3N5L2lzc3Vlcy81MzJcbiAgICB2YXIgY2xhc3NOYW1lID0gZWwgJiYgdXRpbC5nZXRTaW1wbGVBdHRyKGVsLCAnY2xhc3MnKTtcbiAgICByZXR1cm4gY2xhc3NOYW1lICYmIChjbGFzc05hbWUgPSBjbGFzc05hbWUucmVwbGFjZSgvW1xcclxcdFxcbl0vZywgU1BBQ0UpKSAmJlxuICAgICAgKFNQQUNFICsgY2xhc3NOYW1lICsgU1BBQ0UpLmluZGV4T2YoU1BBQ0UgKyBjbHMgKyBTUEFDRSkgPiAtMTtcbiAgfSxcblxuICBzdGFydHNXaXRoOiBmdW5jdGlvbiAoc3RyLCBwcmVmaXgpIHtcbiAgICByZXR1cm4gc3RyLmxhc3RJbmRleE9mKHByZWZpeCwgMCkgPT09IDA7XG4gIH0sXG5cbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIChzdHIsIHN1ZmZpeCkge1xuICAgIHZhciBpbmQgPSBzdHIubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDtcbiAgICByZXR1cm4gaW5kID49IDAgJiYgc3RyLmluZGV4T2Yoc3VmZml4LCBpbmQpID09PSBpbmQ7XG4gIH0sXG5cbiAgdHJpbTogdHJpbSA/XG4gICAgZnVuY3Rpb24gKHN0cikge1xuICAgICAgcmV0dXJuIHN0ciA9PSBudWxsID8gJycgOiB0cmltLmNhbGwoc3RyKTtcbiAgICB9IDpcbiAgICBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gc3RyID09IG51bGwgPyAnJyA6IChzdHIgKyAnJykucmVwbGFjZShSRV9UUklNLCAnJyk7XG4gICAgfSxcblxuICBhdHRyOiBmdW5jdGlvbiAoZWwsIG5hbWUpIHtcbiAgICB2YXIgYXR0ck5vcm1hbGl6ZXIsIHJldDtcbiAgICAvLyBzY3JvbGxMZWZ0XG4gICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAvLyBjdXN0b20gYXR0cnNcbiAgICBuYW1lID0gYXR0ckZpeFtuYW1lXSB8fCBuYW1lO1xuICAgIGlmIChSX0JPT0xFQU4udGVzdChuYW1lKSkge1xuICAgICAgYXR0ck5vcm1hbGl6ZXIgPSBib29sSG9vaztcbiAgICB9IGVsc2UgaWYgKFJfSU5WQUxJRF9DSEFSLnRlc3QobmFtZSkpIHtcbiAgICAgIC8vIG9ubHkgb2xkIGllP1xuICAgICAgYXR0ck5vcm1hbGl6ZXIgPSBhdHRyTm9kZUhvb2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF0dHJOb3JtYWxpemVyID0gYXR0ckhvb2tzW25hbWVdO1xuICAgIH1cbiAgICBpZiAoZWwgJiYgZWwubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgIC8vIGJyb3dzZXJzIGluZGV4IGVsZW1lbnRzIGJ5IGlkL25hbWUgb24gZm9ybXMsIGdpdmUgcHJpb3JpdHkgdG8gYXR0cmlidXRlcy5cbiAgICAgIGlmIChlbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZm9ybScpIHtcbiAgICAgICAgYXR0ck5vcm1hbGl6ZXIgPSBhdHRyTm9kZUhvb2s7XG4gICAgICB9XG4gICAgICBpZiAoYXR0ck5vcm1hbGl6ZXIgJiYgYXR0ck5vcm1hbGl6ZXIuZ2V0KSB7XG4gICAgICAgIHJldHVybiBhdHRyTm9ybWFsaXplci5nZXQoZWwsIG5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0ID0gZWwuZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgICAgaWYgKHJldCA9PT0gJycpIHtcbiAgICAgICAgdmFyIGF0dHJOb2RlID0gZWwuZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtcbiAgICAgICAgaWYgKCFhdHRyTm9kZSB8fCAhYXR0ck5vZGUuc3BlY2lmaWVkKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gc3RhbmRhcmQgYnJvd3NlciBub24tZXhpc3RpbmcgYXR0cmlidXRlIHJldHVybiBudWxsXG4gICAgICAvLyBpZTw4IHdpbGwgcmV0dXJuIHVuZGVmaW5lZCAsIGJlY2F1c2UgaXQgcmV0dXJuIHByb3BlcnR5XG4gICAgICAvLyBzbyBub3JtIHRvIHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIHJldCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDtcbiAgICB9XG4gIH1cbn07IiwiLypcbiAgR2VuZXJhdGVkIGJ5IGtpc29uLiovXG52YXIgcGFyc2VyID0gKGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcbiAgICAvKmpzaGludCBxdW90bWFyazpmYWxzZSwgbG9vcGZ1bmM6dHJ1ZSwgaW5kZW50OmZhbHNlLCB1bnVzZWQ6ZmFsc2UsIGFzaTp0cnVlLCBib3NzOnRydWUqL1xuICAgIC8qIEdlbmVyYXRlZCBieSBraXNvbiAqL1xuICAgIHZhciBwYXJzZXIgPSB7fSxcbiAgICAgICAgR3JhbW1hckNvbnN0ID0ge1xuICAgICAgICAgICAgJ1NISUZUX1RZUEUnOiAxLFxuICAgICAgICAgICAgJ1JFRFVDRV9UWVBFJzogMixcbiAgICAgICAgICAgICdBQ0NFUFRfVFlQRSc6IDAsXG4gICAgICAgICAgICAnVFlQRV9JTkRFWCc6IDAsXG4gICAgICAgICAgICAnUFJPRFVDVElPTl9JTkRFWCc6IDEsXG4gICAgICAgICAgICAnVE9fSU5ERVgnOiAyXG4gICAgICAgIH07XG4gICAgLypqc2xpbnQgcXVvdG1hcms6IGZhbHNlKi9cbiAgICBmdW5jdGlvbiBtaXgodG8sIGZyb20pIHtcbiAgICAgICAgZm9yICh2YXIgZiBpbiBmcm9tKSB7XG4gICAgICAgICAgICB0b1tmXSA9IGZyb21bZl07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgICAgICByZXR1cm4gJ1tvYmplY3QgQXJyYXldJyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZWFjaChvYmplY3QsIGZuLCBjb250ZXh0KSB7XG4gICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgIHZhciBrZXksXG4gICAgICAgICAgICAgICAgdmFsLFxuICAgICAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgICAgICBpID0gMDtcblxuICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFpc0FycmF5KG9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG5vdCB1c2UgaGFzT3duUHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZuLmNhbGwoY29udGV4dCwgb2JqZWN0W2tleV0sIGtleSwgb2JqZWN0KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBvYmplY3QubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFsID0gb2JqZWN0WzBdOyBpIDwgbGVuZ3RoOyB2YWwgPSBvYmplY3RbKytpXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm4uY2FsbChjb250ZXh0LCB2YWwsIGksIG9iamVjdCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluQXJyYXkoaXRlbSwgYXJyKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIExleGVyID0gZnVuY3Rpb24gTGV4ZXIoY2ZnKSB7XG5cbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIC8qXG4gICAgIGxleCBydWxlcy5cbiAgICAgQHR5cGUge09iamVjdFtdfVxuICAgICBAZXhhbXBsZVxuICAgICBbXG4gICAgIHtcbiAgICAgcmVnZXhwOidcXFxcdysnLFxuICAgICBzdGF0ZTpbJ3h4J10sXG4gICAgIHRva2VuOidjJyxcbiAgICAgLy8gdGhpcyA9PiBsZXhcbiAgICAgYWN0aW9uOmZ1bmN0aW9uKCl7fVxuICAgICB9XG4gICAgIF1cbiAgICAgKi9cbiAgICAgICAgc2VsZi5ydWxlcyA9IFtdO1xuXG4gICAgICAgIG1peChzZWxmLCBjZmcpO1xuXG4gICAgICAgIC8qXG4gICAgIElucHV0IGxhbmd1YWdlc1xuICAgICBAdHlwZSB7U3RyaW5nfVxuICAgICAqL1xuXG4gICAgICAgIHNlbGYucmVzZXRJbnB1dChzZWxmLmlucHV0KTtcbiAgICB9O1xuICAgIExleGVyLnByb3RvdHlwZSA9IHtcbiAgICAgICAgJ3Jlc2V0SW5wdXQnOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIG1peCh0aGlzLCB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGlucHV0LFxuICAgICAgICAgICAgICAgIG1hdGNoZWQ6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlU3RhY2s6IFtMZXhlci5TVEFUSUMuSU5JVElBTF0sXG4gICAgICAgICAgICAgICAgbWF0Y2g6ICcnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGZpcnN0TGluZTogMSxcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiAxLFxuICAgICAgICAgICAgICAgIGxhc3RMaW5lOiAxLFxuICAgICAgICAgICAgICAgIGZpcnN0Q29sdW1uOiAxLFxuICAgICAgICAgICAgICAgIGxhc3RDb2x1bW46IDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAnZ2V0Q3VycmVudFJ1bGVzJzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IHNlbGYuc3RhdGVTdGFja1tzZWxmLnN0YXRlU3RhY2subGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgIC8vI0pTQ09WRVJBR0VfSUZcbiAgICAgICAgICAgIGlmIChzZWxmLm1hcFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gc2VsZi5tYXBTdGF0ZShjdXJyZW50U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWFjaChzZWxmLnJ1bGVzLCBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IHIuc3RhdGUgfHwgclszXTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IExleGVyLlNUQVRJQy5JTklUSUFMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KGN1cnJlbnRTdGF0ZSwgc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgICAgIH0sXG4gICAgICAgICdwdXNoU3RhdGUnOiBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3BvcFN0YXRlJzogZnVuY3Rpb24gKG51bSkge1xuICAgICAgICAgICAgbnVtID0gbnVtIHx8IDE7XG4gICAgICAgICAgICB2YXIgcmV0O1xuICAgICAgICAgICAgd2hpbGUgKG51bS0tKSB7XG4gICAgICAgICAgICAgICAgcmV0ID0gdGhpcy5zdGF0ZVN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Nob3dEZWJ1Z0luZm8nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgICAgICAgICAgREVCVUdfQ09OVEVYVF9MSU1JVCA9IExleGVyLlNUQVRJQy5ERUJVR19DT05URVhUX0xJTUlULFxuICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBzZWxmLm1hdGNoZWQsXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLm1hdGNoLFxuICAgICAgICAgICAgICAgIGlucHV0ID0gc2VsZi5pbnB1dDtcbiAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaGVkLnNsaWNlKDAsIG1hdGNoZWQubGVuZ3RoIC0gbWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgICAgIC8vI0pTQ09WRVJBR0VfSUYgMFxuICAgICAgICAgICAgdmFyIHBhc3QgPSAobWF0Y2hlZC5sZW5ndGggPiBERUJVR19DT05URVhUX0xJTUlUID8gJy4uLicgOiAnJykgK1xuICAgICAgICAgICAgICAgIG1hdGNoZWQuc2xpY2UoMCAtIERFQlVHX0NPTlRFWFRfTElNSVQpLnJlcGxhY2UoL1xcbi8sICcgJyksXG4gICAgICAgICAgICAgICAgbmV4dCA9IG1hdGNoICsgaW5wdXQ7XG4gICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0VORElGXG4gICAgICAgICAgICBuZXh0ID0gbmV4dC5zbGljZSgwLCBERUJVR19DT05URVhUX0xJTUlUKSArXG4gICAgICAgICAgICAgICAgKG5leHQubGVuZ3RoID4gREVCVUdfQ09OVEVYVF9MSU1JVCA/ICcuLi4nIDogJycpO1xuICAgICAgICAgICAgcmV0dXJuIHBhc3QgKyBuZXh0ICsgJ1xcbicgKyBuZXcgQXJyYXkocGFzdC5sZW5ndGggKyAxKS5qb2luKCctJykgKyAnXic7XG4gICAgICAgIH0sXG4gICAgICAgICdtYXBTeW1ib2wnOiBmdW5jdGlvbiBtYXBTeW1ib2xGb3JDb2RlR2VuKHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN5bWJvbE1hcFt0XTtcbiAgICAgICAgfSxcbiAgICAgICAgJ21hcFJldmVyc2VTeW1ib2wnOiBmdW5jdGlvbiAocnMpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgICAgICAgICBzeW1ib2xNYXAgPSBzZWxmLnN5bWJvbE1hcCxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIHJldmVyc2VTeW1ib2xNYXAgPSBzZWxmLnJldmVyc2VTeW1ib2xNYXA7XG4gICAgICAgICAgICBpZiAoIXJldmVyc2VTeW1ib2xNYXAgJiYgc3ltYm9sTWFwKSB7XG4gICAgICAgICAgICAgICAgcmV2ZXJzZVN5bWJvbE1hcCA9IHNlbGYucmV2ZXJzZVN5bWJvbE1hcCA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoaSBpbiBzeW1ib2xNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZVN5bWJvbE1hcFtzeW1ib2xNYXBbaV1dID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0lGXG4gICAgICAgICAgICBpZiAocmV2ZXJzZVN5bWJvbE1hcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXZlcnNlU3ltYm9sTWFwW3JzXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnbGV4JzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0ID0gc2VsZi5pbnB1dCxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIHJ1bGUsXG4gICAgICAgICAgICAgICAgbSxcbiAgICAgICAgICAgICAgICByZXQsXG4gICAgICAgICAgICAgICAgbGluZXMsXG4gICAgICAgICAgICAgICAgcnVsZXMgPSBzZWxmLmdldEN1cnJlbnRSdWxlcygpO1xuXG4gICAgICAgICAgICBzZWxmLm1hdGNoID0gc2VsZi50ZXh0ID0gJyc7XG5cbiAgICAgICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5tYXBTeW1ib2woTGV4ZXIuU1RBVElDLkVORF9UQUcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBydWxlID0gcnVsZXNbaV07XG4gICAgICAgICAgICAgICAgLy8jSlNDT1ZFUkFHRV9JRiAwXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IHJ1bGUucmVnZXhwIHx8IHJ1bGVbMV0sXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gcnVsZS50b2tlbiB8fCBydWxlWzBdLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBydWxlLmFjdGlvbiB8fCBydWxlWzJdIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0VORElGXG4gICAgICAgICAgICAgICAgaWYgKChtID0gaW5wdXQubWF0Y2gocmVnZXhwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBtWzBdLm1hdGNoKC9cXG4uKi9nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVOdW1iZXIgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1peChzZWxmLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdExpbmU6IHNlbGYubGFzdExpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TGluZTogc2VsZi5saW5lTnVtYmVyICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Q29sdW1uOiBzZWxmLmxhc3RDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q29sdW1uOiBsaW5lcyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gMSA6IHNlbGYubGFzdENvbHVtbiArIG1bMF0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBlcnJvciByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLm1hdGNoID0gbVswXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhbGwgbWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoZXMgPSBtO1xuICAgICAgICAgICAgICAgICAgICAvLyBtYXkgY2hhbmdlIGJ5IHVzZXJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXh0ID0gbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoZWQgY29udGVudCB1dGlscyBub3dcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVkICs9IG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICByZXQgPSBhY3Rpb24gJiYgYWN0aW9uLmNhbGwoc2VsZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZWxmLm1hcFN5bWJvbChyZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UobWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnB1dCA9IGlucHV0O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxleCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBMZXhlci5TVEFUSUMgPSB7XG4gICAgICAgICdJTklUSUFMJzogJ0knLFxuICAgICAgICAnREVCVUdfQ09OVEVYVF9MSU1JVCc6IDIwLFxuICAgICAgICAnRU5EX1RBRyc6ICckRU9GJ1xuICAgIH07XG4gICAgdmFyIGxleGVyID0gbmV3IExleGVyKHtcbiAgICAgICAgJ3J1bGVzJzogW1xuICAgICAgICAgICAgWydiJywgL15cXFsoPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnYycsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFxdLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2QnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKX49KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2UnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcfD0oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnZicsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFxePSg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydnJywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKilcXCQ9KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2gnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcKj0oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnaScsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFw9KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2onLCAvXig/Oig/OltcXHddfFteXFx4MDAtXFx4YTBdfCg/OlxcXFxbXlxcblxcclxcZjAtOWEtZl0pKSg/OltcXHdcXGQtXXxbXlxceDAwLVxceGEwXXwoPzpcXFxcW15cXG5cXHJcXGYwLTlhLWZdKSkqKVxcKC8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KS5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKCdmbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2snLCAvXlteXFwpXSovLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgWydmbiddXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydsJywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKilcXCkvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnbScsIC9eOm5vdFxcKCg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS9pLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnbicsIC9eKD86KD86W1xcd118W15cXHgwMC1cXHhhMF18KD86XFxcXFteXFxuXFxyXFxmMC05YS1mXSkpKD86W1xcd1xcZC1dfFteXFx4MDAtXFx4YTBdfCg/OlxcXFxbXlxcblxcclxcZjAtOWEtZl0pKSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudW5Fc2NhcGUodGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydvJywgL15cIihcXFxcXCJ8W15cIl0pKlwiLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudW5Fc2NhcGVTdHIodGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydvJywgL14nKFxcXFwnfFteJ10pKicvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS51bkVzY2FwZVN0cih0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ3AnLCAvXiMoPzooPzpbXFx3XFxkLV18W15cXHgwMC1cXHhhMF18KD86XFxcXFteXFxuXFxyXFxmMC05YS1mXSkpKykvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS51bkVzY2FwZSh0aGlzLnRleHQuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ3EnLCAvXlxcLig/Oig/OltcXHddfFteXFx4MDAtXFx4YTBdfCg/OlxcXFxbXlxcblxcclxcZjAtOWEtZl0pKSg/OltcXHdcXGQtXXxbXlxceDAwLVxceGEwXXwoPzpcXFxcW15cXG5cXHJcXGYwLTlhLWZdKSkqKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnVuRXNjYXBlKHRoaXMudGV4dC5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsncicsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopLCg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydzJywgL146Oj8vLCAwXSxcbiAgICAgICAgICAgIFsndCcsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFwrKD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ3UnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKT4oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsndicsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopfig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWyd3JywgL15cXCovLCAwXSxcbiAgICAgICAgICAgIFsneCcsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSspLywgMF0sXG4gICAgICAgICAgICBbJ3knLCAvXi4vLCAwXVxuICAgICAgICBdXG4gICAgfSk7XG4gICAgcGFyc2VyLmxleGVyID0gbGV4ZXI7XG4gICAgbGV4ZXIuc3ltYm9sTWFwID0ge1xuICAgICAgICAnJEVPRic6ICdhJyxcbiAgICAgICAgJ0xFRlRfQlJBQ0tFVCc6ICdiJyxcbiAgICAgICAgJ1JJR0hUX0JSQUNLRVQnOiAnYycsXG4gICAgICAgICdJTkNMVURFUyc6ICdkJyxcbiAgICAgICAgJ0RBU0hfTUFUQ0gnOiAnZScsXG4gICAgICAgICdQUkVGSVhfTUFUQ0gnOiAnZicsXG4gICAgICAgICdTVUZGSVhfTUFUQ0gnOiAnZycsXG4gICAgICAgICdTVUJTVFJJTkdfTUFUQ0gnOiAnaCcsXG4gICAgICAgICdBTExfTUFUQ0gnOiAnaScsXG4gICAgICAgICdGVU5DVElPTic6ICdqJyxcbiAgICAgICAgJ1BBUkFNRVRFUic6ICdrJyxcbiAgICAgICAgJ1JJR0hUX1BBUkVOVEhFU0VTJzogJ2wnLFxuICAgICAgICAnTk9UJzogJ20nLFxuICAgICAgICAnSURFTlQnOiAnbicsXG4gICAgICAgICdTVFJJTkcnOiAnbycsXG4gICAgICAgICdIQVNIJzogJ3AnLFxuICAgICAgICAnQ0xBU1MnOiAncScsXG4gICAgICAgICdDT01NQSc6ICdyJyxcbiAgICAgICAgJ0NPTE9OJzogJ3MnLFxuICAgICAgICAnUExVUyc6ICd0JyxcbiAgICAgICAgJ0dSRUFURVInOiAndScsXG4gICAgICAgICdUSUxERSc6ICd2JyxcbiAgICAgICAgJ1VOSVZFUlNBTCc6ICd3JyxcbiAgICAgICAgJ1MnOiAneCcsXG4gICAgICAgICdJTlZBTElEJzogJ3knLFxuICAgICAgICAnJFNUQVJUJzogJ3onLFxuICAgICAgICAnc2VsZWN0b3JzX2dyb3VwJzogJ2FhJyxcbiAgICAgICAgJ3NlbGVjdG9yJzogJ2FiJyxcbiAgICAgICAgJ3NpbXBsZV9zZWxlY3Rvcl9zZXF1ZW5jZSc6ICdhYycsXG4gICAgICAgICdjb21iaW5hdG9yJzogJ2FkJyxcbiAgICAgICAgJ3R5cGVfc2VsZWN0b3InOiAnYWUnLFxuICAgICAgICAnaWRfc2VsZWN0b3InOiAnYWYnLFxuICAgICAgICAnY2xhc3Nfc2VsZWN0b3InOiAnYWcnLFxuICAgICAgICAnYXR0cmliX21hdGNoJzogJ2FoJyxcbiAgICAgICAgJ2F0dHJpYic6ICdhaScsXG4gICAgICAgICdhdHRyaWJfdmFsJzogJ2FqJyxcbiAgICAgICAgJ3BzZXVkbyc6ICdhaycsXG4gICAgICAgICduZWdhdGlvbic6ICdhbCcsXG4gICAgICAgICduZWdhdGlvbl9hcmcnOiAnYW0nLFxuICAgICAgICAnc3VmZml4X3NlbGVjdG9yJzogJ2FuJyxcbiAgICAgICAgJ3N1ZmZpeF9zZWxlY3RvcnMnOiAnYW8nXG4gICAgfTtcbiAgICBwYXJzZXIucHJvZHVjdGlvbnMgPSBbXG4gICAgICAgIFsneicsIFsnYWEnXV0sXG4gICAgICAgIFsnYWEnLCBbJ2FiJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLiQxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhYScsIFsnYWEnLCAncicsICdhYiddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJDEucHVzaCh0aGlzLiQzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhYicsIFsnYWMnXV0sXG4gICAgICAgIFsnYWInLCBbJ2FiJywgJ2FkJywgJ2FjJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gTGlua2VkTGlzdFxuXG4gICAgICAgICAgICAgICAgdGhpcy4kMS5uZXh0Q29tYmluYXRvciA9IHRoaXMuJDMucHJldkNvbWJpbmF0b3IgPSB0aGlzLiQyO1xuICAgICAgICAgICAgICAgIHZhciBvcmRlcjtcbiAgICAgICAgICAgICAgICBvcmRlciA9IHRoaXMuJDEub3JkZXIgPSB0aGlzLiQxLm9yZGVyIHx8IDA7XG4gICAgICAgICAgICAgICAgdGhpcy4kMy5vcmRlciA9IG9yZGVyICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLiQzLnByZXYgPSB0aGlzLiQxO1xuICAgICAgICAgICAgICAgIHRoaXMuJDEubmV4dCA9IHRoaXMuJDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJDM7XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWQnLCBbJ3QnXV0sXG4gICAgICAgIFsnYWQnLCBbJ3UnXV0sXG4gICAgICAgIFsnYWQnLCBbJ3YnXV0sXG4gICAgICAgIFsnYWQnLCBbJ3gnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FlJywgWyduJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ3RhZycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLiQxXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhZScsIFsndyddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHQ6ICd0YWcnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy4kMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWYnLCBbJ3AnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy4kMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWcnLCBbJ3EnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAnY2xzJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuJDFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FoJywgWydmJ11dLFxuICAgICAgICBbJ2FoJywgWydnJ11dLFxuICAgICAgICBbJ2FoJywgWydoJ11dLFxuICAgICAgICBbJ2FoJywgWydpJ11dLFxuICAgICAgICBbJ2FoJywgWydkJ11dLFxuICAgICAgICBbJ2FoJywgWydlJ11dLFxuICAgICAgICBbJ2FpJywgWydiJywgJ24nLCAnYyddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHQ6ICdhdHRyaWInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQ6IHRoaXMuJDJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWonLCBbJ24nXV0sXG4gICAgICAgIFsnYWonLCBbJ28nXV0sXG4gICAgICAgIFsnYWknLCBbJ2InLCAnbicsICdhaCcsICdhaicsICdjJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ2F0dHJpYicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudDogdGhpcy4kMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiB0aGlzLiQzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuJDRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWsnLCBbJ3MnLCAnaicsICdrJywgJ2wnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAncHNldWRvJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuOiB0aGlzLiQyLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbTogdGhpcy4kM1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhaycsIFsncycsICduJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ3BzZXVkbycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudDogdGhpcy4kMi50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FsJywgWydtJywgJ2FtJywgJ2wnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAncHNldWRvJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuOiAnbm90JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiB0aGlzLiQyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FtJywgWydhZSddXSxcbiAgICAgICAgWydhbScsIFsnYWYnXV0sXG4gICAgICAgIFsnYW0nLCBbJ2FnJ11dLFxuICAgICAgICBbJ2FtJywgWydhaSddXSxcbiAgICAgICAgWydhbScsIFsnYWsnXV0sXG4gICAgICAgIFsnYW4nLCBbJ2FmJ11dLFxuICAgICAgICBbJ2FuJywgWydhZyddXSxcbiAgICAgICAgWydhbicsIFsnYWknXV0sXG4gICAgICAgIFsnYW4nLCBbJ2FrJ11dLFxuICAgICAgICBbJ2FuJywgWydhbCddXSxcbiAgICAgICAgWydhbycsIFsnYW4nXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMuJDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FvJywgWydhbycsICdhbiddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJDEucHVzaCh0aGlzLiQyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhYycsIFsnYWUnXV0sXG4gICAgICAgIFsnYWMnLCBbJ2FvJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgc3VmZml4OiB0aGlzLiQxXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhYycsIFsnYWUnLCAnYW8nXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAndGFnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuJDEudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogdGhpcy4kMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICBdO1xuICAgIHBhcnNlci50YWJsZSA9IHtcbiAgICAgICAgJ2dvdG9zJzoge1xuICAgICAgICAgICAgJzAnOiB7XG4gICAgICAgICAgICAgICAgJ2FhJzogOCxcbiAgICAgICAgICAgICAgICAnYWInOiA5LFxuICAgICAgICAgICAgICAgICdhZSc6IDEwLFxuICAgICAgICAgICAgICAgICdhZic6IDExLFxuICAgICAgICAgICAgICAgICdhZyc6IDEyLFxuICAgICAgICAgICAgICAgICdhaSc6IDEzLFxuICAgICAgICAgICAgICAgICdhayc6IDE0LFxuICAgICAgICAgICAgICAgICdhbCc6IDE1LFxuICAgICAgICAgICAgICAgICdhbic6IDE2LFxuICAgICAgICAgICAgICAgICdhbyc6IDE3LFxuICAgICAgICAgICAgICAgICdhYyc6IDE4XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzInOiB7XG4gICAgICAgICAgICAgICAgJ2FlJzogMjAsXG4gICAgICAgICAgICAgICAgJ2FmJzogMjEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMjIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMjMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMjQsXG4gICAgICAgICAgICAgICAgJ2FtJzogMjVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnOSc6IHtcbiAgICAgICAgICAgICAgICAnYWQnOiAzM1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxMCc6IHtcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAxNixcbiAgICAgICAgICAgICAgICAnYW8nOiAzNFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxNyc6IHtcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAzNVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxOSc6IHtcbiAgICAgICAgICAgICAgICAnYWgnOiA0M1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyOCc6IHtcbiAgICAgICAgICAgICAgICAnYWInOiA0NixcbiAgICAgICAgICAgICAgICAnYWUnOiAxMCxcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAxNixcbiAgICAgICAgICAgICAgICAnYW8nOiAxNyxcbiAgICAgICAgICAgICAgICAnYWMnOiAxOFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczMyc6IHtcbiAgICAgICAgICAgICAgICAnYWUnOiAxMCxcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAxNixcbiAgICAgICAgICAgICAgICAnYW8nOiAxNyxcbiAgICAgICAgICAgICAgICAnYWMnOiA0N1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczNCc6IHtcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAzNVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0Myc6IHtcbiAgICAgICAgICAgICAgICAnYWonOiA1MFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0Nic6IHtcbiAgICAgICAgICAgICAgICAnYWQnOiAzM1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnYWN0aW9uJzoge1xuICAgICAgICAgICAgJzAnOiB7XG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsxLCB1bmRlZmluZWQsIDJdLFxuICAgICAgICAgICAgICAgICduJzogWzEsIHVuZGVmaW5lZCwgM10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMSwgdW5kZWZpbmVkLCA0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsxLCB1bmRlZmluZWQsIDVdLFxuICAgICAgICAgICAgICAgICdzJzogWzEsIHVuZGVmaW5lZCwgNl0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMSwgdW5kZWZpbmVkLCA3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxJzoge1xuICAgICAgICAgICAgICAgICduJzogWzEsIHVuZGVmaW5lZCwgMTldXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzInOiB7XG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDNdLFxuICAgICAgICAgICAgICAgICdwJzogWzEsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMSwgdW5kZWZpbmVkLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsxLCB1bmRlZmluZWQsIDZdLFxuICAgICAgICAgICAgICAgICd3JzogWzEsIHVuZGVmaW5lZCwgN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMyc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCA5XSxcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCA5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMTFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzUnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAxMl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNic6IHtcbiAgICAgICAgICAgICAgICAnaic6IFsxLCB1bmRlZmluZWQsIDI2XSxcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDI3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc3Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMTBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzgnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMF0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMSwgdW5kZWZpbmVkLCAyOF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnOSc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAxXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAxXSxcbiAgICAgICAgICAgICAgICAndCc6IFsxLCB1bmRlZmluZWQsIDI5XSxcbiAgICAgICAgICAgICAgICAndSc6IFsxLCB1bmRlZmluZWQsIDMwXSxcbiAgICAgICAgICAgICAgICAndic6IFsxLCB1bmRlZmluZWQsIDMxXSxcbiAgICAgICAgICAgICAgICAneCc6IFsxLCB1bmRlZmluZWQsIDMyXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxMCc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzOF0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzhdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDM4XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzOF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzhdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDM4XSxcbiAgICAgICAgICAgICAgICAnYic6IFsxLCB1bmRlZmluZWQsIDFdLFxuICAgICAgICAgICAgICAgICdtJzogWzEsIHVuZGVmaW5lZCwgMl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMSwgdW5kZWZpbmVkLCA0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsxLCB1bmRlZmluZWQsIDVdLFxuICAgICAgICAgICAgICAgICdzJzogWzEsIHVuZGVmaW5lZCwgNl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTEnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDMxXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxMic6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMzJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzEzJzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAzM11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTQnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDM0XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxNSc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMzVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzE2Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAzNl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTcnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzldLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDM5XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzOV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzldLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDM5XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzOV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsxLCB1bmRlZmluZWQsIDJdLFxuICAgICAgICAgICAgICAgICdwJzogWzEsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMSwgdW5kZWZpbmVkLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsxLCB1bmRlZmluZWQsIDZdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzE4Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDNdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDNdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDNdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDNdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDNdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDNdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzE5Jzoge1xuICAgICAgICAgICAgICAgICdjJzogWzEsIHVuZGVmaW5lZCwgMzZdLFxuICAgICAgICAgICAgICAgICdkJzogWzEsIHVuZGVmaW5lZCwgMzddLFxuICAgICAgICAgICAgICAgICdlJzogWzEsIHVuZGVmaW5lZCwgMzhdLFxuICAgICAgICAgICAgICAgICdmJzogWzEsIHVuZGVmaW5lZCwgMzldLFxuICAgICAgICAgICAgICAgICdnJzogWzEsIHVuZGVmaW5lZCwgNDBdLFxuICAgICAgICAgICAgICAgICdoJzogWzEsIHVuZGVmaW5lZCwgNDFdLFxuICAgICAgICAgICAgICAgICdpJzogWzEsIHVuZGVmaW5lZCwgNDJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzIwJzoge1xuICAgICAgICAgICAgICAgICdsJzogWzIsIDI2XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyMSc6IHtcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjInOiB7XG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMjhdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzIzJzoge1xuICAgICAgICAgICAgICAgICdsJzogWzIsIDI5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyNCc6IHtcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAzMF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjUnOiB7XG4gICAgICAgICAgICAgICAgJ2wnOiBbMSwgdW5kZWZpbmVkLCA0NF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjYnOiB7XG4gICAgICAgICAgICAgICAgJ2snOiBbMSwgdW5kZWZpbmVkLCA0NV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjcnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyNF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjgnOiB7XG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsxLCB1bmRlZmluZWQsIDJdLFxuICAgICAgICAgICAgICAgICduJzogWzEsIHVuZGVmaW5lZCwgM10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMSwgdW5kZWZpbmVkLCA0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsxLCB1bmRlZmluZWQsIDVdLFxuICAgICAgICAgICAgICAgICdzJzogWzEsIHVuZGVmaW5lZCwgNl0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMSwgdW5kZWZpbmVkLCA3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyOSc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAndyc6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCA1XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCA1XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczMCc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAndyc6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCA2XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCA2XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczMSc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAndyc6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCA3XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCA3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczMic6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAndyc6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCA4XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCA4XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczMyc6IHtcbiAgICAgICAgICAgICAgICAnYic6IFsxLCB1bmRlZmluZWQsIDFdLFxuICAgICAgICAgICAgICAgICdtJzogWzEsIHVuZGVmaW5lZCwgMl0sXG4gICAgICAgICAgICAgICAgJ24nOiBbMSwgdW5kZWZpbmVkLCAzXSxcbiAgICAgICAgICAgICAgICAncCc6IFsxLCB1bmRlZmluZWQsIDRdLFxuICAgICAgICAgICAgICAgICdxJzogWzEsIHVuZGVmaW5lZCwgNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMSwgdW5kZWZpbmVkLCA2XSxcbiAgICAgICAgICAgICAgICAndyc6IFsxLCB1bmRlZmluZWQsIDddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzM0Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDQwXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCA0MF0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgNDBdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDQwXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCA0MF0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgNDBdLFxuICAgICAgICAgICAgICAgICdiJzogWzEsIHVuZGVmaW5lZCwgMV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMSwgdW5kZWZpbmVkLCAyXSxcbiAgICAgICAgICAgICAgICAncCc6IFsxLCB1bmRlZmluZWQsIDRdLFxuICAgICAgICAgICAgICAgICdxJzogWzEsIHVuZGVmaW5lZCwgNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMSwgdW5kZWZpbmVkLCA2XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczNSc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMzddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzM2Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMTldXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzM3Jzoge1xuICAgICAgICAgICAgICAgICduJzogWzIsIDE3XSxcbiAgICAgICAgICAgICAgICAnbyc6IFsyLCAxN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzgnOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgMThdLFxuICAgICAgICAgICAgICAgICdvJzogWzIsIDE4XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczOSc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCAxM10sXG4gICAgICAgICAgICAgICAgJ28nOiBbMiwgMTNdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQwJzoge1xuICAgICAgICAgICAgICAgICduJzogWzIsIDE0XSxcbiAgICAgICAgICAgICAgICAnbyc6IFsyLCAxNF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDEnOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgMTVdLFxuICAgICAgICAgICAgICAgICdvJzogWzIsIDE1XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0Mic6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCAxNl0sXG4gICAgICAgICAgICAgICAgJ28nOiBbMiwgMTZdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQzJzoge1xuICAgICAgICAgICAgICAgICduJzogWzEsIHVuZGVmaW5lZCwgNDhdLFxuICAgICAgICAgICAgICAgICdvJzogWzEsIHVuZGVmaW5lZCwgNDldXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ0Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAyNV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDUnOiB7XG4gICAgICAgICAgICAgICAgJ2wnOiBbMSwgdW5kZWZpbmVkLCA1MV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDYnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMl0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMl0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMSwgdW5kZWZpbmVkLCAyOV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMSwgdW5kZWZpbmVkLCAzMF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMSwgdW5kZWZpbmVkLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMSwgdW5kZWZpbmVkLCAzMl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDcnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgNF0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgNF0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgNF0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgNF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgNF0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgNF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDgnOiB7XG4gICAgICAgICAgICAgICAgJ2MnOiBbMiwgMjBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ5Jzoge1xuICAgICAgICAgICAgICAgICdjJzogWzIsIDIxXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc1MCc6IHtcbiAgICAgICAgICAgICAgICAnYyc6IFsxLCB1bmRlZmluZWQsIDUyXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc1MSc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICdsJzogWzIsIDIzXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc1Mic6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICdsJzogWzIsIDIyXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwYXJzZXIucGFyc2UgPSBmdW5jdGlvbiBwYXJzZShpbnB1dCwgZmlsZW5hbWUpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgbGV4ZXIgPSBzZWxmLmxleGVyLFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBzeW1ib2wsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB0YWJsZSA9IHNlbGYudGFibGUsXG4gICAgICAgICAgICBnb3RvcyA9IHRhYmxlLmdvdG9zLFxuICAgICAgICAgICAgdGFibGVBY3Rpb24gPSB0YWJsZS5hY3Rpb24sXG4gICAgICAgICAgICBwcm9kdWN0aW9ucyA9IHNlbGYucHJvZHVjdGlvbnMsXG4gICAgICAgICAgICB2YWx1ZVN0YWNrID0gW251bGxdLFxuICAgICAgICAgICAgLy8gZm9yIGRlYnVnIGluZm9cbiAgICAgICAgICAgIHByZWZpeCA9IGZpbGVuYW1lID8gKCdpbiBmaWxlOiAnICsgZmlsZW5hbWUgKyAnICcpIDogJycsXG4gICAgICAgICAgICBzdGFjayA9IFswXTtcblxuICAgICAgICBsZXhlci5yZXNldElucHV0KGlucHV0KTtcblxuICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgLy8gcmV0cmlldmUgc3RhdGUgbnVtYmVyIGZyb20gdG9wIG9mIHN0YWNrXG4gICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBpZiAoIXN5bWJvbCkge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IGxleGVyLmxleCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3ltYm9sKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVhZCBhY3Rpb24gZm9yIGN1cnJlbnQgc3RhdGUgYW5kIGZpcnN0IGlucHV0XG4gICAgICAgICAgICAgICAgYWN0aW9uID0gdGFibGVBY3Rpb25bc3RhdGVdICYmIHRhYmxlQWN0aW9uW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24gPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IFtdLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjtcbiAgICAgICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0lGXG4gICAgICAgICAgICAgICAgaWYgKHRhYmxlQWN0aW9uW3N0YXRlXSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzeW1ib2xGb3JTdGF0ZSBpbiB0YWJsZUFjdGlvbltzdGF0ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goc2VsZi5sZXhlci5tYXBSZXZlcnNlU3ltYm9sKHN5bWJvbEZvclN0YXRlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBwcmVmaXggKyAnc3ludGF4IGVycm9yIGF0IGxpbmUgJyArIGxleGVyLmxpbmVOdW1iZXIgK1xuICAgICAgICAgICAgICAgICAgICAnOlxcbicgKyBsZXhlci5zaG93RGVidWdJbmZvKCkgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArICdleHBlY3QgJyArIGV4cGVjdGVkLmpvaW4oJywgJyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25bR3JhbW1hckNvbnN0LlRZUEVfSU5ERVhdKSB7XG4gICAgICAgICAgICBjYXNlIEdyYW1tYXJDb25zdC5TSElGVF9UWVBFOlxuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcblxuICAgICAgICAgICAgICAgIHZhbHVlU3RhY2sucHVzaChsZXhlci50ZXh0KTtcblxuICAgICAgICAgICAgICAgIC8vIHB1c2ggc3RhdGVcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvbltHcmFtbWFyQ29uc3QuVE9fSU5ERVhdKTtcblxuICAgICAgICAgICAgICAgIC8vIGFsbG93IHRvIHJlYWQgbW9yZVxuICAgICAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBHcmFtbWFyQ29uc3QuUkVEVUNFX1RZUEU6XG4gICAgICAgICAgICAgICAgdmFyIHByb2R1Y3Rpb24gPSBwcm9kdWN0aW9uc1thY3Rpb25bR3JhbW1hckNvbnN0LlBST0RVQ1RJT05fSU5ERVhdXSxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNlZFN5bWJvbCA9IHByb2R1Y3Rpb24uc3ltYm9sIHx8IHByb2R1Y3Rpb25bMF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjZWRBY3Rpb24gPSBwcm9kdWN0aW9uLmFjdGlvbiB8fCBwcm9kdWN0aW9uWzJdLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2VkUmhzID0gcHJvZHVjdGlvbi5yaHMgfHwgcHJvZHVjdGlvblsxXSxcbiAgICAgICAgICAgICAgICAgICAgbGVuID0gcmVkdWNlZFJocy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIGkgPSAwLFxuICAgICAgICAgICAgICAgICAgICByZXQsXG4gICAgICAgICAgICAgICAgICAgICQkID0gdmFsdWVTdGFja1t2YWx1ZVN0YWNrLmxlbmd0aCAtIGxlbl07IC8vIGRlZmF1bHQgdG8gJCQgPSAkMVxuXG4gICAgICAgICAgICAgICAgcmV0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgc2VsZi4kJCA9ICQkO1xuXG4gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmWyckJyArIChsZW4gLSBpKV0gPSB2YWx1ZVN0YWNrW3ZhbHVlU3RhY2subGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZWR1Y2VkQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldCA9IHJlZHVjZWRBY3Rpb24uY2FsbChzZWxmKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJCQgPSByZXQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCQgPSBzZWxmLiQkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTtcbiAgICAgICAgICAgICAgICB2YWx1ZVN0YWNrID0gdmFsdWVTdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG5cbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHJlZHVjZWRTeW1ib2wpO1xuXG4gICAgICAgICAgICAgICAgdmFsdWVTdGFjay5wdXNoKCQkKTtcblxuICAgICAgICAgICAgICAgIHZhciBuZXdTdGF0ZSA9IGdvdG9zW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG5cbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIEdyYW1tYXJDb25zdC5BQ0NFUFRfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBwYXJzZXI7XG59KSgpO1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBwYXJzZXI7XG59IiwiLyoqXG4gKiBAaWdub3JlXG4gKiBjc3MzIHNlbGVjdG9yIGVuZ2luZSBmb3IgaWU2LThcbiAqIEBhdXRob3IgeWltaW5naGVAZ21haWwuY29tXG4gKi9cblxudmFyIHV0aWwgPSByZXF1aXJlKCcuL3F1ZXJ5LXNlbGVjdG9yL3V0aWwnKTtcbnZhciBwYXJzZXIgPSByZXF1aXJlKCcuL3F1ZXJ5LXNlbGVjdG9yL3BhcnNlcicpO1xuXG52YXIgRVhQQU5ET19TRUxFQ1RPUl9LRVkgPSAnX2tzX2RhdGFfc2VsZWN0b3JfaWRfJyxcbiAgY2FjaGVzID0ge30sXG4gIGlzQ29udGV4dFhNTCxcbiAgdXVpZCA9IDAsXG4gIHN1Yk1hdGNoZXNDYWNoZSA9IHt9LFxuICBnZXRBdHRyID0gZnVuY3Rpb24gKGVsLCBuYW1lKSB7XG4gICAgaWYgKGlzQ29udGV4dFhNTCkge1xuICAgICAgcmV0dXJuIHV0aWwuZ2V0U2ltcGxlQXR0cihlbCwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1dGlsLmF0dHIoZWwsIG5hbWUpO1xuICAgIH1cbiAgfSxcbiAgaGFzU2luZ2xlQ2xhc3MgPSB1dGlsLmhhc1NpbmdsZUNsYXNzLFxuICBpc1RhZyA9IHV0aWwuaXNUYWcsXG4gIGFOUGx1c0IgPSAvXigoWystXT8oPzpcXGQrKT8pP24pPyhbKy1dP1xcZCspPyQvO1xuXG4vLyBDU1MgZXNjYXBlcyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG52YXIgdW5lc2NhcGUgPSAvXFxcXChbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98LikvZyxcbiAgdW5lc2NhcGVGbiA9IGZ1bmN0aW9uIChfLCBlc2NhcGVkKSB7XG4gICAgdmFyIGhpZ2ggPSAnMHgnICsgZXNjYXBlZCAtIDB4MTAwMDA7XG4gICAgLy8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnRcbiAgICByZXR1cm4gaXNOYU4oaGlnaCkgP1xuICAgICAgZXNjYXBlZCA6XG4gICAgICAvLyBCTVAgY29kZXBvaW50XG4gICAgICBoaWdoIDwgMCA/XG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaGlnaCArIDB4MTAwMDApIDpcbiAgICAgICAgLy8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwKTtcbiAgfTtcblxudmFyIG1hdGNoRXhwcjtcblxudmFyIHBzZXVkb0ZuRXhwciA9IHtcbiAgJ250aC1jaGlsZCc6IGZ1bmN0aW9uIChlbCwgcGFyYW0pIHtcbiAgICB2YXIgYWIgPSBnZXRBYihwYXJhbSksXG4gICAgICBhID0gYWIuYSxcbiAgICAgIGIgPSBhYi5iO1xuICAgIGlmIChhID09PSAwICYmIGIgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHBhcmVudC5jaGlsZE5vZGVzLFxuICAgICAgICBjb3VudCA9IDAsXG4gICAgICAgIGNoaWxkLFxuICAgICAgICByZXQsXG4gICAgICAgIGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgZm9yICg7IGNvdW50IDwgbGVuOyBjb3VudCsrKSB7XG4gICAgICAgIGNoaWxkID0gY2hpbGROb2Rlc1tjb3VudF07XG4gICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgcmV0ID0gbWF0Y2hJbmRleEJ5QWIoaW5kZXgsIGEsIGIsIGNoaWxkID09PSBlbCk7XG4gICAgICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgJ250aC1sYXN0LWNoaWxkJzogZnVuY3Rpb24gKGVsLCBwYXJhbSkge1xuICAgIHZhciBhYiA9IGdldEFiKHBhcmFtKSxcbiAgICAgIGEgPSBhYi5hLFxuICAgICAgYiA9IGFiLmI7XG4gICAgaWYgKGEgPT09IDAgJiYgYiA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciBpbmRleCA9IDAsXG4gICAgICBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHZhciBjaGlsZE5vZGVzID0gcGFyZW50LmNoaWxkTm9kZXMsXG4gICAgICAgIGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBjb3VudCA9IGxlbiAtIDEsXG4gICAgICAgIGNoaWxkLFxuICAgICAgICByZXQ7XG4gICAgICBmb3IgKDsgY291bnQgPj0gMDsgY291bnQtLSkge1xuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbY291bnRdO1xuICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgIHJldCA9IG1hdGNoSW5kZXhCeUFiKGluZGV4LCBhLCBiLCBjaGlsZCA9PT0gZWwpO1xuICAgICAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gICdudGgtb2YtdHlwZSc6IGZ1bmN0aW9uIChlbCwgcGFyYW0pIHtcbiAgICB2YXIgYWIgPSBnZXRBYihwYXJhbSksXG4gICAgICBhID0gYWIuYSxcbiAgICAgIGIgPSBhYi5iO1xuICAgIGlmIChhID09PSAwICYmIGIgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHBhcmVudC5jaGlsZE5vZGVzLFxuICAgICAgICBlbFR5cGUgPSBlbC50YWdOYW1lLFxuICAgICAgICBjb3VudCA9IDAsXG4gICAgICAgIGNoaWxkLFxuICAgICAgICByZXQsXG4gICAgICAgIGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgZm9yICg7IGNvdW50IDwgbGVuOyBjb3VudCsrKSB7XG4gICAgICAgIGNoaWxkID0gY2hpbGROb2Rlc1tjb3VudF07XG4gICAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSBlbFR5cGUpIHtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgIHJldCA9IG1hdGNoSW5kZXhCeUFiKGluZGV4LCBhLCBiLCBjaGlsZCA9PT0gZWwpO1xuICAgICAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gICdudGgtbGFzdC1vZi10eXBlJzogZnVuY3Rpb24gKGVsLCBwYXJhbSkge1xuICAgIHZhciBhYiA9IGdldEFiKHBhcmFtKSxcbiAgICAgIGEgPSBhYi5hLFxuICAgICAgYiA9IGFiLmI7XG4gICAgaWYgKGEgPT09IDAgJiYgYiA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciBpbmRleCA9IDAsXG4gICAgICBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHZhciBjaGlsZE5vZGVzID0gcGFyZW50LmNoaWxkTm9kZXMsXG4gICAgICAgIGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBlbFR5cGUgPSBlbC50YWdOYW1lLFxuICAgICAgICBjb3VudCA9IGxlbiAtIDEsXG4gICAgICAgIGNoaWxkLFxuICAgICAgICByZXQ7XG4gICAgICBmb3IgKDsgY291bnQgPj0gMDsgY291bnQtLSkge1xuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbY291bnRdO1xuICAgICAgICBpZiAoY2hpbGQudGFnTmFtZSA9PT0gZWxUeXBlKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICByZXQgPSBtYXRjaEluZGV4QnlBYihpbmRleCwgYSwgYiwgY2hpbGQgPT09IGVsKTtcbiAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICBsYW5nOiBmdW5jdGlvbiAoZWwsIGxhbmcpIHtcbiAgICB2YXIgZWxMYW5nO1xuICAgIGxhbmcgPSB1bkVzY2FwZShsYW5nLnRvTG93ZXJDYXNlKCkpO1xuICAgIGRvIHtcbiAgICAgIGlmICgoZWxMYW5nID0gKGlzQ29udGV4dFhNTCA/XG4gICAgICAgIGVsLmdldEF0dHJpYnV0ZSgneG1sOmxhbmcnKSB8fCBlbC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSA6XG4gICAgICAgICAgZWwubGFuZykpKSB7XG4gICAgICAgIGVsTGFuZyA9IGVsTGFuZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gZWxMYW5nID09PSBsYW5nIHx8IGVsTGFuZy5pbmRleE9mKGxhbmcgKyAnLScpID09PSAwO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKChlbCA9IGVsLnBhcmVudE5vZGUpICYmIGVsLm5vZGVUeXBlID09PSAxKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIG5vdDogZnVuY3Rpb24gKGVsLCBuZWdhdGlvbkFyZykge1xuICAgIHJldHVybiAhbWF0Y2hFeHByW25lZ2F0aW9uQXJnLnRdKGVsLCBuZWdhdGlvbkFyZy52YWx1ZSk7XG4gIH1cbn07XG5cbnZhciBwc2V1ZG9JZGVudEV4cHIgPSB7XG4gIGVtcHR5OiBmdW5jdGlvbiAoZWwpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGVsLmNoaWxkTm9kZXMsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aCAtIDEsXG4gICAgICBjaGlsZCxcbiAgICAgIG5vZGVUeXBlO1xuICAgIGZvciAoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2luZGV4XTtcbiAgICAgIG5vZGVUeXBlID0gY2hpbGQubm9kZVR5cGU7XG4gICAgICAvLyBvbmx5IGVsZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQgbm9kZXNcbiAgICAgIC8vIChzdWNoIGFzIERvbSBbRG9tLUxFVkVMLTMtQ09SRV0gdGV4dCBub2RlcyxcbiAgICAgIC8vIENEQVRBIG5vZGVzLCBhbmQgZW50aXR5IHJlZmVyZW5jZXNcbiAgICAgIGlmIChub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCB8fCBub2RlVHlwZSA9PT0gNSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH0sXG4gIHJvb3Q6IGZ1bmN0aW9uIChlbCkge1xuICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gOSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBlbC5vd25lckRvY3VtZW50ICYmXG4gICAgICBlbCA9PT0gZWwub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH0sXG4gICdmaXJzdC1jaGlsZCc6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBwc2V1ZG9GbkV4cHJbJ250aC1jaGlsZCddKGVsLCAxKTtcbiAgfSxcbiAgJ2xhc3QtY2hpbGQnOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gcHNldWRvRm5FeHByWydudGgtbGFzdC1jaGlsZCddKGVsLCAxKTtcbiAgfSxcbiAgJ2ZpcnN0LW9mLXR5cGUnOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gcHNldWRvRm5FeHByWydudGgtb2YtdHlwZSddKGVsLCAxKTtcbiAgfSxcbiAgJ2xhc3Qtb2YtdHlwZSc6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBwc2V1ZG9GbkV4cHJbJ250aC1sYXN0LW9mLXR5cGUnXShlbCwgMSk7XG4gIH0sXG4gICdvbmx5LWNoaWxkJzogZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIHBzZXVkb0lkZW50RXhwclsnZmlyc3QtY2hpbGQnXShlbCkgJiZcbiAgICAgIHBzZXVkb0lkZW50RXhwclsnbGFzdC1jaGlsZCddKGVsKTtcbiAgfSxcbiAgJ29ubHktb2YtdHlwZSc6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBwc2V1ZG9JZGVudEV4cHJbJ2ZpcnN0LW9mLXR5cGUnXShlbCkgJiZcbiAgICAgIHBzZXVkb0lkZW50RXhwclsnbGFzdC1vZi10eXBlJ10oZWwpO1xuICB9LFxuICBmb2N1czogZnVuY3Rpb24gKGVsKSB7XG4gICAgdmFyIGRvYyA9IGVsLm93bmVyRG9jdW1lbnQ7XG4gICAgcmV0dXJuIGRvYyAmJiBlbCA9PT0gZG9jLmFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICghZG9jLmhhc0ZvY3VzIHx8IGRvYy5oYXNGb2N1cygpKSAmJiAhIShlbC50eXBlIHx8IGVsLmhyZWYgfHwgZWwudGFiSW5kZXggPj0gMCk7XG4gIH0sXG4gIHRhcmdldDogZnVuY3Rpb24gKGVsKSB7XG4gICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuICAgIHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoMSkgPT09IGdldEF0dHIoZWwsICdpZCcpO1xuICB9LFxuICBlbmFibGVkOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gIWVsLmRpc2FibGVkO1xuICB9LFxuICBkaXNhYmxlZDogZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIGVsLmRpc2FibGVkO1xuICB9LFxuICBjaGVja2VkOiBmdW5jdGlvbiAoZWwpIHtcbiAgICB2YXIgbm9kZU5hbWUgPSBlbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWwuY2hlY2tlZCkgfHxcbiAgICAgIChub2RlTmFtZSA9PT0gJ29wdGlvbicgJiYgZWwuc2VsZWN0ZWQpO1xuICB9XG59O1xuXG52YXIgYXR0cmlidXRlRXhwciA9IHtcbiAgJ349JzogZnVuY3Rpb24gKGVsVmFsdWUsIHZhbHVlKSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiAoJyAnICsgZWxWYWx1ZSArICcgJykuaW5kZXhPZignICcgKyB2YWx1ZSArICcgJykgIT09IC0xO1xuICB9LFxuICAnfD0nOiBmdW5jdGlvbiAoZWxWYWx1ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gKCcgJyArIGVsVmFsdWUpLmluZGV4T2YoJyAnICsgdmFsdWUgKyAnLScpICE9PSAtMTtcbiAgfSxcbiAgJ149JzogZnVuY3Rpb24gKGVsVmFsdWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHV0aWwuc3RhcnRzV2l0aChlbFZhbHVlLCB2YWx1ZSk7XG4gIH0sXG4gICckPSc6IGZ1bmN0aW9uIChlbFZhbHVlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB1dGlsLmVuZHNXaXRoKGVsVmFsdWUsIHZhbHVlKTtcbiAgfSxcbiAgJyo9JzogZnVuY3Rpb24gKGVsVmFsdWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIGVsVmFsdWUuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICB9LFxuICAnPSc6IGZ1bmN0aW9uIChlbFZhbHVlLCB2YWx1ZSkge1xuICAgIHJldHVybiBlbFZhbHVlID09PSB2YWx1ZTtcbiAgfVxufTtcblxudmFyIHJlbGF0aXZlRXhwciA9IHtcbiAgJz4nOiB7XG4gICAgZGlyOiAncGFyZW50Tm9kZScsXG4gICAgaW1tZWRpYXRlOiAxXG4gIH0sXG4gICcgJzoge1xuICAgIGRpcjogJ3BhcmVudE5vZGUnXG4gIH0sXG4gICcrJzoge1xuICAgIGRpcjogJ3ByZXZpb3VzU2libGluZycsXG4gICAgaW1tZWRpYXRlOiAxXG4gIH0sXG4gICd+Jzoge1xuICAgIGRpcjogJ3ByZXZpb3VzU2libGluZydcbiAgfVxufTtcblxubWF0Y2hFeHByID0ge1xuICB0YWc6IGlzVGFnLFxuICBjbHM6IGhhc1NpbmdsZUNsYXNzLFxuICBpZDogZnVuY3Rpb24gKGVsLCB2YWx1ZSkge1xuICAgIHJldHVybiBnZXRBdHRyKGVsLCAnaWQnKSA9PT0gdmFsdWU7XG4gIH0sXG4gIGF0dHJpYjogZnVuY3Rpb24gKGVsLCB2YWx1ZSkge1xuICAgIHZhciBuYW1lID0gdmFsdWUuaWRlbnQ7XG4gICAgaWYgKCFpc0NvbnRleHRYTUwpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHZhciBlbFZhbHVlID0gZ2V0QXR0cihlbCwgbmFtZSk7XG4gICAgdmFyIG1hdGNoID0gdmFsdWUubWF0Y2g7XG4gICAgaWYgKCFtYXRjaCAmJiBlbFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAobWF0Y2gpIHtcbiAgICAgIGlmIChlbFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICB2YXIgbWF0Y2hGbiA9IGF0dHJpYnV0ZUV4cHJbbWF0Y2hdO1xuICAgICAgaWYgKG1hdGNoRm4pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoRm4oZWxWYWx1ZSArICcnLCB2YWx1ZS52YWx1ZSArICcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIHBzZXVkbzogZnVuY3Rpb24gKGVsLCB2YWx1ZSkge1xuICAgIHZhciBmbiwgZm5TdHIsIGlkZW50O1xuICAgIGlmICgoZm5TdHIgPSB2YWx1ZS5mbikpIHtcbiAgICAgIGlmICghKGZuID0gcHNldWRvRm5FeHByW2ZuU3RyXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdTeW50YXggZXJyb3I6IG5vdCBzdXBwb3J0IHBzZXVkbzogJyArIGZuU3RyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmbihlbCwgdmFsdWUucGFyYW0pO1xuICAgIH1cbiAgICBpZiAoKGlkZW50ID0gdmFsdWUuaWRlbnQpKSB7XG4gICAgICBpZiAoIXBzZXVkb0lkZW50RXhwcltpZGVudF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdTeW50YXggZXJyb3I6IG5vdCBzdXBwb3J0IHBzZXVkbzogJyArIGlkZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwc2V1ZG9JZGVudEV4cHJbaWRlbnRdKGVsKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVuRXNjYXBlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UodW5lc2NhcGUsIHVuZXNjYXBlRm4pO1xufVxuXG5wYXJzZXIubGV4ZXIueXkgPSB7XG4gIHRyaW06IHV0aWwudHJpbSxcbiAgdW5Fc2NhcGU6IHVuRXNjYXBlLFxuICB1bkVzY2FwZVN0cjogZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiB0aGlzLnVuRXNjYXBlKHN0ci5zbGljZSgxLCAtMSkpO1xuICB9XG59O1xuXG5mdW5jdGlvbiByZXNldFN0YXR1cygpIHtcbiAgc3ViTWF0Y2hlc0NhY2hlID0ge307XG59XG5cbmZ1bmN0aW9uIGRpcihlbCwgZGlyZWN0aW9uKSB7XG4gIGRvIHtcbiAgICBlbCA9IGVsW2RpcmVjdGlvbl07XG4gIH0gd2hpbGUgKGVsICYmIGVsLm5vZGVUeXBlICE9PSAxKTtcbiAgcmV0dXJuIGVsO1xufVxuXG5mdW5jdGlvbiBnZXRBYihwYXJhbSkge1xuICB2YXIgYSA9IDAsXG4gICAgbWF0Y2gsXG4gICAgYiA9IDA7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdudW1iZXInKSB7XG4gICAgYiA9IHBhcmFtO1xuICB9IGVsc2UgaWYgKHBhcmFtID09PSAnb2RkJykge1xuICAgIGEgPSAyO1xuICAgIGIgPSAxO1xuICB9IGVsc2UgaWYgKHBhcmFtID09PSAnZXZlbicpIHtcbiAgICBhID0gMjtcbiAgICBiID0gMDtcbiAgfSBlbHNlIGlmICgobWF0Y2ggPSBwYXJhbS5yZXBsYWNlKC9cXHMvZywgJycpLm1hdGNoKGFOUGx1c0IpKSkge1xuICAgIGlmIChtYXRjaFsxXSkge1xuICAgICAgYSA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG4gICAgICBpZiAoaXNOYU4oYSkpIHtcbiAgICAgICAgaWYgKG1hdGNoWzJdID09PSAnLScpIHtcbiAgICAgICAgICBhID0gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYSA9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IDA7XG4gICAgfVxuICAgIGIgPSBwYXJzZUludChtYXRjaFszXSwgMTApIHx8IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBhOiBhLFxuICAgIGI6IGJcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hJbmRleEJ5QWIoaW5kZXgsIGEsIGIsIGVxKSB7XG4gIGlmIChhID09PSAwKSB7XG4gICAgaWYgKGluZGV4ID09PSBiKSB7XG4gICAgICByZXR1cm4gZXE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICgoaW5kZXggLSBiKSAvIGEgPj0gMCAmJiAoaW5kZXggLSBiKSAlIGEgPT09IDAgJiYgZXEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1hNTChlbGVtKSB7XG4gIHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50O1xuICByZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdodG1sJyA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKHN0ciwgc2VlZHMpIHtcbiAgcmV0dXJuIHNlbGVjdChzdHIsIG51bGwsIHNlZWRzKTtcbn1cblxuZnVuY3Rpb24gc2luZ2xlTWF0Y2goZWwsIG1hdGNoKSB7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIWVsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGVsLm5vZGVUeXBlID09PSA5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG1hdGNoZWQgPSAxLFxuICAgIG1hdGNoU3VmZml4ID0gbWF0Y2guc3VmZml4LFxuICAgIG1hdGNoU3VmZml4TGVuLFxuICAgIG1hdGNoU3VmZml4SW5kZXg7XG5cbiAgaWYgKG1hdGNoLnQgPT09ICd0YWcnKSB7XG4gICAgbWF0Y2hlZCAmPSBtYXRjaEV4cHIudGFnKGVsLCBtYXRjaC52YWx1ZSk7XG4gIH1cblxuICBpZiAobWF0Y2hlZCAmJiBtYXRjaFN1ZmZpeCkge1xuICAgIG1hdGNoU3VmZml4TGVuID0gbWF0Y2hTdWZmaXgubGVuZ3RoO1xuICAgIG1hdGNoU3VmZml4SW5kZXggPSAwO1xuICAgIGZvciAoOyBtYXRjaGVkICYmIG1hdGNoU3VmZml4SW5kZXggPCBtYXRjaFN1ZmZpeExlbjsgbWF0Y2hTdWZmaXhJbmRleCsrKSB7XG4gICAgICB2YXIgc2luZ2xlTWF0Y2hTdWZmaXggPSBtYXRjaFN1ZmZpeFttYXRjaFN1ZmZpeEluZGV4XSxcbiAgICAgICAgc2luZ2xlTWF0Y2hTdWZmaXhUeXBlID0gc2luZ2xlTWF0Y2hTdWZmaXgudDtcbiAgICAgIGlmIChtYXRjaEV4cHJbc2luZ2xlTWF0Y2hTdWZmaXhUeXBlXSkge1xuICAgICAgICBtYXRjaGVkICY9IG1hdGNoRXhwcltzaW5nbGVNYXRjaFN1ZmZpeFR5cGVdKGVsLCBzaW5nbGVNYXRjaFN1ZmZpeC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoZWQ7XG59XG5cbi8vIG1hdGNoIGJ5IGFkamFjZW50IGltbWVkaWF0ZSBzaW5nbGUgc2VsZWN0b3IgbWF0Y2hcbmZ1bmN0aW9uIG1hdGNoSW1tZWRpYXRlKGVsLCBtYXRjaCkge1xuICB2YXIgbWF0Y2hlZCA9IDEsXG4gICAgc3RhcnRFbCA9IGVsLFxuICAgIHJlbGF0aXZlT3AsXG4gICAgc3RhcnRNYXRjaCA9IG1hdGNoO1xuXG4gIGRvIHtcbiAgICBtYXRjaGVkICY9IHNpbmdsZU1hdGNoKGVsLCBtYXRjaCk7XG4gICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgIC8vIGFkdmFuY2VcbiAgICAgIG1hdGNoID0gbWF0Y2ggJiYgbWF0Y2gucHJldjtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZU9wID0gcmVsYXRpdmVFeHByW21hdGNoLm5leHRDb21iaW5hdG9yXTtcbiAgICAgIGVsID0gZGlyKGVsLCByZWxhdGl2ZU9wLmRpcik7XG4gICAgICBpZiAoIXJlbGF0aXZlT3AuaW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gYWR2YW5jZSBmb3Igbm9uLWltbWVkaWF0ZVxuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtYXRjaDogbWF0Y2hcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVsYXRpdmVPcCA9IHJlbGF0aXZlRXhwclttYXRjaC5uZXh0Q29tYmluYXRvcl07XG4gICAgICBpZiAocmVsYXRpdmVPcC5pbW1lZGlhdGUpIHtcbiAgICAgICAgLy8gcmV0cmVhdCBidXQgYWR2YW5jZSBzdGFydEVsXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZWw6IGRpcihzdGFydEVsLCByZWxhdGl2ZUV4cHJbc3RhcnRNYXRjaC5uZXh0Q29tYmluYXRvcl0uZGlyKSxcbiAgICAgICAgICBtYXRjaDogc3RhcnRNYXRjaFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYWR2YW5jZSAoYmVmb3JlIGltbWVkaWF0ZSBtYXRjaCArIGp1bXAgdW5tYXRjaGVkKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVsOiBlbCAmJiBkaXIoZWwsIHJlbGF0aXZlT3AuZGlyKSxcbiAgICAgICAgICBtYXRjaDogbWF0Y2hcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGVsKTtcblxuICAvLyBvbmx5IG9jY3VyIHdoZW4gbWF0Y2ggaW1tZWRpYXRlXG4gIHJldHVybiB7XG4gICAgZWw6IGRpcihzdGFydEVsLCByZWxhdGl2ZUV4cHJbc3RhcnRNYXRjaC5uZXh0Q29tYmluYXRvcl0uZGlyKSxcbiAgICBtYXRjaDogc3RhcnRNYXRjaFxuICB9O1xufVxuXG4vLyBmaW5kIGZpeGVkIHBhcnQsIGZpeGVkIHdpdGggc2VlZHNcbmZ1bmN0aW9uIGZpbmRGaXhlZE1hdGNoRnJvbUhlYWQoZWwsIGhlYWQpIHtcbiAgdmFyIHJlbGF0aXZlT3AsXG4gICAgY3VyID0gaGVhZDtcblxuICBkbyB7XG4gICAgaWYgKCFzaW5nbGVNYXRjaChlbCwgY3VyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1ciA9IGN1ci5wcmV2O1xuICAgIGlmICghY3VyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmVsYXRpdmVPcCA9IHJlbGF0aXZlRXhwcltjdXIubmV4dENvbWJpbmF0b3JdO1xuICAgIGVsID0gZGlyKGVsLCByZWxhdGl2ZU9wLmRpcik7XG4gIH0gd2hpbGUgKGVsICYmIHJlbGF0aXZlT3AuaW1tZWRpYXRlKTtcbiAgaWYgKCFlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgZWw6IGVsLFxuICAgIG1hdGNoOiBjdXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuSWQoZWwpIHtcbiAgdmFyIHNlbGVjdG9ySWQ7XG5cbiAgaWYgKGlzQ29udGV4dFhNTCkge1xuICAgIGlmICghKHNlbGVjdG9ySWQgPSBlbC5nZXRBdHRyaWJ1dGUoRVhQQU5ET19TRUxFQ1RPUl9LRVkpKSkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKEVYUEFORE9fU0VMRUNUT1JfS0VZLCBzZWxlY3RvcklkID0gKCtuZXcgRGF0ZSgpICsgJ18nICsgKCsrdXVpZCkpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCEoc2VsZWN0b3JJZCA9IGVsW0VYUEFORE9fU0VMRUNUT1JfS0VZXSkpIHtcbiAgICAgIHNlbGVjdG9ySWQgPSBlbFtFWFBBTkRPX1NFTEVDVE9SX0tFWV0gPSAoK25ldyBEYXRlKCkpICsgJ18nICsgKCsrdXVpZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlbGVjdG9ySWQ7XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3ViKGVsLCBtYXRjaCkge1xuICB2YXIgc2VsZWN0b3JJZCA9IGdlbklkKGVsKSxcbiAgICBtYXRjaEtleTtcbiAgbWF0Y2hLZXkgPSBzZWxlY3RvcklkICsgJ18nICsgKG1hdGNoLm9yZGVyIHx8IDApO1xuICBpZiAobWF0Y2hLZXkgaW4gc3ViTWF0Y2hlc0NhY2hlKSB7XG4gICAgcmV0dXJuIHN1Yk1hdGNoZXNDYWNoZVttYXRjaEtleV07XG4gIH1cbiAgc3ViTWF0Y2hlc0NhY2hlW21hdGNoS2V5XSA9IG1hdGNoU3ViSW50ZXJuYWwoZWwsIG1hdGNoKTtcbiAgcmV0dXJuIHN1Yk1hdGNoZXNDYWNoZVttYXRjaEtleV07XG59XG5cbi8vIHJlY3Vyc2l2ZSBtYXRjaCBieSBzdWIgc2VsZWN0b3Igc3RyaW5nIGZyb20gcmlnaHQgdG8gbGVmdFxuLy8gZ3JvdXBlZCBieSBpbW1lZGlhdGUgc2VsZWN0b3JzXG5mdW5jdGlvbiBtYXRjaFN1YkludGVybmFsKGVsLCBtYXRjaCkge1xuICB2YXIgbWF0Y2hJbW1lZGlhdGVSZXQgPSBtYXRjaEltbWVkaWF0ZShlbCwgbWF0Y2gpO1xuICBpZiAobWF0Y2hJbW1lZGlhdGVSZXQgPT09IHRydWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBlbCA9IG1hdGNoSW1tZWRpYXRlUmV0LmVsO1xuICAgIG1hdGNoID0gbWF0Y2hJbW1lZGlhdGVSZXQubWF0Y2g7XG4gICAgd2hpbGUgKGVsKSB7XG4gICAgICBpZiAobWF0Y2hTdWIoZWwsIG1hdGNoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVsID0gZGlyKGVsLCByZWxhdGl2ZUV4cHJbbWF0Y2gubmV4dENvbWJpbmF0b3JdLmRpcik7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZWxlY3Qoc3RyLCBjb250ZXh0LCBzZWVkcykge1xuICBpZiAoIWNhY2hlc1tzdHJdKSB7XG4gICAgY2FjaGVzW3N0cl0gPSBwYXJzZXIucGFyc2Uoc3RyKTtcbiAgfVxuXG4gIHZhciBzZWxlY3RvciA9IGNhY2hlc1tzdHJdLFxuICAgIGdyb3VwSW5kZXggPSAwLFxuICAgIGdyb3VwTGVuID0gc2VsZWN0b3IubGVuZ3RoLFxuICAgIGNvbnRleHREb2N1bWVudCxcbiAgICBncm91cCxcbiAgICByZXQgPSBbXTtcblxuICBpZiAoc2VlZHMpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCB8fCBzZWVkc1swXS5vd25lckRvY3VtZW50O1xuICB9XG5cbiAgY29udGV4dERvY3VtZW50ID0gY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudDtcblxuICBpZiAoY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmICFjb250ZXh0RG9jdW1lbnQpIHtcbiAgICBjb250ZXh0RG9jdW1lbnQgPSBjb250ZXh0O1xuICB9XG5cbiAgY29udGV4dCA9IGNvbnRleHQgfHwgY29udGV4dERvY3VtZW50O1xuXG4gIGlzQ29udGV4dFhNTCA9IGlzWE1MKGNvbnRleHQpO1xuXG4gIGZvciAoOyBncm91cEluZGV4IDwgZ3JvdXBMZW47IGdyb3VwSW5kZXgrKykge1xuICAgIHJlc2V0U3RhdHVzKCk7XG5cbiAgICBncm91cCA9IHNlbGVjdG9yW2dyb3VwSW5kZXhdO1xuXG4gICAgdmFyIHN1ZmZpeCA9IGdyb3VwLnN1ZmZpeCxcbiAgICAgIHN1ZmZpeEluZGV4LFxuICAgICAgc3VmZml4TGVuLFxuICAgICAgc2VlZHNJbmRleCxcbiAgICAgIG15U2VlZHMgPSBzZWVkcyxcbiAgICAgIHNlZWRzTGVuLFxuICAgICAgaWQgPSBudWxsO1xuXG4gICAgaWYgKCFteVNlZWRzKSB7XG4gICAgICBpZiAoc3VmZml4ICYmICFpc0NvbnRleHRYTUwpIHtcbiAgICAgICAgc3VmZml4SW5kZXggPSAwO1xuICAgICAgICBzdWZmaXhMZW4gPSBzdWZmaXgubGVuZ3RoO1xuICAgICAgICBmb3IgKDsgc3VmZml4SW5kZXggPCBzdWZmaXhMZW47IHN1ZmZpeEluZGV4KyspIHtcbiAgICAgICAgICB2YXIgc2luZ2xlU3VmZml4ID0gc3VmZml4W3N1ZmZpeEluZGV4XTtcbiAgICAgICAgICBpZiAoc2luZ2xlU3VmZml4LnQgPT09ICdpZCcpIHtcbiAgICAgICAgICAgIGlkID0gc2luZ2xlU3VmZml4LnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICAvLyBodHRwOi8veWltaW5naGUuZ2l0aHViLmlvL2xhYi9wbGF5Z3JvdW5kL2ZyYWdtZW50LXNlbGVjdG9yL3NlbGVjdG9yLmh0bWxcbiAgICAgICAgdmFyIGRvZXNOb3RIYXNCeUlkID0gIWNvbnRleHQuZ2V0RWxlbWVudEJ5SWQsXG4gICAgICAgICAgY29udGV4dEluRG9tID0gdXRpbC5jb250YWlucyhjb250ZXh0RG9jdW1lbnQsIGNvbnRleHQpLFxuICAgICAgICAgIHRtcCA9IGRvZXNOb3RIYXNCeUlkID8gKFxuICAgICAgICAgICAgY29udGV4dEluRG9tID9cbiAgICAgICAgICAgICAgY29udGV4dERvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSA6XG4gICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApIDogY29udGV4dC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIC8vIGlkIGJ1Z1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20va2lzc3l0ZWFtL2tpc3N5L2lzc3Vlcy82N1xuICAgICAgICBpZiAoIXRtcCAmJiBkb2VzTm90SGFzQnlJZCB8fCB0bXAgJiYgZ2V0QXR0cih0bXAsICdpZCcpICE9PSBpZCkge1xuICAgICAgICAgIHZhciB0bXBzID0gdXRpbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicsIGNvbnRleHQpLFxuICAgICAgICAgICAgdG1wTGVuID0gdG1wcy5sZW5ndGgsXG4gICAgICAgICAgICB0bXBJID0gMDtcbiAgICAgICAgICBmb3IgKDsgdG1wSSA8IHRtcExlbjsgdG1wSSsrKSB7XG4gICAgICAgICAgICB0bXAgPSB0bXBzW3RtcEldO1xuICAgICAgICAgICAgaWYgKGdldEF0dHIodG1wLCAnaWQnKSA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgbXlTZWVkcyA9IFt0bXBdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRtcEkgPT09IHRtcExlbikge1xuICAgICAgICAgICAgbXlTZWVkcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoY29udGV4dEluRG9tICYmIHRtcCAmJiBjb250ZXh0ICE9PSBjb250ZXh0RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRtcCA9IHV0aWwuY29udGFpbnMoY29udGV4dCwgdG1wKSA/IHRtcCA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIG15U2VlZHMgPSB0bXAgPyBbdG1wXSA6IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBteVNlZWRzID0gdXRpbC5nZXRFbGVtZW50c0J5VGFnTmFtZShncm91cC52YWx1ZSB8fCAnKicsIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlZWRzSW5kZXggPSAwO1xuICAgIHNlZWRzTGVuID0gbXlTZWVkcy5sZW5ndGg7XG5cbiAgICBpZiAoIXNlZWRzTGVuKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKDsgc2VlZHNJbmRleCA8IHNlZWRzTGVuOyBzZWVkc0luZGV4KyspIHtcbiAgICAgIHZhciBzZWVkID0gbXlTZWVkc1tzZWVkc0luZGV4XTtcbiAgICAgIHZhciBtYXRjaEhlYWQgPSBmaW5kRml4ZWRNYXRjaEZyb21IZWFkKHNlZWQsIGdyb3VwKTtcbiAgICAgIGlmIChtYXRjaEhlYWQgPT09IHRydWUpIHtcbiAgICAgICAgcmV0LnB1c2goc2VlZCk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoSGVhZCkge1xuICAgICAgICBpZiAobWF0Y2hTdWIobWF0Y2hIZWFkLmVsLCBtYXRjaEhlYWQubWF0Y2gpKSB7XG4gICAgICAgICAgcmV0LnB1c2goc2VlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZ3JvdXBMZW4gPiAxKSB7XG4gICAgcmV0ID0gdXRpbC51bmlxdWUocmV0KTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2VsZWN0O1xuXG5zZWxlY3QucGFyc2UgPSBmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBwYXJzZXIucGFyc2Uoc3RyKTtcbn07XG5cbnNlbGVjdC5tYXRjaGVzID0gbWF0Y2hlcztcblxuc2VsZWN0LnV0aWwgPSB1dGlsO1xuXG5zZWxlY3QudmVyc2lvbiA9ICdAVkVSU0lPTkAnO1xuLyoqXG4gKiBAaWdub3JlXG4gKiBub3RlIDIwMTMtMDMtMjhcbiAqICAtIHVzZSByZWN1cnNpdmUgY2FsbCB0byByZXBsYWNlIGJhY2t0cmFja2luZyBhbGdvcml0aG1cbiAqXG4gKiByZWZlclxuICogIC0gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzL1xuICogIC0gaHR0cDovL3d3dy5pbXByZXNzaXZld2Vicy5jb20vYnJvd3Nlci1zdXBwb3J0LWNzczMtc2VsZWN0b3JzL1xuICogIC0gaHR0cDovL2Jsb2dzLm1zZG4uY29tL2llL2FyY2hpdmUvMjAxMC8wNS8xMy90aGUtY3NzLWNvcm5lci1jc3MzLXNlbGVjdG9ycy5hc3B4XG4gKiAgLSBodHRwOi8vc2l6emxlanMuY29tL1xuICovIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9xdWVyeS1zZWxlY3RvcicpOyIsInZhciBoeXBoZW5FeHByZXNzaW9uID0gLy0rKFthLXpdKS9naVxuXG5mdW5jdGlvbiB1cHBlckNhc2VGaXJzdE1hdGNoIChtYXRjaCwgYywgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgIT09IDApIHtcbiAgICByZXR1cm4gYy50b1VwcGVyQ2FzZSgpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1lbENhc2UgKHN0cikge1xuICB2YXIgY2FtZWxDYXNlZCA9IHN0ci5yZXBsYWNlKGh5cGhlbkV4cHJlc3Npb24sIHVwcGVyQ2FzZUZpcnN0TWF0Y2gpXG4gIGh5cGhlbkV4cHJlc3Npb24ubGFzdEluZGV4ID0gMFxuICByZXR1cm4gY2FtZWxDYXNlZFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsQ2FzZVxuIiwiZnVuY3Rpb24gaXNTdHJpbmcgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmdcbiIsImZ1bmN0aW9uIGlzVW5kZWZpbmVkICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJ1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVW5kZWZpbmVkXG4iLCJmdW5jdGlvbiBhc3NpZ24gKGRlc3QpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNcbiAgdmFyIHNvdXJjZVxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgIHNvdXJjZSA9IGFyZ3NbaV1cblxuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGRlc3Rba2V5XSA9IHNvdXJjZVtrZXldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlc3Rcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25cbiIsImZ1bmN0aW9uIG1hcFZhbHVlcyAoc291cmNlLCBmbikge1xuICB2YXIgZGVzdGluYXRpb24gPSB7fVxuXG4gIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBmbihzb3VyY2Vba2V5XSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVzdGluYXRpb25cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBWYWx1ZXNcbiIsInZhciBjYW1lbENhc2UgPSByZXF1aXJlKCcuL2NhbWVsQ2FzZScpXG5cbmZ1bmN0aW9uIHN0eWxlQ2FtZWxDYXNlIChuYW1lKSB7XG4gIHZhciBjYW1lbCA9IGNhbWVsQ2FzZShuYW1lKVxuXG4gIC8vIERldGVjdCBpZiB0aGUgc3R5bGUgcHJvcGVydHkgaXMgYWxyZWFkeSBjYW1lbENhc2VkXG4gIC8vIFRvIG5vdCBjb252ZXJ0IFdlYmtpdCosIE1veiogYW5kIE8qIHRvIGxvd2VyY2FzZVxuICBpZiAoY2FtZWwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgPT09IG5hbWUuY2hhckF0KDApKSB7XG4gICAgcmV0dXJuIG5hbWUuY2hhckF0KDApICsgY2FtZWwuc2xpY2UoMSlcbiAgfVxuXG4gIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gJy0nKSB7XG4gICAgcmV0dXJuIGNhbWVsLmluZGV4T2YoJ21zJykgPT09IDAgPyBjYW1lbFxuICAgICAgOiBjYW1lbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsLnNsaWNlKDEpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhbWVsXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZUNhbWVsQ2FzZVxuIiwidmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKVxudmFyIHN0eWxlQXR0ciA9IHJlcXVpcmUoJ3N0eWxlLWF0dHInKVxudmFyIHF1ZXJ5U2VsZWN0b3JBbGwgPSByZXF1aXJlKCdxdWVyeS1zZWxlY3RvcicpXG52YXIgY2FtZWxDYXNlID0gcmVxdWlyZSgnLi91dGlscy9jYW1lbENhc2UnKVxudmFyIGlzU3RyaW5nID0gcmVxdWlyZSgnLi91dGlscy9pc1N0cmluZycpXG52YXIgaXNVbmRlZmluZWQgPSByZXF1aXJlKCcuL3V0aWxzL2lzVW5kZWZpbmVkJylcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuL3V0aWxzL2Fzc2lnbicpXG52YXIgbWFwVmFsdWVzID0gcmVxdWlyZSgnLi91dGlscy9tYXBWYWx1ZXMnKVxudmFyIHN0eWxlQ2FtZWxDYXNlID0gcmVxdWlyZSgnLi91dGlscy9zdHlsZUNhbWVsQ2FzZScpXG5cbmZ1bmN0aW9uIGVsZW1lbnQgKCkge1xuICBmdW5jdGlvbiBFbGVtZW50IChub2RlTmFtZSwgcGFyZW50Tm9kZSkge1xuICAgIHRoaXMubm9kZU5hbWUgPSBub2RlTmFtZVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGVcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSB7fVxuICAgIHRoaXMudGV4dCA9ICcnXG4gICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcyA9IHtcbiAgICAgIHJlZjogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgICAgICBzZWxmLmNvbXBvbmVudCA9IGNvbXBvbmVudFxuICAgICAgfSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHNldFByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZVtzdHlsZUNhbWVsQ2FzZShuYW1lKV0gPSB2YWx1ZVxuICAgICAgICB9LFxuICAgICAgICBnZXRQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gcHJvcHMuc3R5bGVbc3R5bGVDYW1lbENhc2UobmFtZSldIHx8ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGdldFByb3BlcnR5VmFsdWU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLnN0eWxlLmdldFByb3BlcnR5KG5hbWUpXG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZVByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5zdHlsZVtzdHlsZUNhbWVsQ2FzZShuYW1lKV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3R5bGUgPSBwcm9wcy5zdHlsZVxuICB9XG5cbiAgRWxlbWVudC5FTEVNRU5UX05PREUgPSAxXG4gIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEID0gMVxuICBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORyA9IDJcbiAgRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcgPSA0XG4gIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgPSA4XG4gIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZID0gMTZcblxuICBFbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuICAvLyBUaGlzIHdhcyBlYXN5IHRvIGRvIHdpdGggVmltLlxuICAvLyBKdXN0IHNheWluZy5cbiAgRWxlbWVudC5wcm90b3R5cGUuZXZlbnROYW1lTWFwcGluZ3MgPSB7XG4gICAgJ2JsdXInOiAnb25CbHVyJyxcbiAgICAnY2hhbmdlJzogJ29uQ2hhbmdlJyxcbiAgICAnY2xpY2snOiAnb25DbGljaycsXG4gICAgJ2NvbnRleHRtZW51JzogJ29uQ29udGV4dE1lbnUnLFxuICAgICdjb3B5JzogJ29uQ29weScsXG4gICAgJ2N1dCc6ICdvbkN1dCcsXG4gICAgJ2RvdWJsZWNsaWNrJzogJ29uRG91YmxlQ2xpY2snLFxuICAgICdkcmFnJzogJ29uRHJhZycsXG4gICAgJ2RyYWdlbmQnOiAnb25EcmFnRW5kJyxcbiAgICAnZHJhZ2VudGVyJzogJ29uRHJhZ0VudGVyJyxcbiAgICAnZHJhZ2V4aXQnOiAnb25EcmFnRXhpdCcsXG4gICAgJ2RyYWdsZWF2ZSc6ICdvbkRyYWdMZWF2ZScsXG4gICAgJ2RyYWdvdmVyJzogJ29uRHJhZ092ZXInLFxuICAgICdkcmFnc3RhcnQnOiAnb25EcmFnU3RhcnQnLFxuICAgICdkcm9wJzogJ29uRHJvcCcsXG4gICAgJ2Vycm9yJzogJ29uRXJyb3InLFxuICAgICdmb2N1cyc6ICdvbkZvY3VzJyxcbiAgICAnaW5wdXQnOiAnb25JbnB1dCcsXG4gICAgJ2tleWRvd24nOiAnb25LZXlEb3duJyxcbiAgICAna2V5cHJlc3MnOiAnb25LZXlQcmVzcycsXG4gICAgJ2tleXVwJzogJ29uS2V5VXAnLFxuICAgICdsb2FkJzogJ29uTG9hZCcsXG4gICAgJ21vdXNlZG93bic6ICdvbk1vdXNlRG93bicsXG4gICAgJ21vdXNlZW50ZXInOiAnb25Nb3VzZUVudGVyJyxcbiAgICAnbW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICdtb3VzZW1vdmUnOiAnb25Nb3VzZU1vdmUnLFxuICAgICdtb3VzZW91dCc6ICdvbk1vdXNlT3V0JyxcbiAgICAnbW91c2VvdmVyJzogJ29uTW91c2VPdmVyJyxcbiAgICAnbW91c2V1cCc6ICdvbk1vdXNlVXAnLFxuICAgICdwYXN0ZSc6ICdvblBhc3RlJyxcbiAgICAnc2Nyb2xsJzogJ29uU2Nyb2xsJyxcbiAgICAnc3VibWl0JzogJ29uU3VibWl0JyxcbiAgICAndG91Y2hjYW5jZWwnOiAnb25Ub3VjaENhbmNlbCcsXG4gICAgJ3RvdWNoZW5kJzogJ29uVG91Y2hFbmQnLFxuICAgICd0b3VjaG1vdmUnOiAnb25Ub3VjaE1vdmUnLFxuICAgICd0b3VjaHN0YXJ0JzogJ29uVG91Y2hTdGFydCcsXG4gICAgJ3doZWVsJzogJ29uV2hlZWwnXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5za2lwTmFtZVRyYW5zZm9ybWF0aW9uRXhwcmVzc2lvbnMgPSBbXG4gICAgL15kYXRhLS8sXG4gICAgL15hcmlhLS9cbiAgXVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmF0dHJpYnV0ZU5hbWVNYXBwaW5ncyA9IHtcbiAgICAnY2xhc3MnOiAnY2xhc3NOYW1lJ1xuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuYXR0cmlidXRlVG9Qcm9wTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHNraXBUcmFuc2Zvcm1NYXRjaGVzID0gdGhpcy5za2lwTmFtZVRyYW5zZm9ybWF0aW9uRXhwcmVzc2lvbnMubWFwKGZ1bmN0aW9uIChleHByKSB7XG4gICAgICByZXR1cm4gZXhwci50ZXN0KG5hbWUpXG4gICAgfSlcblxuICAgIGlmIChza2lwVHJhbnNmb3JtTWF0Y2hlcy5zb21lKEJvb2xlYW4pKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVOYW1lTWFwcGluZ3NbbmFtZV0gfHwgY2FtZWxDYXNlKG5hbWUpXG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUgPT09ICdzdHlsZScgJiYgaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YXIgc3R5bGVzID0gc3R5bGVBdHRyLnBhcnNlKHZhbHVlKVxuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzKSB7XG4gICAgICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBzdHlsZXNba2V5XSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wc1t0aGlzLmF0dHJpYnV0ZVRvUHJvcE5hbWUobmFtZSldID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnByb3BzW3RoaXMuYXR0cmlidXRlVG9Qcm9wTmFtZShuYW1lKV1cbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5vZGUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKG5hbWUpXG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBzcGVjaWZpZWQ6IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLnByb3BzW3RoaXMuYXR0cmlidXRlVG9Qcm9wTmFtZShuYW1lKV1cbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmV2ZW50VG9Qcm9wTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnROYW1lTWFwcGluZ3NbbmFtZV0gfHwgbmFtZVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIChuYW1lLCBmbikge1xuICAgIHZhciBwcm9wID0gdGhpcy5ldmVudFRvUHJvcE5hbWUobmFtZSlcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzW3Byb3BdID0gdGhpcy5ldmVudExpc3RlbmVyc1twcm9wXSB8fCBbXVxuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnNbcHJvcF0ucHVzaChmbilcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAobmFtZSwgZm4pIHtcbiAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVyc1t0aGlzLmV2ZW50VG9Qcm9wTmFtZShuYW1lKV1cblxuICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgIHZhciBtYXRjaCA9IGxpc3RlbmVycy5pbmRleE9mKGZuKVxuXG4gICAgICBpZiAobWF0Y2ggIT09IC0xKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UobWF0Y2gsIDEpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICBpZiAoZWwgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICBlbC5wYXJlbnROb2RlID0gdGhpc1xuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGVsKVxuICAgIHJldHVybiBlbFxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24gKGVsLCBiZWZvcmUpIHtcbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihiZWZvcmUpXG4gICAgZWwucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbClcbiAgICB9XG5cbiAgICByZXR1cm4gZWxcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIHRhcmdldCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGNoaWxkKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UodGFyZ2V0LCAxKVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylbMF0gfHwgbnVsbFxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbCA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKVxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yLCB0aGlzKVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiAobm9kZU5hbWUpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuXG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1hdGNoZXNcblxuICAgICAgaWYgKG5vZGVOYW1lICE9PSAnKicpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwubm9kZU5hbWUgPT09IG5vZGVOYW1lXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaGVzID0gY2hpbGRyZW5cbiAgICAgIH1cblxuICAgICAgdmFyIGNoaWxkTWF0Y2hlcyA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKG5vZGVOYW1lKVxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIG1hdGNoZXMuY29uY2F0LmFwcGx5KG1hdGNoZXMsIGNoaWxkTWF0Y2hlcylcbiAgICB9XG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW5cblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXRjaCA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgnaWQnKSA9PT0gaWRcbiAgICAgIH0pWzBdXG5cbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjaGlsZE1hdGNoZXMgPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVsLmdldEVsZW1lbnRCeUlkKGlkKVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBjaGlsZE1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbFxuICAgICAgICB9KVswXSB8fCBudWxsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5jb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmNsb25lTm9kZSA9IGZ1bmN0aW9uIChkZWVwKSB7XG4gICAgLy8gaWYgZGVlcCBpcyBub3QgcHJvdmlkZWQsIGl0IGRlZmF1bHQgdG8gdHJ1ZVxuICAgIGlmIChkZWVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlZXAgPSB0cnVlXG4gICAgfVxuICAgIHZhciBlbCA9IG5ldyBFbGVtZW50KHRoaXMubm9kZU5hbWUsIHRoaXMucGFyZW50Tm9kZSlcbiAgICAvLyBjb3B5IG5vZGVUeXBlXG4gICAgaWYgKHRoaXMubm9kZVR5cGUpIHtcbiAgICAgIGVsLm5vZGVUeXBlID0gdGhpcy5ub2RlVHlwZVxuICAgIH1cblxuICAgIHZhciBrXG5cbiAgICAvLyBjb3B5IHRoZSBwcm9wc1xuICAgIGZvciAoayBpbiB0aGlzLnByb3BzKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShrKSAmJiBrICE9PSAncmVmJyAmJiBrICE9PSAnc3R5bGUnKSB7XG4gICAgICAgIGVsLnByb3BzW2tdID0gdGhpcy5wcm9wc1trXVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBjb3B5IHRoZSBzdHlsZXNcbiAgICBmb3IgKGsgaW4gdGhpcy5zdHlsZSkge1xuICAgICAgaWYgKHRoaXMuc3R5bGUuaGFzT3duUHJvcGVydHkoaykgJiYgW1xuICAgICAgICAnc2V0UHJvcGVydHknLFxuICAgICAgICAnZ2V0UHJvcGVydHknLFxuICAgICAgICAnZ2V0UHJvcGVydHlWYWx1ZScsXG4gICAgICAgICdyZW1vdmVQcm9wZXJ0eSdcbiAgICAgIF0uaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgICAgZWwuc3R5bGVba10gPSB0aGlzLnN0eWxlW2tdXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWVwKSB7XG4gICAgICBlbC5jaGlsZE5vZGVzID0gdGhpcy5jaGlsZE5vZGVzLm1hcChmdW5jdGlvbiAoY2hpbGRFbCkge1xuICAgICAgICBpZiAoIWNoaWxkRWwubm9kZVR5cGUpIHtcbiAgICAgICAgICAvLyBJdCdzIGEgUmVhY3QgZWxlbWVudCwgbGV0IFJlYWN0IGNsb25lIGl0XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZEVsKVxuICAgICAgICB9XG4gICAgICAgIC8vIGVpdGhlciBFbGVtZW50IG9yIHRydWUgZG9tIGVsZW1lbnRcbiAgICAgICAgY2hpbGRFbCA9IGNoaWxkRWwuY2xvbmVOb2RlKHRydWUpXG4gICAgICAgIC8vIGlmIGEgZmF1eCBkb20gZWxlbWVudCwgbW9kaWZ5IHBhcmVudE5vZGVcbiAgICAgICAgaWYgKGNoaWxkRWwgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgY2hpbGRFbC5wYXJlbnROb2RlID0gZWxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGRFbFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGVsXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS50b1JlYWN0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgaW5kZXggPSBpbmRleCB8fCAwXG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCB0aGlzLnByb3BzKVxuICAgIHByb3BzLnN0eWxlID0gYXNzaWduKHt9LCBwcm9wcy5zdHlsZSlcblxuICAgIHZhciBvcmlnaW5hbEVsZW1lbnQgPSB0aGlzXG5cbiAgICBmdW5jdGlvbiB1bmlxdWVLZXkgKCkge1xuICAgICAgcmV0dXJuICdmYXV4LWRvbS0nICsgaW5kZXhcbiAgICB9XG5cbiAgICBpZiAoaXNVbmRlZmluZWQocHJvcHMua2V5KSkge1xuICAgICAgcHJvcHMua2V5ID0gdW5pcXVlS2V5KClcbiAgICB9XG5cbiAgICBkZWxldGUgcHJvcHMuc3R5bGUuc2V0UHJvcGVydHlcbiAgICBkZWxldGUgcHJvcHMuc3R5bGUuZ2V0UHJvcGVydHlcbiAgICBkZWxldGUgcHJvcHMuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZVxuICAgIGRlbGV0ZSBwcm9wcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eVxuXG4gICAgYXNzaWduKHByb3BzLCBtYXBWYWx1ZXModGhpcy5ldmVudExpc3RlbmVycywgZnVuY3Rpb24gKGxpc3RlbmVycykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChzeW50aGV0aWNFdmVudCkge1xuICAgICAgICB2YXIgZXZlbnRcblxuICAgICAgICBpZiAoc3ludGhldGljRXZlbnQpIHtcbiAgICAgICAgICBldmVudCA9IHN5bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50XG4gICAgICAgICAgZXZlbnQuc3ludGhldGljRXZlbnQgPSBzeW50aGV0aWNFdmVudFxuICAgICAgICB9XG5cbiAgICAgICAgbWFwVmFsdWVzKGxpc3RlbmVycywgZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgbGlzdGVuZXIuY2FsbChvcmlnaW5hbEVsZW1lbnQsIGV2ZW50KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5ub2RlTmFtZSwgcHJvcHMsIHRoaXMudGV4dCB8fCB0aGlzLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwsIGkpIHtcbiAgICAgIGlmIChlbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsLnRvUmVhY3QoaSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbFxuICAgICAgfVxuICAgIH0pKVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICBmdW5jdGlvbiBnZXRGaXJzdE5vZGVCeU9yZGVyIChub2Rlcywgbm9kZU9uZSwgbm9kZVR3bykge1xuICAgICAgcmV0dXJuIG5vZGVzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBub2RlKSB7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9IGVsc2UgaWYgKG5vZGUgPT09IG5vZGVPbmUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZU9uZVxuICAgICAgICB9IGVsc2UgaWYgKG5vZGUgPT09IG5vZGVUd28pIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR3b1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGROb2Rlcykge1xuICAgICAgICAgIHJldHVybiBnZXRGaXJzdE5vZGVCeU9yZGVyKG5vZGUuY2hpbGROb2Rlcywgbm9kZU9uZSwgbm9kZVR3bylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSwgZmFsc2UpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBbmNlc3RvciAoc291cmNlLCB0YXJnZXQpIHtcbiAgICAgIHdoaWxlICh0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZVxuICAgICAgICBpZiAodGFyZ2V0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlaXRoZXJDb250YWlucyAobGVmdCwgcmlnaHQpIHtcbiAgICAgIHJldHVybiBpc0FuY2VzdG9yKGxlZnQsIHJpZ2h0KVxuICAgICAgICA/IEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZICsgRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkdcbiAgICAgICAgOiBpc0FuY2VzdG9yKHJpZ2h0LCBsZWZ0KVxuICAgICAgICAgID8gRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyArIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HXG4gICAgICAgICAgOiBmYWxzZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFJvb3ROb2RlIChub2RlKSB7XG4gICAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGVcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMgPT09IG90aGVyKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHZhciByZWZlcmVuY2VSb290ID0gZ2V0Um9vdE5vZGUodGhpcylcbiAgICB2YXIgb3RoZXJSb290ID0gZ2V0Um9vdE5vZGUob3RoZXIpXG5cbiAgICBpZiAocmVmZXJlbmNlUm9vdCAhPT0gb3RoZXJSb290KSB7XG4gICAgICByZXR1cm4gRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURURcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gZWl0aGVyQ29udGFpbnModGhpcywgb3RoZXIpXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHZhciBmaXJzdCA9IGdldEZpcnN0Tm9kZUJ5T3JkZXIoW3JlZmVyZW5jZVJvb3RdLCB0aGlzLCBvdGhlcilcbiAgICByZXR1cm4gZmlyc3QgPT09IHRoaXNcbiAgICAgID8gRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkdcbiAgICAgIDogZmlyc3QgPT09IG90aGVyXG4gICAgICAgID8gRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkdcbiAgICAgICAgOiBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRFxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRWxlbWVudC5wcm90b3R5cGUsIHtcbiAgICBuZXh0U2libGluZzoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzaWJsaW5ncyA9IHRoaXMucGFyZW50Tm9kZS5jaGlsZHJlblxuICAgICAgICB2YXIgbWUgPSBzaWJsaW5ncy5pbmRleE9mKHRoaXMpXG4gICAgICAgIHJldHVybiBzaWJsaW5nc1ttZSArIDFdXG4gICAgICB9XG4gICAgfSxcbiAgICBwcmV2aW91c1NpYmxpbmc6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2libGluZ3MgPSB0aGlzLnBhcmVudE5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIG1lID0gc2libGluZ3MuaW5kZXhPZih0aGlzKVxuICAgICAgICByZXR1cm4gc2libGluZ3NbbWUgLSAxXVxuICAgICAgfVxuICAgIH0sXG4gICAgaW5uZXJIVE1MOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dFxuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dFxuICAgICAgfVxuICAgIH0sXG4gICAgdGV4dENvbnRlbnQ6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGlsZHJlbjoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIFNvIGZhciBub2RlcyBjcmVhdGVkIGJ5IHRoaXMgbGlicmFyeSBhcmUgYWxsIG9mIG5vZGVUeXBlIDEgKGVsZW1lbnRzKSxcbiAgICAgICAgLy8gYnV0IHRoaXMgY291bGQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgIGlmICghZWwubm9kZVR5cGUpIHtcbiAgICAgICAgICAgIC8vIEl0J3MgYSBSZWFjdCBlbGVtZW50LCB3ZSBhbHdheXMgYWRkIGl0XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEl0J3MgYSBIVE1MIG5vZGUuIFdlIHdhbnQgdG8gZmlsdGVyIHRvIGhhdmUgb25seSBub2RlcyB3aXRoIHR5cGUgMVxuICAgICAgICAgIHJldHVybiBlbC5ub2RlVHlwZSA9PT0gMVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICAvLyBUaGVzZSBOUyBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhpbmdzIGxpa2UgRDMgaWYgaXQgc3BvdHMgYSBuYW1lc3BhY2UuXG4gIC8vIExpa2UgeGxpbms6aHJlZi4gSSBkb24ndCBjYXJlIGFib3V0IG5hbWVzcGFjZXMsIHNvIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIE5TIGFsaWFzZXMgY3JlYXRlZC5cbiAgdmFyIG5hbWVzcGFjZU1ldGhvZHMgPSBbXG4gICAgJ3NldEF0dHJpYnV0ZScsXG4gICAgJ2dldEF0dHJpYnV0ZScsXG4gICAgJ2dldEF0dHJpYnV0ZU5vZGUnLFxuICAgICdyZW1vdmVBdHRyaWJ1dGUnLFxuICAgICdnZXRFbGVtZW50c0J5VGFnTmFtZScsXG4gICAgJ2dldEVsZW1lbnRCeUlkJ1xuICBdXG5cbiAgbmFtZXNwYWNlTWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGZuID0gRWxlbWVudC5wcm90b3R5cGVbbmFtZV1cbiAgICBFbGVtZW50LnByb3RvdHlwZVtuYW1lICsgJ05TJ10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSlcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIEVsZW1lbnRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlbGVtZW50XG4iLCJmdW5jdGlvbiB3aW5kb3cgKCkge1xuICB2YXIgV2luZG93ID0ge1xuICAgIGdldENvbXB1dGVkU3R5bGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZXRQcm9wZXJ0eVZhbHVlOiBub2RlLnN0eWxlLmdldFByb3BlcnR5XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFdpbmRvd1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxuLy8gLS0gSW5saW5lZCBmcm9tIGZianMgLS1cblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xufVxuXG52YXIgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gX2ludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpO1xuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KSk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG52YXIgd2FybmluZyA9IGZ1bmN0aW9uKCl7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cbiAgICB9XG5cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gLy0tIElubGluZWQgZnJvbSBmYmpzIC0tXG5cbnZhciBNSVhJTlNfS0VZID0gJ21peGlucyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBub3Rcbi8vIGhhdmUgLm5hbWUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBhc3NpZ25lZCB0by5cbmZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XG4gIHJldHVybiBmbjtcbn1cblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4gICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRleHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xufSBlbHNlIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcbn1cblxuZnVuY3Rpb24gZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKSB7XG4gIC8qKlxuICAgKiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRlcmZhY2VgLlxuICAgKi9cblxuICB2YXIgaW5qZWN0ZWRNaXhpbnMgPSBbXTtcblxuICAvKipcbiAgICogQ29tcG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRzIHRoYXQgY29tcG9zZSBvdGhlciBjb21wb3NpdGVcbiAgICogb3IgaG9zdCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBUbyBjcmVhdGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mXG4gICAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3NcbiAgICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gICAqXG4gICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAgICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47XG4gICAqICAgICB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcbiAgICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3JcbiAgICogbW9yZSB0aGUgY29tcHJlaGVuc2l2ZSBwcm90b2NvbC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhlXG4gICAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cbiAgICpcbiAgICogQGludGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgbWl4aW5zOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4gICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzdGF0aWNzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvLyA9PT09IERlZmluaXRpb24gbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWx5XG4gICAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRTdGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZFxuICAgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cbiAgICAgKlxuICAgICAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgcmV0dXJuIHtcbiAgICAgKiAgICAgICBpc09uOiBmYWxzZSxcbiAgICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKVxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRDaGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxuICAgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzb1xuICAgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAgICAqXG4gICAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTtcbiAgICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAgICAgKiBAcmVxdWlyZWRcbiAgICAgKi9cbiAgICByZW5kZXI6ICdERUZJTkVfT05DRScsXG5cbiAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG4gICAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWRcbiAgICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuICAgICAqXG4gICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50XG4gICAgICogICAgIH0pO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcbiAgICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG4gICAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBjb250ZXh0LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuICAgICAqIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnRcbiAgICAgKiB1cGRhdGUuXG4gICAgICpcbiAgICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlLlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJ0RFRklORV9PTkNFJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb21cbiAgICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXG4gICAgICogYW5kIGBuZXh0Q29udGV4dGAuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2NjdXJzLlxuICAgICAqXG4gICAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dFxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmVcbiAgICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUgYmVlblxuICAgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsTW91bnRgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VtZW50IGZvciAoZGVwcmVjYXRlZCkgYGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBvdmVycmlkYWJsZVxuICAgICAqL1xuICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG4gIH07XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gUmVhY3RDbGFzc0ludGVyZmFjZSBidXQgZm9yIHN0YXRpYyBtZXRob2RzLlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2UgPSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBhZnRlciBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgYW5kIHdoZW4gaXRcbiAgICAgKiByZWNlaXZlcyBuZXcgcHJvcHMuIFJldHVybiBhbiBvYmplY3QgdG8gdXBkYXRlIHN0YXRlIGluIHJlc3BvbnNlIHRvXG4gICAgICogcHJvcCBjaGFuZ2VzLiBSZXR1cm4gbnVsbCB0byBpbmRpY2F0ZSBubyBjaGFuZ2UgdG8gc3RhdGUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIGl0cyBrZXlzIHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIGV4aXN0aW5nIHN0YXRlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0IHx8IG51bGx9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cbiAgICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuICAgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICAgKiB3aGljaCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gICAqL1xuICB2YXIgUkVTRVJWRURfU1BFQ19LRVlTID0ge1xuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gICAgfSxcbiAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcbiAgICAgIGlmIChtaXhpbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsXG4gICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgY29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsXG4gICAgICAgIGNvbnRleHRUeXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuICAgICAqIGF1dG9tYXRpYyBtZXJnaW5nLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcbiAgICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsXG4gICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wVHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICAgIH0sXG4gICAgc3RhdGljczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgICB9LFxuICAgIGF1dG9iaW5kOiBmdW5jdGlvbigpIHt9XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHtcbiAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2ludmFyaWFudCBzbyBjb21wb25lbnRzXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9fXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgK1xuICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9wTmFtZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcbiAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArXG4gICAgICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAgICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArXG4gICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3BlYykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHR5cGVvZlNwZWMgPSB0eXBlb2Ygc3BlYztcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgaXNNaXhpblZhbGlkLFxuICAgICAgICAgICAgXCIlczogWW91J3JlIGF0dGVtcHRpbmcgdG8gaW5jbHVkZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIgK1xuICAgICAgICAgICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50LCAnICtcbiAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1ZGUgdGhlbXNlbHZlcy4gJyArXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBlb2ZTcGVjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSAnICtcbiAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuICAgIF9pbnZhcmlhbnQoXG4gICAgICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXG4gICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuXG4gICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICAgIHZhciBhdXRvQmluZFBhaXJzID0gcHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cbiAgICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAgICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdoZXRoZXJcbiAgICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cbiAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gc3BlYykge1xuICAgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdO1xuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7XG5cbiAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBwcm9wZXJ0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgYm91bmQ6XG4gICAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cbiAgICAgICAgICBpc0Z1bmN0aW9uICYmXG4gICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICFpc0FscmVhZHlEZWZpbmVkICYmXG4gICAgICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG4gICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5hbWUsIHByb3BlcnR5KTtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLlxuICAgICAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgICAgICAgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnIHx8XG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSxcbiAgICAgICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICtcbiAgICAgICAgICAgICAgICAnd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLicsXG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAgICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLlxuICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICBpZiAoIXN0YXRpY3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICAgIHZhciBwcm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICAhaXNSZXNlcnZlZCxcbiAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtcbiAgICAgICAgICAncHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5lIGl0ICcgK1xuICAgICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgK1xuICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuXG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XG4gICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgICAgICA/IFJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2VbbmFtZV1cbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyxcbiAgICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSAnICtcbiAgICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKENvbnN0cnVjdG9yW25hbWVdLCBwcm9wZXJ0eSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICAgX2ludmFyaWFudChcbiAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcsXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xuICAgICk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7XG4gICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxuICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuICAgICAgICAgICAgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgK1xuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcbiAgICAgICAgICAgICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgK1xuICAgICAgICAgICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuICAgICAgICAgIGtleVxuICAgICAgICApO1xuICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoYSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgICB2YXIgYyA9IHt9O1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgICByZXR1cm4gYztcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7XG4gICAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG4gICAgICAgICAgICBfa2V5ID0gMTtcbiAgICAgICAgICBfa2V5IDwgX2xlbjtcbiAgICAgICAgICBfa2V5KytcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cbiAgICAgICAgLy8gbGV0J3Mgd2Fybi5cbiAgICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG4gICAgICAgICAgICAgICAgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xuICAgICAgICAgICAgICAgICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5jZSAnICtcbiAgICAgICAgICAgICAgICAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2RzKGNvbXBvbmVudCkge1xuICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgYXV0b0JpbmRLZXkgPSBwYWlyc1tpXTtcbiAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XG4gICAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICB2YXIgSXNNb3VudGVkUHJlTWl4aW4gPSB7XG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBJc01vdW50ZWRQb3N0TWl4aW4gPSB7XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG4gICAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc01peGluID0ge1xuICAgIC8qKlxuICAgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudFxuICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cbiAgICAgKi9cbiAgICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAZmluYWxcbiAgICAgKi9cbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCxcbiAgICAgICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgJyArXG4gICAgICAgICAgICAnc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiBjb21wb25lbnRXaWxsVW5tb3VudCB0byAnICtcbiAgICAgICAgICAgICdwcmV2ZW50IG1lbW9yeSBsZWFrcy4nLFxuICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICB0aGlzLm5hbWUgfHxcbiAgICAgICAgICAgICdDb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7XG4gICAgfVxuICB9O1xuXG4gIHZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7fTtcbiAgX2Fzc2lnbihcbiAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDbGFzc01peGluXG4gICk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2xhc3Moc3BlYykge1xuICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3RcbiAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLlxuICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAgIC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMgbW91bnRlZC5cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXG4gICAgICAgICAgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgK1xuICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkge1xuICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSxcbiAgICAgICAgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcsXG4gICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgfSk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQoKTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnMgPSBbXTtcblxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFByZU1peGluKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFBvc3RNaXhpbik7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXG4gICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYVxuICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIsXG4gICAgICAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nXG4gICAgKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuICAgICAgICAgICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArXG4gICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiAnICtcbiAgICAgICAgICAnRGlkIHlvdSBtZWFuIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDbGFzc0ludGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0pIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ2xhc3M7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5Jyk7XG5cbmlmICh0eXBlb2YgUmVhY3QgPT09ICd1bmRlZmluZWQnKSB7XG4gIHRocm93IEVycm9yKFxuICAgICdjcmVhdGUtcmVhY3QtY2xhc3MgY291bGQgbm90IGZpbmQgdGhlIFJlYWN0IG9iamVjdC4gSWYgeW91IGFyZSB1c2luZyBzY3JpcHQgdGFncywgJyArXG4gICAgICAnbWFrZSBzdXJlIHRoYXQgUmVhY3QgaXMgYmVpbmcgbG9hZGVkIGJlZm9yZSBjcmVhdGUtcmVhY3QtY2xhc3MuJ1xuICApO1xufVxuXG4vLyBIYWNrIHRvIGdyYWIgTm9vcFVwZGF0ZVF1ZXVlIGZyb20gaXNvbW9ycGhpYyBSZWFjdFxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0LkNvbXBvbmVudCgpLnVwZGF0ZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgUmVhY3QuQ29tcG9uZW50LFxuICBSZWFjdC5pc1ZhbGlkRWxlbWVudCxcbiAgUmVhY3ROb29wVXBkYXRlUXVldWVcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsInZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0JylcbnZhciBjcmVhdGVSZWFjdENsYXNzID0gcmVxdWlyZSgnY3JlYXRlLXJlYWN0LWNsYXNzJylcbnZhciBtYXBWYWx1ZXMgPSByZXF1aXJlKCcuL3V0aWxzL21hcFZhbHVlcycpXG52YXIgaG9pc3ROb25SZWFjdFN0YXRpY3MgPSByZXF1aXJlKCdob2lzdC1ub24tcmVhY3Qtc3RhdGljcycpXG5cbmZ1bmN0aW9uIHdpdGhGYXV4RE9NRmFjdG9yeSAoRWxlbWVudCkge1xuICBmdW5jdGlvbiB3aXRoRmF1eERPTSAoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIHZhciBXaXRoRmF1eERPTSA9IGNyZWF0ZVJlYWN0Q2xhc3Moe1xuICAgICAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuY29ubmVjdGVkRmF1eERPTSA9IHt9XG4gICAgICAgIHRoaXMuYW5pbWF0ZUZhdXhET01VbnRpbCA9IDBcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnN0b3BBbmltYXRpbmdGYXV4RE9NKClcbiAgICAgICAgdGhpcy5zdG9wRHJhd0ZhdXhET00oKVxuICAgICAgfSxcbiAgICAgIGNvbm5lY3RGYXV4RE9NOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgZGlzY2FyZE5vZGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RlZEZhdXhET01bbmFtZV0gfHwgZGlzY2FyZE5vZGUpIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3RlZEZhdXhET01bbmFtZV0gPSB0eXBlb2Ygbm9kZSAhPT0gJ3N0cmluZycgPyBub2RlIDogbmV3IEVsZW1lbnQobm9kZSlcbiAgICAgICAgICB0aGlzLmRyYXdGYXV4RE9NVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5kcmF3RmF1eERPTSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWRGYXV4RE9NW25hbWVdXG4gICAgICB9LFxuICAgICAgZHJhd0ZhdXhET006IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZpcnR1YWxET00gPSBtYXBWYWx1ZXModGhpcy5jb25uZWN0ZWRGYXV4RE9NLCBmdW5jdGlvbiAobikge1xuICAgICAgICAgIHJldHVybiBuLnRvUmVhY3QoKVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnNldFN0YXRlKHZpcnR1YWxET00pXG4gICAgICB9LFxuICAgICAgYW5pbWF0ZUZhdXhET006IGZ1bmN0aW9uIChkdXJhdGlvbikge1xuICAgICAgICB0aGlzLmFuaW1hdGVGYXV4RE9NVW50aWwgPSBNYXRoLm1heChEYXRlLm5vdygpICsgZHVyYXRpb24sIHRoaXMuYW5pbWF0ZUZhdXhET01VbnRpbClcbiAgICAgICAgaWYgKCF0aGlzLmZhdXhET01BbmltYXRpb25JbnRlcnZhbCkge1xuICAgICAgICAgIHRoaXMuZmF1eERPTUFuaW1hdGlvbkludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKERhdGUubm93KCkgPCB0aGlzLmFuaW1hdGVGYXV4RE9NVW50aWwpIHtcbiAgICAgICAgICAgICAgdGhpcy5kcmF3RmF1eERPTSgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnN0b3BBbmltYXRpbmdGYXV4RE9NKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LmJpbmQodGhpcyksIDE2KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3RvcEFuaW1hdGluZ0ZhdXhET006IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5mYXV4RE9NQW5pbWF0aW9uSW50ZXJ2YWwgPSBjbGVhckludGVydmFsKHRoaXMuZmF1eERPTUFuaW1hdGlvbkludGVydmFsKVxuICAgICAgICB0aGlzLmFuaW1hdGVGYXV4RE9NVW50aWwgPSAwXG4gICAgICB9LFxuICAgICAgc3RvcERyYXdGYXV4RE9NOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuZHJhd0ZhdXhET01UaW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRoaXMuZHJhd0ZhdXhET01UaW1lb3V0KVxuICAgICAgfSxcbiAgICAgIGlzQW5pbWF0aW5nRmF1eERPTTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZhdXhET01BbmltYXRpb25JbnRlcnZhbFxuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnByb3BzLCB0aGlzLnN0YXRlLCB7XG4gICAgICAgICAgY29ubmVjdEZhdXhET006IHRoaXMuY29ubmVjdEZhdXhET00sXG4gICAgICAgICAgZHJhd0ZhdXhET006IHRoaXMuZHJhd0ZhdXhET00sXG4gICAgICAgICAgYW5pbWF0ZUZhdXhET006IHRoaXMuYW5pbWF0ZUZhdXhET00sXG4gICAgICAgICAgc3RvcEFuaW1hdGluZ0ZhdXhET006IHRoaXMuc3RvcEFuaW1hdGluZ0ZhdXhET00sXG4gICAgICAgICAgaXNBbmltYXRpbmdGYXV4RE9NOiB0aGlzLmlzQW5pbWF0aW5nRmF1eERPTVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBwcm9wcylcbiAgICAgIH1cbiAgICB9KVxuICAgIFdpdGhGYXV4RE9NLmRpc3BsYXlOYW1lID0gJ1dpdGhGYXV4RE9NKCcgKyBnZXREaXNwbGF5TmFtZShXcmFwcGVkQ29tcG9uZW50KSArICcpJ1xuICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFdpdGhGYXV4RE9NLCBXcmFwcGVkQ29tcG9uZW50KVxuICAgIHJldHVybiBXaXRoRmF1eERPTVxuICB9XG5cbiAgcmV0dXJuIHdpdGhGYXV4RE9NXG59XG5cbmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lIChXcmFwcGVkQ29tcG9uZW50KSB7XG4gIHJldHVybiBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50J1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhGYXV4RE9NRmFjdG9yeVxuIiwidmFyIGVsZW1lbnQgPSByZXF1aXJlKCcuL19lbGVtZW50JylcbnZhciB3aW5kb3cgPSByZXF1aXJlKCcuL193aW5kb3cnKVxudmFyIHdpdGhGYXV4RE9NID0gcmVxdWlyZSgnLi9fd2l0aEZhdXhET00nKVxuXG5mdW5jdGlvbiBmYWN0b3J5ICgpIHtcbiAgdmFyIEVsZW1lbnQgPSBlbGVtZW50KClcbiAgdmFyIFdpbmRvdyA9IHdpbmRvdygpXG4gIHZhciBSZWFjdEZhdXhET00gPSB7XG4gICAgRWxlbWVudDogRWxlbWVudCxcbiAgICBkZWZhdWx0VmlldzogV2luZG93LFxuICAgIHdpdGhGYXV4RE9NOiB3aXRoRmF1eERPTShFbGVtZW50KSxcbiAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAobm9kZU5hbWUpIHtcbiAgICAgIHJldHVybiBuZXcgRWxlbWVudChub2RlTmFtZSlcbiAgICB9LFxuICAgIGNyZWF0ZUVsZW1lbnROUzogZnVuY3Rpb24gKG5hbWVzcGFjZSwgbm9kZU5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpXG4gICAgfSxcbiAgICBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbjogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhlIHNlbGVjdG9yIGVuZ2luZSB0cmllcyB0byB2YWxpZGF0ZSB3aXRoIHRoaXMsIGJ1dCB3ZSBkb24ndCBjYXJlLlxuICAgICAgLy8gOCA9IERPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TLCBzbyB3ZSBzYXkgYWxsIG5vZGVzIGFyZSBpbiB0aGlzIGRvY3VtZW50LlxuICAgICAgcmV0dXJuIDhcbiAgICB9XG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5vd25lckRvY3VtZW50ID0gUmVhY3RGYXV4RE9NXG4gIHJldHVybiBSZWFjdEZhdXhET01cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5XG4iLCJ2YXIgZmFjdG9yeSA9IHJlcXVpcmUoJy4vZmFjdG9yeScpXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKVxuIiwidmFyIG5vb3AgPSB7dmFsdWU6IGZ1bmN0aW9uKCkge319O1xuXG5mdW5jdGlvbiBkaXNwYXRjaCgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBfID0ge30sIHQ7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoISh0ID0gYXJndW1lbnRzW2ldICsgXCJcIikgfHwgKHQgaW4gXykgfHwgL1tcXHMuXS8udGVzdCh0KSkgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCB0eXBlOiBcIiArIHQpO1xuICAgIF9bdF0gPSBbXTtcbiAgfVxuICByZXR1cm4gbmV3IERpc3BhdGNoKF8pO1xufVxuXG5mdW5jdGlvbiBEaXNwYXRjaChfKSB7XG4gIHRoaXMuXyA9IF87XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVuYW1lcy50cmltKCkuc3BsaXQoL158XFxzKy8pLm1hcChmdW5jdGlvbih0KSB7XG4gICAgdmFyIG5hbWUgPSBcIlwiLCBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSBuYW1lID0gdC5zbGljZShpICsgMSksIHQgPSB0LnNsaWNlKDAsIGkpO1xuICAgIGlmICh0ICYmICF0eXBlcy5oYXNPd25Qcm9wZXJ0eSh0KSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHQpO1xuICAgIHJldHVybiB7dHlwZTogdCwgbmFtZTogbmFtZX07XG4gIH0pO1xufVxuXG5EaXNwYXRjaC5wcm90b3R5cGUgPSBkaXNwYXRjaC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBEaXNwYXRjaCxcbiAgb246IGZ1bmN0aW9uKHR5cGVuYW1lLCBjYWxsYmFjaykge1xuICAgIHZhciBfID0gdGhpcy5fLFxuICAgICAgICBUID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiLCBfKSxcbiAgICAgICAgdCxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICBuID0gVC5sZW5ndGg7XG5cbiAgICAvLyBJZiBubyBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZXR1cm4gdGhlIGNhbGxiYWNrIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgd2hpbGUgKCsraSA8IG4pIGlmICgodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpICYmICh0ID0gZ2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUpKSkgcmV0dXJuIHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYSB0eXBlIHdhcyBzcGVjaWZpZWQsIHNldCB0aGUgY2FsbGJhY2sgZm9yIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIC8vIE90aGVyd2lzZSwgaWYgYSBudWxsIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJlbW92ZSBjYWxsYmFja3Mgb2YgdGhlIGdpdmVuIG5hbWUuXG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgY2FsbGJhY2s6IFwiICsgY2FsbGJhY2spO1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgY2FsbGJhY2spO1xuICAgICAgZWxzZSBpZiAoY2FsbGJhY2sgPT0gbnVsbCkgZm9yICh0IGluIF8pIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvcHk6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb3B5ID0ge30sIF8gPSB0aGlzLl87XG4gICAgZm9yICh2YXIgdCBpbiBfKSBjb3B5W3RdID0gX1t0XS5zbGljZSgpO1xuICAgIHJldHVybiBuZXcgRGlzcGF0Y2goY29weSk7XG4gIH0sXG4gIGNhbGw6IGZ1bmN0aW9uKHR5cGUsIHRoYXQpIHtcbiAgICBpZiAoKG4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMikgPiAwKSBmb3IgKHZhciBhcmdzID0gbmV3IEFycmF5KG4pLCBpID0gMCwgbiwgdDsgaSA8IG47ICsraSkgYXJnc1tpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH0sXG4gIGFwcGx5OiBmdW5jdGlvbih0eXBlLCB0aGF0LCBhcmdzKSB7XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHZhciB0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXQodHlwZSwgbmFtZSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoLCBjOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKChjID0gdHlwZVtpXSkubmFtZSA9PT0gbmFtZSkge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldCh0eXBlLCBuYW1lLCBjYWxsYmFjaykge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKHR5cGVbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgdHlwZVtpXSA9IG5vb3AsIHR5cGUgPSB0eXBlLnNsaWNlKDAsIGkpLmNvbmNhdCh0eXBlLnNsaWNlKGkgKyAxKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHR5cGUucHVzaCh7bmFtZTogbmFtZSwgdmFsdWU6IGNhbGxiYWNrfSk7XG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaXNwYXRjaDtcbiIsIi8vIFdvcmQgY2xvdWQgbGF5b3V0IGJ5IEphc29uIERhdmllcywgaHR0cHM6Ly93d3cuamFzb25kYXZpZXMuY29tL3dvcmRjbG91ZC9cbi8vIEFsZ29yaXRobSBkdWUgdG8gSm9uYXRoYW4gRmVpbmJlcmcsIGh0dHA6Ly9zdGF0aWMubXJmZWluYmVyZy5jb20vYnZfY2gwMy5wZGZcblxudmFyIGRpc3BhdGNoID0gcmVxdWlyZShcImQzLWRpc3BhdGNoXCIpLmRpc3BhdGNoO1xuXG52YXIgY2xvdWRSYWRpYW5zID0gTWF0aC5QSSAvIDE4MCxcbiAgICBjdyA9IDEgPDwgMTEgPj4gNSxcbiAgICBjaCA9IDEgPDwgMTE7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzaXplID0gWzI1NiwgMjU2XSxcbiAgICAgIHRleHQgPSBjbG91ZFRleHQsXG4gICAgICBmb250ID0gY2xvdWRGb250LFxuICAgICAgZm9udFNpemUgPSBjbG91ZEZvbnRTaXplLFxuICAgICAgZm9udFN0eWxlID0gY2xvdWRGb250Tm9ybWFsLFxuICAgICAgZm9udFdlaWdodCA9IGNsb3VkRm9udE5vcm1hbCxcbiAgICAgIHJvdGF0ZSA9IGNsb3VkUm90YXRlLFxuICAgICAgcGFkZGluZyA9IGNsb3VkUGFkZGluZyxcbiAgICAgIHNwaXJhbCA9IGFyY2hpbWVkZWFuU3BpcmFsLFxuICAgICAgd29yZHMgPSBbXSxcbiAgICAgIHRpbWVJbnRlcnZhbCA9IEluZmluaXR5LFxuICAgICAgZXZlbnQgPSBkaXNwYXRjaChcIndvcmRcIiwgXCJlbmRcIiksXG4gICAgICB0aW1lciA9IG51bGwsXG4gICAgICByYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgIGNsb3VkID0ge30sXG4gICAgICBjYW52YXMgPSBjbG91ZENhbnZhcztcblxuICBjbG91ZC5jYW52YXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2FudmFzID0gZnVuY3RvcihfKSwgY2xvdWQpIDogY2FudmFzO1xuICB9O1xuXG4gIGNsb3VkLnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvbnRleHRBbmRSYXRpbyA9IGdldENvbnRleHQoY2FudmFzKCkpLFxuICAgICAgICBib2FyZCA9IHplcm9BcnJheSgoc2l6ZVswXSA+PiA1KSAqIHNpemVbMV0pLFxuICAgICAgICBib3VuZHMgPSBudWxsLFxuICAgICAgICBuID0gd29yZHMubGVuZ3RoLFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIHRhZ3MgPSBbXSxcbiAgICAgICAgZGF0YSA9IHdvcmRzLm1hcChmdW5jdGlvbihkLCBpKSB7XG4gICAgICAgICAgZC50ZXh0ID0gdGV4dC5jYWxsKHRoaXMsIGQsIGkpO1xuICAgICAgICAgIGQuZm9udCA9IGZvbnQuY2FsbCh0aGlzLCBkLCBpKTtcbiAgICAgICAgICBkLnN0eWxlID0gZm9udFN0eWxlLmNhbGwodGhpcywgZCwgaSk7XG4gICAgICAgICAgZC53ZWlnaHQgPSBmb250V2VpZ2h0LmNhbGwodGhpcywgZCwgaSk7XG4gICAgICAgICAgZC5yb3RhdGUgPSByb3RhdGUuY2FsbCh0aGlzLCBkLCBpKTtcbiAgICAgICAgICBkLnNpemUgPSB+fmZvbnRTaXplLmNhbGwodGhpcywgZCwgaSk7XG4gICAgICAgICAgZC5wYWRkaW5nID0gcGFkZGluZy5jYWxsKHRoaXMsIGQsIGkpO1xuICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICB9KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGIuc2l6ZSAtIGEuc2l6ZTsgfSk7XG5cbiAgICBpZiAodGltZXIpIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoc3RlcCwgMCk7XG4gICAgc3RlcCgpO1xuXG4gICAgcmV0dXJuIGNsb3VkO1xuXG4gICAgZnVuY3Rpb24gc3RlcCgpIHtcbiAgICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0IDwgdGltZUludGVydmFsICYmICsraSA8IG4gJiYgdGltZXIpIHtcbiAgICAgICAgdmFyIGQgPSBkYXRhW2ldO1xuICAgICAgICBkLnggPSAoc2l6ZVswXSAqIChyYW5kb20oKSArIC41KSkgPj4gMTtcbiAgICAgICAgZC55ID0gKHNpemVbMV0gKiAocmFuZG9tKCkgKyAuNSkpID4+IDE7XG4gICAgICAgIGNsb3VkU3ByaXRlKGNvbnRleHRBbmRSYXRpbywgZCwgZGF0YSwgaSk7XG4gICAgICAgIGlmIChkLmhhc1RleHQgJiYgcGxhY2UoYm9hcmQsIGQsIGJvdW5kcykpIHtcbiAgICAgICAgICB0YWdzLnB1c2goZCk7XG4gICAgICAgICAgZXZlbnQuY2FsbChcIndvcmRcIiwgY2xvdWQsIGQpO1xuICAgICAgICAgIGlmIChib3VuZHMpIGNsb3VkQm91bmRzKGJvdW5kcywgZCk7XG4gICAgICAgICAgZWxzZSBib3VuZHMgPSBbe3g6IGQueCArIGQueDAsIHk6IGQueSArIGQueTB9LCB7eDogZC54ICsgZC54MSwgeTogZC55ICsgZC55MX1dO1xuICAgICAgICAgIC8vIFRlbXBvcmFyeSBoYWNrXG4gICAgICAgICAgZC54IC09IHNpemVbMF0gPj4gMTtcbiAgICAgICAgICBkLnkgLT0gc2l6ZVsxXSA+PiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSA+PSBuKSB7XG4gICAgICAgIGNsb3VkLnN0b3AoKTtcbiAgICAgICAgZXZlbnQuY2FsbChcImVuZFwiLCBjbG91ZCwgdGFncywgYm91bmRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG91ZC5zdG9wID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNsb3VkO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGdldENvbnRleHQoY2FudmFzKSB7XG4gICAgY2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IDE7XG4gICAgdmFyIHJhdGlvID0gTWF0aC5zcXJ0KGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpLmRhdGEubGVuZ3RoID4+IDIpO1xuICAgIGNhbnZhcy53aWR0aCA9IChjdyA8PCA1KSAvIHJhdGlvO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBjaCAvIHJhdGlvO1xuXG4gICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gY29udGV4dC5zdHJva2VTdHlsZSA9IFwicmVkXCI7XG4gICAgY29udGV4dC50ZXh0QWxpZ24gPSBcImNlbnRlclwiO1xuXG4gICAgcmV0dXJuIHtjb250ZXh0OiBjb250ZXh0LCByYXRpbzogcmF0aW99O1xuICB9XG5cbiAgZnVuY3Rpb24gcGxhY2UoYm9hcmQsIHRhZywgYm91bmRzKSB7XG4gICAgdmFyIHBlcmltZXRlciA9IFt7eDogMCwgeTogMH0sIHt4OiBzaXplWzBdLCB5OiBzaXplWzFdfV0sXG4gICAgICAgIHN0YXJ0WCA9IHRhZy54LFxuICAgICAgICBzdGFydFkgPSB0YWcueSxcbiAgICAgICAgbWF4RGVsdGEgPSBNYXRoLnNxcnQoc2l6ZVswXSAqIHNpemVbMF0gKyBzaXplWzFdICogc2l6ZVsxXSksXG4gICAgICAgIHMgPSBzcGlyYWwoc2l6ZSksXG4gICAgICAgIGR0ID0gcmFuZG9tKCkgPCAuNSA/IDEgOiAtMSxcbiAgICAgICAgdCA9IC1kdCxcbiAgICAgICAgZHhkeSxcbiAgICAgICAgZHgsXG4gICAgICAgIGR5O1xuXG4gICAgd2hpbGUgKGR4ZHkgPSBzKHQgKz0gZHQpKSB7XG4gICAgICBkeCA9IH5+ZHhkeVswXTtcbiAgICAgIGR5ID0gfn5keGR5WzFdO1xuXG4gICAgICBpZiAoTWF0aC5taW4oTWF0aC5hYnMoZHgpLCBNYXRoLmFicyhkeSkpID49IG1heERlbHRhKSBicmVhaztcblxuICAgICAgdGFnLnggPSBzdGFydFggKyBkeDtcbiAgICAgIHRhZy55ID0gc3RhcnRZICsgZHk7XG5cbiAgICAgIGlmICh0YWcueCArIHRhZy54MCA8IDAgfHwgdGFnLnkgKyB0YWcueTAgPCAwIHx8XG4gICAgICAgICAgdGFnLnggKyB0YWcueDEgPiBzaXplWzBdIHx8IHRhZy55ICsgdGFnLnkxID4gc2l6ZVsxXSkgY29udGludWU7XG4gICAgICAvLyBUT0RPIG9ubHkgY2hlY2sgZm9yIGNvbGxpc2lvbnMgd2l0aGluIGN1cnJlbnQgYm91bmRzLlxuICAgICAgaWYgKCFib3VuZHMgfHwgIWNsb3VkQ29sbGlkZSh0YWcsIGJvYXJkLCBzaXplWzBdKSkge1xuICAgICAgICBpZiAoIWJvdW5kcyB8fCBjb2xsaWRlUmVjdHModGFnLCBib3VuZHMpKSB7XG4gICAgICAgICAgdmFyIHNwcml0ZSA9IHRhZy5zcHJpdGUsXG4gICAgICAgICAgICAgIHcgPSB0YWcud2lkdGggPj4gNSxcbiAgICAgICAgICAgICAgc3cgPSBzaXplWzBdID4+IDUsXG4gICAgICAgICAgICAgIGx4ID0gdGFnLnggLSAodyA8PCA0KSxcbiAgICAgICAgICAgICAgc3ggPSBseCAmIDB4N2YsXG4gICAgICAgICAgICAgIG1zeCA9IDMyIC0gc3gsXG4gICAgICAgICAgICAgIGggPSB0YWcueTEgLSB0YWcueTAsXG4gICAgICAgICAgICAgIHggPSAodGFnLnkgKyB0YWcueTApICogc3cgKyAobHggPj4gNSksXG4gICAgICAgICAgICAgIGxhc3Q7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBoOyBqKyspIHtcbiAgICAgICAgICAgIGxhc3QgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gdzsgaSsrKSB7XG4gICAgICAgICAgICAgIGJvYXJkW3ggKyBpXSB8PSAobGFzdCA8PCBtc3gpIHwgKGkgPCB3ID8gKGxhc3QgPSBzcHJpdGVbaiAqIHcgKyBpXSkgPj4+IHN4IDogMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4ICs9IHN3O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgdGFnLnNwcml0ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjbG91ZC50aW1lSW50ZXJ2YWwgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGltZUludGVydmFsID0gXyA9PSBudWxsID8gSW5maW5pdHkgOiBfLCBjbG91ZCkgOiB0aW1lSW50ZXJ2YWw7XG4gIH07XG5cbiAgY2xvdWQud29yZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAod29yZHMgPSBfLCBjbG91ZCkgOiB3b3JkcztcbiAgfTtcblxuICBjbG91ZC5zaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNpemUgPSBbK19bMF0sICtfWzFdXSwgY2xvdWQpIDogc2l6ZTtcbiAgfTtcblxuICBjbG91ZC5mb250ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZvbnQgPSBmdW5jdG9yKF8pLCBjbG91ZCkgOiBmb250O1xuICB9O1xuXG4gIGNsb3VkLmZvbnRTdHlsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmb250U3R5bGUgPSBmdW5jdG9yKF8pLCBjbG91ZCkgOiBmb250U3R5bGU7XG4gIH07XG5cbiAgY2xvdWQuZm9udFdlaWdodCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmb250V2VpZ2h0ID0gZnVuY3RvcihfKSwgY2xvdWQpIDogZm9udFdlaWdodDtcbiAgfTtcblxuICBjbG91ZC5yb3RhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm90YXRlID0gZnVuY3RvcihfKSwgY2xvdWQpIDogcm90YXRlO1xuICB9O1xuXG4gIGNsb3VkLnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGV4dCA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IHRleHQ7XG4gIH07XG5cbiAgY2xvdWQuc3BpcmFsID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNwaXJhbCA9IHNwaXJhbHNbX10gfHwgXywgY2xvdWQpIDogc3BpcmFsO1xuICB9O1xuXG4gIGNsb3VkLmZvbnRTaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZvbnRTaXplID0gZnVuY3RvcihfKSwgY2xvdWQpIDogZm9udFNpemU7XG4gIH07XG5cbiAgY2xvdWQucGFkZGluZyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nID0gZnVuY3RvcihfKSwgY2xvdWQpIDogcGFkZGluZztcbiAgfTtcblxuICBjbG91ZC5yYW5kb20gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZG9tID0gXywgY2xvdWQpIDogcmFuZG9tO1xuICB9O1xuXG4gIGNsb3VkLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gZXZlbnQub24uYXBwbHkoZXZlbnQsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSBldmVudCA/IGNsb3VkIDogdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIGNsb3VkO1xufTtcblxuZnVuY3Rpb24gY2xvdWRUZXh0KGQpIHtcbiAgcmV0dXJuIGQudGV4dDtcbn1cblxuZnVuY3Rpb24gY2xvdWRGb250KCkge1xuICByZXR1cm4gXCJzZXJpZlwiO1xufVxuXG5mdW5jdGlvbiBjbG91ZEZvbnROb3JtYWwoKSB7XG4gIHJldHVybiBcIm5vcm1hbFwiO1xufVxuXG5mdW5jdGlvbiBjbG91ZEZvbnRTaXplKGQpIHtcbiAgcmV0dXJuIE1hdGguc3FydChkLnZhbHVlKTtcbn1cblxuZnVuY3Rpb24gY2xvdWRSb3RhdGUoKSB7XG4gIHJldHVybiAofn4oTWF0aC5yYW5kb20oKSAqIDYpIC0gMykgKiAzMDtcbn1cblxuZnVuY3Rpb24gY2xvdWRQYWRkaW5nKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy8gRmV0Y2hlcyBhIG1vbm9jaHJvbWUgc3ByaXRlIGJpdG1hcCBmb3IgdGhlIHNwZWNpZmllZCB0ZXh0LlxuLy8gTG9hZCBpbiBiYXRjaGVzIGZvciBzcGVlZC5cbmZ1bmN0aW9uIGNsb3VkU3ByaXRlKGNvbnRleHRBbmRSYXRpbywgZCwgZGF0YSwgZGkpIHtcbiAgaWYgKGQuc3ByaXRlKSByZXR1cm47XG4gIHZhciBjID0gY29udGV4dEFuZFJhdGlvLmNvbnRleHQsXG4gICAgICByYXRpbyA9IGNvbnRleHRBbmRSYXRpby5yYXRpbztcblxuICBjLmNsZWFyUmVjdCgwLCAwLCAoY3cgPDwgNSkgLyByYXRpbywgY2ggLyByYXRpbyk7XG4gIHZhciB4ID0gMCxcbiAgICAgIHkgPSAwLFxuICAgICAgbWF4aCA9IDAsXG4gICAgICBuID0gZGF0YS5sZW5ndGg7XG4gIC0tZGk7XG4gIHdoaWxlICgrK2RpIDwgbikge1xuICAgIGQgPSBkYXRhW2RpXTtcbiAgICBjLnNhdmUoKTtcbiAgICBjLmZvbnQgPSBkLnN0eWxlICsgXCIgXCIgKyBkLndlaWdodCArIFwiIFwiICsgfn4oKGQuc2l6ZSArIDEpIC8gcmF0aW8pICsgXCJweCBcIiArIGQuZm9udDtcbiAgICB2YXIgdyA9IGMubWVhc3VyZVRleHQoZC50ZXh0ICsgXCJtXCIpLndpZHRoICogcmF0aW8sXG4gICAgICAgIGggPSBkLnNpemUgPDwgMTtcbiAgICBpZiAoZC5yb3RhdGUpIHtcbiAgICAgIHZhciBzciA9IE1hdGguc2luKGQucm90YXRlICogY2xvdWRSYWRpYW5zKSxcbiAgICAgICAgICBjciA9IE1hdGguY29zKGQucm90YXRlICogY2xvdWRSYWRpYW5zKSxcbiAgICAgICAgICB3Y3IgPSB3ICogY3IsXG4gICAgICAgICAgd3NyID0gdyAqIHNyLFxuICAgICAgICAgIGhjciA9IGggKiBjcixcbiAgICAgICAgICBoc3IgPSBoICogc3I7XG4gICAgICB3ID0gKE1hdGgubWF4KE1hdGguYWJzKHdjciArIGhzciksIE1hdGguYWJzKHdjciAtIGhzcikpICsgMHgxZikgPj4gNSA8PCA1O1xuICAgICAgaCA9IH5+TWF0aC5tYXgoTWF0aC5hYnMod3NyICsgaGNyKSwgTWF0aC5hYnMod3NyIC0gaGNyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHcgPSAodyArIDB4MWYpID4+IDUgPDwgNTtcbiAgICB9XG4gICAgaWYgKGggPiBtYXhoKSBtYXhoID0gaDtcbiAgICBpZiAoeCArIHcgPj0gKGN3IDw8IDUpKSB7XG4gICAgICB4ID0gMDtcbiAgICAgIHkgKz0gbWF4aDtcbiAgICAgIG1heGggPSAwO1xuICAgIH1cbiAgICBpZiAoeSArIGggPj0gY2gpIGJyZWFrO1xuICAgIGMudHJhbnNsYXRlKCh4ICsgKHcgPj4gMSkpIC8gcmF0aW8sICh5ICsgKGggPj4gMSkpIC8gcmF0aW8pO1xuICAgIGlmIChkLnJvdGF0ZSkgYy5yb3RhdGUoZC5yb3RhdGUgKiBjbG91ZFJhZGlhbnMpO1xuICAgIGMuZmlsbFRleHQoZC50ZXh0LCAwLCAwKTtcbiAgICBpZiAoZC5wYWRkaW5nKSBjLmxpbmVXaWR0aCA9IDIgKiBkLnBhZGRpbmcsIGMuc3Ryb2tlVGV4dChkLnRleHQsIDAsIDApO1xuICAgIGMucmVzdG9yZSgpO1xuICAgIGQud2lkdGggPSB3O1xuICAgIGQuaGVpZ2h0ID0gaDtcbiAgICBkLnhvZmYgPSB4O1xuICAgIGQueW9mZiA9IHk7XG4gICAgZC54MSA9IHcgPj4gMTtcbiAgICBkLnkxID0gaCA+PiAxO1xuICAgIGQueDAgPSAtZC54MTtcbiAgICBkLnkwID0gLWQueTE7XG4gICAgZC5oYXNUZXh0ID0gdHJ1ZTtcbiAgICB4ICs9IHc7XG4gIH1cbiAgdmFyIHBpeGVscyA9IGMuZ2V0SW1hZ2VEYXRhKDAsIDAsIChjdyA8PCA1KSAvIHJhdGlvLCBjaCAvIHJhdGlvKS5kYXRhLFxuICAgICAgc3ByaXRlID0gW107XG4gIHdoaWxlICgtLWRpID49IDApIHtcbiAgICBkID0gZGF0YVtkaV07XG4gICAgaWYgKCFkLmhhc1RleHQpIGNvbnRpbnVlO1xuICAgIHZhciB3ID0gZC53aWR0aCxcbiAgICAgICAgdzMyID0gdyA+PiA1LFxuICAgICAgICBoID0gZC55MSAtIGQueTA7XG4gICAgLy8gWmVybyB0aGUgYnVmZmVyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoICogdzMyOyBpKyspIHNwcml0ZVtpXSA9IDA7XG4gICAgeCA9IGQueG9mZjtcbiAgICBpZiAoeCA9PSBudWxsKSByZXR1cm47XG4gICAgeSA9IGQueW9mZjtcbiAgICB2YXIgc2VlbiA9IDAsXG4gICAgICAgIHNlZW5Sb3cgPSAtMTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGg7IGorKykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3OyBpKyspIHtcbiAgICAgICAgdmFyIGsgPSB3MzIgKiBqICsgKGkgPj4gNSksXG4gICAgICAgICAgICBtID0gcGl4ZWxzWygoeSArIGopICogKGN3IDw8IDUpICsgKHggKyBpKSkgPDwgMl0gPyAxIDw8ICgzMSAtIChpICUgMzIpKSA6IDA7XG4gICAgICAgIHNwcml0ZVtrXSB8PSBtO1xuICAgICAgICBzZWVuIHw9IG07XG4gICAgICB9XG4gICAgICBpZiAoc2Vlbikgc2VlblJvdyA9IGo7XG4gICAgICBlbHNlIHtcbiAgICAgICAgZC55MCsrO1xuICAgICAgICBoLS07XG4gICAgICAgIGotLTtcbiAgICAgICAgeSsrO1xuICAgICAgfVxuICAgIH1cbiAgICBkLnkxID0gZC55MCArIHNlZW5Sb3c7XG4gICAgZC5zcHJpdGUgPSBzcHJpdGUuc2xpY2UoMCwgKGQueTEgLSBkLnkwKSAqIHczMik7XG4gIH1cbn1cblxuLy8gVXNlIG1hc2stYmFzZWQgY29sbGlzaW9uIGRldGVjdGlvbi5cbmZ1bmN0aW9uIGNsb3VkQ29sbGlkZSh0YWcsIGJvYXJkLCBzdykge1xuICBzdyA+Pj0gNTtcbiAgdmFyIHNwcml0ZSA9IHRhZy5zcHJpdGUsXG4gICAgICB3ID0gdGFnLndpZHRoID4+IDUsXG4gICAgICBseCA9IHRhZy54IC0gKHcgPDwgNCksXG4gICAgICBzeCA9IGx4ICYgMHg3ZixcbiAgICAgIG1zeCA9IDMyIC0gc3gsXG4gICAgICBoID0gdGFnLnkxIC0gdGFnLnkwLFxuICAgICAgeCA9ICh0YWcueSArIHRhZy55MCkgKiBzdyArIChseCA+PiA1KSxcbiAgICAgIGxhc3Q7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgaDsgaisrKSB7XG4gICAgbGFzdCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gdzsgaSsrKSB7XG4gICAgICBpZiAoKChsYXN0IDw8IG1zeCkgfCAoaSA8IHcgPyAobGFzdCA9IHNwcml0ZVtqICogdyArIGldKSA+Pj4gc3ggOiAwKSlcbiAgICAgICAgICAmIGJvYXJkW3ggKyBpXSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHggKz0gc3c7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjbG91ZEJvdW5kcyhib3VuZHMsIGQpIHtcbiAgdmFyIGIwID0gYm91bmRzWzBdLFxuICAgICAgYjEgPSBib3VuZHNbMV07XG4gIGlmIChkLnggKyBkLngwIDwgYjAueCkgYjAueCA9IGQueCArIGQueDA7XG4gIGlmIChkLnkgKyBkLnkwIDwgYjAueSkgYjAueSA9IGQueSArIGQueTA7XG4gIGlmIChkLnggKyBkLngxID4gYjEueCkgYjEueCA9IGQueCArIGQueDE7XG4gIGlmIChkLnkgKyBkLnkxID4gYjEueSkgYjEueSA9IGQueSArIGQueTE7XG59XG5cbmZ1bmN0aW9uIGNvbGxpZGVSZWN0cyhhLCBiKSB7XG4gIHJldHVybiBhLnggKyBhLngxID4gYlswXS54ICYmIGEueCArIGEueDAgPCBiWzFdLnggJiYgYS55ICsgYS55MSA+IGJbMF0ueSAmJiBhLnkgKyBhLnkwIDwgYlsxXS55O1xufVxuXG5mdW5jdGlvbiBhcmNoaW1lZGVhblNwaXJhbChzaXplKSB7XG4gIHZhciBlID0gc2l6ZVswXSAvIHNpemVbMV07XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIFtlICogKHQgKj0gLjEpICogTWF0aC5jb3ModCksIHQgKiBNYXRoLnNpbih0KV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlY3Rhbmd1bGFyU3BpcmFsKHNpemUpIHtcbiAgdmFyIGR5ID0gNCxcbiAgICAgIGR4ID0gZHkgKiBzaXplWzBdIC8gc2l6ZVsxXSxcbiAgICAgIHggPSAwLFxuICAgICAgeSA9IDA7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHNpZ24gPSB0IDwgMCA/IC0xIDogMTtcbiAgICAvLyBTZWUgdHJpYW5ndWxhciBudW1iZXJzOiBUX24gPSBuICogKG4gKyAxKSAvIDIuXG4gICAgc3dpdGNoICgoTWF0aC5zcXJ0KDEgKyA0ICogc2lnbiAqIHQpIC0gc2lnbikgJiAzKSB7XG4gICAgICBjYXNlIDA6ICB4ICs9IGR4OyBicmVhaztcbiAgICAgIGNhc2UgMTogIHkgKz0gZHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiAgeCAtPSBkeDsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB5IC09IGR5OyBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFt4LCB5XTtcbiAgfTtcbn1cblxuLy8gVE9ETyByZXVzZSBhcnJheXM/XG5mdW5jdGlvbiB6ZXJvQXJyYXkobikge1xuICB2YXIgYSA9IFtdLFxuICAgICAgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbikgYVtpXSA9IDA7XG4gIHJldHVybiBhO1xufVxuXG5mdW5jdGlvbiBjbG91ZENhbnZhcygpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG59XG5cbmZ1bmN0aW9uIGZ1bmN0b3IoZCkge1xuICByZXR1cm4gdHlwZW9mIGQgPT09IFwiZnVuY3Rpb25cIiA/IGQgOiBmdW5jdGlvbigpIHsgcmV0dXJuIGQ7IH07XG59XG5cbnZhciBzcGlyYWxzID0ge1xuICBhcmNoaW1lZGVhbjogYXJjaGltZWRlYW5TcGlyYWwsXG4gIHJlY3Rhbmd1bGFyOiByZWN0YW5ndWxhclNwaXJhbFxufTtcbiIsIi8qIGdsb2JhbCBNYXA6cmVhZG9ubHksIFNldDpyZWFkb25seSwgQXJyYXlCdWZmZXI6cmVhZG9ubHkgKi9cblxudmFyIGhhc0VsZW1lbnRUeXBlID0gdHlwZW9mIEVsZW1lbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIGhhc01hcCA9IHR5cGVvZiBNYXAgPT09ICdmdW5jdGlvbic7XG52YXIgaGFzU2V0ID0gdHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJztcbnZhciBoYXNBcnJheUJ1ZmZlciA9IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiAhIUFycmF5QnVmZmVyLmlzVmlldztcblxuLy8gTm90ZTogV2UgKipkb24ndCoqIG5lZWQgYGVudkhhc0JpZ0ludDY0QXJyYXlgIGluIGZkZSBlczYvaW5kZXguanNcblxuZnVuY3Rpb24gZXF1YWwoYSwgYikge1xuICAvLyBTVEFSVDogZmFzdC1kZWVwLWVxdWFsIGVzNi9pbmRleC5qcyAzLjEuMVxuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cbiAgaWYgKGEgJiYgYiAmJiB0eXBlb2YgYSA9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiA9PSAnb2JqZWN0Jykge1xuICAgIGlmIChhLmNvbnN0cnVjdG9yICE9PSBiLmNvbnN0cnVjdG9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICB2YXIgbGVuZ3RoLCBpLCBrZXlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgICAgaWYgKCFlcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gU1RBUlQ6IE1vZGlmaWNhdGlvbnM6XG4gICAgLy8gMS4gRXh0cmEgYGhhczxUeXBlPiAmJmAgaGVscGVycyBpbiBpbml0aWFsIGNvbmRpdGlvbiBhbGxvdyBlczYgY29kZVxuICAgIC8vICAgIHRvIGNvLWV4aXN0IHdpdGggZXM1LlxuICAgIC8vIDIuIFJlcGxhY2UgYGZvciBvZmAgd2l0aCBlczUgY29tcGxpYW50IGl0ZXJhdGlvbiB1c2luZyBgZm9yYC5cbiAgICAvLyAgICBCYXNpY2FsbHksIHRha2U6XG4gICAgLy9cbiAgICAvLyAgICBgYGBqc1xuICAgIC8vICAgIGZvciAoaSBvZiBhLmVudHJpZXMoKSlcbiAgICAvLyAgICAgIGlmICghYi5oYXMoaVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICBgYGBcbiAgICAvL1xuICAgIC8vICAgIC4uLiBhbmQgY29udmVydCB0bzpcbiAgICAvL1xuICAgIC8vICAgIGBgYGpzXG4gICAgLy8gICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAvLyAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgIC8vICAgICAgaWYgKCFiLmhhcyhpLnZhbHVlWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgIGBgYFxuICAgIC8vXG4gICAgLy8gICAgKipOb3RlKio6IGBpYCBhY2Nlc3Mgc3dpdGNoZXMgdG8gYGkudmFsdWVgLlxuICAgIHZhciBpdDtcbiAgICBpZiAoaGFzTWFwICYmIChhIGluc3RhbmNlb2YgTWFwKSAmJiAoYiBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpXG4gICAgICAgIGlmICghYi5oYXMoaS52YWx1ZVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgICAgICBpZiAoIWVxdWFsKGkudmFsdWVbMV0sIGIuZ2V0KGkudmFsdWVbMF0pKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhhc1NldCAmJiAoYSBpbnN0YW5jZW9mIFNldCkgJiYgKGIgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gRU5EOiBNb2RpZmljYXRpb25zXG5cbiAgICBpZiAoaGFzQXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGEpICYmIEFycmF5QnVmZmVyLmlzVmlldyhiKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoYS5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG4gICAgaWYgKGEudmFsdWVPZiAhPT0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKSByZXR1cm4gYS52YWx1ZU9mKCkgPT09IGIudmFsdWVPZigpO1xuICAgIGlmIChhLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEVORDogZmFzdC1kZWVwLWVxdWFsXG5cbiAgICAvLyBTVEFSVDogcmVhY3QtZmFzdC1jb21wYXJlXG4gICAgLy8gY3VzdG9tIGhhbmRsaW5nIGZvciBET00gZWxlbWVudHNcbiAgICBpZiAoaGFzRWxlbWVudFR5cGUgJiYgYSBpbnN0YW5jZW9mIEVsZW1lbnQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIGN1c3RvbSBoYW5kbGluZyBmb3IgUmVhY3QvUHJlYWN0XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBpZiAoKGtleXNbaV0gPT09ICdfb3duZXInIHx8IGtleXNbaV0gPT09ICdfX3YnIHx8IGtleXNbaV0gPT09ICdfX28nKSAmJiBhLiQkdHlwZW9mKSB7XG4gICAgICAgIC8vIFJlYWN0LXNwZWNpZmljOiBhdm9pZCB0cmF2ZXJzaW5nIFJlYWN0IGVsZW1lbnRzJyBfb3duZXJcbiAgICAgICAgLy8gUHJlYWN0LXNwZWNpZmljOiBhdm9pZCB0cmF2ZXJzaW5nIFByZWFjdCBlbGVtZW50cycgX192IGFuZCBfX29cbiAgICAgICAgLy8gICAgX192ID0gJF9vcmlnaW5hbCAvICRfdm5vZGVcbiAgICAgICAgLy8gICAgX19vID0gJF9vd25lclxuICAgICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGNvbnRhaW4gY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgYXJlIG5vdCBuZWVkZWQgd2hlblxuICAgICAgICAvLyBjb21wYXJpbmcgdGhlIGFjdHVhbCBlbGVtZW50cyAoYW5kIG5vdCB0aGVpciBvd25lcnMpXG4gICAgICAgIC8vIC4kJHR5cGVvZiBhbmQgLl9zdG9yZSBvbiBqdXN0IHJlYXNvbmFibGUgbWFya2VycyBvZiBlbGVtZW50c1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBhbGwgb3RoZXIgcHJvcGVydGllcyBzaG91bGQgYmUgdHJhdmVyc2VkIGFzIHVzdWFsXG4gICAgICBpZiAoIWVxdWFsKGFba2V5c1tpXV0sIGJba2V5c1tpXV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIEVORDogcmVhY3QtZmFzdC1jb21wYXJlXG5cbiAgICAvLyBTVEFSVDogZmFzdC1kZWVwLWVxdWFsXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuLy8gZW5kIGZhc3QtZGVlcC1lcXVhbFxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRXF1YWwoYSwgYikge1xuICB0cnkge1xuICAgIHJldHVybiBlcXVhbChhLCBiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKChlcnJvci5tZXNzYWdlIHx8ICcnKS5tYXRjaCgvc3RhY2t8cmVjdXJzaW9uL2kpKSkge1xuICAgICAgLy8gd2FybiBvbiBjaXJjdWxhciByZWZlcmVuY2VzLCBkb24ndCBjcmFzaFxuICAgICAgLy8gYnJvd3NlcnMgZ2l2ZSB0aGlzIGRpZmZlcmVudCBlcnJvcnMgbmFtZSBhbmQgbWVzc2FnZXM6XG4gICAgICAvLyBjaHJvbWUvc2FmYXJpOiBcIlJhbmdlRXJyb3JcIiwgXCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiXG4gICAgICAvLyBmaXJlZm94OiBcIkludGVybmFsRXJyb3JcIiwgdG9vIG11Y2ggcmVjdXJzaW9uXCJcbiAgICAgIC8vIGVkZ2U6IFwiRXJyb3JcIiwgXCJPdXQgb2Ygc3RhY2sgc3BhY2VcIlxuICAgICAgY29uc29sZS53YXJuKCdyZWFjdC1mYXN0LWNvbXBhcmUgY2Fubm90IGhhbmRsZSBjaXJjdWxhciByZWZzJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIHNvbWUgb3RoZXIgZXJyb3IuIHdlIHNob3VsZCBkZWZpbml0ZWx5IGtub3cgYWJvdXQgdGhlc2VcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcbiIsImV4cG9ydCB2YXIgeGh0bWwgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzdmc6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgeGh0bWw6IHhodG1sLFxuICB4bGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gIHhtbDogXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIlxufTtcbiIsImltcG9ydCBuYW1lc3BhY2VzIGZyb20gXCIuL25hbWVzcGFjZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgcHJlZml4ID0gbmFtZSArPSBcIlwiLCBpID0gcHJlZml4LmluZGV4T2YoXCI6XCIpO1xuICBpZiAoaSA+PSAwICYmIChwcmVmaXggPSBuYW1lLnNsaWNlKDAsIGkpKSAhPT0gXCJ4bWxuc1wiKSBuYW1lID0gbmFtZS5zbGljZShpICsgMSk7XG4gIHJldHVybiBuYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByZWZpeCkgPyB7c3BhY2U6IG5hbWVzcGFjZXNbcHJlZml4XSwgbG9jYWw6IG5hbWV9IDogbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbn1cbiIsImltcG9ydCBuYW1lc3BhY2UgZnJvbSBcIi4vbmFtZXNwYWNlLmpzXCI7XG5pbXBvcnQge3hodG1sfSBmcm9tIFwiLi9uYW1lc3BhY2VzLmpzXCI7XG5cbmZ1bmN0aW9uIGNyZWF0b3JJbmhlcml0KG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkb2N1bWVudCA9IHRoaXMub3duZXJEb2N1bWVudCxcbiAgICAgICAgdXJpID0gdGhpcy5uYW1lc3BhY2VVUkk7XG4gICAgcmV0dXJuIHVyaSA9PT0geGh0bWwgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSSSA9PT0geGh0bWxcbiAgICAgICAgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpXG4gICAgICAgIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHVyaSwgbmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0b3JGaXhlZChmdWxsbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG4gIHJldHVybiAoZnVsbG5hbWUubG9jYWxcbiAgICAgID8gY3JlYXRvckZpeGVkXG4gICAgICA6IGNyZWF0b3JJbmhlcml0KShmdWxsbmFtZSk7XG59XG4iLCJmdW5jdGlvbiBub25lKCkge31cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBub25lIDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIH07XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIGlmICh0eXBlb2Ygc2VsZWN0ICE9PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IHNlbGVjdG9yKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzdWJncm91cCA9IHN1Ymdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgc3Vibm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiAoc3Vibm9kZSA9IHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkpIHtcbiAgICAgICAgaWYgKFwiX19kYXRhX19cIiBpbiBub2RlKSBzdWJub2RlLl9fZGF0YV9fID0gbm9kZS5fX2RhdGFfXztcbiAgICAgICAgc3ViZ3JvdXBbaV0gPSBzdWJub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBcImxlbmd0aFwiIGluIHhcbiAgICA/IHggLy8gQXJyYXksIFR5cGVkQXJyYXksIE5vZGVMaXN0LCBhcnJheS1saWtlXG4gICAgOiBBcnJheS5mcm9tKHgpOyAvLyBNYXAsIFNldCwgaXRlcmFibGUsIHN0cmluZywgb3IgYW55dGhpbmcgZWxzZVxufVxuIiwiZnVuY3Rpb24gZW1wdHkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBlbXB0eSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICB9O1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4uL2FycmF5LmpzXCI7XG5pbXBvcnQgc2VsZWN0b3JBbGwgZnJvbSBcIi4uL3NlbGVjdG9yQWxsLmpzXCI7XG5cbmZ1bmN0aW9uIGFycmF5QWxsKHNlbGVjdCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGdyb3VwID0gc2VsZWN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGdyb3VwID09IG51bGwgPyBbXSA6IGFycmF5KGdyb3VwKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIGlmICh0eXBlb2Ygc2VsZWN0ID09PSBcImZ1bmN0aW9uXCIpIHNlbGVjdCA9IGFycmF5QWxsKHNlbGVjdCk7XG4gIGVsc2Ugc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzdWJncm91cHMucHVzaChzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCBwYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkTWF0Y2hlcihzZWxlY3Rvcikge1xuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm1hdGNoZXMoc2VsZWN0b3IpO1xuICB9O1xufVxuXG4iLCJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbmQgPSBBcnJheS5wcm90b3R5cGUuZmluZDtcblxuZnVuY3Rpb24gY2hpbGRGaW5kKG1hdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZmluZC5jYWxsKHRoaXMuY2hpbGRyZW4sIG1hdGNoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2hpbGRGaXJzdCgpIHtcbiAgcmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChtYXRjaCA9PSBudWxsID8gY2hpbGRGaXJzdFxuICAgICAgOiBjaGlsZEZpbmQodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiIsImltcG9ydCB7Y2hpbGRNYXRjaGVyfSBmcm9tIFwiLi4vbWF0Y2hlci5qc1wiO1xuXG52YXIgZmlsdGVyID0gQXJyYXkucHJvdG90eXBlLmZpbHRlcjtcblxuZnVuY3Rpb24gY2hpbGRyZW4oKSB7XG4gIHJldHVybiB0aGlzLmNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBjaGlsZHJlbkZpbHRlcihtYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZpbHRlci5jYWxsKHRoaXMuY2hpbGRyZW4sIG1hdGNoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0QWxsKG1hdGNoID09IG51bGwgPyBjaGlsZHJlblxuICAgICAgOiBjaGlsZHJlbkZpbHRlcih0eXBlb2YgbWF0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IG1hdGNoIDogY2hpbGRNYXRjaGVyKG1hdGNoKSkpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgbWF0Y2hlciBmcm9tIFwiLi4vbWF0Y2hlci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXRjaCkge1xuICBpZiAodHlwZW9mIG1hdGNoICE9PSBcImZ1bmN0aW9uXCIpIG1hdGNoID0gbWF0Y2hlcihtYXRjaCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzdWJncm91cCA9IHN1Ymdyb3Vwc1tqXSA9IFtdLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIG1hdGNoLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSB7XG4gICAgICAgIHN1Ymdyb3VwLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHVwZGF0ZSkge1xuICByZXR1cm4gbmV3IEFycmF5KHVwZGF0ZS5sZW5ndGgpO1xufVxuIiwiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2UuanNcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZW50ZXIgfHwgdGhpcy5fZ3JvdXBzLm1hcChzcGFyc2UpLCB0aGlzLl9wYXJlbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudGVyTm9kZShwYXJlbnQsIGRhdHVtKSB7XG4gIHRoaXMub3duZXJEb2N1bWVudCA9IHBhcmVudC5vd25lckRvY3VtZW50O1xuICB0aGlzLm5hbWVzcGFjZVVSSSA9IHBhcmVudC5uYW1lc3BhY2VVUkk7XG4gIHRoaXMuX25leHQgPSBudWxsO1xuICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gIHRoaXMuX19kYXRhX18gPSBkYXR1bTtcbn1cblxuRW50ZXJOb2RlLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IEVudGVyTm9kZSxcbiAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKSB7IHJldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCB0aGlzLl9uZXh0KTsgfSxcbiAgaW5zZXJ0QmVmb3JlOiBmdW5jdGlvbihjaGlsZCwgbmV4dCkgeyByZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgbmV4dCk7IH0sXG4gIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7IHJldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7IH0sXG4gIHF1ZXJ5U2VsZWN0b3JBbGw6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7IHJldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7IH1cbn07XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHtFbnRlck5vZGV9IGZyb20gXCIuL2VudGVyLmpzXCI7XG5pbXBvcnQgYXJyYXkgZnJvbSBcIi4uL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4uL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGJpbmRJbmRleChwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhKSB7XG4gIHZhciBpID0gMCxcbiAgICAgIG5vZGUsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZml0IGludG8gdXBkYXRlLlxuICAvLyBQdXQgYW55IG51bGwgbm9kZXMgaW50byBlbnRlci5cbiAgLy8gUHV0IGFueSByZW1haW5pbmcgZGF0YSBpbnRvIGVudGVyLlxuICBmb3IgKDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGRvbuKAmXQgZml0IGludG8gZXhpdC5cbiAgZm9yICg7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJpbmRLZXkocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSwga2V5KSB7XG4gIHZhciBpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVCeUtleVZhbHVlID0gbmV3IE1hcCxcbiAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoLFxuICAgICAga2V5VmFsdWVzID0gbmV3IEFycmF5KGdyb3VwTGVuZ3RoKSxcbiAgICAgIGtleVZhbHVlO1xuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBub2RlLlxuICAvLyBJZiBtdWx0aXBsZSBub2RlcyBoYXZlIHRoZSBzYW1lIGtleSwgdGhlIGR1cGxpY2F0ZXMgYXJlIGFkZGVkIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAga2V5VmFsdWVzW2ldID0ga2V5VmFsdWUgPSBrZXkuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkgKyBcIlwiO1xuICAgICAgaWYgKG5vZGVCeUtleVZhbHVlLmhhcyhrZXlWYWx1ZSkpIHtcbiAgICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlQnlLZXlWYWx1ZS5zZXQoa2V5VmFsdWUsIG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGtleSBmb3IgZWFjaCBkYXR1bS5cbiAgLy8gSWYgdGhlcmUgYSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleSwgam9pbiBhbmQgYWRkIGl0IHRvIHVwZGF0ZS5cbiAgLy8gSWYgdGhlcmUgaXMgbm90IChvciB0aGUga2V5IGlzIGEgZHVwbGljYXRlKSwgYWRkIGl0IHRvIGVudGVyLlxuICBmb3IgKGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKSB7XG4gICAga2V5VmFsdWUgPSBrZXkuY2FsbChwYXJlbnQsIGRhdGFbaV0sIGksIGRhdGEpICsgXCJcIjtcbiAgICBpZiAobm9kZSA9IG5vZGVCeUtleVZhbHVlLmdldChrZXlWYWx1ZSkpIHtcbiAgICAgIHVwZGF0ZVtpXSA9IG5vZGU7XG4gICAgICBub2RlLl9fZGF0YV9fID0gZGF0YVtpXTtcbiAgICAgIG5vZGVCeUtleVZhbHVlLmRlbGV0ZShrZXlWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudGVyW2ldID0gbmV3IEVudGVyTm9kZShwYXJlbnQsIGRhdGFbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBhbnkgcmVtYWluaW5nIG5vZGVzIHRoYXQgd2VyZSBub3QgYm91bmQgdG8gZGF0YSB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiAobm9kZUJ5S2V5VmFsdWUuZ2V0KGtleVZhbHVlc1tpXSkgPT09IG5vZGUpKSB7XG4gICAgICBleGl0W2ldID0gbm9kZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGF0dW0obm9kZSkge1xuICByZXR1cm4gbm9kZS5fX2RhdGFfXztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBBcnJheS5mcm9tKHRoaXMsIGRhdHVtKTtcblxuICB2YXIgYmluZCA9IGtleSA/IGJpbmRLZXkgOiBiaW5kSW5kZXgsXG4gICAgICBwYXJlbnRzID0gdGhpcy5fcGFyZW50cyxcbiAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHZhbHVlID0gY29uc3RhbnQodmFsdWUpO1xuXG4gIGZvciAodmFyIG0gPSBncm91cHMubGVuZ3RoLCB1cGRhdGUgPSBuZXcgQXJyYXkobSksIGVudGVyID0gbmV3IEFycmF5KG0pLCBleGl0ID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW2pdLFxuICAgICAgICBncm91cCA9IGdyb3Vwc1tqXSxcbiAgICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICAgIGRhdGEgPSBhcnJheSh2YWx1ZS5jYWxsKHBhcmVudCwgcGFyZW50ICYmIHBhcmVudC5fX2RhdGFfXywgaiwgcGFyZW50cykpLFxuICAgICAgICBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgsXG4gICAgICAgIGVudGVyR3JvdXAgPSBlbnRlcltqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgdXBkYXRlR3JvdXAgPSB1cGRhdGVbal0gPSBuZXcgQXJyYXkoZGF0YUxlbmd0aCksXG4gICAgICAgIGV4aXRHcm91cCA9IGV4aXRbal0gPSBuZXcgQXJyYXkoZ3JvdXBMZW5ndGgpO1xuXG4gICAgYmluZChwYXJlbnQsIGdyb3VwLCBlbnRlckdyb3VwLCB1cGRhdGVHcm91cCwgZXhpdEdyb3VwLCBkYXRhLCBrZXkpO1xuXG4gICAgLy8gTm93IGNvbm5lY3QgdGhlIGVudGVyIG5vZGVzIHRvIHRoZWlyIGZvbGxvd2luZyB1cGRhdGUgbm9kZSwgc3VjaCB0aGF0XG4gICAgLy8gYXBwZW5kQ2hpbGQgY2FuIGluc2VydCB0aGUgbWF0ZXJpYWxpemVkIGVudGVyIG5vZGUgYmVmb3JlIHRoaXMgbm9kZSxcbiAgICAvLyByYXRoZXIgdGhhbiBhdCB0aGUgZW5kIG9mIHRoZSBwYXJlbnQgbm9kZS5cbiAgICBmb3IgKHZhciBpMCA9IDAsIGkxID0gMCwgcHJldmlvdXMsIG5leHQ7IGkwIDwgZGF0YUxlbmd0aDsgKytpMCkge1xuICAgICAgaWYgKHByZXZpb3VzID0gZW50ZXJHcm91cFtpMF0pIHtcbiAgICAgICAgaWYgKGkwID49IGkxKSBpMSA9IGkwICsgMTtcbiAgICAgICAgd2hpbGUgKCEobmV4dCA9IHVwZGF0ZUdyb3VwW2kxXSkgJiYgKytpMSA8IGRhdGFMZW5ndGgpO1xuICAgICAgICBwcmV2aW91cy5fbmV4dCA9IG5leHQgfHwgbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGUgPSBuZXcgU2VsZWN0aW9uKHVwZGF0ZSwgcGFyZW50cyk7XG4gIHVwZGF0ZS5fZW50ZXIgPSBlbnRlcjtcbiAgdXBkYXRlLl9leGl0ID0gZXhpdDtcbiAgcmV0dXJuIHVwZGF0ZTtcbn1cbiIsImltcG9ydCBzcGFyc2UgZnJvbSBcIi4vc3BhcnNlLmpzXCI7XG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2V4aXQgfHwgdGhpcy5fZ3JvdXBzLm1hcChzcGFyc2UpLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9uZW50ZXIsIG9udXBkYXRlLCBvbmV4aXQpIHtcbiAgdmFyIGVudGVyID0gdGhpcy5lbnRlcigpLCB1cGRhdGUgPSB0aGlzLCBleGl0ID0gdGhpcy5leGl0KCk7XG4gIGVudGVyID0gdHlwZW9mIG9uZW50ZXIgPT09IFwiZnVuY3Rpb25cIiA/IG9uZW50ZXIoZW50ZXIpIDogZW50ZXIuYXBwZW5kKG9uZW50ZXIgKyBcIlwiKTtcbiAgaWYgKG9udXBkYXRlICE9IG51bGwpIHVwZGF0ZSA9IG9udXBkYXRlKHVwZGF0ZSk7XG4gIGlmIChvbmV4aXQgPT0gbnVsbCkgZXhpdC5yZW1vdmUoKTsgZWxzZSBvbmV4aXQoZXhpdCk7XG4gIHJldHVybiBlbnRlciAmJiB1cGRhdGUgPyBlbnRlci5tZXJnZSh1cGRhdGUpLm9yZGVyKCkgOiB1cGRhdGU7XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0aW9uKSB7XG4gIGlmICghKHNlbGVjdGlvbiBpbnN0YW5jZW9mIFNlbGVjdGlvbikpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgbWVyZ2VcIik7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHNlbGVjdGlvbi5fZ3JvdXBzLCBtMCA9IGdyb3VwczAubGVuZ3RoLCBtMSA9IGdyb3VwczEubGVuZ3RoLCBtID0gTWF0aC5taW4obTAsIG0xKSwgbWVyZ2VzID0gbmV3IEFycmF5KG0wKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cDAgPSBncm91cHMwW2pdLCBncm91cDEgPSBncm91cHMxW2pdLCBuID0gZ3JvdXAwLmxlbmd0aCwgbWVyZ2UgPSBtZXJnZXNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwMFtpXSB8fCBncm91cDFbaV0pIHtcbiAgICAgICAgbWVyZ2VbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBqIDwgbTA7ICsraikge1xuICAgIG1lcmdlc1tqXSA9IGdyb3VwczBbal07XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gLTEsIG0gPSBncm91cHMubGVuZ3RoOyArK2ogPCBtOykge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gZ3JvdXAubGVuZ3RoIC0gMSwgbmV4dCA9IGdyb3VwW2ldLCBub2RlOyAtLWkgPj0gMDspIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgaWYgKG5leHQgJiYgbm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuZXh0KSBeIDQpIG5leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgbmV4dCk7XG4gICAgICAgIG5leHQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgaWYgKCFjb21wYXJlKSBjb21wYXJlID0gYXNjZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGNvbXBhcmVOb2RlKGEsIGIpIHtcbiAgICByZXR1cm4gYSAmJiBiID8gY29tcGFyZShhLl9fZGF0YV9fLCBiLl9fZGF0YV9fKSA6ICFhIC0gIWI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzb3J0Z3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzb3J0Z3JvdXAgPSBzb3J0Z3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzb3J0Z3JvdXBbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0Z3JvdXAuc29ydChjb21wYXJlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzb3J0Z3JvdXBzLCB0aGlzLl9wYXJlbnRzKS5vcmRlcigpO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzWzBdO1xuICBhcmd1bWVudHNbMF0gPSB0aGlzO1xuICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgbm9kZSA9IGdyb3VwW2ldO1xuICAgICAgaWYgKG5vZGUpIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzaXplID0gMDtcbiAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMpICsrc2l6ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICByZXR1cm4gc2l6ZTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gIXRoaXMubm9kZSgpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkgY2FsbGJhY2suY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuLi9uYW1lc3BhY2UuanNcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnROUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdik7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgcmV0dXJuIGZ1bGxuYW1lLmxvY2FsXG4gICAgICAgID8gbm9kZS5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpXG4gICAgICAgIDogbm9kZS5nZXRBdHRyaWJ1dGUoZnVsbG5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbilcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKSkoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlKSB7XG4gIHJldHVybiAobm9kZS5vd25lckRvY3VtZW50ICYmIG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgLy8gbm9kZSBpcyBhIE5vZGVcbiAgICAgIHx8IChub2RlLmRvY3VtZW50ICYmIG5vZGUpIC8vIG5vZGUgaXMgYSBXaW5kb3dcbiAgICAgIHx8IG5vZGUuZGVmYXVsdFZpZXc7IC8vIG5vZGUgaXMgYSBEb2N1bWVudFxufVxuIiwiaW1wb3J0IGRlZmF1bHRWaWV3IGZyb20gXCIuLi93aW5kb3cuanNcIjtcblxuZnVuY3Rpb24gc3R5bGVSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVDb25zdGFudChuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUsIHByaW9yaXR5KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVGdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2LCBwcmlvcml0eSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDFcbiAgICAgID8gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgICA/IHN0eWxlUmVtb3ZlIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgID8gc3R5bGVGdW5jdGlvblxuICAgICAgICAgICAgOiBzdHlsZUNvbnN0YW50KShuYW1lLCB2YWx1ZSwgcHJpb3JpdHkgPT0gbnVsbCA/IFwiXCIgOiBwcmlvcml0eSkpXG4gICAgICA6IHN0eWxlVmFsdWUodGhpcy5ub2RlKCksIG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVWYWx1ZShub2RlLCBuYW1lKSB7XG4gIHJldHVybiBub2RlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSlcbiAgICAgIHx8IGRlZmF1bHRWaWV3KG5vZGUpLmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKTtcbn1cbiIsImZ1bmN0aW9uIHByb3BlcnR5UmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGRlbGV0ZSB0aGlzW25hbWVdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUNvbnN0YW50KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzW25hbWVdID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5RnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSBkZWxldGUgdGhpc1tuYW1lXTtcbiAgICBlbHNlIHRoaXNbbmFtZV0gPSB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDFcbiAgICAgID8gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyBwcm9wZXJ0eVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBwcm9wZXJ0eUZ1bmN0aW9uXG4gICAgICAgICAgOiBwcm9wZXJ0eUNvbnN0YW50KShuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpW25hbWVdO1xufVxuIiwiZnVuY3Rpb24gY2xhc3NBcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy50cmltKCkuc3BsaXQoL158XFxzKy8pO1xufVxuXG5mdW5jdGlvbiBjbGFzc0xpc3Qobm9kZSkge1xuICByZXR1cm4gbm9kZS5jbGFzc0xpc3QgfHwgbmV3IENsYXNzTGlzdChub2RlKTtcbn1cblxuZnVuY3Rpb24gQ2xhc3NMaXN0KG5vZGUpIHtcbiAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gIHRoaXMuX25hbWVzID0gY2xhc3NBcnJheShub2RlLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIpO1xufVxuXG5DbGFzc0xpc3QucHJvdG90eXBlID0ge1xuICBhZGQ6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgaSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgaWYgKGkgPCAwKSB7XG4gICAgICB0aGlzLl9uYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB0aGlzLl9uYW1lcy5qb2luKFwiIFwiKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmU6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgaSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgdGhpcy5fbmFtZXMuc3BsaWNlKGksIDEpO1xuICAgICAgdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB0aGlzLl9uYW1lcy5qb2luKFwiIFwiKSk7XG4gICAgfVxuICB9LFxuICBjb250YWluczogZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpID49IDA7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNsYXNzZWRBZGQobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QuYWRkKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFJlbW92ZShub2RlLCBuYW1lcykge1xuICB2YXIgbGlzdCA9IGNsYXNzTGlzdChub2RlKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbikgbGlzdC5yZW1vdmUobmFtZXNbaV0pO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkVHJ1ZShuYW1lcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY2xhc3NlZEFkZCh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRGYWxzZShuYW1lcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY2xhc3NlZFJlbW92ZSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRGdW5jdGlvbihuYW1lcywgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICh2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpID8gY2xhc3NlZEFkZCA6IGNsYXNzZWRSZW1vdmUpKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIG5hbWVzID0gY2xhc3NBcnJheShuYW1lICsgXCJcIik7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIGxpc3QgPSBjbGFzc0xpc3QodGhpcy5ub2RlKCkpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICghbGlzdC5jb250YWlucyhuYW1lc1tpXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNsYXNzZWRGdW5jdGlvbiA6IHZhbHVlXG4gICAgICA/IGNsYXNzZWRUcnVlXG4gICAgICA6IGNsYXNzZWRGYWxzZSkobmFtZXMsIHZhbHVlKSk7XG59XG4iLCJmdW5jdGlvbiB0ZXh0UmVtb3ZlKCkge1xuICB0aGlzLnRleHRDb250ZW50ID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gdGV4dENvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRleHRGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2ID09IG51bGwgPyBcIlwiIDogdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IHRleHRSZW1vdmUgOiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHRleHRGdW5jdGlvblxuICAgICAgICAgIDogdGV4dENvbnN0YW50KSh2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpLnRleHRDb250ZW50O1xufVxuIiwiZnVuY3Rpb24gaHRtbFJlbW92ZSgpIHtcbiAgdGhpcy5pbm5lckhUTUwgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiBodG1sQ29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW5uZXJIVE1MID0gdmFsdWU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGh0bWxGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHRoaXMuaW5uZXJIVE1MID0gdiA9PSBudWxsID8gXCJcIiA6IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyBodG1sUmVtb3ZlIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBodG1sRnVuY3Rpb25cbiAgICAgICAgICA6IGh0bWxDb25zdGFudCkodmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKS5pbm5lckhUTUw7XG59XG4iLCJmdW5jdGlvbiByYWlzZSgpIHtcbiAgaWYgKHRoaXMubmV4dFNpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gocmFpc2UpO1xufVxuIiwiZnVuY3Rpb24gbG93ZXIoKSB7XG4gIGlmICh0aGlzLnByZXZpb3VzU2libGluZykgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLCB0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKGxvd2VyKTtcbn1cbiIsImltcG9ydCBjcmVhdG9yIGZyb20gXCIuLi9jcmVhdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZENoaWxkKGNyZWF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfSk7XG59XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvci5qc1wiO1xuaW1wb3J0IHNlbGVjdG9yIGZyb20gXCIuLi9zZWxlY3Rvci5qc1wiO1xuXG5mdW5jdGlvbiBjb25zdGFudE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBiZWZvcmUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKSxcbiAgICAgIHNlbGVjdCA9IGJlZm9yZSA9PSBudWxsID8gY29uc3RhbnROdWxsIDogdHlwZW9mIGJlZm9yZSA9PT0gXCJmdW5jdGlvblwiID8gYmVmb3JlIDogc2VsZWN0b3IoYmVmb3JlKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmluc2VydEJlZm9yZShjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgc2VsZWN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgbnVsbCk7XG4gIH0pO1xufVxuIiwiZnVuY3Rpb24gcmVtb3ZlKCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICBpZiAocGFyZW50KSBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKHJlbW92ZSk7XG59XG4iLCJmdW5jdGlvbiBzZWxlY3Rpb25fY2xvbmVTaGFsbG93KCkge1xuICB2YXIgY2xvbmUgPSB0aGlzLmNsb25lTm9kZShmYWxzZSksIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5pbnNlcnRCZWZvcmUoY2xvbmUsIHRoaXMubmV4dFNpYmxpbmcpIDogY2xvbmU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbl9jbG9uZURlZXAoKSB7XG4gIHZhciBjbG9uZSA9IHRoaXMuY2xvbmVOb2RlKHRydWUpLCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNsb25lLCB0aGlzLm5leHRTaWJsaW5nKSA6IGNsb25lO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWVwKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChkZWVwID8gc2VsZWN0aW9uX2Nsb25lRGVlcCA6IHNlbGVjdGlvbl9jbG9uZVNoYWxsb3cpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5wcm9wZXJ0eShcIl9fZGF0YV9fXCIsIHZhbHVlKVxuICAgICAgOiB0aGlzLm5vZGUoKS5fX2RhdGFfXztcbn1cbiIsImZ1bmN0aW9uIGNvbnRleHRMaXN0ZW5lcihsaXN0ZW5lcikge1xuICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICBsaXN0ZW5lci5jYWxsKHRoaXMsIGV2ZW50LCB0aGlzLl9fZGF0YV9fKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25SZW1vdmUodHlwZW5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbjtcbiAgICBpZiAoIW9uKSByZXR1cm47XG4gICAgZm9yICh2YXIgaiA9IDAsIGkgPSAtMSwgbSA9IG9uLmxlbmd0aCwgbzsgaiA8IG07ICsraikge1xuICAgICAgaWYgKG8gPSBvbltqXSwgKCF0eXBlbmFtZS50eXBlIHx8IG8udHlwZSA9PT0gdHlwZW5hbWUudHlwZSkgJiYgby5uYW1lID09PSB0eXBlbmFtZS5uYW1lKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIsIG8ub3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblsrK2ldID0gbztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCsraSkgb24ubGVuZ3RoID0gaTtcbiAgICBlbHNlIGRlbGV0ZSB0aGlzLl9fb247XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9uQWRkKHR5cGVuYW1lLCB2YWx1ZSwgb3B0aW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG9uID0gdGhpcy5fX29uLCBvLCBsaXN0ZW5lciA9IGNvbnRleHRMaXN0ZW5lcih2YWx1ZSk7XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgICAgaWYgKChvID0gb25bal0pLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUgJiYgby5uYW1lID09PSB0eXBlbmFtZS5uYW1lKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIsIG8ub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIgPSBsaXN0ZW5lciwgby5vcHRpb25zID0gb3B0aW9ucyk7XG4gICAgICAgIG8udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodHlwZW5hbWUudHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgIG8gPSB7dHlwZTogdHlwZW5hbWUudHlwZSwgbmFtZTogdHlwZW5hbWUubmFtZSwgdmFsdWU6IHZhbHVlLCBsaXN0ZW5lcjogbGlzdGVuZXIsIG9wdGlvbnM6IG9wdGlvbnN9O1xuICAgIGlmICghb24pIHRoaXMuX19vbiA9IFtvXTtcbiAgICBlbHNlIG9uLnB1c2gobyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGVuYW1lLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdHlwZW5hbWVzID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiKSwgaSwgbiA9IHR5cGVuYW1lcy5sZW5ndGgsIHQ7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIG9uID0gdGhpcy5ub2RlKCkuX19vbjtcbiAgICBpZiAob24pIGZvciAodmFyIGogPSAwLCBtID0gb24ubGVuZ3RoLCBvOyBqIDwgbTsgKytqKSB7XG4gICAgICBmb3IgKGkgPSAwLCBvID0gb25bal07IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKCh0ID0gdHlwZW5hbWVzW2ldKS50eXBlID09PSBvLnR5cGUgJiYgdC5uYW1lID09PSBvLm5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBvbiA9IHZhbHVlID8gb25BZGQgOiBvblJlbW92ZTtcbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgdGhpcy5lYWNoKG9uKHR5cGVuYW1lc1tpXSwgdmFsdWUsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KG5vZGUsIHR5cGUsIHBhcmFtcykge1xuICB2YXIgd2luZG93ID0gZGVmYXVsdFZpZXcobm9kZSksXG4gICAgICBldmVudCA9IHdpbmRvdy5DdXN0b21FdmVudDtcblxuICBpZiAodHlwZW9mIGV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBldmVudCA9IG5ldyBldmVudCh0eXBlLCBwYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7XG4gICAgaWYgKHBhcmFtcykgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIHBhcmFtcy5idWJibGVzLCBwYXJhbXMuY2FuY2VsYWJsZSksIGV2ZW50LmRldGFpbCA9IHBhcmFtcy5kZXRhaWw7XG4gICAgZWxzZSBldmVudC5pbml0RXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgfVxuXG4gIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoQ29uc3RhbnQodHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2hFdmVudCh0aGlzLCB0eXBlLCBwYXJhbXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaEZ1bmN0aW9uKHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGRpc3BhdGNoRnVuY3Rpb25cbiAgICAgIDogZGlzcGF0Y2hDb25zdGFudCkodHlwZSwgcGFyYW1zKSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB5aWVsZCBub2RlO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdEFsbCBmcm9tIFwiLi9zZWxlY3RBbGwuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2VsZWN0Q2hpbGQgZnJvbSBcIi4vc2VsZWN0Q2hpbGQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2VsZWN0Q2hpbGRyZW4gZnJvbSBcIi4vc2VsZWN0Q2hpbGRyZW4uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXRhIGZyb20gXCIuL2RhdGEuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW50ZXIgZnJvbSBcIi4vZW50ZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZXhpdCBmcm9tIFwiLi9leGl0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2pvaW4gZnJvbSBcIi4vam9pbi5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9tZXJnZSBmcm9tIFwiLi9tZXJnZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9vcmRlciBmcm9tIFwiLi9vcmRlci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zb3J0IGZyb20gXCIuL3NvcnQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2FsbCBmcm9tIFwiLi9jYWxsLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX25vZGVzIGZyb20gXCIuL25vZGVzLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX25vZGUgZnJvbSBcIi4vbm9kZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zaXplIGZyb20gXCIuL3NpemUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW1wdHkgZnJvbSBcIi4vZW1wdHkuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZWFjaCBmcm9tIFwiLi9lYWNoLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2F0dHIgZnJvbSBcIi4vYXR0ci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9wcm9wZXJ0eSBmcm9tIFwiLi9wcm9wZXJ0eS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9jbGFzc2VkIGZyb20gXCIuL2NsYXNzZWQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fdGV4dCBmcm9tIFwiLi90ZXh0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2h0bWwgZnJvbSBcIi4vaHRtbC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9yYWlzZSBmcm9tIFwiLi9yYWlzZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9sb3dlciBmcm9tIFwiLi9sb3dlci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9hcHBlbmQgZnJvbSBcIi4vYXBwZW5kLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2luc2VydCBmcm9tIFwiLi9pbnNlcnQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fcmVtb3ZlIGZyb20gXCIuL3JlbW92ZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9jbG9uZSBmcm9tIFwiLi9jbG9uZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXR1bSBmcm9tIFwiLi9kYXR1bS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9vbiBmcm9tIFwiLi9vbi5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9kaXNwYXRjaCBmcm9tIFwiLi9kaXNwYXRjaC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9pdGVyYXRvciBmcm9tIFwiLi9pdGVyYXRvci5qc1wiO1xuXG5leHBvcnQgdmFyIHJvb3QgPSBbbnVsbF07XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3Rpb24oZ3JvdXBzLCBwYXJlbnRzKSB7XG4gIHRoaXMuX2dyb3VwcyA9IGdyb3VwcztcbiAgdGhpcy5fcGFyZW50cyA9IHBhcmVudHM7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSwgcm9vdCk7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbl9zZWxlY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzO1xufVxuXG5TZWxlY3Rpb24ucHJvdG90eXBlID0gc2VsZWN0aW9uLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFNlbGVjdGlvbixcbiAgc2VsZWN0OiBzZWxlY3Rpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHNlbGVjdGlvbl9zZWxlY3RBbGwsXG4gIHNlbGVjdENoaWxkOiBzZWxlY3Rpb25fc2VsZWN0Q2hpbGQsXG4gIHNlbGVjdENoaWxkcmVuOiBzZWxlY3Rpb25fc2VsZWN0Q2hpbGRyZW4sXG4gIGZpbHRlcjogc2VsZWN0aW9uX2ZpbHRlcixcbiAgZGF0YTogc2VsZWN0aW9uX2RhdGEsXG4gIGVudGVyOiBzZWxlY3Rpb25fZW50ZXIsXG4gIGV4aXQ6IHNlbGVjdGlvbl9leGl0LFxuICBqb2luOiBzZWxlY3Rpb25fam9pbixcbiAgbWVyZ2U6IHNlbGVjdGlvbl9tZXJnZSxcbiAgc2VsZWN0aW9uOiBzZWxlY3Rpb25fc2VsZWN0aW9uLFxuICBvcmRlcjogc2VsZWN0aW9uX29yZGVyLFxuICBzb3J0OiBzZWxlY3Rpb25fc29ydCxcbiAgY2FsbDogc2VsZWN0aW9uX2NhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fbm9kZXMsXG4gIG5vZGU6IHNlbGVjdGlvbl9ub2RlLFxuICBzaXplOiBzZWxlY3Rpb25fc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9lbXB0eSxcbiAgZWFjaDogc2VsZWN0aW9uX2VhY2gsXG4gIGF0dHI6IHNlbGVjdGlvbl9hdHRyLFxuICBzdHlsZTogc2VsZWN0aW9uX3N0eWxlLFxuICBwcm9wZXJ0eTogc2VsZWN0aW9uX3Byb3BlcnR5LFxuICBjbGFzc2VkOiBzZWxlY3Rpb25fY2xhc3NlZCxcbiAgdGV4dDogc2VsZWN0aW9uX3RleHQsXG4gIGh0bWw6IHNlbGVjdGlvbl9odG1sLFxuICByYWlzZTogc2VsZWN0aW9uX3JhaXNlLFxuICBsb3dlcjogc2VsZWN0aW9uX2xvd2VyLFxuICBhcHBlbmQ6IHNlbGVjdGlvbl9hcHBlbmQsXG4gIGluc2VydDogc2VsZWN0aW9uX2luc2VydCxcbiAgcmVtb3ZlOiBzZWxlY3Rpb25fcmVtb3ZlLFxuICBjbG9uZTogc2VsZWN0aW9uX2Nsb25lLFxuICBkYXR1bTogc2VsZWN0aW9uX2RhdHVtLFxuICBvbjogc2VsZWN0aW9uX29uLFxuICBkaXNwYXRjaDogc2VsZWN0aW9uX2Rpc3BhdGNoLFxuICBbU3ltYm9sLml0ZXJhdG9yXTogc2VsZWN0aW9uX2l0ZXJhdG9yXG59O1xuXG5leHBvcnQgZGVmYXVsdCBzZWxlY3Rpb247XG4iLCJpbXBvcnQge1NlbGVjdGlvbiwgcm9vdH0gZnJvbSBcIi4vc2VsZWN0aW9uL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgID8gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpXV0sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKVxuICAgICAgOiBuZXcgU2VsZWN0aW9uKFtbc2VsZWN0b3JdXSwgcm9vdCk7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaW5pdFJhbmdlKGRvbWFpbiwgcmFuZ2UpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHRoaXMucmFuZ2UoZG9tYWluKTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhpcy5yYW5nZShyYW5nZSkuZG9tYWluKGRvbWFpbik7IGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEludGVycG9sYXRvcihkb21haW4sIGludGVycG9sYXRvcikge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMToge1xuICAgICAgaWYgKHR5cGVvZiBkb21haW4gPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoZG9tYWluKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShkb21haW4pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRoaXMuZG9tYWluKGRvbWFpbik7XG4gICAgICBpZiAodHlwZW9mIGludGVycG9sYXRvciA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihpbnRlcnBvbGF0b3IpO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGludGVycG9sYXRvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJpbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgY29uc3QgaW1wbGljaXQgPSBTeW1ib2woXCJpbXBsaWNpdFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkaW5hbCgpIHtcbiAgdmFyIGluZGV4ID0gbmV3IE1hcCgpLFxuICAgICAgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdW5rbm93biA9IGltcGxpY2l0O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKGQpIHtcbiAgICB2YXIga2V5ID0gZCArIFwiXCIsIGkgPSBpbmRleC5nZXQoa2V5KTtcbiAgICBpZiAoIWkpIHtcbiAgICAgIGlmICh1bmtub3duICE9PSBpbXBsaWNpdCkgcmV0dXJuIHVua25vd247XG4gICAgICBpbmRleC5zZXQoa2V5LCBpID0gZG9tYWluLnB1c2goZCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZ2VbKGkgLSAxKSAlIHJhbmdlLmxlbmd0aF07XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW10sIGluZGV4ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgXykge1xuICAgICAgY29uc3Qga2V5ID0gdmFsdWUgKyBcIlwiO1xuICAgICAgaWYgKGluZGV4LmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGluZGV4LnNldChrZXksIGRvbWFpbi5wdXNoKHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogdW5rbm93bjtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9yZGluYWwoZG9tYWluLCByYW5nZSkudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gIHZhciBuID0gc3BlY2lmaWVyLmxlbmd0aCAvIDYgfCAwLCBjb2xvcnMgPSBuZXcgQXJyYXkobiksIGkgPSAwO1xuICB3aGlsZSAoaSA8IG4pIGNvbG9yc1tpXSA9IFwiI1wiICsgc3BlY2lmaWVyLnNsaWNlKGkgKiA2LCArK2kgKiA2KTtcbiAgcmV0dXJuIGNvbG9ycztcbn1cbiIsImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2ZcIik7XG4iLCJpbXBvcnQgX3B0IGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTsgaWYgKF9pID09IG51bGwpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfcywgX2U7IHRyeSB7IGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdEZhdXhEb20gZnJvbSAncmVhY3QtZmF1eC1kb20nO1xuaW1wb3J0IGNsb3VkIGZyb20gJ2QzLWNsb3VkJztcbmltcG9ydCBpc0RlZXBFcXVhbCBmcm9tICdyZWFjdC1mYXN0LWNvbXBhcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IHNjYWxlT3JkaW5hbCB9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7IHNjaGVtZUNhdGVnb3J5MTAgfSBmcm9tICdkMy1zY2FsZS1jaHJvbWF0aWMnO1xudmFyIGRlZmF1bHRTY2FsZU9yZGluYWwgPSBzY2FsZU9yZGluYWwoc2NoZW1lQ2F0ZWdvcnkxMCk7XG5cbmZ1bmN0aW9uIFdvcmRDbG91ZChfcmVmKSB7XG4gIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgX3JlZiR3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/IDcwMCA6IF9yZWYkd2lkdGgsXG4gICAgICBfcmVmJGhlaWdodCA9IF9yZWYuaGVpZ2h0LFxuICAgICAgaGVpZ2h0ID0gX3JlZiRoZWlnaHQgPT09IHZvaWQgMCA/IDYwMCA6IF9yZWYkaGVpZ2h0LFxuICAgICAgX3JlZiRmb250ID0gX3JlZi5mb250LFxuICAgICAgZm9udCA9IF9yZWYkZm9udCA9PT0gdm9pZCAwID8gJ3NlcmlmJyA6IF9yZWYkZm9udCxcbiAgICAgIF9yZWYkZm9udFN0eWxlID0gX3JlZi5mb250U3R5bGUsXG4gICAgICBmb250U3R5bGUgPSBfcmVmJGZvbnRTdHlsZSA9PT0gdm9pZCAwID8gJ25vcm1hbCcgOiBfcmVmJGZvbnRTdHlsZSxcbiAgICAgIF9yZWYkZm9udFdlaWdodCA9IF9yZWYuZm9udFdlaWdodCxcbiAgICAgIGZvbnRXZWlnaHQgPSBfcmVmJGZvbnRXZWlnaHQgPT09IHZvaWQgMCA/ICdub3JtYWwnIDogX3JlZiRmb250V2VpZ2h0LFxuICAgICAgX3JlZiRmb250U2l6ZSA9IF9yZWYuZm9udFNpemUsXG4gICAgICBmb250U2l6ZSA9IF9yZWYkZm9udFNpemUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uIChkKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydChkLnZhbHVlKTtcbiAgfSA6IF9yZWYkZm9udFNpemUsXG4gICAgICBfcmVmJHJvdGF0ZSA9IF9yZWYucm90YXRlLFxuICAgICAgcm90YXRlID0gX3JlZiRyb3RhdGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKH5+KE1hdGgucmFuZG9tKCkgKiA2KSAtIDMpICogMzA7XG4gIH0gOiBfcmVmJHJvdGF0ZSxcbiAgICAgIF9yZWYkc3BpcmFsID0gX3JlZi5zcGlyYWwsXG4gICAgICBzcGlyYWwgPSBfcmVmJHNwaXJhbCA9PT0gdm9pZCAwID8gJ2FyY2hpbWVkZWFuJyA6IF9yZWYkc3BpcmFsLFxuICAgICAgX3JlZiRwYWRkaW5nID0gX3JlZi5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9yZWYkcGFkZGluZyA9PT0gdm9pZCAwID8gMSA6IF9yZWYkcGFkZGluZyxcbiAgICAgIF9yZWYkcmFuZG9tID0gX3JlZi5yYW5kb20sXG4gICAgICByYW5kb20gPSBfcmVmJHJhbmRvbSA9PT0gdm9pZCAwID8gTWF0aC5yYW5kb20gOiBfcmVmJHJhbmRvbSxcbiAgICAgIF9yZWYkZmlsbCA9IF9yZWYuZmlsbCxcbiAgICAgIGZpbGwgPSBfcmVmJGZpbGwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRTY2FsZU9yZGluYWwoaSk7XG4gIH0gOiBfcmVmJGZpbGwsXG4gICAgICBvbldvcmRDbGljayA9IF9yZWYub25Xb3JkQ2xpY2ssXG4gICAgICBvbldvcmRNb3VzZU92ZXIgPSBfcmVmLm9uV29yZE1vdXNlT3ZlcixcbiAgICAgIG9uV29yZE1vdXNlT3V0ID0gX3JlZi5vbldvcmRNb3VzZU91dDtcbiAgdmFyIGVsZW1lbnRSZWYgPSB1c2VSZWYoKTtcblxuICBpZiAoIWVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgIGVsZW1lbnRSZWYuY3VycmVudCA9IFJlYWN0RmF1eERvbS5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgfVxuXG4gIHZhciBlbCA9IGVsZW1lbnRSZWYuY3VycmVudDsgLy8gY2xlYXIgb2xkIHdvcmRzXG5cbiAgc2VsZWN0KGVsKS5zZWxlY3RBbGwoJyonKS5yZW1vdmUoKTsgLy8gcmVuZGVyIGJhc2VkIG9uIG5ldyBkYXRhXG5cbiAgdmFyIGxheW91dCA9IGNsb3VkKCkud29yZHMoZGF0YSkuc2l6ZShbd2lkdGgsIGhlaWdodF0pLmZvbnQoZm9udCkuZm9udFN0eWxlKGZvbnRTdHlsZSkuZm9udFdlaWdodChmb250V2VpZ2h0KS5mb250U2l6ZShmb250U2l6ZSkucm90YXRlKHJvdGF0ZSkuc3BpcmFsKHNwaXJhbCkucGFkZGluZyhwYWRkaW5nKS5yYW5kb20ocmFuZG9tKS5vbignZW5kJywgZnVuY3Rpb24gKHdvcmRzKSB7XG4gICAgdmFyIF9sYXlvdXQkc2l6ZSA9IGxheW91dC5zaXplKCksXG4gICAgICAgIF9sYXlvdXQkc2l6ZTIgPSBfc2xpY2VkVG9BcnJheShfbGF5b3V0JHNpemUsIDIpLFxuICAgICAgICB3ID0gX2xheW91dCRzaXplMlswXSxcbiAgICAgICAgaCA9IF9sYXlvdXQkc2l6ZTJbMV07XG5cbiAgICB2YXIgdGV4dHMgPSBzZWxlY3QoZWwpLmFwcGVuZCgnc3ZnJykuYXR0cigndmlld0JveCcsIFwiMCAwIFwiLmNvbmNhdCh3LCBcIiBcIikuY29uY2F0KGgpKS5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ3hNaW5ZTWluIG1lZXQnKS5hcHBlbmQoJ2cnKS5hdHRyKCd0cmFuc2Zvcm0nLCBcInRyYW5zbGF0ZShcIi5jb25jYXQodyAvIDIsIFwiLFwiKS5jb25jYXQoaCAvIDIsIFwiKVwiKSkuc2VsZWN0QWxsKCd0ZXh0JykuZGF0YSh3b3JkcykuZW50ZXIoKS5hcHBlbmQoJ3RleHQnKS5zdHlsZSgnZm9udC1mYW1pbHknLCBmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIGQuZm9udDtcbiAgICB9KS5zdHlsZSgnZm9udC1zdHlsZScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICByZXR1cm4gZC5zdHlsZTtcbiAgICB9KS5zdHlsZSgnZm9udC13ZWlnaHQnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIGQud2VpZ2h0O1xuICAgIH0pLnN0eWxlKCdmb250LXNpemUnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGQuc2l6ZSwgXCJweFwiKTtcbiAgICB9KS5zdHlsZSgnZmlsbCcsIGZpbGwpLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KFtkLngsIGQueV0sIFwiKXJvdGF0ZShcIikuY29uY2F0KGQucm90YXRlLCBcIilcIik7XG4gICAgfSkudGV4dChmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIGQudGV4dDtcbiAgICB9KTtcblxuICAgIGlmIChvbldvcmRDbGljaykge1xuICAgICAgdGV4dHMub24oJ2NsaWNrJywgb25Xb3JkQ2xpY2spO1xuICAgIH1cblxuICAgIGlmIChvbldvcmRNb3VzZU92ZXIpIHtcbiAgICAgIHRleHRzLm9uKCdtb3VzZW92ZXInLCBvbldvcmRNb3VzZU92ZXIpO1xuICAgIH1cblxuICAgIGlmIChvbldvcmRNb3VzZU91dCkge1xuICAgICAgdGV4dHMub24oJ21vdXNlb3V0Jywgb25Xb3JkTW91c2VPdXQpO1xuICAgIH1cbiAgfSk7XG4gIGxheW91dC5zdGFydCgpO1xuICByZXR1cm4gZWwudG9SZWFjdCgpO1xufVxuXG5Xb3JkQ2xvdWQucHJvcFR5cGVzID0ge1xuICBkYXRhOiBfcHQuYXJyYXlPZihfcHQuc2hhcGUoe1xuICAgIHRleHQ6IF9wdC5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICB2YWx1ZTogX3B0Lm51bWJlci5pc1JlcXVpcmVkXG4gIH0pKS5pc1JlcXVpcmVkLFxuICB3aWR0aDogX3B0Lm51bWJlcixcbiAgaGVpZ2h0OiBfcHQubnVtYmVyLFxuICBmb250OiBfcHQub25lT2ZUeXBlKFtfcHQuc3RyaW5nLCBfcHQuZnVuY10pLFxuICBmb250U3R5bGU6IF9wdC5vbmVPZlR5cGUoW19wdC5zdHJpbmcsIF9wdC5mdW5jXSksXG4gIGZvbnRXZWlnaHQ6IF9wdC5vbmVPZlR5cGUoW19wdC5zdHJpbmcsIF9wdC5udW1iZXIsIF9wdC5mdW5jXSksXG4gIGZvbnRTaXplOiBfcHQub25lT2ZUeXBlKFtfcHQubnVtYmVyLCBfcHQuZnVuY10pLFxuICByb3RhdGU6IF9wdC5vbmVPZlR5cGUoW19wdC5udW1iZXIsIF9wdC5mdW5jXSksXG4gIHNwaXJhbDogX3B0Lm9uZU9mVHlwZShbX3B0Lm9uZU9mKFsnYXJjaGltZWRlYW4nXSksIF9wdC5vbmVPZihbJ3JlY3Rhbmd1bGFyJ10pLCBfcHQuZnVuY10pLFxuICBwYWRkaW5nOiBfcHQub25lT2ZUeXBlKFtfcHQubnVtYmVyLCBfcHQuZnVuY10pLFxuICByYW5kb206IF9wdC5mdW5jLFxuICBvbldvcmRDbGljazogX3B0LmZ1bmMsXG4gIG9uV29yZE1vdXNlT3ZlcjogX3B0LmZ1bmMsXG4gIG9uV29yZE1vdXNlT3V0OiBfcHQuZnVuY1xufTtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKFdvcmRDbG91ZCwgaXNEZWVwRXF1YWwpOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgY3JlYXRlRWxlbWVudCwgcmVuZGVyIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAnY29yZS1qcyc7XHJcbmltcG9ydCBXb3JkQ2xvdWQgZnJvbSBcInJlYWN0LWQzLWNsb3VkXCI7XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JkQ2xvdWRXaWRnZXRDb21wb25lbnQocHJvcHMpIHtcclxuICBcclxuICBjb25zdCBkYXRhID0gcHJvcHMuaW5wdXREYXRhO1xyXG4gIGNvbnN0IGZvbnRTaXplTWFwcGVyID0gd29yZCA9PiBNYXRoLmxvZzIod29yZC52YWx1ZSkgKiA1O1xyXG4gIGNvbnN0IHJvdGF0ZSA9IHdvcmQgPT4gKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIpICogOTApO1xyXG4gIGNvbnN0IG9uQ2xpY2tIYW5kbGUgPSAodGV4dCkgPT4ge1xyXG4gICAgXHJcbiAgICAocHJvcHMub25DbGlja0FjdGlvbi5jYW5FeGVjdXRlICYmICFwcm9wcy5vbkNsaWNrQWN0aW9uLmlzRXhlY3V0aW5nKVxyXG4gICAgXHJcbiAgICB7XHJcbiAgICAgIHByb3BzLmNob3NlbldvcmQuc2V0VmFsdWUodGV4dCk7XHJcbiAgICAgIHByb3BzLm9uQ2xpY2tBY3Rpb24uZXhlY3V0ZSgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcblxyXG4gICAgPFdvcmRDbG91ZCBkYXRhPXtkYXRhfSBmb250U2l6ZU1hcHBlcj17Zm9udFNpemVNYXBwZXJ9IHJvdGF0ZT17cm90YXRlfSBvbldvcmRDbGljaz17KGV2ZW50LCB3b3JkKSA9PiBvbkNsaWNrSGFuZGxlKHdvcmQudGV4dCl9IC8+XHJcblxyXG4gICk7XHJcbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgJ2NvcmUtanMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZUVsZW1lbnQsIHJlbmRlciB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuXHJcblxyXG5pbXBvcnQgV29yZENsb3VkV2lkZ2V0Q29tcG9uZW50IGZyb20gXCIuL2NvbXBvbmVudHMvV29yZENsb3VkV2lkZ2V0Q29tcG9uZW50XCI7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV29yZENsb3VkV2lkZ2V0IGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIFxyXG5cclxuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5leHRQcm9wcy5kYXRhU291cmNlICE9PSB0aGlzLnByb3BzLmRhdGFTb3VyY2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG5cclxuICAgICAgICB2YXIgZGF0YVRvUmVuZGVyID0gW107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGF0YVNvdXJjZS5zdGF0dXMgPT09IFwiYXZhaWxhYmxlXCIgJiYgdGhpcy5wcm9wcy5kYXRhU291cmNlLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgaSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnByb3BzLmRhdGFTb3VyY2UuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGRhdGFUb1JlbmRlci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnByb3BzLnRleHRBdHRyaWIuZ2V0KCh0aGlzLnByb3BzLmRhdGFTb3VyY2UuaXRlbXNbaV0pKS52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5wcm9wcy5pbnRBdHRyaWIuZ2V0KCh0aGlzLnByb3BzLmRhdGFTb3VyY2UuaXRlbXNbaV0pKS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDxXb3JkQ2xvdWRXaWRnZXRDb21wb25lbnQgaW5wdXREYXRhPXtkYXRhVG9SZW5kZXJ9IGNob3NlbldvcmQ9e3RoaXMucHJvcHMuY2hvc2VuV29yZH0gb25DbGlja0FjdGlvbj17dGhpcy5wcm9wcy5vbkNsaWNrQWN0aW9ufSAvPjtcclxuXHJcbiAgICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbImNoZWNrIiwiaXQiLCJNYXRoIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIndpbmRvdyIsInNlbGYiLCJnbG9iYWwiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImZhaWxzIiwicmVxdWlyZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiJHByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJOQVNIT1JOX0JVRyIsImNhbGwiLCJWIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJiaXRtYXAiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwidG9TdHJpbmciLCJzbGljZSIsImNsYXNzb2YiLCJzcGxpdCIsInVuZGVmaW5lZCIsIlR5cGVFcnJvciIsIkluZGV4ZWRPYmplY3QiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiYXJndW1lbnQiLCJpc0NhbGxhYmxlIiwiYUZ1bmN0aW9uIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZ2V0QnVpbHRJbiIsInVzZXJBZ2VudCIsInByb2Nlc3MiLCJEZW5vIiwidmVyc2lvbnMiLCJ2ZXJzaW9uIiwidjgiLCJtYXRjaCIsIlY4X1ZFUlNJT04iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJTdHJpbmciLCJzaGFtIiwiTkFUSVZFX1NZTUJPTCIsIml0ZXJhdG9yIiwiVVNFX1NZTUJPTF9BU19VSUQiLCIkU3ltYm9sIiwidHJ5VG9TdHJpbmciLCJhQ2FsbGFibGUiLCJQIiwiZnVuYyIsImlzT2JqZWN0IiwiaW5wdXQiLCJwcmVmIiwiZm4iLCJ2YWwiLCJ2YWx1ZU9mIiwia2V5Iiwic2V0R2xvYmFsIiwiU0hBUkVEIiwic3RvcmUiLCJwdXNoIiwibW9kZSIsImNvcHlyaWdodCIsInRvT2JqZWN0IiwiaGFzT3duUHJvcGVydHkiLCJoYXNPd24iLCJpZCIsInBvc3RmaXgiLCJyYW5kb20iLCJzaGFyZWQiLCJ1aWQiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwibmFtZSIsImlzU3ltYm9sIiwiZ2V0TWV0aG9kIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIndlbGxLbm93blN5bWJvbCIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInJlc3VsdCIsInRvUHJpbWl0aXZlIiwiZG9jdW1lbnQiLCJFWElTVFMiLCJjcmVhdGVFbGVtZW50IiwiREVTQ1JJUFRPUlMiLCJhIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJ0b0luZGV4ZWRPYmplY3QiLCJ0b1Byb3BlcnR5S2V5IiwiSUU4X0RPTV9ERUZJTkUiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTyIsImYiLCJhbk9iamVjdCIsIiRkZWZpbmVQcm9wZXJ0eSIsIkF0dHJpYnV0ZXMiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsIm9iamVjdCIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiV2Vha01hcCIsInRlc3QiLCJrZXlzIiwiTkFUSVZFX1dFQUtfTUFQIiwiY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5Iiwic2hhcmVkS2V5IiwiaGlkZGVuS2V5cyIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwic2V0IiwiaGFzIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJzdGF0ZSIsInR5cGUiLCJ3bWdldCIsIndtaGFzIiwid21zZXQiLCJtZXRhZGF0YSIsImZhY2FkZSIsIlNUQVRFIiwiRnVuY3Rpb25Qcm90b3R5cGUiLCJwcm90b3R5cGUiLCJnZXREZXNjcmlwdG9yIiwiUFJPUEVSIiwic29tZXRoaW5nIiwiQ09ORklHVVJBQkxFIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsIkNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiVEVNUExBVEUiLCJvcHRpb25zIiwidW5zYWZlIiwic2ltcGxlIiwibm9UYXJnZXRHZXQiLCJyZXBsYWNlIiwic291cmNlIiwiam9pbiIsImNlaWwiLCJmbG9vciIsIm51bWJlciIsInRvSW50ZWdlck9ySW5maW5pdHkiLCJtYXgiLCJtaW4iLCJpbmRleCIsImludGVnZXIiLCJ0b0xlbmd0aCIsIm9iaiIsInRvQWJzb2x1dGVJbmRleCIsImxlbmd0aE9mQXJyYXlMaWtlIiwiY3JlYXRlTWV0aG9kIiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImVsIiwiZnJvbUluZGV4IiwiaW5jbHVkZXMiLCJpbmRleE9mIiwibmFtZXMiLCJpIiwiaW50ZXJuYWxPYmplY3RLZXlzIiwiZW51bUJ1Z0tleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSIsImdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsImlzRm9yY2VkIiwiZmVhdHVyZSIsImRldGVjdGlvbiIsImRhdGEiLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInRvTG93ZXJDYXNlIiwicmVkZWZpbmUiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsIkZPUkNFRCIsInRhcmdldFByb3BlcnR5Iiwic291cmNlUHJvcGVydHkiLCJmb3JjZWQiLCJBcnJheSIsImlzQXJyYXkiLCJUT19TVFJJTkdfVEFHIiwiVE9fU1RSSU5HX1RBR19TVVBQT1JUIiwiY2xhc3NvZlJhdyIsIkNPUlJFQ1RfQVJHVU1FTlRTIiwidHJ5R2V0IiwidGFnIiwiY2FsbGVlIiwib2JqZWN0S2V5cyIsImRlZmluZVByb3BlcnRpZXMiLCJQcm9wZXJ0aWVzIiwiaHRtbCIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsIkdUIiwiTFQiLCJQUk9UT1RZUEUiLCJTQ1JJUFQiLCJJRV9QUk9UTyIsIkVtcHR5Q29uc3RydWN0b3IiLCJzY3JpcHRUYWciLCJjb250ZW50IiwiTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCIsImFjdGl2ZVhEb2N1bWVudCIsIndyaXRlIiwiY2xvc2UiLCJ0ZW1wIiwicGFyZW50V2luZG93IiwiTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lIiwiaWZyYW1lIiwiSlMiLCJpZnJhbWVEb2N1bWVudCIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJGIiwiTnVsbFByb3RvT2JqZWN0IiwiQWN0aXZlWE9iamVjdCIsImRvbWFpbiIsImNyZWF0ZSIsIiRnZXRPd25Qcm9wZXJ0eU5hbWVzIiwid2luZG93TmFtZXMiLCJnZXRXaW5kb3dOYW1lcyIsInBhdGgiLCJ3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlIiwiTkFNRSIsIlRBRyIsInRoYXQiLCJiIiwiYyIsImFwcGx5IiwiZW1wdHkiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvckxlZ2FjeSIsImNhbGxlZCIsImlzQ29uc3RydWN0b3IiLCJTUEVDSUVTIiwib3JpZ2luYWxBcnJheSIsIkMiLCJjb25zdHJ1Y3RvciIsImFycmF5U3BlY2llc0NvbnN0cnVjdG9yIiwiYmluZCIsImFycmF5U3BlY2llc0NyZWF0ZSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJJU19GSUxURVJfUkVKRUNUIiwiTk9fSE9MRVMiLCJjYWxsYmFja2ZuIiwic3BlY2lmaWNDcmVhdGUiLCJib3VuZEZ1bmN0aW9uIiwiZm9yRWFjaCIsIm1hcCIsImZpbHRlciIsInNvbWUiLCJldmVyeSIsImZpbmQiLCJmaW5kSW5kZXgiLCJmaWx0ZXJSZWplY3QiLCIkIiwiJHRvU3RyaW5nIiwibmF0aXZlT2JqZWN0Q3JlYXRlIiwiZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsIiwiZGVmaW5lV2VsbEtub3duU3ltYm9sIiwic2V0VG9TdHJpbmdUYWciLCIkZm9yRWFjaCIsIkhJRERFTiIsIlNZTUJPTCIsInNldEludGVybmFsU3RhdGUiLCJPYmplY3RQcm90b3R5cGUiLCIkc3RyaW5naWZ5IiwibmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibmF0aXZlRGVmaW5lUHJvcGVydHkiLCJuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzIiwibmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGUiLCJBbGxTeW1ib2xzIiwiT2JqZWN0UHJvdG90eXBlU3ltYm9scyIsIlN0cmluZ1RvU3ltYm9sUmVnaXN0cnkiLCJTeW1ib2xUb1N0cmluZ1JlZ2lzdHJ5IiwiUU9iamVjdCIsIlVTRV9TRVRURVIiLCJmaW5kQ2hpbGQiLCJzZXRTeW1ib2xEZXNjcmlwdG9yIiwiT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciIsIndyYXAiLCJkZXNjcmlwdGlvbiIsIiRkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcGVydGllcyIsIiRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCIkY3JlYXRlIiwiSVNfT0JKRUNUX1BST1RPVFlQRSIsInNldHRlciIsImtleUZvciIsInN5bSIsInVzZVNldHRlciIsInVzZVNpbXBsZSIsIkZPUkNFRF9KU09OX1NUUklOR0lGWSIsInN0cmluZ2lmeSIsInJlcGxhY2VyIiwic3BhY2UiLCJhcmdzIiwiJHJlcGxhY2VyIiwiTmF0aXZlU3ltYm9sIiwiRW1wdHlTdHJpbmdEZXNjcmlwdGlvblN0b3JlIiwiU3ltYm9sV3JhcHBlciIsInN5bWJvbFByb3RvdHlwZSIsInN5bWJvbFRvU3RyaW5nIiwibmF0aXZlU3ltYm9sIiwicmVnZXhwIiwiZGVzYyIsImdldFByb3RvdHlwZU9mIiwiQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSIiwiYVBvc3NpYmxlUHJvdG90eXBlIiwic2V0UHJvdG90eXBlT2YiLCJDT1JSRUNUX1NFVFRFUiIsInByb3RvIiwiX19wcm90b19fIiwiY2F1c2UiLCJJdGVyYXRvcnMiLCJJVEVSQVRPUiIsIkFycmF5UHJvdG90eXBlIiwiZ2V0SXRlcmF0b3JNZXRob2QiLCJ1c2luZ0l0ZXJhdG9yIiwiaXRlcmF0b3JNZXRob2QiLCJraW5kIiwiaW5uZXJSZXN1bHQiLCJpbm5lckVycm9yIiwiaXNBcnJheUl0ZXJhdG9yTWV0aG9kIiwiZ2V0SXRlcmF0b3IiLCJpdGVyYXRvckNsb3NlIiwiUmVzdWx0Iiwic3RvcHBlZCIsIml0ZXJhYmxlIiwidW5ib3VuZEZ1bmN0aW9uIiwiQVNfRU5UUklFUyIsIklTX0lURVJBVE9SIiwiSU5URVJSVVBURUQiLCJpdGVyRm4iLCJuZXh0Iiwic3RlcCIsInN0b3AiLCJjb25kaXRpb24iLCJjYWxsRm4iLCJkb25lIiwiaW5zdGFsbEVycm9yQ2F1c2UiLCJpdGVyYXRlIiwiJEFnZ3JlZ2F0ZUVycm9yIiwiQWdncmVnYXRlRXJyb3IiLCJlcnJvcnMiLCJtZXNzYWdlIiwiRXJyb3IiLCJlcnJvcnNBcnJheSIsIlVOU0NPUEFCTEVTIiwiYWRkVG9VbnNjb3BhYmxlcyIsImF0IiwibGVuIiwicmVsYXRpdmVJbmRleCIsImsiLCJwcm9wZXJ0eUtleSIsIk1FVEhPRF9OQU1FIiwiYXJyYXkiLCJmb28iLCJCb29sZWFuIiwiY3JlYXRlUHJvcGVydHkiLCJhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0IiwiSVNfQ09OQ0FUX1NQUkVBREFCTEUiLCJNQVhfU0FGRV9JTlRFR0VSIiwiTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEIiwiSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCIsIlNQRUNJRVNfU1VQUE9SVCIsImlzQ29uY2F0U3ByZWFkYWJsZSIsInNwcmVhZGFibGUiLCJhcmciLCJBIiwibiIsIkUiLCJjb3B5V2l0aGluIiwic3RhcnQiLCJ0byIsImZyb20iLCJlbmQiLCJjb3VudCIsImluYyIsIiRldmVyeSIsImFycmF5TWV0aG9kSXNTdHJpY3QiLCJTVFJJQ1RfTUVUSE9EIiwiZmlsbCIsImFyZ3VtZW50c0xlbmd0aCIsImVuZFBvcyIsIiRmaWx0ZXIiLCJIQVNfU1BFQ0lFU19TVVBQT1JUIiwiJGZpbmQiLCJGSU5EIiwiU0tJUFNfSE9MRVMiLCIkZmluZEluZGV4IiwiRklORF9JTkRFWCIsImZsYXR0ZW5JbnRvQXJyYXkiLCJvcmlnaW5hbCIsInNvdXJjZUxlbiIsImRlcHRoIiwibWFwcGVyIiwidGhpc0FyZyIsInRhcmdldEluZGV4Iiwic291cmNlSW5kZXgiLCJtYXBGbiIsImVsZW1lbnQiLCJlbGVtZW50TGVuIiwiZmxhdCIsImRlcHRoQXJnIiwiZmxhdE1hcCIsIkVOVFJJRVMiLCJjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nIiwiYXJyYXlMaWtlIiwiSVNfQ09OU1RSVUNUT1IiLCJtYXBmbiIsIm1hcHBpbmciLCJTQUZFX0NMT1NJTkciLCJpdGVyYXRvcldpdGhSZXR1cm4iLCJTS0lQX0NMT1NJTkciLCJJVEVSQVRJT05fU1VQUE9SVCIsImNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiIsIklOQ09SUkVDVF9JVEVSQVRJT04iLCIkaW5jbHVkZXMiLCIkaW5kZXhPZiIsIm5hdGl2ZUluZGV4T2YiLCJORUdBVElWRV9aRVJPIiwic2VhcmNoRWxlbWVudCIsIkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMiLCJJdGVyYXRvclByb3RvdHlwZSIsIlByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSIsImFycmF5SXRlcmF0b3IiLCJORVdfSVRFUkFUT1JfUFJPVE9UWVBFIiwicmV0dXJuVGhpcyIsIkl0ZXJhdG9yQ29uc3RydWN0b3IiLCJGdW5jdGlvbk5hbWUiLCJjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yIiwiSXRlcmF0b3JzQ29yZSIsIlBST1BFUl9GVU5DVElPTl9OQU1FIiwiS0VZUyIsIlZBTFVFUyIsIkl0ZXJhYmxlIiwiREVGQVVMVCIsIklTX1NFVCIsImdldEl0ZXJhdGlvbk1ldGhvZCIsIktJTkQiLCJkZWZhdWx0SXRlcmF0b3IiLCJJdGVyYWJsZVByb3RvdHlwZSIsInZhbHVlcyIsImVudHJpZXMiLCJJTkNPUlJFQ1RfVkFMVUVTX05BTUUiLCJuYXRpdmVJdGVyYXRvciIsImFueU5hdGl2ZUl0ZXJhdG9yIiwiQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlIiwibWV0aG9kcyIsIktFWSIsImRlZmluZUl0ZXJhdG9yIiwiQVJSQVlfSVRFUkFUT1IiLCJpdGVyYXRlZCIsIkFyZ3VtZW50cyIsIm5hdGl2ZUpvaW4iLCJFUzNfU1RSSU5HUyIsInNlcGFyYXRvciIsIiRsYXN0SW5kZXhPZiIsImxhc3RJbmRleE9mIiwiJG1hcCIsIklTTlRfR0VORVJJQyIsIm9mIiwiSVNfUklHSFQiLCJtZW1vIiwibGVmdCIsInJpZ2h0IiwiJHJlZHVjZSIsIkNIUk9NRV9WRVJTSU9OIiwiSVNfTk9ERSIsIkNIUk9NRV9CVUciLCJyZWR1Y2UiLCIkcmVkdWNlUmlnaHQiLCJyZWR1Y2VSaWdodCIsIm5hdGl2ZVJldmVyc2UiLCJyZXZlcnNlIiwibmF0aXZlU2xpY2UiLCJmaW4iLCJDb25zdHJ1Y3RvciIsIiRzb21lIiwibWVyZ2VTb3J0IiwiY29tcGFyZWZuIiwibWlkZGxlIiwiaW5zZXJ0aW9uU29ydCIsIm1lcmdlIiwiaiIsImxsZW5ndGgiLCJybGVuZ3RoIiwibGluZGV4IiwicmluZGV4IiwiZmlyZWZveCIsIlVBIiwid2Via2l0IiwiaW50ZXJuYWxTb3J0IiwiRkYiLCJJRV9PUl9FREdFIiwiVjgiLCJXRUJLSVQiLCJuYXRpdmVTb3J0Iiwic29ydCIsIkZBSUxTX09OX1VOREVGSU5FRCIsIkZBSUxTX09OX05VTEwiLCJTVEFCTEVfU09SVCIsImNvZGUiLCJjaHIiLCJmcm9tQ2hhckNvZGUiLCJ2IiwiY2hhckF0IiwiZ2V0U29ydENvbXBhcmUiLCJ4IiwieSIsIml0ZW1zIiwiYXJyYXlMZW5ndGgiLCJpdGVtc0xlbmd0aCIsIkNPTlNUUlVDVE9SX05BTUUiLCJzZXRTcGVjaWVzIiwiTUFYSU1VTV9BTExPV0VEX0xFTkdUSF9FWENFRURFRCIsInNwbGljZSIsImRlbGV0ZUNvdW50IiwiYWN0dWFsU3RhcnQiLCJpbnNlcnRDb3VudCIsImFjdHVhbERlbGV0ZUNvdW50IiwiQXJyYXlCdWZmZXIiLCJEYXRhVmlldyIsIlJhbmdlRXJyb3IiLCJhYnMiLCJwb3ciLCJsb2ciLCJMTjIiLCJwYWNrIiwibWFudGlzc2FMZW5ndGgiLCJieXRlcyIsImJ1ZmZlciIsImV4cG9uZW50TGVuZ3RoIiwiZU1heCIsImVCaWFzIiwicnQiLCJzaWduIiwiZXhwb25lbnQiLCJtYW50aXNzYSIsIkluZmluaXR5IiwidW5wYWNrIiwibkJpdHMiLCJOYU4iLCJOQVRJVkVfQVJSQVlfQlVGRkVSIiwicmVkZWZpbmVBbGwiLCJhbkluc3RhbmNlIiwidG9JbmRleCIsIklFRUU3NTQiLCJhcnJheUZpbGwiLCJBUlJBWV9CVUZGRVIiLCJEQVRBX1ZJRVciLCJXUk9OR19MRU5HVEgiLCJXUk9OR19JTkRFWCIsIk5hdGl2ZUFycmF5QnVmZmVyIiwiJEFycmF5QnVmZmVyIiwiJERhdGFWaWV3IiwiJERhdGFWaWV3UHJvdG90eXBlIiwicGFja0lFRUU3NTQiLCJ1bnBhY2tJRUVFNzU0IiwicGFja0ludDgiLCJwYWNrSW50MTYiLCJwYWNrSW50MzIiLCJ1bnBhY2tJbnQzMiIsInBhY2tGbG9hdDMyIiwicGFja0Zsb2F0NjQiLCJhZGRHZXR0ZXIiLCJ2aWV3IiwiaXNMaXR0bGVFbmRpYW4iLCJpbnRJbmRleCIsImJ5dGVMZW5ndGgiLCJieXRlT2Zmc2V0IiwiY29udmVyc2lvbiIsImJ1ZmZlckxlbmd0aCIsIm9mZnNldCIsImdldEludDgiLCJnZXRVaW50OCIsImdldEludDE2IiwiZ2V0VWludDE2IiwiZ2V0SW50MzIiLCJnZXRVaW50MzIiLCJnZXRGbG9hdDMyIiwiZ2V0RmxvYXQ2NCIsInNldEludDgiLCJzZXRVaW50OCIsInNldEludDE2Iiwic2V0VWludDE2Iiwic2V0SW50MzIiLCJzZXRVaW50MzIiLCJzZXRGbG9hdDMyIiwic2V0RmxvYXQ2NCIsIklOQ09SUkVDVF9BUlJBWV9CVUZGRVJfTkFNRSIsIkFycmF5QnVmZmVyUHJvdG90eXBlIiwidGVzdFZpZXciLCIkc2V0SW50OCIsImFycmF5QnVmZmVyTW9kdWxlIiwiSW50OEFycmF5IiwiSW50OEFycmF5UHJvdG90eXBlIiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSIsIlR5cGVkQXJyYXkiLCJUeXBlZEFycmF5UHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlRZUEVEX0FSUkFZX1RBRyIsIlRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SIiwiTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyIsIm9wZXJhIiwiVFlQRURfQVJSQVlfVEFHX1JFUUlSRUQiLCJQcm90b3R5cGUiLCJUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCIsIlVpbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJCaWdJbnRBcnJheUNvbnN0cnVjdG9yc0xpc3QiLCJCaWdJbnQ2NEFycmF5IiwiQmlnVWludDY0QXJyYXkiLCJpc1ZpZXciLCJrbGFzcyIsImlzVHlwZWRBcnJheSIsImFUeXBlZEFycmF5IiwiYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsImV4cG9ydFR5cGVkQXJyYXlNZXRob2QiLCJwcm9wZXJ0eSIsIkFSUkFZIiwiVHlwZWRBcnJheUNvbnN0cnVjdG9yIiwiZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCIsIkFycmF5QnVmZmVyVmlld0NvcmUiLCJhQ29uc3RydWN0b3IiLCJkZWZhdWx0Q29uc3RydWN0b3IiLCJTIiwiQXJyYXlCdWZmZXJNb2R1bGUiLCJzcGVjaWVzQ29uc3RydWN0b3IiLCJuYXRpdmVBcnJheUJ1ZmZlclNsaWNlIiwiSU5DT1JSRUNUX1NMSUNFIiwiZmlyc3QiLCJ2aWV3U291cmNlIiwidmlld1RhcmdldCIsIkRhdGUiLCJnZXRZZWFyIiwiZ2V0RnVsbFllYXIiLCJub3ciLCJnZXRUaW1lIiwic2V0RnVsbFllYXIiLCJzZXRZZWFyIiwieWVhciIsInlpIiwieXl5eSIsInRvR01UU3RyaW5nIiwidG9VVENTdHJpbmciLCJyZXBlYXQiLCJzdHIiLCJJU19FTkQiLCJtYXhMZW5ndGgiLCJmaWxsU3RyaW5nIiwiaW50TWF4TGVuZ3RoIiwic3RyaW5nTGVuZ3RoIiwiZmlsbFN0ciIsImZpbGxMZW4iLCJzdHJpbmdGaWxsZXIiLCJwYWRTdGFydCIsIkRhdGVQcm90b3R5cGUiLCJuYXRpdmVEYXRlVG9JU09TdHJpbmciLCJ0b0lTT1N0cmluZyIsImlzRmluaXRlIiwiZGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwibWlsbGlzZWNvbmRzIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsInRvSlNPTiIsInB2IiwiaGludCIsImRhdGVUb1ByaW1pdGl2ZSIsIklOVkFMSURfREFURSIsIlRPX1NUUklORyIsIm5hdGl2ZURhdGVUb1N0cmluZyIsInJhdyIsImhleCIsImVzY2FwZSIsImNoYXJDb2RlQXQiLCJ0b1VwcGVyQ2FzZSIsImZhY3RvcmllcyIsImFyZ3NMZW5ndGgiLCJsaXN0IiwicGFydEFyZ3MiLCJib3VuZCIsIkhBU19JTlNUQU5DRSIsIkZVTkNUSU9OX05BTUVfRVhJU1RTIiwiRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZyIsIm5hbWVSRSIsInJlIiwibG93IiwiaGkiLCJmaXgiLCJwcmV2IiwiSlNPTiIsImlzRXh0ZW5zaWJsZSIsInByZXZlbnRFeHRlbnNpb25zIiwiZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsTW9kdWxlIiwiRlJFRVpJTkciLCJSRVFVSVJFRCIsIk1FVEFEQVRBIiwic2V0TWV0YWRhdGEiLCJvYmplY3RJRCIsIndlYWtEYXRhIiwiZmFzdEtleSIsImdldFdlYWtEYXRhIiwib25GcmVlemUiLCJlbmFibGUiLCJtZXRhIiwiZHVtbXkiLCJXcmFwcGVyIiwiTmV3VGFyZ2V0IiwiTmV3VGFyZ2V0UHJvdG90eXBlIiwiSW50ZXJuYWxNZXRhZGF0YU1vZHVsZSIsImluaGVyaXRJZlJlcXVpcmVkIiwid3JhcHBlciIsImNvbW1vbiIsIklTX1dFQUsiLCJBRERFUiIsIk5hdGl2ZUNvbnN0cnVjdG9yIiwiTmF0aXZlUHJvdG90eXBlIiwiZXhwb3J0ZWQiLCJmaXhNZXRob2QiLCJuYXRpdmVNZXRob2QiLCJhZGQiLCJSRVBMQUNFIiwiZ2V0Q29uc3RydWN0b3IiLCJpbnN0YW5jZSIsIkhBU05UX0NIQUlOSU5HIiwiVEhST1dTX09OX1BSSU1JVElWRVMiLCJBQ0NFUFRfSVRFUkFCTEVTIiwiQlVHR1lfWkVSTyIsIiRpbnN0YW5jZSIsImNsZWFyIiwic2V0U3Ryb25nIiwiaW50ZXJuYWxTdGF0ZUdldHRlckZvciIsImxhc3QiLCJzaXplIiwiZGVmaW5lIiwiZW50cnkiLCJnZXRFbnRyeSIsInByZXZpb3VzIiwicmVtb3ZlZCIsIklURVJBVE9SX05BTUUiLCJnZXRJbnRlcm5hbENvbGxlY3Rpb25TdGF0ZSIsImdldEludGVybmFsSXRlcmF0b3JTdGF0ZSIsImNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uU3Ryb25nIiwiaW5pdCIsIk1hcCIsImxvZzFwIiwiJGFjb3NoIiwiYWNvc2giLCJzcXJ0IiwiTnVtYmVyIiwiTUFYX1ZBTFVFIiwiJGFzaW5oIiwiYXNpbmgiLCIkYXRhbmgiLCJhdGFuaCIsImNicnQiLCJMT0cyRSIsImNsejMyIiwiJGV4cG0xIiwiZXhwbTEiLCJleHAiLCIkY29zaCIsImNvc2giLCJ0IiwiRVBTSUxPTiIsIkVQU0lMT04zMiIsIk1BWDMyIiwiTUlOMzIiLCJyb3VuZFRpZXNUb0V2ZW4iLCJmcm91bmQiLCIkYWJzIiwiJHNpZ24iLCIkaHlwb3QiLCJoeXBvdCIsIkJVR0dZIiwidmFsdWUxIiwidmFsdWUyIiwic3VtIiwiYUxlbiIsImxhcmciLCJkaXYiLCIkaW11bCIsImltdWwiLCJVSU5UMTYiLCJ4biIsInluIiwieGwiLCJ5bCIsIkxPRzEwRSIsImxvZzEwIiwibG9nMiIsInNpbmgiLCJ0YW5oIiwidHJ1bmMiLCJ3aGl0ZXNwYWNlcyIsIndoaXRlc3BhY2UiLCJsdHJpbSIsIlJlZ0V4cCIsInJ0cmltIiwidHJpbSIsInRoaXNOdW1iZXJWYWx1ZSIsIk5VTUJFUiIsIk5hdGl2ZU51bWJlciIsIk51bWJlclByb3RvdHlwZSIsInRvTnVtZXJpYyIsInByaW1WYWx1ZSIsInRvTnVtYmVyIiwidGhpcmQiLCJyYWRpeCIsIm1heENvZGUiLCJkaWdpdHMiLCJwYXJzZUludCIsIk51bWJlcldyYXBwZXIiLCJnbG9iYWxJc0Zpbml0ZSIsIm51bWJlcklzRmluaXRlIiwiaXNJbnRlZ2VyIiwiaXNJbnRlZ3JhbE51bWJlciIsImlzTmFOIiwiaXNTYWZlSW50ZWdlciIsIk1JTl9TQUZFX0lOVEVHRVIiLCIkcGFyc2VGbG9hdCIsInBhcnNlRmxvYXQiLCJ0cmltbWVkU3RyaW5nIiwiJHBhcnNlSW50IiwibmF0aXZlVG9GaXhlZCIsInRvRml4ZWQiLCJhY2MiLCJ4MiIsIm11bHRpcGx5IiwiYzIiLCJkaXZpZGUiLCJkYXRhVG9TdHJpbmciLCJzIiwiZnJhY3Rpb25EaWdpdHMiLCJmcmFjdERpZ2l0cyIsImUiLCJ6IiwibmF0aXZlVG9QcmVjaXNpb24iLCJ0b1ByZWNpc2lvbiIsInByZWNpc2lvbiIsIiRhc3NpZ24iLCJhc3NpZ24iLCJCIiwiYWxwaGFiZXQiLCJUIiwiX19kZWZpbmVTZXR0ZXJfXyIsIl9fZGVmaW5lR2V0dGVyX18iLCJnZXR0ZXIiLCJvYmplY3REZWZpbmVQcm9wZXJ0eU1vZGlsZSIsIlRPX0VOVFJJRVMiLCIkZW50cmllcyIsIiRmcmVlemUiLCJmcmVlemUiLCJGQUlMU19PTl9QUklNSVRJVkVTIiwiZnJvbUVudHJpZXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwibmF0aXZlR2V0UHJvdG90eXBlT2YiLCJpcyIsIiRpc0V4dGVuc2libGUiLCIkaXNGcm96ZW4iLCJpc0Zyb3plbiIsIiRpc1NlYWxlZCIsImlzU2VhbGVkIiwibmF0aXZlS2V5cyIsIl9fbG9va3VwR2V0dGVyX18iLCJfX2xvb2t1cFNldHRlcl9fIiwiJHByZXZlbnRFeHRlbnNpb25zIiwiJHNlYWwiLCJzZWFsIiwiJHZhbHVlcyIsIlByb21pc2UiLCJJU19JT1MiLCJzZXRJbW1lZGlhdGUiLCJjbGVhckltbWVkaWF0ZSIsIk1lc3NhZ2VDaGFubmVsIiwiRGlzcGF0Y2giLCJjb3VudGVyIiwicXVldWUiLCJPTlJFQURZU1RBVEVDSEFOR0UiLCJsb2NhdGlvbiIsImRlZmVyIiwiY2hhbm5lbCIsInBvcnQiLCJydW4iLCJydW5uZXIiLCJsaXN0ZW5lciIsImV2ZW50IiwicG9zdCIsInBvc3RNZXNzYWdlIiwicHJvdG9jb2wiLCJob3N0IiwibmV4dFRpY2siLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImltcG9ydFNjcmlwdHMiLCJyZW1vdmVDaGlsZCIsInNldFRpbWVvdXQiLCJQZWJibGUiLCJtYWNyb3Rhc2siLCJJU19JT1NfUEVCQkxFIiwiSVNfV0VCT1NfV0VCS0lUIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IiLCJxdWV1ZU1pY3JvdGFzayIsImZsdXNoIiwiaGVhZCIsIm5vdGlmeSIsInRvZ2dsZSIsIm5vZGUiLCJwcm9taXNlIiwidGhlbiIsInBhcmVudCIsImV4aXQiLCJlbnRlciIsImNyZWF0ZVRleHROb2RlIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJyZXNvbHZlIiwidGFzayIsIlByb21pc2VDYXBhYmlsaXR5IiwicmVqZWN0IiwiJCRyZXNvbHZlIiwiJCRyZWplY3QiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eSIsInByb21pc2VDYXBhYmlsaXR5IiwiY29uc29sZSIsIk5hdGl2ZVByb21pc2UiLCJtaWNyb3Rhc2siLCJwcm9taXNlUmVzb2x2ZSIsImhvc3RSZXBvcnRFcnJvcnMiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsInBlcmZvcm0iLCJJU19CUk9XU0VSIiwiUFJPTUlTRSIsImdldEludGVybmFsUHJvbWlzZVN0YXRlIiwiTmF0aXZlUHJvbWlzZVByb3RvdHlwZSIsIlByb21pc2VDb25zdHJ1Y3RvciIsIlByb21pc2VDb25zdHJ1Y3RvclByb3RvdHlwZSIsIm5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSIsIkRJU1BBVENIX0VWRU5UIiwiY3JlYXRlRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiTkFUSVZFX1JFSkVDVElPTl9FVkVOVCIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsIlVOSEFORExFRF9SRUpFQ1RJT04iLCJSRUpFQ1RJT05fSEFORExFRCIsIlBFTkRJTkciLCJGVUxGSUxMRUQiLCJSRUpFQ1RFRCIsIkhBTkRMRUQiLCJVTkhBTkRMRUQiLCJTVUJDTEFTU0lORyIsIkludGVybmFsIiwiT3duUHJvbWlzZUNhcGFiaWxpdHkiLCJQcm9taXNlV3JhcHBlciIsIm5hdGl2ZVRoZW4iLCJQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSIsIkdMT0JBTF9DT1JFX0pTX1BST01JU0UiLCJGYWtlUHJvbWlzZSIsImFsbCIsImlzVGhlbmFibGUiLCJpc1JlamVjdCIsIm5vdGlmaWVkIiwiY2hhaW4iLCJyZWFjdGlvbnMiLCJvayIsInJlYWN0aW9uIiwiaGFuZGxlciIsImZhaWwiLCJleGl0ZWQiLCJyZWplY3Rpb24iLCJvbkhhbmRsZVVuaGFuZGxlZCIsIm9uVW5oYW5kbGVkIiwicmVhc29uIiwiaW5pdEV2ZW50IiwiSVNfVU5IQU5ETEVEIiwiaXNVbmhhbmRsZWQiLCJlbWl0IiwidW53cmFwIiwiaW50ZXJuYWxSZWplY3QiLCJpbnRlcm5hbFJlc29sdmUiLCJleGVjdXRvciIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInIiLCJjYXBhYmlsaXR5IiwiJHByb21pc2VSZXNvbHZlIiwicmVtYWluaW5nIiwiYWxyZWFkeUNhbGxlZCIsInJhY2UiLCJhbGxTZXR0bGVkIiwic3RhdHVzIiwiUFJPTUlTRV9BTllfRVJST1IiLCJhbnkiLCJhbHJlYWR5UmVzb2x2ZWQiLCJhbHJlYWR5UmVqZWN0ZWQiLCJOT05fR0VORVJJQyIsInJlYWwiLCJvbkZpbmFsbHkiLCJpc0Z1bmN0aW9uIiwibmF0aXZlQXBwbHkiLCJmdW5jdGlvbkFwcGx5IiwiT1BUSU9OQUxfQVJHVU1FTlRTX0xJU1QiLCJ0aGlzQXJndW1lbnQiLCJhcmd1bWVudHNMaXN0IiwibmF0aXZlQ29uc3RydWN0IiwiTkVXX1RBUkdFVF9CVUciLCJBUkdTX0JVRyIsIlRhcmdldCIsIm5ld1RhcmdldCIsIiRhcmdzIiwiRVJST1JfSU5TVEVBRF9PRl9GQUxTRSIsIlJlZmxlY3QiLCJhdHRyaWJ1dGVzIiwiZGVsZXRlUHJvcGVydHkiLCJpc0RhdGFEZXNjcmlwdG9yIiwicmVjZWl2ZXIiLCJvYmplY3RHZXRQcm90b3R5cGVPZiIsIm9iamVjdElzRXh0ZW5zaWJsZSIsIm9iamVjdFByZXZlbnRFeHRlbnNpb25zIiwib3duRGVzY3JpcHRvciIsImV4aXN0aW5nRGVzY3JpcHRvciIsIk1TX0VER0VfQlVHIiwib2JqZWN0U2V0UHJvdG90eXBlT2YiLCJNQVRDSCIsImlzUmVnRXhwIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJzdGlja3kiLCIkUmVnRXhwIiwibGFzdEluZGV4IiwiZmxhZ3MiLCJncm91cHMiLCJnZXRGbGFncyIsInN0aWNreUhlbHBlcnMiLCJVTlNVUFBPUlRFRF9ET1RfQUxMIiwiVU5TVVBQT1JURURfTkNHIiwiTmF0aXZlUmVnRXhwIiwiUmVnRXhwUHJvdG90eXBlIiwiSVNfTkNHIiwicmUxIiwicmUyIiwiQ09SUkVDVF9ORVciLCJVTlNVUFBPUlRFRF9ZIiwiQkFTRV9GT1JDRUQiLCJoYW5kbGVEb3RBbGwiLCJicmFja2V0cyIsImhhbmRsZU5DRyIsIm5hbWVkIiwibmNnIiwiZ3JvdXBpZCIsImdyb3VwbmFtZSIsIlN5bnRheEVycm9yIiwiUmVnRXhwV3JhcHBlciIsInBhdHRlcm4iLCJ0aGlzSXNSZWdFeHAiLCJwYXR0ZXJuSXNSZWdFeHAiLCJmbGFnc0FyZVVuZGVmaW5lZCIsInJhd1BhdHRlcm4iLCJyYXdGbGFncyIsImhhbmRsZWQiLCJwcm94eSIsInJlZ2V4cEZsYWdzIiwibmF0aXZlRXhlYyIsIm5hdGl2ZVJlcGxhY2UiLCJwYXRjaGVkRXhlYyIsIlVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyIsIkJST0tFTl9DQVJFVCIsIk5QQ0dfSU5DTFVERUQiLCJQQVRDSCIsInJlQ29weSIsImdyb3VwIiwiY2hhcnNBZGRlZCIsInN0ckNvcHkiLCJvYmplY3REZWZpbmVQcm9wZXJ0eU1vZHVsZSIsInJlZ0V4cEZsYWdzIiwiREVMRUdBVEVTX1RPX0VYRUMiLCJleGVjQ2FsbGVkIiwibmF0aXZlVGVzdCIsIm5hdGl2ZVRvU3RyaW5nIiwiTk9UX0dFTkVSSUMiLCJJTkNPUlJFQ1RfTkFNRSIsIlIiLCJwIiwicmYiLCJTZXQiLCJDT05WRVJUX1RPX1NUUklORyIsInBvcyIsInBvc2l0aW9uIiwic2Vjb25kIiwiY29kZUF0IiwiY29kZVBvaW50QXQiLCJlcnJvcjEiLCJlcnJvcjIiLCJub3RBUmVnRXhwIiwiY29ycmVjdElzUmVnRXhwTG9naWMiLCIkZW5kc1dpdGgiLCJlbmRzV2l0aCIsIkNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDIiwiTUROX1BPTFlGSUxMX0JVRyIsInNlYXJjaFN0cmluZyIsImVuZFBvc2l0aW9uIiwic2VhcmNoIiwiJGZyb21Db2RlUG9pbnQiLCJmcm9tQ29kZVBvaW50IiwiSU5DT1JSRUNUX0xFTkdUSCIsImVsZW1lbnRzIiwiU1RSSU5HX0lURVJBVE9SIiwicG9pbnQiLCJyZWdleHBFeGVjIiwiU0hBTSIsIkRFTEVHQVRFU19UT19TWU1CT0wiLCJuYXRpdmVSZWdFeHBNZXRob2QiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCIkZXhlYyIsImZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljIiwiYWR2YW5jZVN0cmluZ0luZGV4IiwicmVnRXhwRXhlYyIsIm5hdGl2ZU1hdGNoIiwibWF5YmVDYWxsTmF0aXZlIiwibWF0Y2hlciIsInJ4IiwicmVzIiwiZnVsbFVuaWNvZGUiLCJtYXRjaFN0ciIsImdldFJlZ0V4cEZsYWdzIiwiSVNfUFVSRSIsIk1BVENIX0FMTCIsIlJFR0VYUF9TVFJJTkciLCJSRUdFWFBfU1RSSU5HX0lURVJBVE9SIiwibmF0aXZlTWF0Y2hBbGwiLCJtYXRjaEFsbCIsIldPUktTX1dJVEhfTk9OX0dMT0JBTF9SRUdFWCIsIiRSZWdFeHBTdHJpbmdJdGVyYXRvciIsIlJlZ0V4cFN0cmluZ0l0ZXJhdG9yIiwiJG1hdGNoQWxsIiwiZmxhZ3NWYWx1ZSIsIiRwYWRFbmQiLCJXRUJLSVRfQlVHIiwicGFkRW5kIiwiJHBhZFN0YXJ0IiwidGVtcGxhdGUiLCJyYXdUZW1wbGF0ZSIsImxpdGVyYWxTZWdtZW50cyIsIlNVQlNUSVRVVElPTl9TWU1CT0xTIiwiU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQiLCJtYXRjaGVkIiwiY2FwdHVyZXMiLCJuYW1lZENhcHR1cmVzIiwidGFpbFBvcyIsIm0iLCJzeW1ib2xzIiwiY2giLCJjYXB0dXJlIiwiZ2V0U3Vic3RpdHV0aW9uIiwibWF5YmVUb1N0cmluZyIsIlJFUExBQ0VfS0VFUFNfJDAiLCJSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSIsIlJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTIiwiXyIsIlVOU0FGRV9TVUJTVElUVVRFIiwic2VhcmNoVmFsdWUiLCJyZXBsYWNlVmFsdWUiLCJmdW5jdGlvbmFsUmVwbGFjZSIsInJlc3VsdHMiLCJhY2N1bXVsYXRlZFJlc3VsdCIsIm5leHRTb3VyY2VQb3NpdGlvbiIsInJlcGxhY2VyQXJncyIsInN0cmluZ0luZGV4T2YiLCJyZXBsYWNlQWxsIiwiSVNfUkVHX0VYUCIsInNlYXJjaExlbmd0aCIsImFkdmFuY2VCeSIsImVuZE9mTGFzdE1hdGNoIiwic2FtZVZhbHVlIiwiU0VBUkNIIiwibmF0aXZlU2VhcmNoIiwic2VhcmNoZXIiLCJwcmV2aW91c0xhc3RJbmRleCIsImNhbGxSZWdFeHBFeGVjIiwiYXJyYXlQdXNoIiwiTUFYX1VJTlQzMiIsIlNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyIsIm9yaWdpbmFsRXhlYyIsIlNQTElUIiwibmF0aXZlU3BsaXQiLCJpbnRlcm5hbFNwbGl0IiwibGltaXQiLCJsaW0iLCJvdXRwdXQiLCJsYXN0TGFzdEluZGV4Iiwic2VwYXJhdG9yQ29weSIsImxhc3RMZW5ndGgiLCJzcGxpdHRlciIsInVuaWNvZGVNYXRjaGluZyIsInEiLCIkc3RhcnRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHIiLCJpbnRTdGFydCIsImludExlbmd0aCIsImludEVuZCIsIm5vbiIsIiR0cmltIiwiZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCIsIiR0cmltRW5kIiwidHJpbUVuZCIsInRyaW1SaWdodCIsIiR0cmltU3RhcnQiLCJ0cmltU3RhcnQiLCJ0cmltTGVmdCIsInF1b3QiLCJhdHRyaWJ1dGUiLCJwMSIsImNyZWF0ZUhUTUwiLCJmb3JjZWRTdHJpbmdIVE1MTWV0aG9kIiwiYW5jaG9yIiwiYmlnIiwiYmxpbmsiLCJib2xkIiwiZml4ZWQiLCJmb250Y29sb3IiLCJjb2xvciIsImZvbnRzaXplIiwiaXRhbGljcyIsImxpbmsiLCJ1cmwiLCJzbWFsbCIsInN0cmlrZSIsInN1YiIsInN1cCIsInRvUG9zaXRpdmVJbnRlZ2VyIiwiQllURVMiLCJUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTIiwidG9PZmZzZXQiLCJ0eXBlZEFycmF5RnJvbSIsInJvdW5kIiwiQllURVNfUEVSX0VMRU1FTlQiLCJmcm9tTGlzdCIsImlzQXJyYXlCdWZmZXIiLCJpc1R5cGVkQXJyYXlJbmRleCIsIndyYXBwZWRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ3cmFwcGVkRGVmaW5lUHJvcGVydHkiLCJDTEFNUEVEIiwiR0VUVEVSIiwiU0VUVEVSIiwiTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yIiwiVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlIiwiYWRkRWxlbWVudCIsIiRsZW5ndGgiLCIkbGVuIiwidHlwZWRBcnJheU9mZnNldCIsImNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsIiRjb3B5V2l0aGluIiwiJGZpbGwiLCJhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QiLCJ0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yIiwiZnJvbVNwZWNpZXNBbmRMaXN0IiwicHJlZGljYXRlIiwiQXJyYXlJdGVyYXRvcnMiLCJhcnJheVZhbHVlcyIsImFycmF5S2V5cyIsImFycmF5RW50cmllcyIsIm5hdGl2ZVR5cGVkQXJyYXlJdGVyYXRvciIsIlBST1BFUl9BUlJBWV9WQUxVRVNfTkFNRSIsInR5cGVkQXJyYXlWYWx1ZXMiLCIkam9pbiIsIiRzbGljZSIsIkFDQ0VQVF9JTkNPUlJFQ1RfQVJHVU1FTlRTIiwiZXhwZWN0ZWQiLCJtb2QiLCJzdWJhcnJheSIsImJlZ2luIiwiYmVnaW5JbmRleCIsIiR0b0xvY2FsZVN0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwiVE9fTE9DQUxFX1NUUklOR19CVUciLCJVaW50OEFycmF5UHJvdG90eXBlIiwiYXJyYXlUb1N0cmluZyIsImFycmF5Sm9pbiIsIklTX05PVF9BUlJBWV9NRVRIT0QiLCJoZXgyIiwiaGV4NCIsInVuZXNjYXBlIiwiQXJyYXlJdGVyYXRpb25Nb2R1bGUiLCJ1bmNhdWdodEZyb3plblN0b3JlIiwiZnJvemVuIiwiVW5jYXVnaHRGcm96ZW5TdG9yZSIsImZpbmRVbmNhdWdodEZyb3plbiIsImNvbGxlY3Rpb25XZWFrIiwiZW5mb3JjZUl0ZXJuYWxTdGF0ZSIsIklTX0lFMTEiLCJJbnRlcm5hbFdlYWtNYXAiLCIkV2Vha01hcCIsIldlYWtNYXBQcm90b3R5cGUiLCJuYXRpdmVEZWxldGUiLCJuYXRpdmVIYXMiLCJuYXRpdmVHZXQiLCJuYXRpdmVTZXQiLCJXZWFrU2V0IiwiVVNFX0ZVTkNUSU9OX0NPTlNUUlVDVE9SIiwiQVNZTkNfSVRFUkFUT1IiLCJBc3luY0l0ZXJhdG9yIiwiUGFzc2VkQXN5bmNJdGVyYXRvclByb3RvdHlwZSIsIkFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJhc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24iLCJBc3luY0Zyb21TeW5jSXRlcmF0b3IiLCJoYXNBcmciLCIkcmV0dXJuIiwiJHRocm93IiwiQ09OU1RSVUNUT1IiLCJJU19UT19BUlJBWSIsIklTX0ZPUl9FQUNIIiwiTUFQUElORyIsImNsb3NlSXRlcmF0aW9uIiwicmV0dXJuTWV0aG9kIiwib25FcnJvciIsImxvb3AiLCJ0b0FycmF5IiwiZ2V0QXN5bmNJdGVyYXRvciIsImdldFZpcnR1YWwiLCJmcm9tQXN5bmMiLCJhc3luY0l0ZW1zIiwidXNpbmdBc3luY0l0ZXJhdG9yIiwidXNpbmdTeW5jSXRlcmF0b3IiLCIkZmlsdGVyUmVqZWN0IiwiZmlsdGVyT3V0IiwiSVNfRklORF9MQVNUX0lOREVYIiwiZmluZExhc3QiLCJmaW5kTGFzdEluZGV4IiwiJGZpbmRMYXN0IiwiJGZpbmRMYXN0SW5kZXgiLCJvYmplY3RDcmVhdGUiLCJzcGVjaWZpY0NvbnN0cnVjdG9yIiwiJGdyb3VwQnkiLCJncm91cEJ5IiwiaXNGcm96ZW5TdHJpbmdBcnJheSIsImFsbG93VW5kZWZpbmVkIiwiaXNUZW1wbGF0ZU9iamVjdCIsImxhc3RJdGVtIiwidW5pcXVlQnkiLCJyZXNvbHZlciIsInJlc29sdmVyRnVuY3Rpb24iLCJpdGVtIiwiQXN5bmNJdGVyYXRvckNvbnN0cnVjdG9yIiwibmV4dEhhbmRsZXIiLCJBc3luY0l0ZXJhdG9yUHJveHkiLCJpZ25vcmVBcmd1bWVudCIsImhhc0FyZ3VtZW50IiwiJCRyZXR1cm4iLCIkJHRocm93IiwiY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5IiwiYXNJbmRleGVkUGFpcnMiLCJlcnIiLCJkcm9wIiwiZmlsdGVyZXIiLCJzZWxlY3RlZCIsImlubmVySXRlcmF0b3IiLCJvdXRlckxvb3AiLCJtYXBwZWQiLCJpbm5lck5leHQiLCJpbm5lckxvb3AiLCJyZWR1Y2VyIiwibm9Jbml0aWFsIiwiYWNjdW11bGF0b3IiLCJ0YWtlIiwiJHRvQXJyYXkiLCJJTkNPUlJFQ1RfUkFOR0UiLCJOVU1FUklDX1JBTkdFX0lURVJBVE9SIiwiJFJhbmdlSXRlcmF0b3IiLCJOdW1lcmljUmFuZ2VJdGVyYXRvciIsIm9wdGlvbiIsInplcm8iLCJvbmUiLCJpZkluY3JlYXNlIiwiaW5jbHVzaXZlRW5kIiwiaW5jbHVzaXZlIiwiaGl0c0VuZCIsImN1cnJlbnRDb3VudCIsImN1cnJlbnRZaWVsZGluZ1ZhbHVlIiwiZW5kQ29uZGl0aW9uIiwiQmlnSW50IiwicmFuZ2UiLCJOb2RlIiwicHJpbWl0aXZlcyIsIm9iamVjdHNCeUluZGV4IiwiaW5pdGlhbGl6ZXIiLCJJU19PQkpFQ1QiLCJyb290IiwiYWN0aXZlIiwiZ2V0Q29tcG9zaXRlS2V5Tm9kZSIsImNvbXBvc2l0ZUtleSIsImNvbXBvc2l0ZVN5bWJvbCIsIk5hdGl2ZUl0ZXJhdG9yIiwiSXRlcmF0b3IiLCJJdGVyYXRvclByb3h5IiwiaWdub3JlQXJnIiwiY3JlYXRlSXRlcmF0b3JQcm94eSIsInJlbW92ZXIiLCJhbGxEZWxldGVkIiwid2FzRGVsZXRlZCIsImNvbGxlY3Rpb25EZWxldGVBbGwiLCJkZWxldGVBbGwiLCJlbXBsYWNlIiwidXBkYXRlIiwiaW5zZXJ0IiwiJGVtcGxhY2UiLCJnZXRNYXBJdGVyYXRvciIsIm5ld01hcCIsImZpbmRLZXkiLCJuZXh0SXRlbSIsImtleURlcml2YXRpdmUiLCJkZXJpdmVkS2V5Iiwic2FtZVZhbHVlWmVybyIsImtleUJ5Iiwia2V5T2YiLCJtYXBLZXlzIiwibWFwVmFsdWVzIiwiY2FsbGJhY2siLCJpc1ByZXNlbnRJbk1hcCIsInVwc2VydCIsInVwZGF0ZUZuIiwiaW5zZXJ0Rm4iLCIkdXBzZXJ0IiwidXBkYXRlT3JJbnNlcnQiLCJjbGFtcCIsImxvd2VyIiwidXBwZXIiLCJERUdfUEVSX1JBRCIsIlBJIiwiUkFEX1BFUl9ERUciLCJkZWdyZWVzIiwicmFkaWFucyIsInNjYWxlIiwiaW5Mb3ciLCJpbkhpZ2giLCJvdXRMb3ciLCJvdXRIaWdoIiwiZnNjYWxlIiwiaWFkZGgiLCJ4MCIsIngxIiwieTAiLCJ5MSIsIiR4MCIsIiR4MSIsIiR5MCIsImltdWxoIiwidSIsIiR1IiwiJHYiLCJ1MCIsInYwIiwidTEiLCJ2MSIsImlzdWJoIiwiU0VFREVEX1JBTkRPTSIsIlNFRURFRF9SQU5ET01fR0VORVJBVE9SIiwiU0VFRF9UWVBFX0VSUk9SIiwiJFNlZWRlZFJhbmRvbUdlbmVyYXRvciIsIlNlZWRlZFJhbmRvbUdlbmVyYXRvciIsInNlZWQiLCJzZWVkZWRQUk5HIiwic2lnbmJpdCIsInVtdWxoIiwiSU5WQUxJRF9OVU1CRVJfUkVQUkVTRU5UQVRJT04iLCJJTlZBTElEX1JBRElYIiwidmFsaWQiLCJmcm9tU3RyaW5nIiwibWF0aE51bSIsIk9CSkVDVF9JVEVSQVRPUiIsIk9iamVjdEl0ZXJhdG9yIiwiaXRlcmF0ZUVudHJpZXMiLCJpdGVyYXRlS2V5cyIsIml0ZXJhdGVWYWx1ZXMiLCJPQlNFUlZBQkxFIiwiY2xlYW51cFN1YnNjcmlwdGlvbiIsInN1YnNjcmlwdGlvblN0YXRlIiwiY2xlYW51cCIsInN1YnNjcmlwdGlvbkNsb3NlZCIsIm9ic2VydmVyIiwic3Vic2NyaXB0aW9uIiwiY2xvc2VkIiwic3Vic2NyaXB0aW9uT2JzZXJ2ZXIiLCJTdWJzY3JpcHRpb24iLCJzdWJzY3JpYmVyIiwiU3Vic2NyaXB0aW9uT2JzZXJ2ZXIiLCJ1bnN1YnNjcmliZSIsIm5leHRNZXRob2QiLCJlcnJvck1ldGhvZCIsImNvbXBsZXRlIiwiY29tcGxldGVNZXRob2QiLCIkT2JzZXJ2YWJsZSIsIk9ic2VydmFibGUiLCJzdWJzY3JpYmUiLCJvYnNlcnZhYmxlTWV0aG9kIiwib2JzZXJ2YWJsZSIsImdldE9yQ3JlYXRlTWV0YWRhdGFNYXAiLCJ0YXJnZXRLZXkiLCJ0YXJnZXRNZXRhZGF0YSIsImtleU1ldGFkYXRhIiwib3JkaW5hcnlIYXNPd25NZXRhZGF0YSIsIk1ldGFkYXRhS2V5IiwibWV0YWRhdGFNYXAiLCJvcmRpbmFyeUdldE93bk1ldGFkYXRhIiwib3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSIsIk1ldGFkYXRhVmFsdWUiLCJvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyIsInRvTWV0YWRhdGFLZXkiLCJnZXRNYXAiLCJ0b0tleSIsIlJlZmxlY3RNZXRhZGF0YU1vZHVsZSIsImRlZmluZU1ldGFkYXRhIiwibWV0YWRhdGFLZXkiLCJtZXRhZGF0YVZhbHVlIiwiZGVsZXRlTWV0YWRhdGEiLCJvcmRpbmFyeUdldE1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJpdGVyIiwib3JkaW5hcnlNZXRhZGF0YUtleXMiLCJvS2V5cyIsInBLZXlzIiwiZ2V0TWV0YWRhdGFLZXlzIiwiZ2V0T3duTWV0YWRhdGEiLCJnZXRPd25NZXRhZGF0YUtleXMiLCJvcmRpbmFyeUhhc01ldGFkYXRhIiwiaGFzTWV0YWRhdGEiLCJoYXNPd25NZXRhZGF0YSIsImRlY29yYXRvciIsImFkZGVyIiwiY29sbGVjdGlvbkFkZEFsbCIsImFkZEFsbCIsImRpZmZlcmVuY2UiLCJuZXdTZXQiLCJnZXRTZXRJdGVyYXRvciIsImludGVyc2VjdGlvbiIsImhhc0NoZWNrIiwiaXNEaXNqb2ludEZyb20iLCJpc1N1YnNldE9mIiwib3RoZXJTZXQiLCJpc1N1cGVyc2V0T2YiLCJzZXAiLCJzeW1tZXRyaWNEaWZmZXJlbmNlIiwidW5pb24iLCJTdHJpbmdNdWx0aWJ5dGVNb2R1bGUiLCIkU3RyaW5nSXRlcmF0b3IiLCJTdHJpbmdJdGVyYXRvciIsImNvZGVQb2ludCIsImNvZGVQb2ludHMiLCJhcnJheUZyb21Bc3luYyIsImFycmF5VW5pcXVlQnkiLCJDU1NSdWxlTGlzdCIsIkNTU1N0eWxlRGVjbGFyYXRpb24iLCJDU1NWYWx1ZUxpc3QiLCJDbGllbnRSZWN0TGlzdCIsIkRPTVJlY3RMaXN0IiwiRE9NU3RyaW5nTGlzdCIsIkRPTVRva2VuTGlzdCIsIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiwiRmlsZUxpc3QiLCJIVE1MQWxsQ29sbGVjdGlvbiIsIkhUTUxDb2xsZWN0aW9uIiwiSFRNTEZvcm1FbGVtZW50IiwiSFRNTFNlbGVjdEVsZW1lbnQiLCJNZWRpYUxpc3QiLCJNaW1lVHlwZUFycmF5IiwiTmFtZWROb2RlTWFwIiwiTm9kZUxpc3QiLCJQYWludFJlcXVlc3RMaXN0IiwiUGx1Z2luIiwiUGx1Z2luQXJyYXkiLCJTVkdMZW5ndGhMaXN0IiwiU1ZHTnVtYmVyTGlzdCIsIlNWR1BhdGhTZWdMaXN0IiwiU1ZHUG9pbnRMaXN0IiwiU1ZHU3RyaW5nTGlzdCIsIlNWR1RyYW5zZm9ybUxpc3QiLCJTb3VyY2VCdWZmZXJMaXN0IiwiU3R5bGVTaGVldExpc3QiLCJUZXh0VHJhY2tDdWVMaXN0IiwiVGV4dFRyYWNrTGlzdCIsIlRvdWNoTGlzdCIsImNsYXNzTGlzdCIsIkRPTVRva2VuTGlzdFByb3RvdHlwZSIsIkRPTUl0ZXJhYmxlcyIsImhhbmRsZVByb3RvdHlwZSIsIkNvbGxlY3Rpb25Qcm90b3R5cGUiLCJDT0xMRUNUSU9OX05BTUUiLCJBcnJheUl0ZXJhdG9yTWV0aG9kcyIsIkFycmF5VmFsdWVzIiwiTVNJRSIsInNjaGVkdWxlciIsInRpbWVvdXQiLCJib3VuZEFyZ3MiLCJzZXRJbnRlcnZhbCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInBhdGhuYW1lIiwiaHJlZiIsIlVSTFNlYXJjaFBhcmFtcyIsInVzZXJuYW1lIiwiaGFzaCIsIm1heEludCIsImJhc2UiLCJ0TWluIiwidE1heCIsInNrZXciLCJkYW1wIiwiaW5pdGlhbEJpYXMiLCJpbml0aWFsTiIsImRlbGltaXRlciIsInJlZ2V4Tm9uQVNDSUkiLCJyZWdleFNlcGFyYXRvcnMiLCJPVkVSRkxPV19FUlJPUiIsImJhc2VNaW51c1RNaW4iLCJzdHJpbmdGcm9tQ2hhckNvZGUiLCJ1Y3MyZGVjb2RlIiwiZXh0cmEiLCJkaWdpdFRvQmFzaWMiLCJkaWdpdCIsImFkYXB0IiwiZGVsdGEiLCJudW1Qb2ludHMiLCJmaXJzdFRpbWUiLCJlbmNvZGUiLCJpbnB1dExlbmd0aCIsImJpYXMiLCJjdXJyZW50VmFsdWUiLCJiYXNpY0xlbmd0aCIsImhhbmRsZWRDUENvdW50IiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwicU1pbnVzVCIsImJhc2VNaW51c1QiLCJlbmNvZGVkIiwibGFiZWxzIiwibGFiZWwiLCJVU0VfTkFUSVZFX1VSTCIsIm5hdGl2ZUZldGNoIiwiTmF0aXZlUmVxdWVzdCIsIlJlcXVlc3RQcm90b3R5cGUiLCJIZWFkZXJzIiwiVVJMX1NFQVJDSF9QQVJBTVMiLCJVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiIsImdldEludGVybmFsUGFyYW1zU3RhdGUiLCJwbHVzIiwic2VxdWVuY2VzIiwicGVyY2VudFNlcXVlbmNlIiwicGVyY2VudERlY29kZSIsInNlcXVlbmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZGVzZXJpYWxpemUiLCJzZXJpYWxpemUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXJzZVNlYXJjaFBhcmFtcyIsInF1ZXJ5Iiwic2hpZnQiLCJ1cGRhdGVTZWFyY2hQYXJhbXMiLCJ2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCIsInBhc3NlZCIsInJlcXVpcmVkIiwiVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciIsImVudHJ5SXRlcmF0b3IiLCJlbnRyeU5leHQiLCJ1cGRhdGVVUkwiLCJVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUiLCJhcHBlbmQiLCJnZXRBbGwiLCJmb3VuZCIsImVudHJpZXNJbmRleCIsInNsaWNlSW5kZXgiLCJ3cmFwUmVxdWVzdE9wdGlvbnMiLCJib2R5IiwiaGVhZGVycyIsImZldGNoIiwiUmVxdWVzdENvbnN0cnVjdG9yIiwiUmVxdWVzdCIsImdldFN0YXRlIiwiYXJyYXlGcm9tIiwidG9BU0NJSSIsIlVSTFNlYXJjaFBhcmFtc01vZHVsZSIsIk5hdGl2ZVVSTCIsImdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUiLCJnZXRJbnRlcm5hbFVSTFN0YXRlIiwiSU5WQUxJRF9BVVRIT1JJVFkiLCJJTlZBTElEX1NDSEVNRSIsIklOVkFMSURfSE9TVCIsIklOVkFMSURfUE9SVCIsIkFMUEhBIiwiQUxQSEFOVU1FUklDIiwiRElHSVQiLCJIRVhfU1RBUlQiLCJPQ1QiLCJERUMiLCJIRVgiLCJGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCIsIkxFQURJTkdfQU5EX1RSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UiLCJUQUJfQU5EX05FV19MSU5FIiwiRU9GIiwicGFyc2VIb3N0IiwicGFyc2VJUHY2IiwiaXNTcGVjaWFsIiwicGVyY2VudEVuY29kZSIsIkMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQiLCJwYXJzZUlQdjQiLCJwYXJ0cyIsInBhcnRzTGVuZ3RoIiwibnVtYmVycyIsInBhcnQiLCJpcHY0IiwicG9wIiwiYWRkcmVzcyIsInBpZWNlSW5kZXgiLCJjb21wcmVzcyIsInBvaW50ZXIiLCJudW1iZXJzU2VlbiIsImlwdjRQaWVjZSIsInN3YXBzIiwic3dhcCIsImZpbmRMb25nZXN0WmVyb1NlcXVlbmNlIiwiaXB2NiIsIm1heEluZGV4IiwiY3VyclN0YXJ0IiwiY3Vyckxlbmd0aCIsInNlcmlhbGl6ZUhvc3QiLCJpZ25vcmUwIiwidW5zaGlmdCIsImZyYWdtZW50UGVyY2VudEVuY29kZVNldCIsInBhdGhQZXJjZW50RW5jb2RlU2V0IiwidXNlcmluZm9QZXJjZW50RW5jb2RlU2V0Iiwic3BlY2lhbFNjaGVtZXMiLCJmdHAiLCJmaWxlIiwiaHR0cCIsImh0dHBzIiwid3MiLCJ3c3MiLCJzY2hlbWUiLCJpbmNsdWRlc0NyZWRlbnRpYWxzIiwicGFzc3dvcmQiLCJjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQiLCJjYW5ub3RCZUFCYXNlVVJMIiwiaXNXaW5kb3dzRHJpdmVMZXR0ZXIiLCJub3JtYWxpemVkIiwic3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciIsInNob3J0ZW5VUkxzUGF0aCIsInBhdGhTaXplIiwiaXNTaW5nbGVEb3QiLCJzZWdtZW50IiwiaXNEb3VibGVEb3QiLCJTQ0hFTUVfU1RBUlQiLCJTQ0hFTUUiLCJOT19TQ0hFTUUiLCJTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSIsIlBBVEhfT1JfQVVUSE9SSVRZIiwiUkVMQVRJVkUiLCJSRUxBVElWRV9TTEFTSCIsIlNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMiLCJTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyIsIkFVVEhPUklUWSIsIkhPU1QiLCJIT1NUTkFNRSIsIlBPUlQiLCJGSUxFIiwiRklMRV9TTEFTSCIsIkZJTEVfSE9TVCIsIlBBVEhfU1RBUlQiLCJQQVRIIiwiQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCIsIlFVRVJZIiwiRlJBR01FTlQiLCJwYXJzZVVSTCIsInN0YXRlT3ZlcnJpZGUiLCJzZWVuQXQiLCJzZWVuQnJhY2tldCIsInNlZW5QYXNzd29yZFRva2VuIiwiYnVmZmVyQ29kZVBvaW50cyIsImZhaWx1cmUiLCJmcmFnbWVudCIsImVuY29kZWRDb2RlUG9pbnRzIiwiVVJMQ29uc3RydWN0b3IiLCJ1cmxTdHJpbmciLCJiYXNlU3RhdGUiLCJzZWFyY2hQYXJhbXNTdGF0ZSIsInNlcmlhbGl6ZVVSTCIsIm9yaWdpbiIsImdldE9yaWdpbiIsImdldFByb3RvY29sIiwiZ2V0VXNlcm5hbWUiLCJnZXRQYXNzd29yZCIsImdldEhvc3QiLCJob3N0bmFtZSIsImdldEhvc3RuYW1lIiwiZ2V0UG9ydCIsImdldFBhdGhuYW1lIiwiZ2V0U2VhcmNoIiwiZ2V0U2VhcmNoUGFyYW1zIiwiZ2V0SGFzaCIsIlVSTFByb3RvdHlwZSIsImFjY2Vzc29yRGVzY3JpcHRvciIsIm5hdGl2ZUNyZWF0ZU9iamVjdFVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5hdGl2ZVJldm9rZU9iamVjdFVSTCIsInJldm9rZU9iamVjdFVSTCIsImJsb2IiLCJoYXNTeW1ib2wiLCJmb3IiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJSRUFDVF9QT1JUQUxfVFlQRSIsIlJFQUNUX0ZSQUdNRU5UX1RZUEUiLCJSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIiwiUkVBQ1RfUFJPRklMRVJfVFlQRSIsIlJFQUNUX1BST1ZJREVSX1RZUEUiLCJSRUFDVF9DT05URVhUX1RZUEUiLCJSRUFDVF9BU1lOQ19NT0RFX1RZUEUiLCJSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSIsIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCJSRUFDVF9TVVNQRU5TRV9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIiwiUkVBQ1RfTUVNT19UWVBFIiwiUkVBQ1RfTEFaWV9UWVBFIiwiUkVBQ1RfQkxPQ0tfVFlQRSIsIlJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUiLCJSRUFDVF9SRVNQT05ERVJfVFlQRSIsIlJFQUNUX1NDT1BFX1RZUEUiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCIkJHR5cGVvZiIsInR5cGVPZiIsIiQkdHlwZW9mVHlwZSIsIkFzeW5jTW9kZSIsIkNvbmN1cnJlbnRNb2RlIiwiQ29udGV4dENvbnN1bWVyIiwiQ29udGV4dFByb3ZpZGVyIiwiRWxlbWVudCIsIkZvcndhcmRSZWYiLCJGcmFnbWVudCIsIkxhenkiLCJNZW1vIiwiUG9ydGFsIiwiUHJvZmlsZXIiLCJTdHJpY3RNb2RlIiwiU3VzcGVuc2UiLCJoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSIsImlzQXN5bmNNb2RlIiwiaXNDb25jdXJyZW50TW9kZSIsImlzQ29udGV4dENvbnN1bWVyIiwiaXNDb250ZXh0UHJvdmlkZXIiLCJpc0VsZW1lbnQiLCJpc0ZvcndhcmRSZWYiLCJpc0ZyYWdtZW50IiwiaXNMYXp5IiwiaXNNZW1vIiwiaXNQb3J0YWwiLCJpc1Byb2ZpbGVyIiwiaXNTdHJpY3RNb2RlIiwiaXNTdXNwZW5zZSIsImV4cG9ydHMiLCJwcm9wSXNFbnVtZXJhYmxlIiwic2hvdWxkVXNlTmF0aXZlIiwidGVzdDEiLCJ0ZXN0MiIsIm9yZGVyMiIsInRlc3QzIiwibGV0dGVyIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJwcmludFdhcm5pbmciLCJsb2dnZWRUeXBlRmFpbHVyZXMiLCJ0ZXh0IiwiY2hlY2tQcm9wVHlwZXMiLCJ0eXBlU3BlY3MiLCJjb21wb25lbnROYW1lIiwiZ2V0U3RhY2siLCJ0eXBlU3BlY05hbWUiLCJleCIsInN0YWNrIiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJSZWFjdElzIiwiZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCIsImlzVmFsaWRFbGVtZW50IiwidGhyb3dPbkRpcmVjdEFjY2VzcyIsIklURVJBVE9SX1NZTUJPTCIsIkZBVVhfSVRFUkFUT1JfU1lNQk9MIiwiZ2V0SXRlcmF0b3JGbiIsIm1heWJlSXRlcmFibGUiLCJpdGVyYXRvckZuIiwiQU5PTllNT1VTIiwiUmVhY3RQcm9wVHlwZXMiLCJjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlciIsImJvb2wiLCJjcmVhdGVBbnlUeXBlQ2hlY2tlciIsImFycmF5T2YiLCJjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIiLCJjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIiLCJlbGVtZW50VHlwZSIsImNyZWF0ZUVsZW1lbnRUeXBlVHlwZUNoZWNrZXIiLCJpbnN0YW5jZU9mIiwiY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciIsImNyZWF0ZU5vZGVDaGVja2VyIiwib2JqZWN0T2YiLCJjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyIiwib25lT2YiLCJjcmVhdGVFbnVtVHlwZUNoZWNrZXIiLCJvbmVPZlR5cGUiLCJjcmVhdGVVbmlvblR5cGVDaGVja2VyIiwic2hhcGUiLCJjcmVhdGVTaGFwZVR5cGVDaGVja2VyIiwiZXhhY3QiLCJjcmVhdGVTdHJpY3RTaGFwZVR5cGVDaGVja2VyIiwiUHJvcFR5cGVFcnJvciIsImNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyIiwidmFsaWRhdGUiLCJtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSIsIm1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50IiwiY2hlY2tUeXBlIiwiaXNSZXF1aXJlZCIsInByb3BzIiwicHJvcE5hbWUiLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJjYWNoZUtleSIsImNoYWluZWRDaGVja1R5cGUiLCJleHBlY3RlZFR5cGUiLCJwcm9wVmFsdWUiLCJwcm9wVHlwZSIsImdldFByb3BUeXBlIiwicHJlY2lzZVR5cGUiLCJnZXRQcmVjaXNlVHlwZSIsInR5cGVDaGVja2VyIiwiZXhwZWN0ZWRDbGFzcyIsImV4cGVjdGVkQ2xhc3NOYW1lIiwiYWN0dWFsQ2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiZXhwZWN0ZWRWYWx1ZXMiLCJ2YWx1ZXNTdHJpbmciLCJhcnJheU9mVHlwZUNoZWNrZXJzIiwiY2hlY2tlciIsImdldFBvc3RmaXhGb3JUeXBlV2FybmluZyIsImlzTm9kZSIsInNoYXBlVHlwZXMiLCJhbGxLZXlzIiwiUHJvcFR5cGVzIiwicGFyc2UiLCJvcHRzIiwicHJlc2VydmVOdW1iZXJzIiwiZ2V0S2V5VmFsdWVDaHVua3MiLCJpc051bWVyaWMiLCJjaHVua3MiLCJoYXNVbmNsb3NlZFVybCIsImNodW5rIiwibmV4dFNwbGl0Iiwic3Vic3RyaW5nIiwiUl9CT09MRUFOIiwiUl9GT0NVU0FCTEUiLCJSX0NMSUNLQUJMRSIsIlJfSU5WQUxJRF9DSEFSIiwiYXR0ckZpeCIsInByb3BGaXgiLCJhdHRySG9va3MiLCJ0YWJpbmRleCIsImF0dHJpYnV0ZU5vZGUiLCJnZXRBdHRyaWJ1dGVOb2RlIiwic3BlY2lmaWVkIiwibm9kZU5hbWUiLCJib29sSG9vayIsImVsZW0iLCJhdHRyTm9kZUhvb2siLCJjc3NUZXh0IiwiaGlkZWZvY3VzIiwicmVhZG9ubHkiLCJtYXhsZW5ndGgiLCJjZWxsc3BhY2luZyIsImNlbGxwYWRkaW5nIiwicm93c3BhbiIsImNvbHNwYW4iLCJ1c2VtYXAiLCJmcmFtZWJvcmRlciIsImNvbnRlbnRlZGl0YWJsZSIsInVhIiwibmF2aWdhdG9yIiwiZG9jIiwibnVtYmVyaWZ5IiwiaWVWZXJzaW9uIiwiZG9jdW1lbnRNb2RlIiwibWl4IiwiZWFjaCIsImFyciIsImwiLCJpZSIsInJldCIsIm5vZGVWYWx1ZSIsInRhYkluZGV4IiwiZ2V0QXR0cmlidXRlIiwicGxhY2Vob2xkZXIiLCJocmVmRml4IiwiY2hpbGROb2RlcyIsImFsbFRleHQiLCJub2RlVHlwZSIsIm93bmVyRG9jdW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJSRV9UUklNIiwiU1BBQ0UiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNvbnRleHQiLCJjcmVhdGVDb21tZW50Iiwibm9kZXMiLCJuZWVkc0ZpbHRlciIsImNvbXBhcmVOb2RlT3JkZXIiLCJkb2N1bWVudEVsZW1lbnQiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImJpdCIsInV0aWwiLCJ1bmlxdWUiLCJoYXNEdXBsaWNhdGUiLCJiYXNlSGFzRHVwbGljYXRlIiwic29ydE9yZGVyIiwiZ2V0U2ltcGxlQXR0ciIsImNvbnRhaW5zIiwicGFyZW50Tm9kZSIsImlzVGFnIiwiaGFzU2luZ2xlQ2xhc3MiLCJjbHMiLCJjbGFzc05hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJpbmQiLCJhdHRyIiwiYXR0ck5vcm1hbGl6ZXIiLCJhdHRyTm9kZSIsInBhcnNlciIsIkdyYW1tYXJDb25zdCIsImluQXJyYXkiLCJMZXhlciIsImNmZyIsInJ1bGVzIiwicmVzZXRJbnB1dCIsInN0YXRlU3RhY2siLCJJTklUSUFMIiwiZmlyc3RMaW5lIiwibGluZU51bWJlciIsImxhc3RMaW5lIiwiZmlyc3RDb2x1bW4iLCJsYXN0Q29sdW1uIiwiY3VycmVudFN0YXRlIiwibWFwU3RhdGUiLCJudW0iLCJERUJVR19DT05URVhUX0xJTUlUIiwicGFzdCIsIm1hcFN5bWJvbEZvckNvZGVHZW4iLCJzeW1ib2xNYXAiLCJycyIsInJldmVyc2VTeW1ib2xNYXAiLCJydWxlIiwibGluZXMiLCJnZXRDdXJyZW50UnVsZXMiLCJtYXBTeW1ib2wiLCJFTkRfVEFHIiwidG9rZW4iLCJhY3Rpb24iLCJtYXRjaGVzIiwibGV4IiwibGV4ZXIiLCJ5eSIsInB1c2hTdGF0ZSIsInBvcFN0YXRlIiwidW5Fc2NhcGUiLCJ1bkVzY2FwZVN0ciIsInByb2R1Y3Rpb25zIiwiJDEiLCIkMyIsIm5leHRDb21iaW5hdG9yIiwicHJldkNvbWJpbmF0b3IiLCIkMiIsIm9yZGVyIiwiaWRlbnQiLCIkNCIsInBhcmFtIiwidGFibGUiLCJmaWxlbmFtZSIsImdvdG9zIiwidGFibGVBY3Rpb24iLCJ2YWx1ZVN0YWNrIiwic3ltYm9sRm9yU3RhdGUiLCJtYXBSZXZlcnNlU3ltYm9sIiwic2hvd0RlYnVnSW5mbyIsIlRZUEVfSU5ERVgiLCJTSElGVF9UWVBFIiwiVE9fSU5ERVgiLCJSRURVQ0VfVFlQRSIsInByb2R1Y3Rpb24iLCJQUk9EVUNUSU9OX0lOREVYIiwicmVkdWNlZFN5bWJvbCIsInJlZHVjZWRBY3Rpb24iLCJyZWR1Y2VkUmhzIiwicmhzIiwiJCQiLCJuZXdTdGF0ZSIsIkFDQ0VQVF9UWVBFIiwiRVhQQU5ET19TRUxFQ1RPUl9LRVkiLCJjYWNoZXMiLCJpc0NvbnRleHRYTUwiLCJ1dWlkIiwic3ViTWF0Y2hlc0NhY2hlIiwiZ2V0QXR0ciIsImFOUGx1c0IiLCJ1bmVzY2FwZUZuIiwiZXNjYXBlZCIsImhpZ2giLCJtYXRjaEV4cHIiLCJwc2V1ZG9GbkV4cHIiLCJhYiIsImdldEFiIiwiY2hpbGQiLCJtYXRjaEluZGV4QnlBYiIsImVsVHlwZSIsInRhZ05hbWUiLCJsYW5nIiwiZWxMYW5nIiwibm90IiwibmVnYXRpb25BcmciLCJwc2V1ZG9JZGVudEV4cHIiLCJmb2N1cyIsImFjdGl2ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImVuYWJsZWQiLCJkaXNhYmxlZCIsImNoZWNrZWQiLCJhdHRyaWJ1dGVFeHByIiwiZWxWYWx1ZSIsInJlbGF0aXZlRXhwciIsImRpciIsImltbWVkaWF0ZSIsImF0dHJpYiIsIm1hdGNoRm4iLCJwc2V1ZG8iLCJmblN0ciIsInJlc2V0U3RhdHVzIiwiZGlyZWN0aW9uIiwiZXEiLCJpc1hNTCIsInNlZWRzIiwic2VsZWN0Iiwic2luZ2xlTWF0Y2giLCJtYXRjaFN1ZmZpeCIsIm1hdGNoU3VmZml4TGVuIiwibWF0Y2hTdWZmaXhJbmRleCIsInNpbmdsZU1hdGNoU3VmZml4Iiwic2luZ2xlTWF0Y2hTdWZmaXhUeXBlIiwibWF0Y2hJbW1lZGlhdGUiLCJzdGFydEVsIiwicmVsYXRpdmVPcCIsInN0YXJ0TWF0Y2giLCJmaW5kRml4ZWRNYXRjaEZyb21IZWFkIiwiY3VyIiwiZ2VuSWQiLCJzZWxlY3RvcklkIiwibWF0Y2hTdWIiLCJtYXRjaEtleSIsIm1hdGNoU3ViSW50ZXJuYWwiLCJtYXRjaEltbWVkaWF0ZVJldCIsInNlbGVjdG9yIiwiZ3JvdXBJbmRleCIsImdyb3VwTGVuIiwiY29udGV4dERvY3VtZW50Iiwic3VmZml4SW5kZXgiLCJzdWZmaXhMZW4iLCJzZWVkc0luZGV4IiwibXlTZWVkcyIsInNlZWRzTGVuIiwic2luZ2xlU3VmZml4IiwiZG9lc05vdEhhc0J5SWQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHRJbkRvbSIsInRtcCIsInRtcHMiLCJ0bXBMZW4iLCJ0bXBJIiwibWF0Y2hIZWFkIiwiaHlwaGVuRXhwcmVzc2lvbiIsInVwcGVyQ2FzZUZpcnN0TWF0Y2giLCJjYW1lbENhc2UiLCJjYW1lbENhc2VkIiwiaXNTdHJpbmciLCJpc1VuZGVmaW5lZCIsImRlc3QiLCJkZXN0aW5hdGlvbiIsInN0eWxlQ2FtZWxDYXNlIiwiY2FtZWwiLCJSZWFjdCIsInN0eWxlQXR0ciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJldmVudExpc3RlbmVycyIsInJlZiIsImNvbXBvbmVudCIsInNldFByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJFTEVNRU5UX05PREUiLCJET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQiLCJET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkciLCJET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkciLCJET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyIsIkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIsImV2ZW50TmFtZU1hcHBpbmdzIiwic2tpcE5hbWVUcmFuc2Zvcm1hdGlvbkV4cHJlc3Npb25zIiwiYXR0cmlidXRlTmFtZU1hcHBpbmdzIiwiYXR0cmlidXRlVG9Qcm9wTmFtZSIsInNraXBUcmFuc2Zvcm1NYXRjaGVzIiwiZXhwciIsInN0eWxlcyIsInJlbW92ZUF0dHJpYnV0ZSIsImV2ZW50VG9Qcm9wTmFtZSIsInByb3AiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibGlzdGVuZXJzIiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwicXVlcnlTZWxlY3RvciIsImNoaWxkcmVuIiwiY2hpbGRNYXRjaGVzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xvbmVOb2RlIiwiZGVlcCIsImNoaWxkRWwiLCJjbG9uZUVsZW1lbnQiLCJ0b1JlYWN0Iiwib3JpZ2luYWxFbGVtZW50IiwidW5pcXVlS2V5Iiwic3ludGhldGljRXZlbnQiLCJuYXRpdmVFdmVudCIsIm90aGVyIiwiZ2V0Rmlyc3ROb2RlQnlPcmRlciIsIm5vZGVPbmUiLCJub2RlVHdvIiwiaXNBbmNlc3RvciIsImVpdGhlckNvbnRhaW5zIiwiZ2V0Um9vdE5vZGUiLCJyZWZlcmVuY2VSb290Iiwib3RoZXJSb290IiwibmV4dFNpYmxpbmciLCJzaWJsaW5ncyIsIm1lIiwicHJldmlvdXNTaWJsaW5nIiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJuYW1lc3BhY2VNZXRob2RzIiwiV2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIl9hc3NpZ24iLCJlbXB0eU9iamVjdCIsInZhbGlkYXRlRm9ybWF0IiwiZm9ybWF0IiwiX2ludmFyaWFudCIsImQiLCJhcmdJbmRleCIsImZyYW1lc1RvUG9wIiwid2FybmluZyIsIl9sZW4iLCJfa2V5IiwiX2xlbjIiLCJfa2V5MiIsIk1JWElOU19LRVkiLCJpZGVudGl0eSIsIlJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzIiwiY2hpbGRDb250ZXh0IiwiZmFjdG9yeSIsIlJlYWN0Q29tcG9uZW50IiwiUmVhY3ROb29wVXBkYXRlUXVldWUiLCJpbmplY3RlZE1peGlucyIsIlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJtaXhpbnMiLCJzdGF0aWNzIiwicHJvcFR5cGVzIiwiY29udGV4dFR5cGVzIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJnZXREZWZhdWx0UHJvcHMiLCJnZXRJbml0aWFsU3RhdGUiLCJnZXRDaGlsZENvbnRleHQiLCJyZW5kZXIiLCJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJjb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSIsInVwZGF0ZUNvbXBvbmVudCIsIlJlYWN0Q2xhc3NTdGF0aWNJbnRlcmZhY2UiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJSRVNFUlZFRF9TUEVDX0tFWVMiLCJkaXNwbGF5TmFtZSIsIm1peFNwZWNJbnRvQ29tcG9uZW50IiwidmFsaWRhdGVUeXBlRGVmIiwiY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24iLCJtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudCIsImF1dG9iaW5kIiwidHlwZURlZiIsInZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwic3BlY1BvbGljeSIsIlJlYWN0Q2xhc3NNaXhpbiIsInNwZWMiLCJ0eXBlb2ZTcGVjIiwiaXNNaXhpblZhbGlkIiwiYXV0b0JpbmRQYWlycyIsIl9fcmVhY3RBdXRvQmluZFBhaXJzIiwiaXNSZWFjdENsYXNzTWV0aG9kIiwic2hvdWxkQXV0b0JpbmQiLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJpc1Jlc2VydmVkIiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsInR3byIsIm1lcmdlZFJlc3VsdCIsImNoYWluZWRGdW5jdGlvbiIsImJpbmRBdXRvQmluZE1ldGhvZCIsImJvdW5kTWV0aG9kIiwiX19yZWFjdEJvdW5kQ29udGV4dCIsIl9fcmVhY3RCb3VuZE1ldGhvZCIsIl9fcmVhY3RCb3VuZEFyZ3VtZW50cyIsIl9iaW5kIiwibmV3VGhpcyIsInJlYm91bmRNZXRob2QiLCJiaW5kQXV0b0JpbmRNZXRob2RzIiwicGFpcnMiLCJhdXRvQmluZEtleSIsIklzTW91bnRlZFByZU1peGluIiwiX19pc01vdW50ZWQiLCJJc01vdW50ZWRQb3N0TWl4aW4iLCJyZXBsYWNlU3RhdGUiLCJ1cGRhdGVyIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImlzTW91bnRlZCIsIl9fZGlkV2FybklzTW91bnRlZCIsIlJlYWN0Q2xhc3NDb21wb25lbnQiLCJjcmVhdGVDbGFzcyIsInJlZnMiLCJpbml0aWFsU3RhdGUiLCJfaXNNb2NrRnVuY3Rpb24iLCJkZWZhdWx0UHJvcHMiLCJpc1JlYWN0Q2xhc3NBcHByb3ZlZCIsImNvbXBvbmVudFNob3VsZFVwZGF0ZSIsImNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyIsIm1ldGhvZE5hbWUiLCJDb21wb25lbnQiLCJyZWFjdElzIiwiUkVBQ1RfU1RBVElDUyIsImNvbnRleHRUeXBlIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiS05PV05fU1RBVElDUyIsImNhbGxlciIsImFyaXR5IiwiRk9SV0FSRF9SRUZfU1RBVElDUyIsIk1FTU9fU1RBVElDUyIsImNvbXBhcmUiLCJUWVBFX1NUQVRJQ1MiLCJnZXRTdGF0aWNzIiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJ0YXJnZXRTdGF0aWNzIiwic291cmNlU3RhdGljcyIsImNyZWF0ZVJlYWN0Q2xhc3MiLCJ3aXRoRmF1eERPTUZhY3RvcnkiLCJ3aXRoRmF1eERPTSIsIldyYXBwZWRDb21wb25lbnQiLCJXaXRoRmF1eERPTSIsImNvbm5lY3RlZEZhdXhET00iLCJhbmltYXRlRmF1eERPTVVudGlsIiwic3RvcEFuaW1hdGluZ0ZhdXhET00iLCJzdG9wRHJhd0ZhdXhET00iLCJjb25uZWN0RmF1eERPTSIsImRpc2NhcmROb2RlIiwiZHJhd0ZhdXhET01UaW1lb3V0IiwiZHJhd0ZhdXhET00iLCJ2aXJ0dWFsRE9NIiwic2V0U3RhdGUiLCJhbmltYXRlRmF1eERPTSIsImR1cmF0aW9uIiwiZmF1eERPTUFuaW1hdGlvbkludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImlzQW5pbWF0aW5nRmF1eERPTSIsImdldERpc3BsYXlOYW1lIiwiUmVhY3RGYXV4RE9NIiwiZGVmYXVsdFZpZXciLCJjcmVhdGVFbGVtZW50TlMiLCJub29wIiwiZGlzcGF0Y2giLCJwYXJzZVR5cGVuYW1lcyIsInR5cGVuYW1lcyIsInR5cGVzIiwib24iLCJ0eXBlbmFtZSIsImNvcHkiLCJjbG91ZFJhZGlhbnMiLCJjdyIsImNsb3VkVGV4dCIsImZvbnQiLCJjbG91ZEZvbnQiLCJmb250U2l6ZSIsImNsb3VkRm9udFNpemUiLCJmb250U3R5bGUiLCJjbG91ZEZvbnROb3JtYWwiLCJmb250V2VpZ2h0Iiwicm90YXRlIiwiY2xvdWRSb3RhdGUiLCJwYWRkaW5nIiwiY2xvdWRQYWRkaW5nIiwic3BpcmFsIiwiYXJjaGltZWRlYW5TcGlyYWwiLCJ3b3JkcyIsInRpbWVJbnRlcnZhbCIsInRpbWVyIiwiY2xvdWQiLCJjYW52YXMiLCJjbG91ZENhbnZhcyIsImZ1bmN0b3IiLCJjb250ZXh0QW5kUmF0aW8iLCJnZXRDb250ZXh0IiwiYm9hcmQiLCJ6ZXJvQXJyYXkiLCJib3VuZHMiLCJ0YWdzIiwid2VpZ2h0IiwiY2xvdWRTcHJpdGUiLCJoYXNUZXh0IiwicGxhY2UiLCJjbG91ZEJvdW5kcyIsIndpZHRoIiwiaGVpZ2h0IiwicmF0aW8iLCJnZXRJbWFnZURhdGEiLCJmaWxsU3R5bGUiLCJzdHJva2VTdHlsZSIsInRleHRBbGlnbiIsInN0YXJ0WCIsInN0YXJ0WSIsIm1heERlbHRhIiwiZHQiLCJkeGR5IiwiZHgiLCJkeSIsImNsb3VkQ29sbGlkZSIsImNvbGxpZGVSZWN0cyIsInNwcml0ZSIsInciLCJzdyIsImx4Iiwic3giLCJtc3giLCJoIiwic3BpcmFscyIsImRpIiwiY2xlYXJSZWN0IiwibWF4aCIsInNhdmUiLCJtZWFzdXJlVGV4dCIsInNyIiwic2luIiwiY3IiLCJjb3MiLCJ3Y3IiLCJ3c3IiLCJoY3IiLCJoc3IiLCJ0cmFuc2xhdGUiLCJmaWxsVGV4dCIsImxpbmVXaWR0aCIsInN0cm9rZVRleHQiLCJyZXN0b3JlIiwieG9mZiIsInlvZmYiLCJwaXhlbHMiLCJ3MzIiLCJzZWVuIiwic2VlblJvdyIsImIwIiwiYjEiLCJyZWN0YW5ndWxhclNwaXJhbCIsImFyY2hpbWVkZWFuIiwicmVjdGFuZ3VsYXIiLCJoYXNFbGVtZW50VHlwZSIsImhhc01hcCIsImhhc1NldCIsImhhc0FycmF5QnVmZmVyIiwiZXF1YWwiLCJpc0VxdWFsIiwid2FybiIsInhodG1sIiwic3ZnIiwieGxpbmsiLCJ4bWwiLCJ4bWxucyIsIm5hbWVzcGFjZXMiLCJsb2NhbCIsImNyZWF0b3JJbmhlcml0IiwidXJpIiwibmFtZXNwYWNlVVJJIiwiY3JlYXRvckZpeGVkIiwiZnVsbG5hbWUiLCJub25lIiwiX2dyb3VwcyIsInN1Ymdyb3VwcyIsInN1Ymdyb3VwIiwic3Vibm9kZSIsIl9fZGF0YV9fIiwiU2VsZWN0aW9uIiwiX3BhcmVudHMiLCJhcnJheUFsbCIsInNlbGVjdG9yQWxsIiwicGFyZW50cyIsImNoaWxkTWF0Y2hlciIsImNoaWxkRmluZCIsImNoaWxkRmlyc3QiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNoaWxkcmVuRmlsdGVyIiwic2VsZWN0QWxsIiwiX2VudGVyIiwic3BhcnNlIiwiRW50ZXJOb2RlIiwiZGF0dW0iLCJfbmV4dCIsIl9wYXJlbnQiLCJiaW5kSW5kZXgiLCJncm91cExlbmd0aCIsImRhdGFMZW5ndGgiLCJiaW5kS2V5Iiwibm9kZUJ5S2V5VmFsdWUiLCJrZXlWYWx1ZXMiLCJrZXlWYWx1ZSIsImRlbGV0ZSIsImNvbnN0YW50IiwiZW50ZXJHcm91cCIsInVwZGF0ZUdyb3VwIiwiZXhpdEdyb3VwIiwiaTAiLCJpMSIsIl9leGl0Iiwib25lbnRlciIsIm9udXBkYXRlIiwib25leGl0IiwicmVtb3ZlIiwic2VsZWN0aW9uIiwiZ3JvdXBzMCIsImdyb3VwczEiLCJtMCIsIm0xIiwibWVyZ2VzIiwiZ3JvdXAwIiwiZ3JvdXAxIiwiYXNjZW5kaW5nIiwiY29tcGFyZU5vZGUiLCJzb3J0Z3JvdXBzIiwic29ydGdyb3VwIiwiYXR0clJlbW92ZSIsImF0dHJSZW1vdmVOUyIsInJlbW92ZUF0dHJpYnV0ZU5TIiwiYXR0ckNvbnN0YW50IiwiYXR0ckNvbnN0YW50TlMiLCJzZXRBdHRyaWJ1dGVOUyIsImF0dHJGdW5jdGlvbiIsImF0dHJGdW5jdGlvbk5TIiwiZ2V0QXR0cmlidXRlTlMiLCJzdHlsZVJlbW92ZSIsInN0eWxlQ29uc3RhbnQiLCJwcmlvcml0eSIsInN0eWxlRnVuY3Rpb24iLCJzdHlsZVZhbHVlIiwicHJvcGVydHlSZW1vdmUiLCJwcm9wZXJ0eUNvbnN0YW50IiwicHJvcGVydHlGdW5jdGlvbiIsImNsYXNzQXJyYXkiLCJDbGFzc0xpc3QiLCJfbm9kZSIsIl9uYW1lcyIsImNsYXNzZWRBZGQiLCJjbGFzc2VkUmVtb3ZlIiwiY2xhc3NlZFRydWUiLCJjbGFzc2VkRmFsc2UiLCJjbGFzc2VkRnVuY3Rpb24iLCJ0ZXh0UmVtb3ZlIiwidGV4dENvbnN0YW50IiwidGV4dEZ1bmN0aW9uIiwiaHRtbFJlbW92ZSIsImh0bWxDb25zdGFudCIsImh0bWxGdW5jdGlvbiIsInJhaXNlIiwiZmlyc3RDaGlsZCIsImNyZWF0b3IiLCJjb25zdGFudE51bGwiLCJzZWxlY3Rpb25fY2xvbmVTaGFsbG93IiwiY2xvbmUiLCJzZWxlY3Rpb25fY2xvbmVEZWVwIiwiY29udGV4dExpc3RlbmVyIiwib25SZW1vdmUiLCJfX29uIiwibyIsIm9uQWRkIiwiQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsImRpc3BhdGNoQ29uc3RhbnQiLCJkaXNwYXRjaEZ1bmN0aW9uIiwic2VsZWN0aW9uX3NlbGVjdGlvbiIsInNlbGVjdGlvbl9zZWxlY3QiLCJzZWxlY3Rpb25fc2VsZWN0QWxsIiwic2VsZWN0Q2hpbGQiLCJzZWxlY3Rpb25fc2VsZWN0Q2hpbGQiLCJzZWxlY3RDaGlsZHJlbiIsInNlbGVjdGlvbl9zZWxlY3RDaGlsZHJlbiIsInNlbGVjdGlvbl9maWx0ZXIiLCJzZWxlY3Rpb25fZGF0YSIsInNlbGVjdGlvbl9lbnRlciIsInNlbGVjdGlvbl9leGl0Iiwic2VsZWN0aW9uX2pvaW4iLCJzZWxlY3Rpb25fbWVyZ2UiLCJzZWxlY3Rpb25fb3JkZXIiLCJzZWxlY3Rpb25fc29ydCIsInNlbGVjdGlvbl9jYWxsIiwic2VsZWN0aW9uX25vZGVzIiwic2VsZWN0aW9uX25vZGUiLCJzZWxlY3Rpb25fc2l6ZSIsInNlbGVjdGlvbl9lbXB0eSIsInNlbGVjdGlvbl9lYWNoIiwic2VsZWN0aW9uX2F0dHIiLCJzZWxlY3Rpb25fc3R5bGUiLCJzZWxlY3Rpb25fcHJvcGVydHkiLCJjbGFzc2VkIiwic2VsZWN0aW9uX2NsYXNzZWQiLCJzZWxlY3Rpb25fdGV4dCIsInNlbGVjdGlvbl9odG1sIiwic2VsZWN0aW9uX3JhaXNlIiwic2VsZWN0aW9uX2xvd2VyIiwic2VsZWN0aW9uX2FwcGVuZCIsInNlbGVjdGlvbl9pbnNlcnQiLCJzZWxlY3Rpb25fcmVtb3ZlIiwic2VsZWN0aW9uX2Nsb25lIiwic2VsZWN0aW9uX2RhdHVtIiwic2VsZWN0aW9uX29uIiwic2VsZWN0aW9uX2Rpc3BhdGNoIiwic2VsZWN0aW9uX2l0ZXJhdG9yIiwiaW5pdFJhbmdlIiwiaW1wbGljaXQiLCJvcmRpbmFsIiwidW5rbm93biIsInNwZWNpZmllciIsImNvbG9ycyIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwiYXJyMiIsIl9pIiwiX2FyciIsIl9uIiwiX2QiLCJfcyIsIl9lIiwiZGVmYXVsdFNjYWxlT3JkaW5hbCIsInNjYWxlT3JkaW5hbCIsInNjaGVtZUNhdGVnb3J5MTAiLCJXb3JkQ2xvdWQiLCJfcmVmIiwiX3JlZiR3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiX3JlZiRmb250IiwiX3JlZiRmb250U3R5bGUiLCJfcmVmJGZvbnRXZWlnaHQiLCJfcmVmJGZvbnRTaXplIiwiX3JlZiRyb3RhdGUiLCJfcmVmJHNwaXJhbCIsIl9yZWYkcGFkZGluZyIsIl9yZWYkcmFuZG9tIiwiX3JlZiRmaWxsIiwib25Xb3JkQ2xpY2siLCJvbldvcmRNb3VzZU92ZXIiLCJvbldvcmRNb3VzZU91dCIsImVsZW1lbnRSZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwiUmVhY3RGYXV4RG9tIiwibGF5b3V0IiwiX2xheW91dCRzaXplIiwiX2xheW91dCRzaXplMiIsInRleHRzIiwiX3B0IiwiaXNEZWVwRXF1YWwiLCJXb3JkQ2xvdWRXaWRnZXRDb21wb25lbnQiLCJpbnB1dERhdGEiLCJmb250U2l6ZU1hcHBlciIsIndvcmQiLCJvbkNsaWNrSGFuZGxlIiwib25DbGlja0FjdGlvbiIsImNhbkV4ZWN1dGUiLCJpc0V4ZWN1dGluZyIsImNob3NlbldvcmQiLCJzZXRWYWx1ZSIsImV4ZWN1dGUiLCJXb3JkQ2xvdWRXaWRnZXQiLCJuZXh0UHJvcHMiLCJkYXRhU291cmNlIiwiZGF0YVRvUmVuZGVyIiwidGV4dEF0dHJpYiIsImludEF0dHJpYiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQSxJQUFJQSxLQUFLLEdBQUcsVUFBVUMsRUFBVixFQUFjO0NBQ3hCLFNBQU9BLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxJQUFILElBQVdBLElBQWpCLElBQXlCRCxFQUFoQztDQUNELENBRkQ7OztLQUtBRSxRQUFBO0NBRUVILEtBQUssQ0FBQyxPQUFPSSxVQUFQLElBQXFCLFFBQXJCLElBQWlDQSxVQUFsQyxDQUFMLElBQ0FKLEtBQUssQ0FBQyxPQUFPSyxNQUFQLElBQWlCLFFBQWpCLElBQTZC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SyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7Q0FRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7Q0FXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FYSCxPQTlKQTtDQTJLTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7Q0FRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7Q0FXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FYSCxPQTNLQTtDQXdMTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FQSDtDQVFGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBUkg7Q0FTRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FWSDtDQVdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmO0NBWEgsT0F4TEE7Q0FxTU4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7Q0FOSCxPQXJNQTtDQTZNTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FKSDtDQUtGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7Q0FQSCxPQTdNQTtDQXNOTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0NBREgsT0F0TkE7Q0F5Tk4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQURILE9Bek5BO0NBNE5OLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FESCxPQTVOQTtDQStOTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0NBREgsT0EvTkE7Q0FrT04sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQURILE9BbE9BO0NBcU9OLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtDQURILE9Bck9BO0NBd09OLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtDQURILE9BeE9BO0NBMk9OLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZIO0NBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSDtDQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxIO0NBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTkg7Q0FPRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FQSDtDQVFGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVJIO0NBU0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVEg7Q0FVRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FWSDtDQVdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVhIO0NBWUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0NBWkgsT0EzT0E7Q0F5UE4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUZIO0NBR0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUxIO0NBTUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FOSDtDQU9GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmO0NBUEgsT0F6UEE7Q0FrUU4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FOSDtDQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSjtDQVBILE9BbFFBO0NBMlFOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZIO0NBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FKSDtDQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxIO0NBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTkg7Q0FPRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7Q0FQSCxPQTNRQTtDQW9STixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKO0NBUEgsT0FwUkE7Q0E2Uk4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FOSDtDQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSjtDQVBILE9BN1JBO0NBc1NOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBTkg7Q0FPRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZjtDQVBILE9BdFNBO0NBK1NOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZIO0NBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSDtDQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxIO0NBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTkg7Q0FPRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVBIO0NBUUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBVEg7Q0FVRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVZIO0NBV0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWY7Q0FYSCxPQS9TQTtDQTRUTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7Q0FRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7Q0FXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FYSCxPQTVUQTtDQXlVTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7Q0FRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7Q0FXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FYSDtDQVlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQVpILE9BelVBO0NBdVZOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BdlZBO0NBMlZOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BM1ZBO0NBK1ZOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BL1ZBO0NBbVdOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BbldBO0NBdVdOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BdldBO0NBMldOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQUZILE9BM1dBO0NBK1dOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7Q0FGSCxPQS9XQTtDQW1YTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0NBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7Q0FLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0NBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7Q0FRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtDQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0NBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7Q0FXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FYSCxPQW5YQTtDQWdZTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7Q0FESCxPQWhZQTtDQW1ZTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBREg7Q0FFRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FGSDtDQUdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FMSDtDQU1GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmO0NBTkgsT0FuWUE7Q0EyWU4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7Q0FOSCxPQTNZQTtDQW1aTixZQUFNO0NBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0NBREgsT0FuWkE7Q0FzWk4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtDQURILE9BdFpBO0NBeVpOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtDQURILE9BelpBO0NBNFpOLFlBQU07Q0FDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtDQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZIO0NBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEg7Q0FJRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSDtDQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxIO0NBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTkg7Q0FPRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FQSDtDQVFGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVJIO0NBU0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVEg7Q0FVRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FWSDtDQVdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVhIO0NBWUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0NBWkgsT0E1WkE7Q0EwYU4sWUFBTTtDQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0NBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7Q0FHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtDQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0NBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7Q0FNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtDQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0NBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7Q0FTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtDQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0NBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBWEg7Q0FZRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7Q0FaSDtDQTFhQTtDQXBGQyxHQUFmOztDQThnQkF5Z0UsRUFBQUEsTUFBTSxDQUFDdkYsS0FBUCxHQUFlLFNBQVNBLEtBQVQsQ0FBZWg1RCxLQUFmLEVBQXNCd2hFLFFBQXRCLEVBQWdDO0NBQzNDLFFBQUlwbEUsSUFBSSxHQUFHLElBQVg7Q0FBQSxRQUNJbWtFLEtBQUssR0FBR25rRSxJQUFJLENBQUNta0UsS0FEakI7Q0FBQSxRQUVJdDhELEtBRko7Q0FBQSxRQUdJOUUsTUFISjtDQUFBLFFBSUlpaEUsTUFKSjtDQUFBLFFBS0ltQixLQUFLLEdBQUdubEUsSUFBSSxDQUFDbWxFLEtBTGpCO0NBQUEsUUFNSUUsS0FBSyxHQUFHRixLQUFLLENBQUNFLEtBTmxCO0NBQUEsUUFPSUMsV0FBVyxHQUFHSCxLQUFLLENBQUNuQixNQVB4QjtDQUFBLFFBUUlTLFdBQVcsR0FBR3prRSxJQUFJLENBQUN5a0UsV0FSdkI7Q0FBQSxRQVNJYyxVQUFVLEdBQUcsQ0FBQyxJQUFELENBVGpCO0NBQUE7Q0FXSTFELElBQUFBLE1BQU0sR0FBR3VELFFBQVEsR0FBSSxjQUFjQSxRQUFkLEdBQXlCLEdBQTdCLEdBQW9DLEVBWHpEO0NBQUEsUUFZSTNNLEtBQUssR0FBRyxDQUFDLENBQUQsQ0FaWjtDQWNBMEwsSUFBQUEsS0FBSyxDQUFDMUIsVUFBTixDQUFpQjcrRCxLQUFqQjs7Q0FFQSxXQUFPLENBQVAsRUFBVTtDQUNOO0NBQ0FpRSxNQUFBQSxLQUFLLEdBQUc0d0QsS0FBSyxDQUFDQSxLQUFLLENBQUNyMkQsTUFBTixHQUFlLENBQWhCLENBQWI7O0NBRUEsVUFBSSxDQUFDVyxNQUFMLEVBQWE7Q0FDVEEsUUFBQUEsTUFBTSxHQUFHb2hFLEtBQUssQ0FBQ0QsR0FBTixFQUFUO0NBQ0g7O0NBRUQsVUFBSW5oRSxNQUFKLEVBQVk7Q0FDUjtDQUNBaWhFLFFBQUFBLE1BQU0sR0FBR3NCLFdBQVcsQ0FBQ3o5RCxLQUFELENBQVgsSUFBc0J5OUQsV0FBVyxDQUFDejlELEtBQUQsQ0FBWCxDQUFtQjlFLE1BQW5CLENBQS9CO0NBQ0gsT0FIRCxNQUdPO0NBQ0hpaEUsUUFBQUEsTUFBTSxHQUFHLElBQVQ7Q0FDSDs7Q0FFRCxVQUFJLENBQUNBLE1BQUwsRUFBYTtDQUNULFlBQUl0eEIsUUFBUSxHQUFHLEVBQWY7Q0FBQSxZQUNJdHlDLEtBREosQ0FEUzs7Q0FJVCxZQUFJa2xFLFdBQVcsQ0FBQ3o5RCxLQUFELENBQWYsRUFBd0I7Q0FDcEIsZUFBSyxJQUFJMjlELGNBQVQsSUFBMkJGLFdBQVcsQ0FBQ3o5RCxLQUFELENBQXRDLEVBQStDO0NBQzNDNnFDLFlBQUFBLFFBQVEsQ0FBQ3J1QyxJQUFULENBQWNyRSxJQUFJLENBQUNta0UsS0FBTCxDQUFXc0IsZ0JBQVgsQ0FBNEJELGNBQTVCLENBQWQ7Q0FDSDtDQUNKOztDQUNEcGxFLFFBQUFBLEtBQUssR0FBR3loRSxNQUFNLEdBQUcsdUJBQVQsR0FBbUNzQyxLQUFLLENBQUN0QixVQUF6QyxHQUNKLEtBREksR0FDSXNCLEtBQUssQ0FBQ3VCLGFBQU4sRUFESixHQUVKLElBRkksR0FFRyxTQUZILEdBRWVoekIsUUFBUSxDQUFDcHBDLElBQVQsQ0FBYyxJQUFkLENBRnZCO0NBR0EsY0FBTSxJQUFJcU8sS0FBSixDQUFVdlgsS0FBVixDQUFOO0NBQ0g7O0NBRUQsY0FBUTRqRSxNQUFNLENBQUM1QixZQUFZLENBQUN1RCxVQUFkLENBQWQ7Q0FDQSxhQUFLdkQsWUFBWSxDQUFDd0QsVUFBbEI7Q0FDSW5OLFVBQUFBLEtBQUssQ0FBQ3AwRCxJQUFOLENBQVd0QixNQUFYO0NBRUF3aUUsVUFBQUEsVUFBVSxDQUFDbGhFLElBQVgsQ0FBZ0I4L0QsS0FBSyxDQUFDak0sSUFBdEIsRUFISjs7Q0FNSU8sVUFBQUEsS0FBSyxDQUFDcDBELElBQU4sQ0FBVzIvRCxNQUFNLENBQUM1QixZQUFZLENBQUN5RCxRQUFkLENBQWpCLEVBTko7O0NBU0k5aUUsVUFBQUEsTUFBTSxHQUFHLElBQVQ7Q0FFQTs7Q0FFSixhQUFLcS9ELFlBQVksQ0FBQzBELFdBQWxCO0NBQ0ksY0FBSUMsVUFBVSxHQUFHdEIsV0FBVyxDQUFDVCxNQUFNLENBQUM1QixZQUFZLENBQUM0RCxnQkFBZCxDQUFQLENBQTVCO0NBQUEsY0FDSUMsYUFBYSxHQUFHRixVQUFVLENBQUNoakUsTUFBWCxJQUFxQmdqRSxVQUFVLENBQUMsQ0FBRCxDQURuRDtDQUFBLGNBRUlHLGFBQWEsR0FBR0gsVUFBVSxDQUFDL0IsTUFBWCxJQUFxQitCLFVBQVUsQ0FBQyxDQUFELENBRm5EO0NBQUEsY0FHSUksVUFBVSxHQUFHSixVQUFVLENBQUNLLEdBQVgsSUFBa0JMLFVBQVUsQ0FBQyxDQUFELENBSDdDO0NBQUEsY0FJSS90RCxHQUFHLEdBQUdtdUQsVUFBVSxDQUFDL2pFLE1BSnJCO0NBQUEsY0FLSXVJLENBQUMsR0FBRyxDQUxSO0NBQUEsY0FNSWcxRCxHQU5KO0NBQUEsY0FPSTBHLEVBQUUsR0FBR2QsVUFBVSxDQUFDQSxVQUFVLENBQUNuakUsTUFBWCxHQUFvQjRWLEdBQXJCLENBUG5CLENBREo7O0NBVUkybkQsVUFBQUEsR0FBRyxHQUFHaitELFdBQU47Q0FFQTFCLFVBQUFBLElBQUksQ0FBQ3FtRSxFQUFMLEdBQVVBLEVBQVY7O0NBRUEsaUJBQU8xN0QsQ0FBQyxHQUFHcU4sR0FBWCxFQUFnQnJOLENBQUMsRUFBakIsRUFBcUI7Q0FDakIzSyxZQUFBQSxJQUFJLENBQUMsT0FBT2dZLEdBQUcsR0FBR3JOLENBQWIsQ0FBRCxDQUFKLEdBQXdCNDZELFVBQVUsQ0FBQ0EsVUFBVSxDQUFDbmpFLE1BQVgsR0FBb0IsQ0FBcEIsR0FBd0J1SSxDQUF6QixDQUFsQztDQUNIOztDQUVELGNBQUl1N0QsYUFBSixFQUFtQjtDQUNmdkcsWUFBQUEsR0FBRyxHQUFHdUcsYUFBYSxDQUFDcGxFLElBQWQsQ0FBbUJkLElBQW5CLENBQU47Q0FDSDs7Q0FFRCxjQUFJMi9ELEdBQUcsS0FBS2orRCxXQUFaLEVBQXVCO0NBQ25CMmtFLFlBQUFBLEVBQUUsR0FBRzFHLEdBQUw7Q0FDSCxXQUZELE1BRU87Q0FDSDBHLFlBQUFBLEVBQUUsR0FBR3JtRSxJQUFJLENBQUNxbUUsRUFBVjtDQUNIOztDQUVENU4sVUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNsM0QsS0FBTixDQUFZLENBQVosRUFBZSxDQUFDLENBQUQsR0FBS3lXLEdBQUwsR0FBVyxDQUExQixDQUFSO0NBQ0F1dEQsVUFBQUEsVUFBVSxHQUFHQSxVQUFVLENBQUNoa0UsS0FBWCxDQUFpQixDQUFqQixFQUFvQixDQUFDLENBQUQsR0FBS3lXLEdBQXpCLENBQWI7Q0FFQXlnRCxVQUFBQSxLQUFLLENBQUNwMEQsSUFBTixDQUFXNGhFLGFBQVg7Q0FFQVYsVUFBQUEsVUFBVSxDQUFDbGhFLElBQVgsQ0FBZ0JnaUUsRUFBaEI7Q0FFQSxjQUFJQyxRQUFRLEdBQUdqQixLQUFLLENBQUM1TSxLQUFLLENBQUNBLEtBQUssQ0FBQ3IyRCxNQUFOLEdBQWUsQ0FBaEIsQ0FBTixDQUFMLENBQStCcTJELEtBQUssQ0FBQ0EsS0FBSyxDQUFDcjJELE1BQU4sR0FBZSxDQUFoQixDQUFwQyxDQUFmO0NBRUFxMkQsVUFBQUEsS0FBSyxDQUFDcDBELElBQU4sQ0FBV2lpRSxRQUFYO0NBRUE7O0NBRUosYUFBS2xFLFlBQVksQ0FBQ21FLFdBQWxCO0NBQ0ksaUJBQU9GLEVBQVA7Q0F4REo7Q0EwREg7Q0FDSixHQTFHRDs7Q0EyR0EsU0FBT2xFLE1BQVA7Q0FDSCxDQTlxQ1ksRUFBYjs7Q0ErcUNtQztDQUMvQnRpRSxFQUFBQSxpQkFBaUJzaUUsTUFBakI7Q0FDSDs7Ozs7Ozs7O0NDN3FDRCxJQUFJbEIsSUFBSSxHQUFHM2dFLGNBQVg7O0NBQ0EsSUFBSTZoRSxNQUFNLEdBQUc3aEUsZ0JBQWI7O0NBRUEsSUFBSWttRSxvQkFBb0IsR0FBRyx1QkFBM0I7Q0FBQSxJQUNFQyxNQUFNLEdBQUcsRUFEWDtDQUFBLElBRUVDLFlBRkY7Q0FBQSxJQUdFQyxJQUFJLEdBQUcsQ0FIVDtDQUFBLElBSUVDLGVBQWUsR0FBRyxFQUpwQjtDQUFBLElBS0VDLE9BQU8sR0FBRyxVQUFVdjhELEVBQVYsRUFBY25GLElBQWQsRUFBb0I7Q0FDNUIsTUFBSXVoRSxZQUFKLEVBQWtCO0NBQ2hCLFdBQU96RixJQUFJLENBQUNLLGFBQUwsQ0FBbUJoM0QsRUFBbkIsRUFBdUJuRixJQUF2QixDQUFQO0NBQ0QsR0FGRCxNQUVPO0NBQ0wsV0FBTzg3RCxJQUFJLENBQUNlLElBQUwsQ0FBVTEzRCxFQUFWLEVBQWNuRixJQUFkLENBQVA7Q0FDRDtDQUNGLENBWEg7Q0FBQSxJQVlFdThELGNBQWMsR0FBR1QsSUFBSSxDQUFDUyxjQVp4QjtDQUFBLElBYUVELEtBQUssR0FBR1IsSUFBSSxDQUFDUSxLQWJmO0NBQUEsSUFjRXFGLE9BQU8sR0FBRyxtQ0FkWjs7O0NBaUJBLElBQUl0ekIsUUFBUSxHQUFHLHVDQUFmO0NBQUEsSUFDRXV6QixVQUFVLEdBQUcsVUFBVW43QixDQUFWLEVBQWFvN0IsT0FBYixFQUFzQjtDQUNqQyxNQUFJQyxJQUFJLEdBQUcsT0FBT0QsT0FBUCxHQUFpQixPQUE1QixDQURpQzs7Q0FHakMsU0FBT2h4QyxLQUFLLENBQUNpeEMsSUFBRCxDQUFMLEdBQ0xELE9BREs7Q0FHTEMsRUFBQUEsSUFBSSxHQUFHLENBQVAsR0FDRWhrRSxNQUFNLENBQUN5ZSxZQUFQLENBQW9CdWxELElBQUksR0FBRyxPQUEzQixDQURGO0NBR0Voa0UsRUFBQUEsTUFBTSxDQUFDeWUsWUFBUCxDQUFvQnVsRCxJQUFJLElBQUksRUFBUixHQUFhLE1BQWpDLEVBQXlDQSxJQUFJLEdBQUcsS0FBUCxHQUFlLE1BQXhELENBTko7Q0FPRCxDQVhIOztDQWFBLElBQUlDLFNBQUo7Q0FFQSxJQUFJQyxZQUFZLEdBQUc7Q0FDakIsZUFBYSxVQUFVNzhELEVBQVYsRUFBYzQ2RCxLQUFkLEVBQXFCO0NBQ2hDLFFBQUlrQyxFQUFFLEdBQUdDLEtBQUssQ0FBQ25DLEtBQUQsQ0FBZDtDQUFBLFFBQ0VsL0QsQ0FBQyxHQUFHb2hFLEVBQUUsQ0FBQ3BoRSxDQURUO0NBQUEsUUFFRTRKLENBQUMsR0FBR3czRCxFQUFFLENBQUN4M0QsQ0FGVDs7Q0FHQSxRQUFJNUosQ0FBQyxLQUFLLENBQU4sSUFBVzRKLENBQUMsS0FBSyxDQUFyQixFQUF3QjtDQUN0QixhQUFPLENBQVA7Q0FDRDs7Q0FDRCxRQUFJL0YsS0FBSyxHQUFHLENBQVo7Q0FBQSxRQUNFb3lCLE1BQU0sR0FBRzN4QixFQUFFLENBQUNrM0QsVUFEZDs7Q0FFQSxRQUFJdmxDLE1BQUosRUFBWTtDQUNWLFVBQUlna0MsVUFBVSxHQUFHaGtDLE1BQU0sQ0FBQ2drQyxVQUF4QjtDQUFBLFVBQ0V2bUQsS0FBSyxHQUFHLENBRFY7Q0FBQSxVQUVFNHRELEtBRkY7Q0FBQSxVQUdFM0gsR0FIRjtDQUFBLFVBSUUzbkQsR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQUpuQjs7Q0FLQSxhQUFPc1gsS0FBSyxHQUFHMUIsR0FBZixFQUFvQjBCLEtBQUssRUFBekIsRUFBNkI7Q0FDM0I0dEQsUUFBQUEsS0FBSyxHQUFHckgsVUFBVSxDQUFDdm1ELEtBQUQsQ0FBbEI7O0NBQ0EsWUFBSTR0RCxLQUFLLENBQUNuSCxRQUFOLEtBQW1CLENBQXZCLEVBQTBCO0NBQ3hCdDJELFVBQUFBLEtBQUs7Q0FDTDgxRCxVQUFBQSxHQUFHLEdBQUc0SCxjQUFjLENBQUMxOUQsS0FBRCxFQUFRN0QsQ0FBUixFQUFXNEosQ0FBWCxFQUFjMDNELEtBQUssS0FBS2g5RCxFQUF4QixDQUFwQjs7Q0FDQSxjQUFJcTFELEdBQUcsS0FBS2orRCxTQUFaLEVBQXVCO0NBQ3JCLG1CQUFPaStELEdBQVA7Q0FDRDtDQUNGO0NBQ0Y7Q0FDRjs7Q0FDRCxXQUFPLENBQVA7Q0FDRCxHQTVCZ0I7Q0E2QmpCLG9CQUFrQixVQUFVcjFELEVBQVYsRUFBYzQ2RCxLQUFkLEVBQXFCO0NBQ3JDLFFBQUlrQyxFQUFFLEdBQUdDLEtBQUssQ0FBQ25DLEtBQUQsQ0FBZDtDQUFBLFFBQ0VsL0QsQ0FBQyxHQUFHb2hFLEVBQUUsQ0FBQ3BoRSxDQURUO0NBQUEsUUFFRTRKLENBQUMsR0FBR3czRCxFQUFFLENBQUN4M0QsQ0FGVDs7Q0FHQSxRQUFJNUosQ0FBQyxLQUFLLENBQU4sSUFBVzRKLENBQUMsS0FBSyxDQUFyQixFQUF3QjtDQUN0QixhQUFPLENBQVA7Q0FDRDs7Q0FDRCxRQUFJL0YsS0FBSyxHQUFHLENBQVo7Q0FBQSxRQUNFb3lCLE1BQU0sR0FBRzN4QixFQUFFLENBQUNrM0QsVUFEZDs7Q0FFQSxRQUFJdmxDLE1BQUosRUFBWTtDQUNWLFVBQUlna0MsVUFBVSxHQUFHaGtDLE1BQU0sQ0FBQ2drQyxVQUF4QjtDQUFBLFVBQ0Vqb0QsR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQURuQjtDQUFBLFVBRUVzWCxLQUFLLEdBQUcxQixHQUFHLEdBQUcsQ0FGaEI7Q0FBQSxVQUdFc3ZELEtBSEY7Q0FBQSxVQUlFM0gsR0FKRjs7Q0FLQSxhQUFPam1ELEtBQUssSUFBSSxDQUFoQixFQUFtQkEsS0FBSyxFQUF4QixFQUE0QjtDQUMxQjR0RCxRQUFBQSxLQUFLLEdBQUdySCxVQUFVLENBQUN2bUQsS0FBRCxDQUFsQjs7Q0FDQSxZQUFJNHRELEtBQUssQ0FBQ25ILFFBQU4sS0FBbUIsQ0FBdkIsRUFBMEI7Q0FDeEJ0MkQsVUFBQUEsS0FBSztDQUNMODFELFVBQUFBLEdBQUcsR0FBRzRILGNBQWMsQ0FBQzE5RCxLQUFELEVBQVE3RCxDQUFSLEVBQVc0SixDQUFYLEVBQWMwM0QsS0FBSyxLQUFLaDlELEVBQXhCLENBQXBCOztDQUNBLGNBQUlxMUQsR0FBRyxLQUFLaitELFNBQVosRUFBdUI7Q0FDckIsbUJBQU9pK0QsR0FBUDtDQUNEO0NBQ0Y7Q0FDRjtDQUNGOztDQUNELFdBQU8sQ0FBUDtDQUNELEdBeERnQjtDQXlEakIsaUJBQWUsVUFBVXIxRCxFQUFWLEVBQWM0NkQsS0FBZCxFQUFxQjtDQUNsQyxRQUFJa0MsRUFBRSxHQUFHQyxLQUFLLENBQUNuQyxLQUFELENBQWQ7Q0FBQSxRQUNFbC9ELENBQUMsR0FBR29oRSxFQUFFLENBQUNwaEUsQ0FEVDtDQUFBLFFBRUU0SixDQUFDLEdBQUd3M0QsRUFBRSxDQUFDeDNELENBRlQ7O0NBR0EsUUFBSTVKLENBQUMsS0FBSyxDQUFOLElBQVc0SixDQUFDLEtBQUssQ0FBckIsRUFBd0I7Q0FDdEIsYUFBTyxDQUFQO0NBQ0Q7O0NBQ0QsUUFBSS9GLEtBQUssR0FBRyxDQUFaO0NBQUEsUUFDRW95QixNQUFNLEdBQUczeEIsRUFBRSxDQUFDazNELFVBRGQ7O0NBRUEsUUFBSXZsQyxNQUFKLEVBQVk7Q0FDVixVQUFJZ2tDLFVBQVUsR0FBR2hrQyxNQUFNLENBQUNna0MsVUFBeEI7Q0FBQSxVQUNFdUgsTUFBTSxHQUFHbDlELEVBQUUsQ0FBQ205RCxPQURkO0NBQUEsVUFFRS90RCxLQUFLLEdBQUcsQ0FGVjtDQUFBLFVBR0U0dEQsS0FIRjtDQUFBLFVBSUUzSCxHQUpGO0NBQUEsVUFLRTNuRCxHQUFHLEdBQUdpb0QsVUFBVSxDQUFDNzlELE1BTG5COztDQU1BLGFBQU9zWCxLQUFLLEdBQUcxQixHQUFmLEVBQW9CMEIsS0FBSyxFQUF6QixFQUE2QjtDQUMzQjR0RCxRQUFBQSxLQUFLLEdBQUdySCxVQUFVLENBQUN2bUQsS0FBRCxDQUFsQjs7Q0FDQSxZQUFJNHRELEtBQUssQ0FBQ0csT0FBTixLQUFrQkQsTUFBdEIsRUFBOEI7Q0FDNUIzOUQsVUFBQUEsS0FBSztDQUNMODFELFVBQUFBLEdBQUcsR0FBRzRILGNBQWMsQ0FBQzE5RCxLQUFELEVBQVE3RCxDQUFSLEVBQVc0SixDQUFYLEVBQWMwM0QsS0FBSyxLQUFLaDlELEVBQXhCLENBQXBCOztDQUNBLGNBQUlxMUQsR0FBRyxLQUFLaitELFNBQVosRUFBdUI7Q0FDckIsbUJBQU9pK0QsR0FBUDtDQUNEO0NBQ0Y7Q0FDRjtDQUNGOztDQUNELFdBQU8sQ0FBUDtDQUNELEdBckZnQjtDQXNGakIsc0JBQW9CLFVBQVVyMUQsRUFBVixFQUFjNDZELEtBQWQsRUFBcUI7Q0FDdkMsUUFBSWtDLEVBQUUsR0FBR0MsS0FBSyxDQUFDbkMsS0FBRCxDQUFkO0NBQUEsUUFDRWwvRCxDQUFDLEdBQUdvaEUsRUFBRSxDQUFDcGhFLENBRFQ7Q0FBQSxRQUVFNEosQ0FBQyxHQUFHdzNELEVBQUUsQ0FBQ3gzRCxDQUZUOztDQUdBLFFBQUk1SixDQUFDLEtBQUssQ0FBTixJQUFXNEosQ0FBQyxLQUFLLENBQXJCLEVBQXdCO0NBQ3RCLGFBQU8sQ0FBUDtDQUNEOztDQUNELFFBQUkvRixLQUFLLEdBQUcsQ0FBWjtDQUFBLFFBQ0VveUIsTUFBTSxHQUFHM3hCLEVBQUUsQ0FBQ2szRCxVQURkOztDQUVBLFFBQUl2bEMsTUFBSixFQUFZO0NBQ1YsVUFBSWdrQyxVQUFVLEdBQUdoa0MsTUFBTSxDQUFDZ2tDLFVBQXhCO0NBQUEsVUFDRWpvRCxHQUFHLEdBQUdpb0QsVUFBVSxDQUFDNzlELE1BRG5CO0NBQUEsVUFFRW9sRSxNQUFNLEdBQUdsOUQsRUFBRSxDQUFDbTlELE9BRmQ7Q0FBQSxVQUdFL3RELEtBQUssR0FBRzFCLEdBQUcsR0FBRyxDQUhoQjtDQUFBLFVBSUVzdkQsS0FKRjtDQUFBLFVBS0UzSCxHQUxGOztDQU1BLGFBQU9qbUQsS0FBSyxJQUFJLENBQWhCLEVBQW1CQSxLQUFLLEVBQXhCLEVBQTRCO0NBQzFCNHRELFFBQUFBLEtBQUssR0FBR3JILFVBQVUsQ0FBQ3ZtRCxLQUFELENBQWxCOztDQUNBLFlBQUk0dEQsS0FBSyxDQUFDRyxPQUFOLEtBQWtCRCxNQUF0QixFQUE4QjtDQUM1QjM5RCxVQUFBQSxLQUFLO0NBQ0w4MUQsVUFBQUEsR0FBRyxHQUFHNEgsY0FBYyxDQUFDMTlELEtBQUQsRUFBUTdELENBQVIsRUFBVzRKLENBQVgsRUFBYzAzRCxLQUFLLEtBQUtoOUQsRUFBeEIsQ0FBcEI7O0NBQ0EsY0FBSXExRCxHQUFHLEtBQUtqK0QsU0FBWixFQUF1QjtDQUNyQixtQkFBT2krRCxHQUFQO0NBQ0Q7Q0FDRjtDQUNGO0NBQ0Y7O0NBQ0QsV0FBTyxDQUFQO0NBQ0QsR0FsSGdCO0NBbUhqQitILEVBQUFBLElBQUksRUFBRSxVQUFVcDlELEVBQVYsRUFBY285RCxJQUFkLEVBQW9CO0NBQ3hCLFFBQUlDLE1BQUo7Q0FDQUQsSUFBQUEsSUFBSSxHQUFHbkQsUUFBUSxDQUFDbUQsSUFBSSxDQUFDNTdELFdBQUwsRUFBRCxDQUFmOztDQUNBLE9BQUc7Q0FDRCxVQUFLNjdELE1BQU0sR0FBSWpCLFlBQVksR0FDekJwOEQsRUFBRSxDQUFDdzFELFlBQUgsQ0FBZ0IsVUFBaEIsS0FBK0J4MUQsRUFBRSxDQUFDdzFELFlBQUgsQ0FBZ0IsTUFBaEIsQ0FETixHQUV2QngxRCxFQUFFLENBQUNvOUQsSUFGUCxFQUVlO0NBQ2JDLFFBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDNzdELFdBQVAsRUFBVDtDQUNBLGVBQU82N0QsTUFBTSxLQUFLRCxJQUFYLElBQW1CQyxNQUFNLENBQUNsOUQsT0FBUCxDQUFlaTlELElBQUksR0FBRyxHQUF0QixNQUErQixDQUF6RDtDQUNEO0NBQ0YsS0FQRCxRQU9TLENBQUNwOUQsRUFBRSxHQUFHQSxFQUFFLENBQUNrM0QsVUFBVCxLQUF3QmwzRCxFQUFFLENBQUM2MUQsUUFBSCxLQUFnQixDQVBqRDs7Q0FRQSxXQUFPLEtBQVA7Q0FDRCxHQS9IZ0I7Q0FnSWpCeUgsRUFBQUEsR0FBRyxFQUFFLFVBQVV0OUQsRUFBVixFQUFjdTlELFdBQWQsRUFBMkI7Q0FDOUIsV0FBTyxDQUFDWCxTQUFTLENBQUNXLFdBQVcsQ0FBQ24xQyxDQUFiLENBQVQsQ0FBeUJwb0IsRUFBekIsRUFBNkJ1OUQsV0FBVyxDQUFDMW1FLEtBQXpDLENBQVI7Q0FDRDtDQWxJZ0IsQ0FBbkI7Q0FxSUEsSUFBSTJtRSxlQUFlLEdBQUc7Q0FDcEIvM0QsRUFBQUEsS0FBSyxFQUFFLFVBQVV6RixFQUFWLEVBQWM7Q0FDbkIsUUFBSTIxRCxVQUFVLEdBQUczMUQsRUFBRSxDQUFDMjFELFVBQXBCO0NBQUEsUUFDRXAyRCxLQUFLLEdBQUcsQ0FEVjtDQUFBLFFBRUVtTyxHQUFHLEdBQUdpb0QsVUFBVSxDQUFDNzlELE1BQVgsR0FBb0IsQ0FGNUI7Q0FBQSxRQUdFa2xFLEtBSEY7Q0FBQSxRQUlFbkgsUUFKRjs7Q0FLQSxXQUFPdDJELEtBQUssR0FBR21PLEdBQWYsRUFBb0JuTyxLQUFLLEVBQXpCLEVBQTZCO0NBQzNCeTlELE1BQUFBLEtBQUssR0FBR3JILFVBQVUsQ0FBQ3AyRCxLQUFELENBQWxCO0NBQ0FzMkQsTUFBQUEsUUFBUSxHQUFHbUgsS0FBSyxDQUFDbkgsUUFBakIsQ0FGMkI7Q0FJM0I7Q0FDQTs7Q0FDQSxVQUFJQSxRQUFRLEtBQUssQ0FBYixJQUFrQkEsUUFBUSxLQUFLLENBQS9CLElBQW9DQSxRQUFRLEtBQUssQ0FBakQsSUFBc0RBLFFBQVEsS0FBSyxDQUF2RSxFQUEwRTtDQUN4RSxlQUFPLENBQVA7Q0FDRDtDQUNGOztDQUNELFdBQU8sQ0FBUDtDQUNELEdBbEJtQjtDQW1CcEJsbUIsRUFBQUEsSUFBSSxFQUFFLFVBQVUzdkMsRUFBVixFQUFjO0NBQ2xCLFFBQUlBLEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBQXBCLEVBQXVCO0NBQ3JCLGFBQU8sSUFBUDtDQUNEOztDQUNELFdBQU83MUQsRUFBRSxDQUFDODFELGFBQUgsSUFDTDkxRCxFQUFFLEtBQUtBLEVBQUUsQ0FBQzgxRCxhQUFILENBQWlCVSxlQUQxQjtDQUVELEdBekJtQjtDQTBCcEIsaUJBQWUsVUFBVXgyRCxFQUFWLEVBQWM7Q0FDM0IsV0FBTzY4RCxZQUFZLENBQUMsV0FBRCxDQUFaLENBQTBCNzhELEVBQTFCLEVBQThCLENBQTlCLENBQVA7Q0FDRCxHQTVCbUI7Q0E2QnBCLGdCQUFjLFVBQVVBLEVBQVYsRUFBYztDQUMxQixXQUFPNjhELFlBQVksQ0FBQyxnQkFBRCxDQUFaLENBQStCNzhELEVBQS9CLEVBQW1DLENBQW5DLENBQVA7Q0FDRCxHQS9CbUI7Q0FnQ3BCLG1CQUFpQixVQUFVQSxFQUFWLEVBQWM7Q0FDN0IsV0FBTzY4RCxZQUFZLENBQUMsYUFBRCxDQUFaLENBQTRCNzhELEVBQTVCLEVBQWdDLENBQWhDLENBQVA7Q0FDRCxHQWxDbUI7Q0FtQ3BCLGtCQUFnQixVQUFVQSxFQUFWLEVBQWM7Q0FDNUIsV0FBTzY4RCxZQUFZLENBQUMsa0JBQUQsQ0FBWixDQUFpQzc4RCxFQUFqQyxFQUFxQyxDQUFyQyxDQUFQO0NBQ0QsR0FyQ21CO0NBc0NwQixnQkFBYyxVQUFVQSxFQUFWLEVBQWM7Q0FDMUIsV0FBT3c5RCxlQUFlLENBQUMsYUFBRCxDQUFmLENBQStCeDlELEVBQS9CLEtBQ0x3OUQsZUFBZSxDQUFDLFlBQUQsQ0FBZixDQUE4Qng5RCxFQUE5QixDQURGO0NBRUQsR0F6Q21CO0NBMENwQixrQkFBZ0IsVUFBVUEsRUFBVixFQUFjO0NBQzVCLFdBQU93OUQsZUFBZSxDQUFDLGVBQUQsQ0FBZixDQUFpQ3g5RCxFQUFqQyxLQUNMdzlELGVBQWUsQ0FBQyxjQUFELENBQWYsQ0FBZ0N4OUQsRUFBaEMsQ0FERjtDQUVELEdBN0NtQjtDQThDcEJ5OUQsRUFBQUEsS0FBSyxFQUFFLFVBQVV6OUQsRUFBVixFQUFjO0NBQ25CLFFBQUk0MEQsR0FBRyxHQUFHNTBELEVBQUUsQ0FBQzgxRCxhQUFiO0NBQ0EsV0FBT2xCLEdBQUcsSUFBSTUwRCxFQUFFLEtBQUs0MEQsR0FBRyxDQUFDOEksYUFBbEIsS0FDSixDQUFDOUksR0FBRyxDQUFDK0ksUUFBTCxJQUFpQi9JLEdBQUcsQ0FBQytJLFFBQUosRUFEYixLQUNnQyxDQUFDLEVBQUUzOUQsRUFBRSxDQUFDeEMsSUFBSCxJQUFXd0MsRUFBRSxDQUFDNjhDLElBQWQsSUFBc0I3OEMsRUFBRSxDQUFDdTFELFFBQUgsSUFBZSxDQUF2QyxDQUR4QztDQUVELEdBbERtQjtDQW1EcEJ6MEQsRUFBQUEsTUFBTSxFQUFFLFVBQVVkLEVBQVYsRUFBYztDQUNwQixRQUFJZzlDLElBQUksR0FBR3h0QixRQUFRLENBQUN3dEIsSUFBcEI7Q0FDQSxXQUFPQSxJQUFJLElBQUlBLElBQUksQ0FBQy9sRCxLQUFMLENBQVcsQ0FBWCxNQUFrQnNsRSxPQUFPLENBQUN2OEQsRUFBRCxFQUFLLElBQUwsQ0FBeEM7Q0FDRCxHQXREbUI7Q0F1RHBCNDlELEVBQUFBLE9BQU8sRUFBRSxVQUFVNTlELEVBQVYsRUFBYztDQUNyQixXQUFPLENBQUNBLEVBQUUsQ0FBQzY5RCxRQUFYO0NBQ0QsR0F6RG1CO0NBMERwQkEsRUFBQUEsUUFBUSxFQUFFLFVBQVU3OUQsRUFBVixFQUFjO0NBQ3RCLFdBQU9BLEVBQUUsQ0FBQzY5RCxRQUFWO0NBQ0QsR0E1RG1CO0NBNkRwQkMsRUFBQUEsT0FBTyxFQUFFLFVBQVU5OUQsRUFBVixFQUFjO0NBQ3JCLFFBQUkyekQsUUFBUSxHQUFHM3pELEVBQUUsQ0FBQzJ6RCxRQUFILENBQVlueUQsV0FBWixFQUFmO0NBQ0EsV0FBUW15RCxRQUFRLEtBQUssT0FBYixJQUF3QjN6RCxFQUFFLENBQUM4OUQsT0FBNUIsSUFDSm5LLFFBQVEsS0FBSyxRQUFiLElBQXlCM3pELEVBQUUsQ0FBQzJ0QyxRQUQvQjtDQUVEO0NBakVtQixDQUF0QjtDQW9FQSxJQUFJb3dCLGFBQWEsR0FBRztDQUNsQixRQUFNLFVBQVVDLE9BQVYsRUFBbUJubkUsS0FBbkIsRUFBMEI7Q0FDOUIsUUFBSSxDQUFDQSxLQUFELElBQVVBLEtBQUssQ0FBQ3NKLE9BQU4sQ0FBYyxHQUFkLElBQXFCLENBQUMsQ0FBcEMsRUFBdUM7Q0FDckMsYUFBTyxDQUFQO0NBQ0Q7O0NBQ0QsV0FBTyxDQUFDLE1BQU02OUQsT0FBTixHQUFnQixHQUFqQixFQUFzQjc5RCxPQUF0QixDQUE4QixNQUFNdEosS0FBTixHQUFjLEdBQTVDLE1BQXFELENBQUMsQ0FBN0Q7Q0FDRCxHQU5pQjtDQU9sQixRQUFNLFVBQVVtbkUsT0FBVixFQUFtQm5uRSxLQUFuQixFQUEwQjtDQUM5QixXQUFPLENBQUMsTUFBTW1uRSxPQUFQLEVBQWdCNzlELE9BQWhCLENBQXdCLE1BQU10SixLQUFOLEdBQWMsR0FBdEMsTUFBK0MsQ0FBQyxDQUF2RDtDQUNELEdBVGlCO0NBVWxCLFFBQU0sVUFBVW1uRSxPQUFWLEVBQW1Cbm5FLEtBQW5CLEVBQTBCO0NBQzlCLFdBQU9BLEtBQUssSUFBSTgvRCxJQUFJLENBQUMveUIsVUFBTCxDQUFnQm82QixPQUFoQixFQUF5Qm5uRSxLQUF6QixDQUFoQjtDQUNELEdBWmlCO0NBYWxCLFFBQU0sVUFBVW1uRSxPQUFWLEVBQW1Cbm5FLEtBQW5CLEVBQTBCO0NBQzlCLFdBQU9BLEtBQUssSUFBSTgvRCxJQUFJLENBQUNwNUIsUUFBTCxDQUFjeWdDLE9BQWQsRUFBdUJubkUsS0FBdkIsQ0FBaEI7Q0FDRCxHQWZpQjtDQWdCbEIsUUFBTSxVQUFVbW5FLE9BQVYsRUFBbUJubkUsS0FBbkIsRUFBMEI7Q0FDOUIsV0FBT0EsS0FBSyxJQUFJbW5FLE9BQU8sQ0FBQzc5RCxPQUFSLENBQWdCdEosS0FBaEIsTUFBMkIsQ0FBQyxDQUE1QztDQUNELEdBbEJpQjtDQW1CbEIsT0FBSyxVQUFVbW5FLE9BQVYsRUFBbUJubkUsS0FBbkIsRUFBMEI7Q0FDN0IsV0FBT21uRSxPQUFPLEtBQUtubkUsS0FBbkI7Q0FDRDtDQXJCaUIsQ0FBcEI7Q0F3QkEsSUFBSW9uRSxZQUFZLEdBQUc7Q0FDakIsT0FBSztDQUNIQyxJQUFBQSxHQUFHLEVBQUUsWUFERjtDQUVIQyxJQUFBQSxTQUFTLEVBQUU7Q0FGUixHQURZO0NBS2pCLE9BQUs7Q0FDSEQsSUFBQUEsR0FBRyxFQUFFO0NBREYsR0FMWTtDQVFqQixPQUFLO0NBQ0hBLElBQUFBLEdBQUcsRUFBRSxpQkFERjtDQUVIQyxJQUFBQSxTQUFTLEVBQUU7Q0FGUixHQVJZO0NBWWpCLE9BQUs7Q0FDSEQsSUFBQUEsR0FBRyxFQUFFO0NBREY7Q0FaWSxDQUFuQjtDQWlCQXRCLFNBQVMsR0FBRztDQUNWbDZELEVBQUFBLEdBQUcsRUFBRXkwRCxLQURLO0NBRVZFLEVBQUFBLEdBQUcsRUFBRUQsY0FGSztDQUdWLzhELEVBQUFBLEVBQUUsRUFBRSxVQUFVMkYsRUFBVixFQUFjbkosS0FBZCxFQUFxQjtDQUN2QixXQUFPMGxFLE9BQU8sQ0FBQ3Y4RCxFQUFELEVBQUssSUFBTCxDQUFQLEtBQXNCbkosS0FBN0I7Q0FDRCxHQUxTO0NBTVZ1bkUsRUFBQUEsTUFBTSxFQUFFLFVBQVVwK0QsRUFBVixFQUFjbkosS0FBZCxFQUFxQjtDQUMzQixRQUFJZ0UsSUFBSSxHQUFHaEUsS0FBSyxDQUFDNmpFLEtBQWpCOztDQUNBLFFBQUksQ0FBQzBCLFlBQUwsRUFBbUI7Q0FDakJ2aEUsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUMyRyxXQUFMLEVBQVA7Q0FDRDs7Q0FDRCxRQUFJdzhELE9BQU8sR0FBR3pCLE9BQU8sQ0FBQ3Y4RCxFQUFELEVBQUtuRixJQUFMLENBQXJCO0NBQ0EsUUFBSXZDLEtBQUssR0FBR3pCLEtBQUssQ0FBQ3lCLEtBQWxCOztDQUNBLFFBQUksQ0FBQ0EsS0FBRCxJQUFVMGxFLE9BQU8sS0FBSzVtRSxTQUExQixFQUFxQztDQUNuQyxhQUFPLENBQVA7Q0FDRCxLQUZELE1BRU8sSUFBSWtCLEtBQUosRUFBVztDQUNoQixVQUFJMGxFLE9BQU8sS0FBSzVtRSxTQUFoQixFQUEyQjtDQUN6QixlQUFPLENBQVA7Q0FDRDs7Q0FDRCxVQUFJaW5FLE9BQU8sR0FBR04sYUFBYSxDQUFDemxFLEtBQUQsQ0FBM0I7O0NBQ0EsVUFBSStsRSxPQUFKLEVBQWE7Q0FDWCxlQUFPQSxPQUFPLENBQUNMLE9BQU8sR0FBRyxFQUFYLEVBQWVubkUsS0FBSyxDQUFDQSxLQUFOLEdBQWMsRUFBN0IsQ0FBZDtDQUNEO0NBQ0Y7O0NBQ0QsV0FBTyxDQUFQO0NBQ0QsR0F6QlM7Q0EwQlZ5bkUsRUFBQUEsTUFBTSxFQUFFLFVBQVV0K0QsRUFBVixFQUFjbkosS0FBZCxFQUFxQjtDQUMzQixRQUFJMkMsRUFBSixFQUFRK2tFLEtBQVIsRUFBZTdELEtBQWY7O0NBQ0EsUUFBSzZELEtBQUssR0FBRzFuRSxLQUFLLENBQUMyQyxFQUFuQixFQUF3QjtDQUN0QixVQUFJLEVBQUVBLEVBQUUsR0FBR3FqRSxZQUFZLENBQUMwQixLQUFELENBQW5CLENBQUosRUFBaUM7Q0FDL0IsY0FBTSxJQUFJN2pDLFdBQUosQ0FBZ0IsdUNBQXVDNmpDLEtBQXZELENBQU47Q0FDRDs7Q0FDRCxhQUFPL2tFLEVBQUUsQ0FBQ3dHLEVBQUQsRUFBS25KLEtBQUssQ0FBQytqRSxLQUFYLENBQVQ7Q0FDRDs7Q0FDRCxRQUFLRixLQUFLLEdBQUc3akUsS0FBSyxDQUFDNmpFLEtBQW5CLEVBQTJCO0NBQ3pCLFVBQUksQ0FBQzhDLGVBQWUsQ0FBQzlDLEtBQUQsQ0FBcEIsRUFBNkI7Q0FDM0IsY0FBTSxJQUFJaGdDLFdBQUosQ0FBZ0IsdUNBQXVDZ2dDLEtBQXZELENBQU47Q0FDRDs7Q0FDRCxhQUFPOEMsZUFBZSxDQUFDOUMsS0FBRCxDQUFmLENBQXVCMTZELEVBQXZCLENBQVA7Q0FDRDs7Q0FDRCxXQUFPLENBQVA7Q0FDRDtDQXpDUyxDQUFaOztDQTRDQSxTQUFTaTZELFFBQVQsQ0FBa0J4NUMsR0FBbEIsRUFBdUI7Q0FDckIsU0FBT0EsR0FBRyxDQUFDM2hCLE9BQUosQ0FBWW9xQyxRQUFaLEVBQXNCdXpCLFVBQXRCLENBQVA7Q0FDRDs7Q0FFRDVFLE1BQU0sQ0FBQ2dDLEtBQVAsQ0FBYUMsRUFBYixHQUFrQjtDQUNoQnR2QyxFQUFBQSxJQUFJLEVBQUVtc0MsSUFBSSxDQUFDbnNDLElBREs7Q0FFaEJ5dkMsRUFBQUEsUUFBUSxFQUFFQSxRQUZNO0NBR2hCQyxFQUFBQSxXQUFXLEVBQUUsVUFBVXo1QyxHQUFWLEVBQWU7Q0FDMUIsV0FBTyxLQUFLdzVDLFFBQUwsQ0FBY3g1QyxHQUFHLENBQUN4cEIsS0FBSixDQUFVLENBQVYsRUFBYSxDQUFDLENBQWQsQ0FBZCxDQUFQO0NBQ0Q7Q0FMZSxDQUFsQjs7Q0FRQSxTQUFTdW5FLFdBQVQsR0FBdUI7Q0FDckJsQyxFQUFBQSxlQUFlLEdBQUcsRUFBbEI7Q0FDRDs7Q0FFRCxTQUFTNEIsR0FBVCxDQUFhbCtELEVBQWIsRUFBaUJ5K0QsU0FBakIsRUFBNEI7Q0FDMUIsS0FBRztDQUNEeitELElBQUFBLEVBQUUsR0FBR0EsRUFBRSxDQUFDeStELFNBQUQsQ0FBUDtDQUNELEdBRkQsUUFFU3orRCxFQUFFLElBQUlBLEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBRi9COztDQUdBLFNBQU83MUQsRUFBUDtDQUNEOztDQUVELFNBQVMrOEQsS0FBVCxDQUFlbkMsS0FBZixFQUFzQjtDQUNwQixNQUFJbC9ELENBQUMsR0FBRyxDQUFSO0NBQUEsTUFDRXBELEtBREY7Q0FBQSxNQUVFZ04sQ0FBQyxHQUFHLENBRk47O0NBR0EsTUFBSSxPQUFPczFELEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7Q0FDN0J0MUQsSUFBQUEsQ0FBQyxHQUFHczFELEtBQUo7Q0FDRCxHQUZELE1BRU8sSUFBSUEsS0FBSyxLQUFLLEtBQWQsRUFBcUI7Q0FDMUJsL0QsSUFBQUEsQ0FBQyxHQUFHLENBQUo7Q0FDQTRKLElBQUFBLENBQUMsR0FBRyxDQUFKO0NBQ0QsR0FITSxNQUdBLElBQUlzMUQsS0FBSyxLQUFLLE1BQWQsRUFBc0I7Q0FDM0JsL0QsSUFBQUEsQ0FBQyxHQUFHLENBQUo7Q0FDQTRKLElBQUFBLENBQUMsR0FBRyxDQUFKO0NBQ0QsR0FITSxNQUdBLElBQUtoTixLQUFLLEdBQUdzaUUsS0FBSyxDQUFDOTdELE9BQU4sQ0FBYyxLQUFkLEVBQXFCLEVBQXJCLEVBQXlCeEcsS0FBekIsQ0FBK0Jra0UsT0FBL0IsQ0FBYixFQUF1RDtDQUM1RCxRQUFJbGtFLEtBQUssQ0FBQyxDQUFELENBQVQsRUFBYztDQUNab0QsTUFBQUEsQ0FBQyxHQUFHMHZCLFFBQVEsQ0FBQzl5QixLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVcsRUFBWCxDQUFaOztDQUNBLFVBQUlvekIsS0FBSyxDQUFDaHdCLENBQUQsQ0FBVCxFQUFjO0NBQ1osWUFBSXBELEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtDQUNwQm9ELFVBQUFBLENBQUMsR0FBRyxDQUFDLENBQUw7Q0FDRCxTQUZELE1BRU87Q0FDTEEsVUFBQUEsQ0FBQyxHQUFHLENBQUo7Q0FDRDtDQUNGO0NBQ0YsS0FURCxNQVNPO0NBQ0xBLE1BQUFBLENBQUMsR0FBRyxDQUFKO0NBQ0Q7O0NBQ0Q0SixJQUFBQSxDQUFDLEdBQUc4bEIsUUFBUSxDQUFDOXlCLEtBQUssQ0FBQyxDQUFELENBQU4sRUFBVyxFQUFYLENBQVIsSUFBMEIsQ0FBOUI7Q0FDRDs7Q0FDRCxTQUFPO0NBQ0xvRCxJQUFBQSxDQUFDLEVBQUVBLENBREU7Q0FFTDRKLElBQUFBLENBQUMsRUFBRUE7Q0FGRSxHQUFQO0NBSUQ7O0NBRUQsU0FBUzIzRCxjQUFULENBQXdCMTlELEtBQXhCLEVBQStCN0QsQ0FBL0IsRUFBa0M0SixDQUFsQyxFQUFxQ281RCxFQUFyQyxFQUF5QztDQUN2QyxNQUFJaGpFLENBQUMsS0FBSyxDQUFWLEVBQWE7Q0FDWCxRQUFJNkQsS0FBSyxLQUFLK0YsQ0FBZCxFQUFpQjtDQUNmLGFBQU9vNUQsRUFBUDtDQUNEO0NBQ0YsR0FKRCxNQUlPO0NBQ0wsUUFBSSxDQUFDbi9ELEtBQUssR0FBRytGLENBQVQsSUFBYzVKLENBQWQsSUFBbUIsQ0FBbkIsSUFBd0IsQ0FBQzZELEtBQUssR0FBRytGLENBQVQsSUFBYzVKLENBQWQsS0FBb0IsQ0FBNUMsSUFBaURnakUsRUFBckQsRUFBeUQ7Q0FDdkQsYUFBTyxDQUFQO0NBQ0Q7Q0FDRjs7Q0FDRCxTQUFPdG5FLFNBQVA7Q0FDRDs7Q0FFRCxTQUFTdW5FLEtBQVQsQ0FBZTlLLElBQWYsRUFBcUI7Q0FDbkIsTUFBSTJDLGVBQWUsR0FBRzNDLElBQUksSUFBSSxDQUFDQSxJQUFJLENBQUNpQyxhQUFMLElBQXNCakMsSUFBdkIsRUFBNkIyQyxlQUEzRDtDQUNBLFNBQU9BLGVBQWUsR0FBR0EsZUFBZSxDQUFDN0MsUUFBaEIsQ0FBeUJueUQsV0FBekIsT0FBMkMsTUFBOUMsR0FBdUQsS0FBN0U7Q0FDRDs7Q0FFRCxTQUFTbTRELE9BQVQsQ0FBaUJsNUMsR0FBakIsRUFBc0JtK0MsS0FBdEIsRUFBNkI7Q0FDM0IsU0FBT0MsUUFBTSxDQUFDcCtDLEdBQUQsRUFBTSxJQUFOLEVBQVltK0MsS0FBWixDQUFiO0NBQ0Q7O0NBRUQsU0FBU0UsV0FBVCxDQUFxQjkrRCxFQUFyQixFQUF5QjFILEtBQXpCLEVBQWdDO0NBQzlCLE1BQUksQ0FBQ0EsS0FBTCxFQUFZO0NBQ1YsV0FBTyxJQUFQO0NBQ0Q7O0NBQ0QsTUFBSSxDQUFDMEgsRUFBTCxFQUFTO0NBQ1AsV0FBTyxLQUFQO0NBQ0Q7O0NBRUQsTUFBSUEsRUFBRSxDQUFDNjFELFFBQUgsS0FBZ0IsQ0FBcEIsRUFBdUI7Q0FDckIsV0FBTyxLQUFQO0NBQ0Q7O0NBRUQsTUFBSXAxQixPQUFPLEdBQUcsQ0FBZDtDQUFBLE1BQ0VzK0IsV0FBVyxHQUFHem1FLEtBQUssQ0FBQ2svRCxNQUR0QjtDQUFBLE1BRUV3SCxjQUZGO0NBQUEsTUFHRUMsZ0JBSEY7O0NBS0EsTUFBSTNtRSxLQUFLLENBQUM4dkIsQ0FBTixLQUFZLEtBQWhCLEVBQXVCO0NBQ3JCcVksSUFBQUEsT0FBTyxJQUFJbThCLFNBQVMsQ0FBQ2w2RCxHQUFWLENBQWMxQyxFQUFkLEVBQWtCMUgsS0FBSyxDQUFDekIsS0FBeEIsQ0FBWDtDQUNEOztDQUVELE1BQUk0cEMsT0FBTyxJQUFJcytCLFdBQWYsRUFBNEI7Q0FDMUJDLElBQUFBLGNBQWMsR0FBR0QsV0FBVyxDQUFDam5FLE1BQTdCO0NBQ0FtbkUsSUFBQUEsZ0JBQWdCLEdBQUcsQ0FBbkI7O0NBQ0EsV0FBT3grQixPQUFPLElBQUl3K0IsZ0JBQWdCLEdBQUdELGNBQXJDLEVBQXFEQyxnQkFBZ0IsRUFBckUsRUFBeUU7Q0FDdkUsVUFBSUMsaUJBQWlCLEdBQUdILFdBQVcsQ0FBQ0UsZ0JBQUQsQ0FBbkM7Q0FBQSxVQUNFRSxxQkFBcUIsR0FBR0QsaUJBQWlCLENBQUM5MkMsQ0FENUM7O0NBRUEsVUFBSXcwQyxTQUFTLENBQUN1QyxxQkFBRCxDQUFiLEVBQXNDO0NBQ3BDMStCLFFBQUFBLE9BQU8sSUFBSW04QixTQUFTLENBQUN1QyxxQkFBRCxDQUFULENBQWlDbi9ELEVBQWpDLEVBQXFDay9ELGlCQUFpQixDQUFDcm9FLEtBQXZELENBQVg7Q0FDRDtDQUNGO0NBQ0Y7O0NBRUQsU0FBTzRwQyxPQUFQO0NBQ0Q7OztDQUdELFNBQVMyK0IsY0FBVCxDQUF3QnAvRCxFQUF4QixFQUE0QjFILEtBQTVCLEVBQW1DO0NBQ2pDLE1BQUltb0MsT0FBTyxHQUFHLENBQWQ7Q0FBQSxNQUNFNCtCLE9BQU8sR0FBR3IvRCxFQURaO0NBQUEsTUFFRXMvRCxVQUZGO0NBQUEsTUFHRUMsVUFBVSxHQUFHam5FLEtBSGY7O0NBS0EsS0FBRztDQUNEbW9DLElBQUFBLE9BQU8sSUFBSXErQixXQUFXLENBQUM5K0QsRUFBRCxFQUFLMUgsS0FBTCxDQUF0Qjs7Q0FDQSxRQUFJbW9DLE9BQUosRUFBYTtDQUNYO0NBQ0Fub0MsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLElBQUlBLEtBQUssQ0FBQ21yQixJQUF2Qjs7Q0FDQSxVQUFJLENBQUNuckIsS0FBTCxFQUFZO0NBQ1YsZUFBTyxJQUFQO0NBQ0Q7O0NBQ0RnbkUsTUFBQUEsVUFBVSxHQUFHckIsWUFBWSxDQUFDM2xFLEtBQUssQ0FBQ2dpRSxjQUFQLENBQXpCO0NBQ0F0NkQsTUFBQUEsRUFBRSxHQUFHaytELEdBQUcsQ0FBQ2wrRCxFQUFELEVBQUtzL0QsVUFBVSxDQUFDcEIsR0FBaEIsQ0FBUjs7Q0FDQSxVQUFJLENBQUNvQixVQUFVLENBQUNuQixTQUFoQixFQUEyQjtDQUN6QixlQUFPO0NBQ0w7Q0FDQW4rRCxVQUFBQSxFQUFFLEVBQUVBLEVBRkM7Q0FHTDFILFVBQUFBLEtBQUssRUFBRUE7Q0FIRixTQUFQO0NBS0Q7Q0FDRixLQWZELE1BZU87Q0FDTGduRSxNQUFBQSxVQUFVLEdBQUdyQixZQUFZLENBQUMzbEUsS0FBSyxDQUFDZ2lFLGNBQVAsQ0FBekI7O0NBQ0EsVUFBSWdGLFVBQVUsQ0FBQ25CLFNBQWYsRUFBMEI7Q0FDeEI7Q0FDQSxlQUFPO0NBQ0xuK0QsVUFBQUEsRUFBRSxFQUFFaytELEdBQUcsQ0FBQ21CLE9BQUQsRUFBVXBCLFlBQVksQ0FBQ3NCLFVBQVUsQ0FBQ2pGLGNBQVosQ0FBWixDQUF3QzRELEdBQWxELENBREY7Q0FFTDVsRSxVQUFBQSxLQUFLLEVBQUVpbkU7Q0FGRixTQUFQO0NBSUQsT0FORCxNQU1PO0NBQ0w7Q0FDQSxlQUFPO0NBQ0x2L0QsVUFBQUEsRUFBRSxFQUFFQSxFQUFFLElBQUlrK0QsR0FBRyxDQUFDbCtELEVBQUQsRUFBS3MvRCxVQUFVLENBQUNwQixHQUFoQixDQURSO0NBRUw1bEUsVUFBQUEsS0FBSyxFQUFFQTtDQUZGLFNBQVA7Q0FJRDtDQUNGO0NBQ0YsR0FqQ0QsUUFpQ1MwSCxFQWpDVCxFQU5pQzs7O0NBMENqQyxTQUFPO0NBQ0xBLElBQUFBLEVBQUUsRUFBRWsrRCxHQUFHLENBQUNtQixPQUFELEVBQVVwQixZQUFZLENBQUNzQixVQUFVLENBQUNqRixjQUFaLENBQVosQ0FBd0M0RCxHQUFsRCxDQURGO0NBRUw1bEUsSUFBQUEsS0FBSyxFQUFFaW5FO0NBRkYsR0FBUDtDQUlEOzs7Q0FHRCxTQUFTQyxzQkFBVCxDQUFnQ3gvRCxFQUFoQyxFQUFvQ3F4QixJQUFwQyxFQUEwQztDQUN4QyxNQUFJaXVDLFVBQUo7Q0FBQSxNQUNFRyxHQUFHLEdBQUdwdUMsSUFEUjs7Q0FHQSxLQUFHO0NBQ0QsUUFBSSxDQUFDeXRDLFdBQVcsQ0FBQzkrRCxFQUFELEVBQUt5L0QsR0FBTCxDQUFoQixFQUEyQjtDQUN6QixhQUFPLElBQVA7Q0FDRDs7Q0FDREEsSUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNoOEMsSUFBVjs7Q0FDQSxRQUFJLENBQUNnOEMsR0FBTCxFQUFVO0NBQ1IsYUFBTyxJQUFQO0NBQ0Q7O0NBQ0RILElBQUFBLFVBQVUsR0FBR3JCLFlBQVksQ0FBQ3dCLEdBQUcsQ0FBQ25GLGNBQUwsQ0FBekI7Q0FDQXQ2RCxJQUFBQSxFQUFFLEdBQUdrK0QsR0FBRyxDQUFDbCtELEVBQUQsRUFBS3MvRCxVQUFVLENBQUNwQixHQUFoQixDQUFSO0NBQ0QsR0FWRCxRQVVTbCtELEVBQUUsSUFBSXMvRCxVQUFVLENBQUNuQixTQVYxQjs7Q0FXQSxNQUFJLENBQUNuK0QsRUFBTCxFQUFTO0NBQ1AsV0FBTyxJQUFQO0NBQ0Q7O0NBQ0QsU0FBTztDQUNMQSxJQUFBQSxFQUFFLEVBQUVBLEVBREM7Q0FFTDFILElBQUFBLEtBQUssRUFBRW1uRTtDQUZGLEdBQVA7Q0FJRDs7Q0FFRCxTQUFTQyxLQUFULENBQWUxL0QsRUFBZixFQUFtQjtDQUNqQixNQUFJMi9ELFVBQUo7O0NBRUEsTUFBSXZELFlBQUosRUFBa0I7Q0FDaEIsUUFBSSxFQUFFdUQsVUFBVSxHQUFHMy9ELEVBQUUsQ0FBQ3cxRCxZQUFILENBQWdCMEcsb0JBQWhCLENBQWYsQ0FBSixFQUEyRDtDQUN6RGw4RCxNQUFBQSxFQUFFLENBQUMrMUQsWUFBSCxDQUFnQm1HLG9CQUFoQixFQUFzQ3lELFVBQVUsR0FBSSxDQUFDLElBQUkvL0MsSUFBSixFQUFELEdBQWMsR0FBZCxHQUFxQixFQUFFeThDLElBQTNFO0NBQ0Q7Q0FDRixHQUpELE1BSU87Q0FDTCxRQUFJLEVBQUVzRCxVQUFVLEdBQUczL0QsRUFBRSxDQUFDazhELG9CQUFELENBQWpCLENBQUosRUFBOEM7Q0FDNUN5RCxNQUFBQSxVQUFVLEdBQUczL0QsRUFBRSxDQUFDazhELG9CQUFELENBQUYsR0FBNEIsQ0FBQyxJQUFJdDhDLElBQUosRUFBRixHQUFnQixHQUFoQixHQUF1QixFQUFFeThDLElBQWpFO0NBQ0Q7Q0FDRjs7Q0FFRCxTQUFPc0QsVUFBUDtDQUNEOztDQUVELFNBQVNDLFFBQVQsQ0FBa0I1L0QsRUFBbEIsRUFBc0IxSCxLQUF0QixFQUE2QjtDQUMzQixNQUFJcW5FLFVBQVUsR0FBR0QsS0FBSyxDQUFDMS9ELEVBQUQsQ0FBdEI7Q0FBQSxNQUNFNi9ELFFBREY7Q0FFQUEsRUFBQUEsUUFBUSxHQUFHRixVQUFVLEdBQUcsR0FBYixJQUFvQnJuRSxLQUFLLENBQUNtaUUsS0FBTixJQUFlLENBQW5DLENBQVg7O0NBQ0EsTUFBSW9GLFFBQVEsSUFBSXZELGVBQWhCLEVBQWlDO0NBQy9CLFdBQU9BLGVBQWUsQ0FBQ3VELFFBQUQsQ0FBdEI7Q0FDRDs7Q0FDRHZELEVBQUFBLGVBQWUsQ0FBQ3VELFFBQUQsQ0FBZixHQUE0QkMsZ0JBQWdCLENBQUM5L0QsRUFBRCxFQUFLMUgsS0FBTCxDQUE1QztDQUNBLFNBQU9na0UsZUFBZSxDQUFDdUQsUUFBRCxDQUF0QjtDQUNEO0NBR0Q7OztDQUNBLFNBQVNDLGdCQUFULENBQTBCOS9ELEVBQTFCLEVBQThCMUgsS0FBOUIsRUFBcUM7Q0FDbkMsTUFBSXluRSxpQkFBaUIsR0FBR1gsY0FBYyxDQUFDcC9ELEVBQUQsRUFBSzFILEtBQUwsQ0FBdEM7O0NBQ0EsTUFBSXluRSxpQkFBaUIsS0FBSyxJQUExQixFQUFnQztDQUM5QixXQUFPLElBQVA7Q0FDRCxHQUZELE1BRU87Q0FDTC8vRCxJQUFBQSxFQUFFLEdBQUcrL0QsaUJBQWlCLENBQUMvL0QsRUFBdkI7Q0FDQTFILElBQUFBLEtBQUssR0FBR3luRSxpQkFBaUIsQ0FBQ3puRSxLQUExQjs7Q0FDQSxXQUFPMEgsRUFBUCxFQUFXO0NBQ1QsVUFBSTQvRCxRQUFRLENBQUM1L0QsRUFBRCxFQUFLMUgsS0FBTCxDQUFaLEVBQXlCO0NBQ3ZCLGVBQU8sSUFBUDtDQUNEOztDQUNEMEgsTUFBQUEsRUFBRSxHQUFHaytELEdBQUcsQ0FBQ2wrRCxFQUFELEVBQUtpK0QsWUFBWSxDQUFDM2xFLEtBQUssQ0FBQ2dpRSxjQUFQLENBQVosQ0FBbUM0RCxHQUF4QyxDQUFSO0NBQ0Q7O0NBQ0QsV0FBTyxLQUFQO0NBQ0Q7Q0FDRjs7Q0FFRCxTQUFTVyxRQUFULENBQWdCcCtDLEdBQWhCLEVBQXFCMDFDLE9BQXJCLEVBQThCeUksS0FBOUIsRUFBcUM7Q0FDbkMsTUFBSSxDQUFDekMsTUFBTSxDQUFDMTdDLEdBQUQsQ0FBWCxFQUFrQjtDQUNoQjA3QyxJQUFBQSxNQUFNLENBQUMxN0MsR0FBRCxDQUFOLEdBQWNvM0MsTUFBTSxDQUFDdkYsS0FBUCxDQUFhN3hDLEdBQWIsQ0FBZDtDQUNEOztDQUVELE1BQUl1L0MsUUFBUSxHQUFHN0QsTUFBTSxDQUFDMTdDLEdBQUQsQ0FBckI7Q0FBQSxNQUNFdy9DLFVBQVUsR0FBRyxDQURmO0NBQUEsTUFFRUMsUUFBUSxHQUFHRixRQUFRLENBQUNsb0UsTUFGdEI7Q0FBQSxNQUdFcW9FLGVBSEY7Q0FBQSxNQUlFdGtDLEtBSkY7Q0FBQSxNQUtFdzVCLEdBQUcsR0FBRyxFQUxSOztDQU9BLE1BQUl1SixLQUFKLEVBQVc7Q0FDVHpJLElBQUFBLE9BQU8sR0FBR0EsT0FBTyxJQUFJeUksS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTOUksYUFBOUI7Q0FDRDs7Q0FFRHFLLEVBQUFBLGVBQWUsR0FBR2hLLE9BQU8sSUFBSUEsT0FBTyxDQUFDTCxhQUFuQixJQUFvQyxPQUFPeDZELFFBQVAsS0FBb0IsV0FBcEIsSUFBbUNBLFFBQXpGOztDQUVBLE1BQUk2NkQsT0FBTyxJQUFJQSxPQUFPLENBQUNOLFFBQVIsS0FBcUIsQ0FBaEMsSUFBcUMsQ0FBQ3NLLGVBQTFDLEVBQTJEO0NBQ3pEQSxJQUFBQSxlQUFlLEdBQUdoSyxPQUFsQjtDQUNEOztDQUVEQSxFQUFBQSxPQUFPLEdBQUdBLE9BQU8sSUFBSWdLLGVBQXJCO0NBRUEvRCxFQUFBQSxZQUFZLEdBQUd1QyxLQUFLLENBQUN4SSxPQUFELENBQXBCOztDQUVBLFNBQU84SixVQUFVLEdBQUdDLFFBQXBCLEVBQThCRCxVQUFVLEVBQXhDLEVBQTRDO0NBQzFDekIsSUFBQUEsV0FBVztDQUVYM2lDLElBQUFBLEtBQUssR0FBR21rQyxRQUFRLENBQUNDLFVBQUQsQ0FBaEI7Q0FFQSxRQUFJekksTUFBTSxHQUFHMzdCLEtBQUssQ0FBQzI3QixNQUFuQjtDQUFBLFFBQ0U0SSxXQURGO0NBQUEsUUFFRUMsU0FGRjtDQUFBLFFBR0VDLFVBSEY7Q0FBQSxRQUlFQyxPQUFPLEdBQUczQixLQUpaO0NBQUEsUUFLRTRCLFFBTEY7Q0FBQSxRQU1Fbm1FLEVBQUUsR0FBRyxJQU5QOztDQVFBLFFBQUksQ0FBQ2ttRSxPQUFMLEVBQWM7Q0FDWixVQUFJL0ksTUFBTSxJQUFJLENBQUM0RSxZQUFmLEVBQTZCO0NBQzNCZ0UsUUFBQUEsV0FBVyxHQUFHLENBQWQ7Q0FDQUMsUUFBQUEsU0FBUyxHQUFHN0ksTUFBTSxDQUFDMS9ELE1BQW5COztDQUNBLGVBQU9zb0UsV0FBVyxHQUFHQyxTQUFyQixFQUFnQ0QsV0FBVyxFQUEzQyxFQUErQztDQUM3QyxjQUFJSyxZQUFZLEdBQUdqSixNQUFNLENBQUM0SSxXQUFELENBQXpCOztDQUNBLGNBQUlLLFlBQVksQ0FBQ3I0QyxDQUFiLEtBQW1CLElBQXZCLEVBQTZCO0NBQzNCL3RCLFlBQUFBLEVBQUUsR0FBR29tRSxZQUFZLENBQUM1cEUsS0FBbEI7Q0FDQTtDQUNEO0NBQ0Y7Q0FDRjs7Q0FFRCxVQUFJd0QsRUFBSixFQUFRO0NBQ047Q0FDQSxZQUFJcW1FLGNBQWMsR0FBRyxDQUFDdkssT0FBTyxDQUFDd0ssY0FBOUI7Q0FBQSxZQUNFQyxZQUFZLEdBQUdqSyxJQUFJLENBQUNNLFFBQUwsQ0FBY2tKLGVBQWQsRUFBK0JoSyxPQUEvQixDQURqQjtDQUFBLFlBRUUwSyxHQUFHLEdBQUdILGNBQWMsR0FDbEJFLFlBQVksR0FDVlQsZUFBZSxDQUFDUSxjQUFoQixDQUErQnRtRSxFQUEvQixDQURVLEdBRVYsSUFIZ0IsR0FJaEI4N0QsT0FBTyxDQUFDd0ssY0FBUixDQUF1QnRtRSxFQUF2QixDQU5OLENBRk07Q0FVTjs7Q0FDQSxZQUFJLENBQUN3bUUsR0FBRCxJQUFRSCxjQUFSLElBQTBCRyxHQUFHLElBQUl0RSxPQUFPLENBQUNzRSxHQUFELEVBQU0sSUFBTixDQUFQLEtBQXVCeG1FLEVBQTVELEVBQWdFO0NBQzlELGNBQUl5bUUsSUFBSSxHQUFHbkssSUFBSSxDQUFDVCxvQkFBTCxDQUEwQixHQUExQixFQUErQkMsT0FBL0IsQ0FBWDtDQUFBLGNBQ0U0SyxNQUFNLEdBQUdELElBQUksQ0FBQ2hwRSxNQURoQjtDQUFBLGNBRUVrcEUsSUFBSSxHQUFHLENBRlQ7O0NBR0EsaUJBQU9BLElBQUksR0FBR0QsTUFBZCxFQUFzQkMsSUFBSSxFQUExQixFQUE4QjtDQUM1QkgsWUFBQUEsR0FBRyxHQUFHQyxJQUFJLENBQUNFLElBQUQsQ0FBVjs7Q0FDQSxnQkFBSXpFLE9BQU8sQ0FBQ3NFLEdBQUQsRUFBTSxJQUFOLENBQVAsS0FBdUJ4bUUsRUFBM0IsRUFBK0I7Q0FDN0JrbUUsY0FBQUEsT0FBTyxHQUFHLENBQUNNLEdBQUQsQ0FBVjtDQUNBO0NBQ0Q7Q0FDRjs7Q0FDRCxjQUFJRyxJQUFJLEtBQUtELE1BQWIsRUFBcUI7Q0FDbkJSLFlBQUFBLE9BQU8sR0FBRyxFQUFWO0NBQ0Q7Q0FDRixTQWRELE1BY087Q0FDTCxjQUFJSyxZQUFZLElBQUlDLEdBQWhCLElBQXVCMUssT0FBTyxLQUFLZ0ssZUFBdkMsRUFBd0Q7Q0FDdERVLFlBQUFBLEdBQUcsR0FBR2xLLElBQUksQ0FBQ00sUUFBTCxDQUFjZCxPQUFkLEVBQXVCMEssR0FBdkIsSUFBOEJBLEdBQTlCLEdBQW9DLElBQTFDO0NBQ0Q7O0NBQ0ROLFVBQUFBLE9BQU8sR0FBR00sR0FBRyxHQUFHLENBQUNBLEdBQUQsQ0FBSCxHQUFXLEVBQXhCO0NBQ0Q7Q0FDRixPQS9CRCxNQStCTztDQUNMTixRQUFBQSxPQUFPLEdBQUc1SixJQUFJLENBQUNULG9CQUFMLENBQTBCcjZCLEtBQUssQ0FBQ2hsQyxLQUFOLElBQWUsR0FBekMsRUFBOENzL0QsT0FBOUMsQ0FBVjtDQUNEO0NBQ0Y7O0NBRURtSyxJQUFBQSxVQUFVLEdBQUcsQ0FBYjtDQUNBRSxJQUFBQSxRQUFRLEdBQUdELE9BQU8sQ0FBQ3pvRSxNQUFuQjs7Q0FFQSxRQUFJLENBQUMwb0UsUUFBTCxFQUFlO0NBQ2I7Q0FDRDs7Q0FFRCxXQUFPRixVQUFVLEdBQUdFLFFBQXBCLEVBQThCRixVQUFVLEVBQXhDLEVBQTRDO0NBQzFDLFVBQUlsc0IsSUFBSSxHQUFHbXNCLE9BQU8sQ0FBQ0QsVUFBRCxDQUFsQjtDQUNBLFVBQUlXLFNBQVMsR0FBR3pCLHNCQUFzQixDQUFDcHJCLElBQUQsRUFBT3ZZLEtBQVAsQ0FBdEM7O0NBQ0EsVUFBSW9sQyxTQUFTLEtBQUssSUFBbEIsRUFBd0I7Q0FDdEI1TCxRQUFBQSxHQUFHLENBQUN0N0QsSUFBSixDQUFTcTZDLElBQVQ7Q0FDRCxPQUZELE1BRU8sSUFBSTZzQixTQUFKLEVBQWU7Q0FDcEIsWUFBSXJCLFFBQVEsQ0FBQ3FCLFNBQVMsQ0FBQ2poRSxFQUFYLEVBQWVpaEUsU0FBUyxDQUFDM29FLEtBQXpCLENBQVosRUFBNkM7Q0FDM0MrOEQsVUFBQUEsR0FBRyxDQUFDdDdELElBQUosQ0FBU3E2QyxJQUFUO0NBQ0Q7Q0FDRjtDQUNGO0NBQ0Y7O0NBRUQsTUFBSThyQixRQUFRLEdBQUcsQ0FBZixFQUFrQjtDQUNoQjdLLElBQUFBLEdBQUcsR0FBR3NCLElBQUksQ0FBQ0MsTUFBTCxDQUFZdkIsR0FBWixDQUFOO0NBQ0Q7O0NBRUQsU0FBT0EsR0FBUDtDQUNEOztLQUVEOS9ELGVBQUEsR0FBaUJzcEUsUUFBakI7O0FBRUFBLFNBQU0sQ0FBQ3ZNLEtBQVAsR0FBZSxVQUFVN3hDLEdBQVYsRUFBZTtDQUM1QixTQUFPbzNDLE1BQU0sQ0FBQ3ZGLEtBQVAsQ0FBYTd4QyxHQUFiLENBQVA7Q0FDRCxDQUZEOztBQUlBbytDLFNBQU0sQ0FBQ2xGLE9BQVAsR0FBaUJBLE9BQWpCO0FBRUFrRixTQUFNLENBQUNsSSxJQUFQLEdBQWNBLElBQWQ7QUFFQWtJLFNBQU0sQ0FBQ3ptRSxPQUFQLEdBQWlCLFdBQWpCOztLQzlxQkE3QyxhQUFBLEdBQWlCUyxlQUFqQjs7Q0NBQSxJQUFJa3JFLGdCQUFnQixHQUFHLGFBQXZCOztDQUVBLFNBQVNDLG1CQUFULENBQThCN29FLEtBQTlCLEVBQXFDaU4sQ0FBckMsRUFBd0NrVyxNQUF4QyxFQUFnRDtDQUM5QyxNQUFJQSxNQUFNLEtBQUssQ0FBZixFQUFrQjtDQUNoQixXQUFPbFcsQ0FBQyxDQUFDb2QsV0FBRixFQUFQO0NBQ0QsR0FGRCxNQUVPO0NBQ0wsV0FBT3BkLENBQVA7Q0FDRDtDQUNGOztDQUVELFNBQVM2N0QsV0FBVCxDQUFvQjNnRCxHQUFwQixFQUF5QjtDQUN2QixNQUFJNGdELFVBQVUsR0FBRzVnRCxHQUFHLENBQUMzaEIsT0FBSixDQUFZb2lFLGdCQUFaLEVBQThCQyxtQkFBOUIsQ0FBakI7Q0FDQUQsRUFBQUEsZ0JBQWdCLENBQUM5bkMsU0FBakIsR0FBNkIsQ0FBN0I7Q0FDQSxTQUFPaW9DLFVBQVA7Q0FDRDs7S0FFRDlyRSxXQUFBLEdBQWlCNnJFLFdBQWpCOztDQ2hCQSxTQUFTRSxVQUFULENBQW1CenFFLEtBQW5CLEVBQTBCO0NBQ3hCLFNBQU8sT0FBT0EsS0FBUCxLQUFpQixRQUF4QjtDQUNEOztLQUVEdEIsVUFBQSxHQUFpQityRSxVQUFqQjs7Q0NKQSxTQUFTQyxhQUFULENBQXNCMXFFLEtBQXRCLEVBQTZCO0NBQzNCLFNBQU8sT0FBT0EsS0FBUCxLQUFpQixXQUF4QjtDQUNEOztLQUVEdEIsYUFBQSxHQUFpQmdzRSxhQUFqQjs7Q0NKQSxTQUFTcjBDLFFBQVQsQ0FBaUJzMEMsSUFBakIsRUFBdUI7Q0FDckIsTUFBSXIzRCxJQUFJLEdBQUd0UyxTQUFYO0NBQ0EsTUFBSWtILE1BQUo7O0NBRUEsT0FBSyxJQUFJc0IsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzhKLElBQUksQ0FBQ3JTLE1BQXpCLEVBQWlDdUksQ0FBQyxFQUFsQyxFQUFzQztDQUNwQ3RCLElBQUFBLE1BQU0sR0FBR29MLElBQUksQ0FBQzlKLENBQUQsQ0FBYjs7Q0FFQSxTQUFLLElBQUkxRyxHQUFULElBQWdCb0YsTUFBaEIsRUFBd0I7Q0FDdEJ5aUUsTUFBQUEsSUFBSSxDQUFDN25FLEdBQUQsQ0FBSixHQUFZb0YsTUFBTSxDQUFDcEYsR0FBRCxDQUFsQjtDQUNEO0NBQ0Y7O0NBRUQsU0FBTzZuRSxJQUFQO0NBQ0Q7O0tBRURqc0UsUUFBQSxHQUFpQjIzQixRQUFqQjs7Q0NmQSxTQUFTc2tCLFdBQVQsQ0FBb0J6eUMsTUFBcEIsRUFBNEJ2RixFQUE1QixFQUFnQztDQUM5QixNQUFJaW9FLFdBQVcsR0FBRyxFQUFsQjs7Q0FFQSxPQUFLLElBQUk5bkUsR0FBVCxJQUFnQm9GLE1BQWhCLEVBQXdCO0NBQ3RCLFFBQUlBLE1BQU0sQ0FBQzVFLGNBQVAsQ0FBc0JSLEdBQXRCLENBQUosRUFBZ0M7Q0FDOUI4bkUsTUFBQUEsV0FBVyxDQUFDOW5FLEdBQUQsQ0FBWCxHQUFtQkgsRUFBRSxDQUFDdUYsTUFBTSxDQUFDcEYsR0FBRCxDQUFQLENBQXJCO0NBQ0Q7Q0FDRjs7Q0FFRCxTQUFPOG5FLFdBQVA7Q0FDRDs7S0FFRGxzRSxXQUFBLEdBQWlCaThDLFdBQWpCOztDQ1pBLElBQUk0dkIsV0FBUyxHQUFHcHJFLFdBQWhCOztDQUVBLFNBQVMwckUsZ0JBQVQsQ0FBeUI3bUUsSUFBekIsRUFBK0I7Q0FDN0IsTUFBSThtRSxLQUFLLEdBQUdQLFdBQVMsQ0FBQ3ZtRSxJQUFELENBQXJCLENBRDZCO0NBSTdCOztDQUNBLE1BQUk4bUUsS0FBSyxDQUFDcnFELE1BQU4sQ0FBYSxDQUFiLEVBQWdCcUwsV0FBaEIsT0FBa0M5bkIsSUFBSSxDQUFDeWMsTUFBTCxDQUFZLENBQVosQ0FBdEMsRUFBc0Q7Q0FDcEQsV0FBT3pjLElBQUksQ0FBQ3ljLE1BQUwsQ0FBWSxDQUFaLElBQWlCcXFELEtBQUssQ0FBQzFxRSxLQUFOLENBQVksQ0FBWixDQUF4QjtDQUNEOztDQUVELE1BQUk0RCxJQUFJLENBQUN5YyxNQUFMLENBQVksQ0FBWixNQUFtQixHQUF2QixFQUE0QjtDQUMxQixXQUFPcXFELEtBQUssQ0FBQ3hoRSxPQUFOLENBQWMsSUFBZCxNQUF3QixDQUF4QixHQUE0QndoRSxLQUE1QixHQUNIQSxLQUFLLENBQUNycUQsTUFBTixDQUFhLENBQWIsRUFBZ0JxTCxXQUFoQixLQUFnQ2cvQyxLQUFLLENBQUMxcUUsS0FBTixDQUFZLENBQVosQ0FEcEM7Q0FFRCxHQUhELE1BR087Q0FDTCxXQUFPMHFFLEtBQVA7Q0FDRDtDQUNGOztLQUVEcHNFLGdCQUFBLEdBQWlCbXNFLGdCQUFqQjs7Q0NuQkEsSUFBSUUsT0FBSyxHQUFHNXJFLFFBQVEsT0FBRCxDQUFuQjs7Q0FDQSxJQUFJNnJFLFNBQVMsR0FBRzdyRSxHQUFoQjs7Q0FDQSxJQUFJOHJFLGdCQUFnQixHQUFHOXJFLGFBQXZCOztDQUNBLElBQUlvckUsU0FBUyxHQUFHcHJFLFdBQWhCOztDQUNBLElBQUlzckUsUUFBUSxHQUFHdHJFLFVBQWY7O0NBQ0EsSUFBSXVyRSxXQUFXLEdBQUd2ckUsYUFBbEI7O0NBQ0EsSUFBSWszQixNQUFNLEdBQUdsM0IsUUFBYjs7Q0FDQSxJQUFJdzdDLFdBQVMsR0FBR3g3QyxXQUFoQjs7Q0FDQSxJQUFJMHJFLGNBQWMsR0FBRzFyRSxnQkFBckI7O0NBRUEsU0FBUzRhLFNBQVQsR0FBb0I7Q0FDbEIsV0FBUzg2QyxPQUFULENBQWtCaUksUUFBbEIsRUFBNEJ1RCxVQUE1QixFQUF3QztDQUN0QyxTQUFLdkQsUUFBTCxHQUFnQkEsUUFBaEI7Q0FDQSxTQUFLdUQsVUFBTCxHQUFrQkEsVUFBbEI7Q0FDQSxTQUFLdkIsVUFBTCxHQUFrQixFQUFsQjtDQUNBLFNBQUtvTSxjQUFMLEdBQXNCLEVBQXRCO0NBQ0EsU0FBS25VLElBQUwsR0FBWSxFQUFaO0NBQ0EsUUFBSWw0RCxJQUFJLEdBQUcsSUFBWDtDQUNBLFFBQUlrN0QsS0FBSyxHQUFHLEtBQUtBLEtBQUwsR0FBYTtDQUN2Qm9SLE1BQUFBLEdBQUcsRUFBRSxVQUFVQyxTQUFWLEVBQXFCO0NBQ3hCdnNFLFFBQUFBLElBQUksQ0FBQ3VzRSxTQUFMLEdBQWlCQSxTQUFqQjtDQUNELE9BSHNCO0NBSXZCOTlELE1BQUFBLEtBQUssRUFBRTtDQUNMKzlELFFBQUFBLFdBQVcsRUFBRSxVQUFVcm5FLElBQVYsRUFBZ0JoRSxLQUFoQixFQUF1QjtDQUNsQys1RCxVQUFBQSxLQUFLLENBQUN6c0QsS0FBTixDQUFZdTlELGNBQWMsQ0FBQzdtRSxJQUFELENBQTFCLElBQW9DaEUsS0FBcEM7Q0FDRCxTQUhJO0NBSUxzckUsUUFBQUEsV0FBVyxFQUFFLFVBQVV0bkUsSUFBVixFQUFnQjtDQUMzQixpQkFBTysxRCxLQUFLLENBQUN6c0QsS0FBTixDQUFZdTlELGNBQWMsQ0FBQzdtRSxJQUFELENBQTFCLEtBQXFDLEVBQTVDO0NBQ0QsU0FOSTtDQU9MdW5FLFFBQUFBLGdCQUFnQixFQUFFLFVBQVV2bkUsSUFBVixFQUFnQjtDQUNoQyxpQkFBTysxRCxLQUFLLENBQUN6c0QsS0FBTixDQUFZZytELFdBQVosQ0FBd0J0bkUsSUFBeEIsQ0FBUDtDQUNELFNBVEk7Q0FVTHduRSxRQUFBQSxjQUFjLEVBQUUsVUFBVXhuRSxJQUFWLEVBQWdCO0NBQzlCLGlCQUFPKzFELEtBQUssQ0FBQ3pzRCxLQUFOLENBQVl1OUQsY0FBYyxDQUFDN21FLElBQUQsQ0FBMUIsQ0FBUDtDQUNEO0NBWkk7Q0FKZ0IsS0FBekI7Q0FvQkEsU0FBS3NKLEtBQUwsR0FBYXlzRCxLQUFLLENBQUN6c0QsS0FBbkI7Q0FDRDs7Q0FFRHVuRCxFQUFBQSxPQUFPLENBQUM0VyxZQUFSLEdBQXVCLENBQXZCO0NBQ0E1VyxFQUFBQSxPQUFPLENBQUM2Vyw4QkFBUixHQUF5QyxDQUF6QztDQUNBN1csRUFBQUEsT0FBTyxDQUFDOFcsMkJBQVIsR0FBc0MsQ0FBdEM7Q0FDQTlXLEVBQUFBLE9BQU8sQ0FBQytXLDJCQUFSLEdBQXNDLENBQXRDO0NBQ0EvVyxFQUFBQSxPQUFPLENBQUNnWCwwQkFBUixHQUFxQyxDQUFyQztDQUNBaFgsRUFBQUEsT0FBTyxDQUFDaVgsOEJBQVIsR0FBeUMsRUFBekM7Q0FFQWpYLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCNjNELFFBQWxCLEdBQTZCLENBQTdCLENBdENrQjtDQXlDbEI7O0NBQ0FuSyxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjRrRSxpQkFBbEIsR0FBc0M7Q0FDcEMsWUFBUSxRQUQ0QjtDQUVwQyxjQUFVLFVBRjBCO0NBR3BDLGFBQVMsU0FIMkI7Q0FJcEMsbUJBQWUsZUFKcUI7Q0FLcEMsWUFBUSxRQUw0QjtDQU1wQyxXQUFPLE9BTjZCO0NBT3BDLG1CQUFlLGVBUHFCO0NBUXBDLFlBQVEsUUFSNEI7Q0FTcEMsZUFBVyxXQVR5QjtDQVVwQyxpQkFBYSxhQVZ1QjtDQVdwQyxnQkFBWSxZQVh3QjtDQVlwQyxpQkFBYSxhQVp1QjtDQWFwQyxnQkFBWSxZQWJ3QjtDQWNwQyxpQkFBYSxhQWR1QjtDQWVwQyxZQUFRLFFBZjRCO0NBZ0JwQyxhQUFTLFNBaEIyQjtDQWlCcEMsYUFBUyxTQWpCMkI7Q0FrQnBDLGFBQVMsU0FsQjJCO0NBbUJwQyxlQUFXLFdBbkJ5QjtDQW9CcEMsZ0JBQVksWUFwQndCO0NBcUJwQyxhQUFTLFNBckIyQjtDQXNCcEMsWUFBUSxRQXRCNEI7Q0F1QnBDLGlCQUFhLGFBdkJ1QjtDQXdCcEMsa0JBQWMsY0F4QnNCO0NBeUJwQyxrQkFBYyxjQXpCc0I7Q0EwQnBDLGlCQUFhLGFBMUJ1QjtDQTJCcEMsZ0JBQVksWUEzQndCO0NBNEJwQyxpQkFBYSxhQTVCdUI7Q0E2QnBDLGVBQVcsV0E3QnlCO0NBOEJwQyxhQUFTLFNBOUIyQjtDQStCcEMsY0FBVSxVQS9CMEI7Q0FnQ3BDLGNBQVUsVUFoQzBCO0NBaUNwQyxtQkFBZSxlQWpDcUI7Q0FrQ3BDLGdCQUFZLFlBbEN3QjtDQW1DcEMsaUJBQWEsYUFuQ3VCO0NBb0NwQyxrQkFBYyxjQXBDc0I7Q0FxQ3BDLGFBQVM7Q0FyQzJCLEdBQXRDO0NBd0NBbFgsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0I2a0UsaUNBQWxCLEdBQXNELENBQ3BELFFBRG9ELEVBRXBELFFBRm9ELENBQXREO0NBS0FuWCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjhrRSxxQkFBbEIsR0FBMEM7Q0FDeEMsYUFBUztDQUQrQixHQUExQzs7Q0FJQXBYLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCK2tFLG1CQUFsQixHQUF3QyxVQUFVbG9FLElBQVYsRUFBZ0I7Q0FDdEQsUUFBSW1vRSxvQkFBb0IsR0FBRyxLQUFLSCxpQ0FBTCxDQUF1QzE3RCxHQUF2QyxDQUEyQyxVQUFVODdELElBQVYsRUFBZ0I7Q0FDcEYsYUFBT0EsSUFBSSxDQUFDdG1FLElBQUwsQ0FBVTlCLElBQVYsQ0FBUDtDQUNELEtBRjBCLENBQTNCOztDQUlBLFFBQUltb0Usb0JBQW9CLENBQUMzN0QsSUFBckIsQ0FBMEI0RyxPQUExQixDQUFKLEVBQXdDO0NBQ3RDLGFBQU9wVCxJQUFQO0NBQ0QsS0FGRCxNQUVPO0NBQ0wsYUFBTyxLQUFLaW9FLHFCQUFMLENBQTJCam9FLElBQTNCLEtBQW9DdW1FLFNBQVMsQ0FBQ3ZtRSxJQUFELENBQXBEO0NBQ0Q7Q0FDRixHQVZEOztDQVlBNndELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCKzNELFlBQWxCLEdBQWlDLFVBQVVsN0QsSUFBVixFQUFnQmhFLEtBQWhCLEVBQXVCO0NBQ3RELFFBQUlnRSxJQUFJLEtBQUssT0FBVCxJQUFvQnltRSxRQUFRLENBQUN6cUUsS0FBRCxDQUFoQyxFQUF5QztDQUN2QyxVQUFJcXNFLE1BQU0sR0FBR3JCLFNBQVMsQ0FBQ3ZQLEtBQVYsQ0FBZ0J6N0QsS0FBaEIsQ0FBYjs7Q0FFQSxXQUFLLElBQUk4QyxHQUFULElBQWdCdXBFLE1BQWhCLEVBQXdCO0NBQ3RCLGFBQUsvK0QsS0FBTCxDQUFXKzlELFdBQVgsQ0FBdUJ2b0UsR0FBdkIsRUFBNEJ1cEUsTUFBTSxDQUFDdnBFLEdBQUQsQ0FBbEM7Q0FDRDtDQUNGLEtBTkQsTUFNTztDQUNMLFdBQUtpM0QsS0FBTCxDQUFXLEtBQUttUyxtQkFBTCxDQUF5QmxvRSxJQUF6QixDQUFYLElBQTZDaEUsS0FBN0M7Q0FDRDtDQUNGLEdBVkQ7O0NBWUE2MEQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0J3M0QsWUFBbEIsR0FBaUMsVUFBVTM2RCxJQUFWLEVBQWdCO0NBQy9DLFdBQU8sS0FBSysxRCxLQUFMLENBQVcsS0FBS21TLG1CQUFMLENBQXlCbG9FLElBQXpCLENBQVgsQ0FBUDtDQUNELEdBRkQ7O0NBSUE2d0QsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0J5MUQsZ0JBQWxCLEdBQXFDLFVBQVU1NEQsSUFBVixFQUFnQjtDQUNuRCxRQUFJaEUsS0FBSyxHQUFHLEtBQUsyK0QsWUFBTCxDQUFrQjM2RCxJQUFsQixDQUFaOztDQUVBLFFBQUksQ0FBQzBtRSxXQUFXLENBQUMxcUUsS0FBRCxDQUFoQixFQUF5QjtDQUN2QixhQUFPO0NBQ0xBLFFBQUFBLEtBQUssRUFBRUEsS0FERjtDQUVMNjhELFFBQUFBLFNBQVMsRUFBRTtDQUZOLE9BQVA7Q0FJRDtDQUNGLEdBVEQ7O0NBV0FoSSxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQm1sRSxlQUFsQixHQUFvQyxVQUFVdG9FLElBQVYsRUFBZ0I7Q0FDbEQsV0FBTyxLQUFLKzFELEtBQUwsQ0FBVyxLQUFLbVMsbUJBQUwsQ0FBeUJsb0UsSUFBekIsQ0FBWCxDQUFQO0NBQ0QsR0FGRDs7Q0FJQTZ3RCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQm9sRSxlQUFsQixHQUFvQyxVQUFVdm9FLElBQVYsRUFBZ0I7Q0FDbEQsV0FBTyxLQUFLK25FLGlCQUFMLENBQXVCL25FLElBQXZCLEtBQWdDQSxJQUF2QztDQUNELEdBRkQ7O0NBSUE2d0QsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0J3eUIsZ0JBQWxCLEdBQXFDLFVBQVUzMUIsSUFBVixFQUFnQnJCLEVBQWhCLEVBQW9CO0NBQ3ZELFFBQUk2cEUsSUFBSSxHQUFHLEtBQUtELGVBQUwsQ0FBcUJ2b0UsSUFBckIsQ0FBWDtDQUNBLFNBQUtrbkUsY0FBTCxDQUFvQnNCLElBQXBCLElBQTRCLEtBQUt0QixjQUFMLENBQW9Cc0IsSUFBcEIsS0FBNkIsRUFBekQ7Q0FDQSxTQUFLdEIsY0FBTCxDQUFvQnNCLElBQXBCLEVBQTBCdHBFLElBQTFCLENBQStCUCxFQUEvQjtDQUNELEdBSkQ7O0NBTUFreUQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JzbEUsbUJBQWxCLEdBQXdDLFVBQVV6b0UsSUFBVixFQUFnQnJCLEVBQWhCLEVBQW9CO0NBQzFELFFBQUkrcEUsU0FBUyxHQUFHLEtBQUt4QixjQUFMLENBQW9CLEtBQUtxQixlQUFMLENBQXFCdm9FLElBQXJCLENBQXBCLENBQWhCOztDQUVBLFFBQUkwb0UsU0FBSixFQUFlO0NBQ2IsVUFBSWpyRSxLQUFLLEdBQUdpckUsU0FBUyxDQUFDcGpFLE9BQVYsQ0FBa0IzRyxFQUFsQixDQUFaOztDQUVBLFVBQUlsQixLQUFLLEtBQUssQ0FBQyxDQUFmLEVBQWtCO0NBQ2hCaXJFLFFBQUFBLFNBQVMsQ0FBQ3ZyRCxNQUFWLENBQWlCMWYsS0FBakIsRUFBd0IsQ0FBeEI7Q0FDRDtDQUNGO0NBQ0YsR0FWRDs7Q0FZQW96RCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQnFHLFdBQWxCLEdBQWdDLFVBQVVyRSxFQUFWLEVBQWM7Q0FDNUMsUUFBSUEsRUFBRSxZQUFZMHJELE9BQWxCLEVBQTJCO0NBQ3pCMXJELE1BQUFBLEVBQUUsQ0FBQ2szRCxVQUFILEdBQWdCLElBQWhCO0NBQ0Q7O0NBRUQsU0FBS3ZCLFVBQUwsQ0FBZ0I1N0QsSUFBaEIsQ0FBcUJpRyxFQUFyQjtDQUNBLFdBQU9BLEVBQVA7Q0FDRCxHQVBEOztDQVNBMHJELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCd2xFLFlBQWxCLEdBQWlDLFVBQVV4akUsRUFBVixFQUFjeWpFLE1BQWQsRUFBc0I7Q0FDckQsUUFBSWxrRSxLQUFLLEdBQUcsS0FBS28yRCxVQUFMLENBQWdCeDFELE9BQWhCLENBQXdCc2pFLE1BQXhCLENBQVo7Q0FDQXpqRSxJQUFBQSxFQUFFLENBQUNrM0QsVUFBSCxHQUFnQixJQUFoQjs7Q0FFQSxRQUFJMzNELEtBQUssS0FBSyxDQUFDLENBQWYsRUFBa0I7Q0FDaEIsV0FBS28yRCxVQUFMLENBQWdCMzlDLE1BQWhCLENBQXVCelksS0FBdkIsRUFBOEIsQ0FBOUIsRUFBaUNTLEVBQWpDO0NBQ0QsS0FGRCxNQUVPO0NBQ0wsV0FBSzIxRCxVQUFMLENBQWdCNTdELElBQWhCLENBQXFCaUcsRUFBckI7Q0FDRDs7Q0FFRCxXQUFPQSxFQUFQO0NBQ0QsR0FYRDs7Q0FhQTByRCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjB5QixXQUFsQixHQUFnQyxVQUFVc3NDLEtBQVYsRUFBaUI7Q0FDL0MsUUFBSWw4RCxNQUFNLEdBQUcsS0FBSzYwRCxVQUFMLENBQWdCeDFELE9BQWhCLENBQXdCNjhELEtBQXhCLENBQWI7Q0FDQSxTQUFLckgsVUFBTCxDQUFnQjM5QyxNQUFoQixDQUF1QmxYLE1BQXZCLEVBQStCLENBQS9CO0NBQ0QsR0FIRDs7Q0FLQTRxRCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjBsRSxhQUFsQixHQUFrQyxZQUFZO0NBQzVDLFdBQU8sS0FBSzVCLGdCQUFMLENBQXNCdDhELEtBQXRCLENBQTRCLElBQTVCLEVBQWtDM04sU0FBbEMsRUFBNkMsQ0FBN0MsS0FBbUQsSUFBMUQ7Q0FDRCxHQUZEOztDQUlBNnpELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCOGpFLGdCQUFsQixHQUFxQyxVQUFVOUIsUUFBVixFQUFvQjtDQUN2RCxRQUFJLENBQUNBLFFBQUwsRUFBZTtDQUNiLFlBQU0sSUFBSTN5RCxLQUFKLENBQVUsc0JBQVYsQ0FBTjtDQUNEOztDQUVELFdBQU95MEQsZ0JBQWdCLENBQUM5QixRQUFELEVBQVcsSUFBWCxDQUF2QjtDQUNELEdBTkQ7O0NBUUF0VSxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQms0RCxvQkFBbEIsR0FBeUMsVUFBVXZDLFFBQVYsRUFBb0I7Q0FDM0QsUUFBSWdRLFFBQVEsR0FBRyxLQUFLQSxRQUFwQjs7Q0FFQSxRQUFJQSxRQUFRLENBQUM3ckUsTUFBVCxLQUFvQixDQUF4QixFQUEyQjtDQUN6QixhQUFPLEVBQVA7Q0FDRCxLQUZELE1BRU87Q0FDTCxVQUFJNmhFLE9BQUo7O0NBRUEsVUFBSWhHLFFBQVEsS0FBSyxHQUFqQixFQUFzQjtDQUNwQmdHLFFBQUFBLE9BQU8sR0FBR2dLLFFBQVEsQ0FBQ3Y4RCxNQUFULENBQWdCLFVBQVVwSCxFQUFWLEVBQWM7Q0FDdEMsaUJBQU9BLEVBQUUsQ0FBQzJ6RCxRQUFILEtBQWdCQSxRQUF2QjtDQUNELFNBRlMsQ0FBVjtDQUdELE9BSkQsTUFJTztDQUNMZ0csUUFBQUEsT0FBTyxHQUFHZ0ssUUFBVjtDQUNEOztDQUVELFVBQUlDLFlBQVksR0FBR0QsUUFBUSxDQUFDeDhELEdBQVQsQ0FBYSxVQUFVbkgsRUFBVixFQUFjO0NBQzVDLGVBQU9BLEVBQUUsQ0FBQ2syRCxvQkFBSCxDQUF3QnZDLFFBQXhCLENBQVA7Q0FDRCxPQUZrQixDQUFuQjtDQUlBLGFBQU9nRyxPQUFPLENBQUNuNUQsTUFBUixDQUFlZ0YsS0FBZixDQUFxQm0wRCxPQUFyQixFQUE4QmlLLFlBQTlCLENBQVA7Q0FDRDtDQUNGLEdBdEJEOztDQXdCQWxZLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCMmlFLGNBQWxCLEdBQW1DLFVBQVV0bUUsRUFBVixFQUFjO0NBQy9DLFFBQUlzcEUsUUFBUSxHQUFHLEtBQUtBLFFBQXBCOztDQUVBLFFBQUlBLFFBQVEsQ0FBQzdyRSxNQUFULEtBQW9CLENBQXhCLEVBQTJCO0NBQ3pCLGFBQU8sSUFBUDtDQUNELEtBRkQsTUFFTztDQUNMLFVBQUlRLEtBQUssR0FBR3FyRSxRQUFRLENBQUN2OEQsTUFBVCxDQUFnQixVQUFVcEgsRUFBVixFQUFjO0NBQ3hDLGVBQU9BLEVBQUUsQ0FBQ3cxRCxZQUFILENBQWdCLElBQWhCLE1BQTBCbjdELEVBQWpDO0NBQ0QsT0FGVyxFQUVULENBRlMsQ0FBWjs7Q0FJQSxVQUFJL0IsS0FBSixFQUFXO0NBQ1QsZUFBT0EsS0FBUDtDQUNELE9BRkQsTUFFTztDQUNMLFlBQUlzckUsWUFBWSxHQUFHRCxRQUFRLENBQUN4OEQsR0FBVCxDQUFhLFVBQVVuSCxFQUFWLEVBQWM7Q0FDNUMsaUJBQU9BLEVBQUUsQ0FBQzJnRSxjQUFILENBQWtCdG1FLEVBQWxCLENBQVA7Q0FDRCxTQUZrQixDQUFuQjtDQUlBLGVBQU91cEUsWUFBWSxDQUFDeDhELE1BQWIsQ0FBb0IsVUFBVTlPLEtBQVYsRUFBaUI7Q0FDMUMsaUJBQU9BLEtBQUssS0FBSyxJQUFqQjtDQUNELFNBRk0sRUFFSixDQUZJLEtBRUUsSUFGVDtDQUdEO0NBQ0Y7Q0FDRixHQXRCRDs7Q0F3QkFvekQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0I2bEUscUJBQWxCLEdBQTBDLFlBQVk7Q0FDcEQsUUFBSSxDQUFDLEtBQUs1QixTQUFWLEVBQXFCO0NBQ25CLGFBQU83cUUsU0FBUDtDQUNEOztDQUVELFdBQU8sS0FBSzZxRSxTQUFMLENBQWU0QixxQkFBZixFQUFQO0NBQ0QsR0FORDs7Q0FRQW5ZLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCOGxFLFNBQWxCLEdBQThCLFVBQVVDLElBQVYsRUFBZ0I7Q0FDNUM7Q0FDQSxRQUFJQSxJQUFJLEtBQUszc0UsU0FBYixFQUF3QjtDQUN0QjJzRSxNQUFBQSxJQUFJLEdBQUcsSUFBUDtDQUNEOztDQUNELFFBQUkvakUsRUFBRSxHQUFHLElBQUkwckQsT0FBSixDQUFZLEtBQUtpSSxRQUFqQixFQUEyQixLQUFLdUQsVUFBaEMsQ0FBVCxDQUw0Qzs7Q0FPNUMsUUFBSSxLQUFLckIsUUFBVCxFQUFtQjtDQUNqQjcxRCxNQUFBQSxFQUFFLENBQUM2MUQsUUFBSCxHQUFjLEtBQUtBLFFBQW5CO0NBQ0Q7O0NBRUQsUUFBSWpvRCxDQUFKLENBWDRDOztDQWM1QyxTQUFLQSxDQUFMLElBQVUsS0FBS2dqRCxLQUFmLEVBQXNCO0NBQ3BCLFVBQUksS0FBS0EsS0FBTCxDQUFXejJELGNBQVgsQ0FBMEJ5VCxDQUExQixLQUFnQ0EsQ0FBQyxLQUFLLEtBQXRDLElBQStDQSxDQUFDLEtBQUssT0FBekQsRUFBa0U7Q0FDaEU1TixRQUFBQSxFQUFFLENBQUM0d0QsS0FBSCxDQUFTaGpELENBQVQsSUFBYyxLQUFLZ2pELEtBQUwsQ0FBV2hqRCxDQUFYLENBQWQ7Q0FDRDtDQUNGLEtBbEIyQzs7O0NBb0I1QyxTQUFLQSxDQUFMLElBQVUsS0FBS3pKLEtBQWYsRUFBc0I7Q0FDcEIsVUFBSSxLQUFLQSxLQUFMLENBQVdoSyxjQUFYLENBQTBCeVQsQ0FBMUIsS0FBZ0MsQ0FDbEMsYUFEa0MsRUFFbEMsYUFGa0MsRUFHbEMsa0JBSGtDLEVBSWxDLGdCQUprQyxFQUtsQ3pOLE9BTGtDLENBSzFCeU4sQ0FMMEIsTUFLbkIsQ0FBQyxDQUxsQixFQUtxQjtDQUNuQjVOLFFBQUFBLEVBQUUsQ0FBQ21FLEtBQUgsQ0FBU3lKLENBQVQsSUFBYyxLQUFLekosS0FBTCxDQUFXeUosQ0FBWCxDQUFkO0NBQ0Q7Q0FDRjs7Q0FDRCxRQUFJbTJELElBQUosRUFBVTtDQUNSL2pFLE1BQUFBLEVBQUUsQ0FBQzIxRCxVQUFILEdBQWdCLEtBQUtBLFVBQUwsQ0FBZ0J4dUQsR0FBaEIsQ0FBb0IsVUFBVTY4RCxPQUFWLEVBQW1CO0NBQ3JELFlBQUksQ0FBQ0EsT0FBTyxDQUFDbk8sUUFBYixFQUF1QjtDQUNyQjtDQUNBLGlCQUFPK0wsT0FBSyxDQUFDcUMsWUFBTixDQUFtQkQsT0FBbkIsQ0FBUDtDQUNELFNBSm9EOzs7Q0FNckRBLFFBQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDRixTQUFSLENBQWtCLElBQWxCLENBQVYsQ0FOcUQ7O0NBUXJELFlBQUlFLE9BQU8sWUFBWXRZLE9BQXZCLEVBQWdDO0NBQzlCc1ksVUFBQUEsT0FBTyxDQUFDOU0sVUFBUixHQUFxQmwzRCxFQUFyQjtDQUNEOztDQUNELGVBQU9na0UsT0FBUDtDQUNELE9BWmUsQ0FBaEI7Q0FhRDs7Q0FDRCxXQUFPaGtFLEVBQVA7Q0FDRCxHQTlDRDs7Q0FnREEwckQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JrbUUsT0FBbEIsR0FBNEIsVUFBVTNrRSxLQUFWLEVBQWlCO0NBQzNDQSxJQUFBQSxLQUFLLEdBQUdBLEtBQUssSUFBSSxDQUFqQjtDQUNBLFFBQUlxeEQsS0FBSyxHQUFHMWpDLE1BQU0sQ0FBQyxFQUFELEVBQUssS0FBSzBqQyxLQUFWLENBQWxCO0NBQ0FBLElBQUFBLEtBQUssQ0FBQ3pzRCxLQUFOLEdBQWMrb0IsTUFBTSxDQUFDLEVBQUQsRUFBSzBqQyxLQUFLLENBQUN6c0QsS0FBWCxDQUFwQjtDQUVBLFFBQUlnZ0UsZUFBZSxHQUFHLElBQXRCOztDQUVBLGFBQVNDLFNBQVQsR0FBc0I7Q0FDcEIsYUFBTyxjQUFjN2tFLEtBQXJCO0NBQ0Q7O0NBRUQsUUFBSWdpRSxXQUFXLENBQUMzUSxLQUFLLENBQUNqM0QsR0FBUCxDQUFmLEVBQTRCO0NBQzFCaTNELE1BQUFBLEtBQUssQ0FBQ2ozRCxHQUFOLEdBQVl5cUUsU0FBUyxFQUFyQjtDQUNEOztDQUVELFdBQU94VCxLQUFLLENBQUN6c0QsS0FBTixDQUFZKzlELFdBQW5CO0NBQ0EsV0FBT3RSLEtBQUssQ0FBQ3pzRCxLQUFOLENBQVlnK0QsV0FBbkI7Q0FDQSxXQUFPdlIsS0FBSyxDQUFDenNELEtBQU4sQ0FBWWkrRCxnQkFBbkI7Q0FDQSxXQUFPeFIsS0FBSyxDQUFDenNELEtBQU4sQ0FBWWsrRCxjQUFuQjtDQUVBbjFDLElBQUFBLE1BQU0sQ0FBQzBqQyxLQUFELEVBQVFwZixXQUFTLENBQUMsS0FBS3V3QixjQUFOLEVBQXNCLFVBQVV3QixTQUFWLEVBQXFCO0NBQ2hFLGFBQU8sVUFBVWMsY0FBVixFQUEwQjtDQUMvQixZQUFJdDBDLEtBQUo7O0NBRUEsWUFBSXMwQyxjQUFKLEVBQW9CO0NBQ2xCdDBDLFVBQUFBLEtBQUssR0FBR3MwQyxjQUFjLENBQUNDLFdBQXZCO0NBQ0F2MEMsVUFBQUEsS0FBSyxDQUFDczBDLGNBQU4sR0FBdUJBLGNBQXZCO0NBQ0Q7O0NBRUQ3eUIsUUFBQUEsV0FBUyxDQUFDK3hCLFNBQUQsRUFBWSxVQUFVenpDLFFBQVYsRUFBb0I7Q0FDdkNBLFVBQUFBLFFBQVEsQ0FBQ3Q1QixJQUFULENBQWMydEUsZUFBZCxFQUErQnAwQyxLQUEvQjtDQUNELFNBRlEsQ0FBVDtDQUdELE9BWEQ7Q0FZRCxLQWJzQixDQUFqQixDQUFOO0NBZUEsV0FBTzZ4QyxPQUFLLENBQUNwbUUsYUFBTixDQUFvQixLQUFLbTRELFFBQXpCLEVBQW1DL0MsS0FBbkMsRUFBMEMsS0FBS2hELElBQUwsSUFBYSxLQUFLK1YsUUFBTCxDQUFjeDhELEdBQWQsQ0FBa0IsVUFBVW5ILEVBQVYsRUFBY0ssQ0FBZCxFQUFpQjtDQUMvRixVQUFJTCxFQUFFLFlBQVkwckQsT0FBbEIsRUFBMkI7Q0FDekIsZUFBTzFyRCxFQUFFLENBQUNra0UsT0FBSCxDQUFXN2pFLENBQVgsQ0FBUDtDQUNELE9BRkQsTUFFTztDQUNMLGVBQU9MLEVBQVA7Q0FDRDtDQUNGLEtBTjZELENBQXZELENBQVA7Q0FPRCxHQTFDRDs7Q0E0Q0EwckQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0J5NEQsdUJBQWxCLEdBQTRDLFVBQVU4TixLQUFWLEVBQWlCO0NBQzNELGFBQVNDLG1CQUFULENBQThCbk8sS0FBOUIsRUFBcUNvTyxPQUFyQyxFQUE4Q0MsT0FBOUMsRUFBdUQ7Q0FDckQsYUFBT3JPLEtBQUssQ0FBQ25oRCxNQUFOLENBQWEsVUFBVTlaLE1BQVYsRUFBa0JvMkIsSUFBbEIsRUFBd0I7Q0FDMUMsWUFBSXAyQixNQUFNLEtBQUssS0FBZixFQUFzQjtDQUNwQixpQkFBT0EsTUFBUDtDQUNELFNBRkQsTUFFTyxJQUFJbzJCLElBQUksS0FBS2l6QyxPQUFiLEVBQXNCO0NBQzNCLGlCQUFPQSxPQUFQO0NBQ0QsU0FGTSxNQUVBLElBQUlqekMsSUFBSSxLQUFLa3pDLE9BQWIsRUFBc0I7Q0FDM0IsaUJBQU9BLE9BQVA7Q0FDRCxTQUZNLE1BRUEsSUFBSWx6QyxJQUFJLENBQUNta0MsVUFBVCxFQUFxQjtDQUMxQixpQkFBTzZPLG1CQUFtQixDQUFDaHpDLElBQUksQ0FBQ21rQyxVQUFOLEVBQWtCOE8sT0FBbEIsRUFBMkJDLE9BQTNCLENBQTFCO0NBQ0QsU0FGTSxNQUVBO0NBQ0wsaUJBQU8sS0FBUDtDQUNEO0NBQ0YsT0FaTSxFQVlKLEtBWkksQ0FBUDtDQWFEOztDQUVELGFBQVNDLFVBQVQsQ0FBcUI1bEUsTUFBckIsRUFBNkIrQixNQUE3QixFQUFxQztDQUNuQyxhQUFPQSxNQUFNLENBQUNvMkQsVUFBZCxFQUEwQjtDQUN4QnAyRCxRQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ28yRCxVQUFoQjs7Q0FDQSxZQUFJcDJELE1BQU0sS0FBSy9CLE1BQWYsRUFBdUI7Q0FDckIsaUJBQU8sSUFBUDtDQUNEO0NBQ0Y7O0NBQ0QsYUFBTyxLQUFQO0NBQ0Q7O0NBRUQsYUFBUzZsRSxjQUFULENBQXlCaHdELElBQXpCLEVBQStCQyxLQUEvQixFQUFzQztDQUNwQyxhQUFPOHZELFVBQVUsQ0FBQy92RCxJQUFELEVBQU9DLEtBQVAsQ0FBVixHQUNINjJDLE9BQU8sQ0FBQ2lYLDhCQUFSLEdBQXlDalgsT0FBTyxDQUFDK1csMkJBRDlDLEdBRUhrQyxVQUFVLENBQUM5dkQsS0FBRCxFQUFRRCxJQUFSLENBQVYsR0FDRTgyQyxPQUFPLENBQUNnWCwwQkFBUixHQUFxQ2hYLE9BQU8sQ0FBQzhXLDJCQUQvQyxHQUVFLEtBSk47Q0FLRDs7Q0FFRCxhQUFTcUMsV0FBVCxDQUFzQnJ6QyxJQUF0QixFQUE0QjtDQUMxQixhQUFPQSxJQUFJLENBQUMwbEMsVUFBWixFQUF3QjtDQUN0QjFsQyxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQzBsQyxVQUFaO0NBQ0Q7O0NBQ0QsYUFBTzFsQyxJQUFQO0NBQ0Q7O0NBRUQsUUFBSSxTQUFTK3lDLEtBQWIsRUFBb0I7Q0FDbEIsYUFBTyxDQUFQO0NBQ0Q7O0NBRUQsUUFBSU8sYUFBYSxHQUFHRCxXQUFXLENBQUMsSUFBRCxDQUEvQjtDQUNBLFFBQUlFLFNBQVMsR0FBR0YsV0FBVyxDQUFDTixLQUFELENBQTNCOztDQUVBLFFBQUlPLGFBQWEsS0FBS0MsU0FBdEIsRUFBaUM7Q0FDL0IsYUFBT3JaLE9BQU8sQ0FBQzZXLDhCQUFmO0NBQ0Q7O0NBRUQsUUFBSW5uRSxNQUFNLEdBQUd3cEUsY0FBYyxDQUFDLElBQUQsRUFBT0wsS0FBUCxDQUEzQjs7Q0FDQSxRQUFJbnBFLE1BQUosRUFBWTtDQUNWLGFBQU9BLE1BQVA7Q0FDRDs7Q0FFRCxRQUFJcWtCLEtBQUssR0FBRytrRCxtQkFBbUIsQ0FBQyxDQUFDTSxhQUFELENBQUQsRUFBa0IsSUFBbEIsRUFBd0JQLEtBQXhCLENBQS9CO0NBQ0EsV0FBTzlrRCxLQUFLLEtBQUssSUFBVixHQUNIaXNDLE9BQU8sQ0FBQytXLDJCQURMLEdBRUhoakQsS0FBSyxLQUFLOGtELEtBQVYsR0FDRTdZLE9BQU8sQ0FBQzhXLDJCQURWLEdBRUU5VyxPQUFPLENBQUM2Vyw4QkFKZDtDQUtELEdBaEVEOztDQWtFQXRzRSxFQUFBQSxNQUFNLENBQUM0TSxnQkFBUCxDQUF3QjZvRCxPQUFPLENBQUMxdEQsU0FBaEMsRUFBMkM7Q0FDekNnbkUsSUFBQUEsV0FBVyxFQUFFO0NBQ1g3dUUsTUFBQUEsR0FBRyxFQUFFLFlBQVk7Q0FDZixZQUFJOHVFLFFBQVEsR0FBRyxLQUFLL04sVUFBTCxDQUFnQnlNLFFBQS9CO0NBQ0EsWUFBSXVCLEVBQUUsR0FBR0QsUUFBUSxDQUFDOWtFLE9BQVQsQ0FBaUIsSUFBakIsQ0FBVDtDQUNBLGVBQU84a0UsUUFBUSxDQUFDQyxFQUFFLEdBQUcsQ0FBTixDQUFmO0NBQ0Q7Q0FMVSxLQUQ0QjtDQVF6Q0MsSUFBQUEsZUFBZSxFQUFFO0NBQ2ZodkUsTUFBQUEsR0FBRyxFQUFFLFlBQVk7Q0FDZixZQUFJOHVFLFFBQVEsR0FBRyxLQUFLL04sVUFBTCxDQUFnQnlNLFFBQS9CO0NBQ0EsWUFBSXVCLEVBQUUsR0FBR0QsUUFBUSxDQUFDOWtFLE9BQVQsQ0FBaUIsSUFBakIsQ0FBVDtDQUNBLGVBQU84a0UsUUFBUSxDQUFDQyxFQUFFLEdBQUcsQ0FBTixDQUFmO0NBQ0Q7Q0FMYyxLQVJ3QjtDQWV6Q0UsSUFBQUEsU0FBUyxFQUFFO0NBQ1RqdkUsTUFBQUEsR0FBRyxFQUFFLFlBQVk7Q0FDZixlQUFPLEtBQUt5M0QsSUFBWjtDQUNELE9BSFE7Q0FJVDF3RCxNQUFBQSxHQUFHLEVBQUUsVUFBVTB3RCxJQUFWLEVBQWdCO0NBQ25CLGFBQUtBLElBQUwsR0FBWUEsSUFBWjtDQUNEO0NBTlEsS0FmOEI7Q0F1QnpDeVgsSUFBQUEsV0FBVyxFQUFFO0NBQ1hsdkUsTUFBQUEsR0FBRyxFQUFFLFlBQVk7Q0FDZixlQUFPLEtBQUt5M0QsSUFBWjtDQUNELE9BSFU7Q0FJWDF3RCxNQUFBQSxHQUFHLEVBQUUsVUFBVTB3RCxJQUFWLEVBQWdCO0NBQ25CLGFBQUtBLElBQUwsR0FBWUEsSUFBWjtDQUNEO0NBTlUsS0F2QjRCO0NBK0J6QytWLElBQUFBLFFBQVEsRUFBRTtDQUNSeHRFLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0NBQ2Y7Q0FDQTtDQUNBLGVBQU8sS0FBS3cvRCxVQUFMLENBQWdCdnVELE1BQWhCLENBQXVCLFVBQVVwSCxFQUFWLEVBQWM7Q0FDMUMsY0FBSSxDQUFDQSxFQUFFLENBQUM2MUQsUUFBUixFQUFrQjtDQUNoQjtDQUNBLG1CQUFPLElBQVA7Q0FDRCxXQUp5Qzs7O0NBTzFDLGlCQUFPNzFELEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBQXZCO0NBQ0QsU0FSTSxDQUFQO0NBU0Q7Q0FiTztDQS9CK0IsR0FBM0MsRUF6WmtCO0NBMGNsQjs7Q0FDQSxNQUFJeVAsZ0JBQWdCLEdBQUcsQ0FDckIsY0FEcUIsRUFFckIsY0FGcUIsRUFHckIsa0JBSHFCLEVBSXJCLGlCQUpxQixFQUtyQixzQkFMcUIsRUFNckIsZ0JBTnFCLENBQXZCO0NBU0FBLEVBQUFBLGdCQUFnQixDQUFDcCtELE9BQWpCLENBQXlCLFVBQVVyTSxJQUFWLEVBQWdCO0NBQ3ZDLFFBQUlyQixFQUFFLEdBQUdreUQsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JuRCxJQUFsQixDQUFUOztDQUNBNndELElBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCbkQsSUFBSSxHQUFHLElBQXpCLElBQWlDLFlBQVk7Q0FDM0MsYUFBT3JCLEVBQUUsQ0FBQ2dNLEtBQUgsQ0FBUyxJQUFULEVBQWVyRCxLQUFLLENBQUNuRSxTQUFOLENBQWdCL0csS0FBaEIsQ0FBc0JULElBQXRCLENBQTJCcUIsU0FBM0IsRUFBc0MsQ0FBdEMsQ0FBZixDQUFQO0NBQ0QsS0FGRDtDQUdELEdBTEQ7Q0FPQSxTQUFPNnpELE9BQVA7Q0FDRDs7S0FFRG4yRCxRQUFBLEdBQWlCcWIsU0FBakI7O0NDeGVBLFNBQVNuYixRQUFULEdBQW1CO0NBQ2pCLE1BQUk4dkUsTUFBTSxHQUFHO0NBQ1hDLElBQUFBLGdCQUFnQixFQUFFLFVBQVVoMEMsSUFBVixFQUFnQjtDQUNoQyxhQUFPO0NBQ0w0d0MsUUFBQUEsZ0JBQWdCLEVBQUU1d0MsSUFBSSxDQUFDcnRCLEtBQUwsQ0FBV2crRDtDQUR4QixPQUFQO0NBR0Q7Q0FMVSxHQUFiO0NBUUEsU0FBT29ELE1BQVA7Q0FDRDs7S0FFRGh3RSxPQUFBLEdBQWlCRSxRQUFqQjs7Ozs7Ozs7OztDQ0ZBLElBQUlnd0UsT0FBTyxHQUFHenZFLFlBQWQ7OztDQUlBLElBQUkwdkUsV0FBVyxHQUFHLEVBQWxCOztDQUUyQztDQUN6Q3p2RSxFQUFBQSxNQUFNLENBQUM0M0IsTUFBUCxDQUFjNjNDLFdBQWQ7Q0FDRDs7Q0FFRCxJQUFJQyxjQUFjLEdBQUcsU0FBU0EsY0FBVCxDQUF3QkMsTUFBeEIsRUFBZ0MsRUFBckQ7O0NBRTJDO0NBQ3pDRCxFQUFBQSxjQUFjLEdBQUcsU0FBU0EsY0FBVCxDQUF3QkMsTUFBeEIsRUFBZ0M7Q0FDL0MsUUFBSUEsTUFBTSxLQUFLeHVFLFNBQWYsRUFBMEI7Q0FDeEIsWUFBTSxJQUFJaVcsS0FBSixDQUFVLDhDQUFWLENBQU47Q0FDRDtDQUNGLEdBSkQ7Q0FLRDs7Q0FFRCxTQUFTdzRELFVBQVQsQ0FBb0JqNUQsU0FBcEIsRUFBK0JnNUQsTUFBL0IsRUFBdUNscUUsQ0FBdkMsRUFBMEM0SixDQUExQyxFQUE2Q0MsQ0FBN0MsRUFBZ0R1Z0UsQ0FBaEQsRUFBbURsNUMsQ0FBbkQsRUFBc0Qxd0IsQ0FBdEQsRUFBeUQ7Q0FDdkR5cEUsRUFBQUEsY0FBYyxDQUFDQyxNQUFELENBQWQ7O0NBRUEsTUFBSSxDQUFDaDVELFNBQUwsRUFBZ0I7Q0FDZCxRQUFJOVcsS0FBSjs7Q0FDQSxRQUFJOHZFLE1BQU0sS0FBS3h1RSxTQUFmLEVBQTBCO0NBQ3hCdEIsTUFBQUEsS0FBSyxHQUFHLElBQUl1WCxLQUFKLENBQVUsdUVBQXVFLDZEQUFqRixDQUFSO0NBQ0QsS0FGRCxNQUVPO0NBQ0wsVUFBSWxELElBQUksR0FBRyxDQUFDek8sQ0FBRCxFQUFJNEosQ0FBSixFQUFPQyxDQUFQLEVBQVV1Z0UsQ0FBVixFQUFhbDVDLENBQWIsRUFBZ0Ixd0IsQ0FBaEIsQ0FBWDtDQUNBLFVBQUk2cEUsUUFBUSxHQUFHLENBQWY7Q0FDQWp3RSxNQUFBQSxLQUFLLEdBQUcsSUFBSXVYLEtBQUosQ0FBVXU0RCxNQUFNLENBQUM5bUUsT0FBUCxDQUFlLEtBQWYsRUFBc0IsWUFBWTtDQUNsRCxlQUFPcUwsSUFBSSxDQUFDNDdELFFBQVEsRUFBVCxDQUFYO0NBQ0QsT0FGaUIsQ0FBVixDQUFSO0NBR0Fqd0UsTUFBQUEsS0FBSyxDQUFDK0UsSUFBTixHQUFhLHFCQUFiO0NBQ0Q7O0NBRUQvRSxJQUFBQSxLQUFLLENBQUNrd0UsV0FBTixHQUFvQixDQUFwQixDQWJjOztDQWNkLFVBQU1sd0UsS0FBTjtDQUNEO0NBQ0Y7O0NBRUQsSUFBSW13RSxPQUFPLEdBQUcsWUFBVSxFQUF4Qjs7Q0FFMkM7Q0FDekMsTUFBSXZZLFlBQVksR0FBRyxTQUFTQSxZQUFULENBQXNCa1ksTUFBdEIsRUFBOEI7Q0FDL0MsU0FBSyxJQUFJTSxJQUFJLEdBQUdydUUsU0FBUyxDQUFDQyxNQUFyQixFQUE2QnFTLElBQUksR0FBR2hJLEtBQUssQ0FBQytqRSxJQUFJLEdBQUcsQ0FBUCxHQUFXQSxJQUFJLEdBQUcsQ0FBbEIsR0FBc0IsQ0FBdkIsQ0FBekMsRUFBb0VDLElBQUksR0FBRyxDQUFoRixFQUFtRkEsSUFBSSxHQUFHRCxJQUExRixFQUFnR0MsSUFBSSxFQUFwRyxFQUF3RztDQUN0R2g4RCxNQUFBQSxJQUFJLENBQUNnOEQsSUFBSSxHQUFHLENBQVIsQ0FBSixHQUFpQnR1RSxTQUFTLENBQUNzdUUsSUFBRCxDQUExQjtDQUNEOztDQUVELFFBQUlKLFFBQVEsR0FBRyxDQUFmO0NBQ0EsUUFBSTM0RCxPQUFPLEdBQUcsY0FBY3c0RCxNQUFNLENBQUM5bUUsT0FBUCxDQUFlLEtBQWYsRUFBc0IsWUFBWTtDQUM1RCxhQUFPcUwsSUFBSSxDQUFDNDdELFFBQVEsRUFBVCxDQUFYO0NBQ0QsS0FGMkIsQ0FBNUI7O0NBR0EsUUFBSSxPQUFPdHpDLE9BQVAsS0FBbUIsV0FBdkIsRUFBb0M7Q0FDbENBLE1BQUFBLE9BQU8sQ0FBQzM4QixLQUFSLENBQWNzWCxPQUFkO0NBQ0Q7O0NBQ0QsUUFBSTtDQUNGO0NBQ0E7Q0FDQTtDQUNBLFlBQU0sSUFBSUMsS0FBSixDQUFVRCxPQUFWLENBQU47Q0FDRCxLQUxELENBS0UsT0FBT29LLENBQVAsRUFBVTtDQUNiLEdBbEJEOztDQW9CQXl1RCxFQUFBQSxPQUFPLEdBQUcsU0FBU0EsT0FBVCxDQUFpQnI1RCxTQUFqQixFQUE0Qmc1RCxNQUE1QixFQUFvQztDQUM1QyxRQUFJQSxNQUFNLEtBQUt4dUUsU0FBZixFQUEwQjtDQUN4QixZQUFNLElBQUlpVyxLQUFKLENBQVUsOERBQThELGtCQUF4RSxDQUFOO0NBQ0Q7O0NBRUQsUUFBSXU0RCxNQUFNLENBQUN6bEUsT0FBUCxDQUFlLDZCQUFmLE1BQWtELENBQXRELEVBQXlEO0NBQ3ZELGFBRHVEO0NBRXhEOztDQUVELFFBQUksQ0FBQ3lNLFNBQUwsRUFBZ0I7Q0FDZCxXQUFLLElBQUl3NUQsS0FBSyxHQUFHdnVFLFNBQVMsQ0FBQ0MsTUFBdEIsRUFBOEJxUyxJQUFJLEdBQUdoSSxLQUFLLENBQUNpa0UsS0FBSyxHQUFHLENBQVIsR0FBWUEsS0FBSyxHQUFHLENBQXBCLEdBQXdCLENBQXpCLENBQTFDLEVBQXVFQyxLQUFLLEdBQUcsQ0FBcEYsRUFBdUZBLEtBQUssR0FBR0QsS0FBL0YsRUFBc0dDLEtBQUssRUFBM0csRUFBK0c7Q0FDN0dsOEQsUUFBQUEsSUFBSSxDQUFDazhELEtBQUssR0FBRyxDQUFULENBQUosR0FBa0J4dUUsU0FBUyxDQUFDd3VFLEtBQUQsQ0FBM0I7Q0FDRDs7Q0FFRDNZLE1BQUFBLFlBQVksQ0FBQ2xvRCxLQUFiLENBQW1CcE8sU0FBbkIsRUFBOEIsQ0FBQ3d1RSxNQUFELEVBQVNwbEUsTUFBVCxDQUFnQjJKLElBQWhCLENBQTlCO0NBQ0Q7Q0FDRixHQWhCRDtDQWlCRDs7O0NBSUQsSUFBSW04RCxVQUFVLEdBQUcsUUFBakI7Q0FHQTs7Q0FDQSxTQUFTQyxRQUFULENBQWtCL3NFLEVBQWxCLEVBQXNCO0NBQ3BCLFNBQU9BLEVBQVA7Q0FDRDs7Q0FFRCxJQUFJZ3RFLDBCQUFKOztDQUMyQztDQUN6Q0EsRUFBQUEsMEJBQTBCLEdBQUc7Q0FDM0JuRCxJQUFBQSxJQUFJLEVBQUUsTUFEcUI7Q0FFM0JsTixJQUFBQSxPQUFPLEVBQUUsU0FGa0I7Q0FHM0JzUSxJQUFBQSxZQUFZLEVBQUU7Q0FIYSxHQUE3QjtDQUtEOztDQUlELFNBQVNDLFNBQVQsQ0FBaUJDLGNBQWpCLEVBQWlDcFksY0FBakMsRUFBaURxWSxvQkFBakQsRUFBdUU7Q0FDckU7Q0FDRjtDQUNBO0NBRUUsTUFBSUMsY0FBYyxHQUFHLEVBQXJCO0NBRUE7Q0FDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBQ0UsTUFBSUMsbUJBQW1CLEdBQUc7Q0FDeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLE1BQU0sRUFBRSxhQVBnQjs7Q0FTeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsT0FBTyxFQUFFLGFBaEJlOztDQWtCeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLFNBQVMsRUFBRSxhQXhCYTs7Q0EwQnhCO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNJQyxJQUFBQSxZQUFZLEVBQUUsYUFoQ1U7O0NBa0N4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsaUJBQWlCLEVBQUUsYUF4Q0s7Q0EwQ3hCOztDQUVBO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLGVBQWUsRUFBRSxvQkF0RE87O0NBd0R4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLGVBQWUsRUFBRSxvQkF0RU87O0NBd0V4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNJQyxJQUFBQSxlQUFlLEVBQUUsb0JBNUVPOztDQThFeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLE1BQU0sRUFBRSxhQTdGZ0I7Q0ErRnhCOztDQUVBO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLGtCQUFrQixFQUFFLGFBeEdJOztDQTBHeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsaUJBQWlCLEVBQUUsYUFwSEs7O0NBc0h4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNJQyxJQUFBQSx5QkFBeUIsRUFBRSxhQXpJSDs7Q0EySXhCO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEscUJBQXFCLEVBQUUsYUEvSkM7O0NBaUt4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsbUJBQW1CLEVBQUUsYUFoTEc7O0NBa0x4QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsa0JBQWtCLEVBQUUsYUE5TEk7O0NBZ014QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLG9CQUFvQixFQUFFLGFBM01FOztDQTZNeEI7Q0FDSjtDQUNBO0NBQ0E7Q0FDQTtDQUNJQyxJQUFBQSx5QkFBeUIsRUFBRSxhQWxOSDs7Q0FvTnhCO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDSUMsSUFBQUEsZ0NBQWdDLEVBQUUsYUF6TlY7O0NBMk54QjtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLDBCQUEwQixFQUFFLGFBaE9KO0NBa094Qjs7Q0FFQTtDQUNKO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNJQyxJQUFBQSxlQUFlLEVBQUU7Q0E5T08sR0FBMUI7Q0FpUEE7Q0FDRjtDQUNBOztDQUNFLE1BQUlDLHlCQUF5QixHQUFHO0NBQzlCO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0lDLElBQUFBLHdCQUF3QixFQUFFO0NBWEksR0FBaEM7Q0FjQTtDQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBQ0UsTUFBSUMsa0JBQWtCLEdBQUc7Q0FDdkJDLElBQUFBLFdBQVcsRUFBRSxVQUFTN3lELFdBQVQsRUFBc0I2eUQsV0FBdEIsRUFBbUM7Q0FDOUM3eUQsTUFBQUEsV0FBVyxDQUFDNnlELFdBQVosR0FBMEJBLFdBQTFCO0NBQ0QsS0FIc0I7Q0FJdkJ2QixJQUFBQSxNQUFNLEVBQUUsVUFBU3R4RCxXQUFULEVBQXNCc3hELE1BQXRCLEVBQThCO0NBQ3BDLFVBQUlBLE1BQUosRUFBWTtDQUNWLGFBQUssSUFBSTFtRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHMG1FLE1BQU0sQ0FBQ2p2RSxNQUEzQixFQUFtQ3VJLENBQUMsRUFBcEMsRUFBd0M7Q0FDdENrb0UsVUFBQUEsb0JBQW9CLENBQUM5eUQsV0FBRCxFQUFjc3hELE1BQU0sQ0FBQzFtRSxDQUFELENBQXBCLENBQXBCO0NBQ0Q7Q0FDRjtDQUNGLEtBVnNCO0NBV3ZCOG1FLElBQUFBLGlCQUFpQixFQUFFLFVBQVMxeEQsV0FBVCxFQUFzQjB4RCxpQkFBdEIsRUFBeUM7Q0FDMUQsTUFBMkM7Q0FDekNxQixRQUFBQSxlQUFlLENBQUMveUQsV0FBRCxFQUFjMHhELGlCQUFkLEVBQWlDLGNBQWpDLENBQWY7Q0FDRDs7Q0FDRDF4RCxNQUFBQSxXQUFXLENBQUMweEQsaUJBQVosR0FBZ0MxQixPQUFPLENBQ3JDLEVBRHFDLEVBRXJDaHdELFdBQVcsQ0FBQzB4RCxpQkFGeUIsRUFHckNBLGlCQUhxQyxDQUF2QztDQUtELEtBcEJzQjtDQXFCdkJELElBQUFBLFlBQVksRUFBRSxVQUFTenhELFdBQVQsRUFBc0J5eEQsWUFBdEIsRUFBb0M7Q0FDaEQsTUFBMkM7Q0FDekNzQixRQUFBQSxlQUFlLENBQUMveUQsV0FBRCxFQUFjeXhELFlBQWQsRUFBNEIsU0FBNUIsQ0FBZjtDQUNEOztDQUNEenhELE1BQUFBLFdBQVcsQ0FBQ3l4RCxZQUFaLEdBQTJCekIsT0FBTyxDQUNoQyxFQURnQyxFQUVoQ2h3RCxXQUFXLENBQUN5eEQsWUFGb0IsRUFHaENBLFlBSGdDLENBQWxDO0NBS0QsS0E5QnNCOztDQStCdkI7Q0FDSjtDQUNBO0NBQ0E7Q0FDSUUsSUFBQUEsZUFBZSxFQUFFLFVBQVMzeEQsV0FBVCxFQUFzQjJ4RCxlQUF0QixFQUF1QztDQUN0RCxVQUFJM3hELFdBQVcsQ0FBQzJ4RCxlQUFoQixFQUFpQztDQUMvQjN4RCxRQUFBQSxXQUFXLENBQUMyeEQsZUFBWixHQUE4QnFCLDBCQUEwQixDQUN0RGh6RCxXQUFXLENBQUMyeEQsZUFEMEMsRUFFdERBLGVBRnNELENBQXhEO0NBSUQsT0FMRCxNQUtPO0NBQ0wzeEQsUUFBQUEsV0FBVyxDQUFDMnhELGVBQVosR0FBOEJBLGVBQTlCO0NBQ0Q7Q0FDRixLQTVDc0I7Q0E2Q3ZCSCxJQUFBQSxTQUFTLEVBQUUsVUFBU3h4RCxXQUFULEVBQXNCd3hELFNBQXRCLEVBQWlDO0NBQzFDLE1BQTJDO0NBQ3pDdUIsUUFBQUEsZUFBZSxDQUFDL3lELFdBQUQsRUFBY3d4RCxTQUFkLEVBQXlCLE1BQXpCLENBQWY7Q0FDRDs7Q0FDRHh4RCxNQUFBQSxXQUFXLENBQUN3eEQsU0FBWixHQUF3QnhCLE9BQU8sQ0FBQyxFQUFELEVBQUtod0QsV0FBVyxDQUFDd3hELFNBQWpCLEVBQTRCQSxTQUE1QixDQUEvQjtDQUNELEtBbERzQjtDQW1EdkJELElBQUFBLE9BQU8sRUFBRSxVQUFTdnhELFdBQVQsRUFBc0J1eEQsT0FBdEIsRUFBK0I7Q0FDdEMwQixNQUFBQSwwQkFBMEIsQ0FBQ2p6RCxXQUFELEVBQWN1eEQsT0FBZCxDQUExQjtDQUNELEtBckRzQjtDQXNEdkIyQixJQUFBQSxRQUFRLEVBQUUsWUFBVztDQXRERSxHQUF6Qjs7Q0F5REEsV0FBU0gsZUFBVCxDQUF5Qi95RCxXQUF6QixFQUFzQ216RCxPQUF0QyxFQUErQ3A1QyxRQUEvQyxFQUF5RDtDQUN2RCxTQUFLLElBQUlxaEMsUUFBVCxJQUFxQitYLE9BQXJCLEVBQThCO0NBQzVCLFVBQUlBLE9BQU8sQ0FBQ3p1RSxjQUFSLENBQXVCMDJELFFBQXZCLENBQUosRUFBc0M7Q0FDcEM7Q0FDQTtDQUNBLFFBQTJDO0NBQ3pDb1YsVUFBQUEsT0FBTyxDQUNMLE9BQU8yQyxPQUFPLENBQUMvWCxRQUFELENBQWQsS0FBNkIsVUFEeEIsRUFFTCxzRUFDRSxrQkFIRyxFQUlMcDdDLFdBQVcsQ0FBQzZ5RCxXQUFaLElBQTJCLFlBSnRCLEVBS0w5QiwwQkFBMEIsQ0FBQ2gzQyxRQUFELENBTHJCLEVBTUxxaEMsUUFOSyxDQUFQO0NBUUQ7Q0FDRjtDQUNGO0NBQ0Y7O0NBRUQsV0FBU2dZLHNCQUFULENBQWdDQyxnQkFBaEMsRUFBa0RqdUUsSUFBbEQsRUFBd0Q7Q0FDdEQsUUFBSWt1RSxVQUFVLEdBQUdqQyxtQkFBbUIsQ0FBQzNzRSxjQUFwQixDQUFtQ1UsSUFBbkMsSUFDYmlzRSxtQkFBbUIsQ0FBQ2pzRSxJQUFELENBRE4sR0FFYixJQUZKLENBRHNEOztDQU10RCxRQUFJbXVFLGVBQWUsQ0FBQzd1RSxjQUFoQixDQUErQlUsSUFBL0IsQ0FBSixFQUEwQztDQUN4Q2dyRSxNQUFBQSxVQUFVLENBQ1JrRCxVQUFVLEtBQUssZUFEUCxFQUVSLHlEQUNFLG9FQURGLEdBRUUsb0NBSk0sRUFLUmx1RSxJQUxRLENBQVY7Q0FPRCxLQWRxRDs7O0NBaUJ0RCxRQUFJaXVFLGdCQUFKLEVBQXNCO0NBQ3BCakQsTUFBQUEsVUFBVSxDQUNSa0QsVUFBVSxLQUFLLGFBQWYsSUFBZ0NBLFVBQVUsS0FBSyxvQkFEdkMsRUFFUix1REFDRSxrRUFERixHQUVFLGFBSk0sRUFLUmx1RSxJQUxRLENBQVY7Q0FPRDtDQUNGO0NBRUQ7Q0FDRjtDQUNBO0NBQ0E7OztDQUNFLFdBQVMwdEUsb0JBQVQsQ0FBOEI5eUQsV0FBOUIsRUFBMkN3ekQsSUFBM0MsRUFBaUQ7Q0FDL0MsUUFBSSxDQUFDQSxJQUFMLEVBQVc7Q0FDVCxNQUEyQztDQUN6QyxZQUFJQyxVQUFVLEdBQUcsT0FBT0QsSUFBeEI7Q0FDQSxZQUFJRSxZQUFZLEdBQUdELFVBQVUsS0FBSyxRQUFmLElBQTJCRCxJQUFJLEtBQUssSUFBdkQ7O0NBRUEsUUFBMkM7Q0FDekNoRCxVQUFBQSxPQUFPLENBQ0xrRCxZQURLLEVBRUwsa0VBQ0UsZ0VBREYsR0FFRSxpREFGRixHQUdFLDZCQUxHLEVBTUwxekQsV0FBVyxDQUFDNnlELFdBQVosSUFBMkIsWUFOdEIsRUFPTFcsSUFBSSxLQUFLLElBQVQsR0FBZ0IsSUFBaEIsR0FBdUJDLFVBUGxCLENBQVA7Q0FTRDtDQUNGOztDQUVEO0NBQ0Q7O0NBRURyRCxJQUFBQSxVQUFVLENBQ1IsT0FBT29ELElBQVAsS0FBZ0IsVUFEUixFQUVSLHNDQUNFLG9FQURGLEdBRUUsaUJBSk0sQ0FBVjs7Q0FNQXBELElBQUFBLFVBQVUsQ0FDUixDQUFDdFgsY0FBYyxDQUFDMGEsSUFBRCxDQURQLEVBRVIsc0NBQ0UsaUVBSE0sQ0FBVjs7Q0FNQSxRQUFJLzlELEtBQUssR0FBR3VLLFdBQVcsQ0FBQ3pYLFNBQXhCO0NBQ0EsUUFBSW9yRSxhQUFhLEdBQUdsK0QsS0FBSyxDQUFDbStELG9CQUExQixDQW5DK0M7Q0FzQy9DO0NBQ0E7O0NBQ0EsUUFBSUosSUFBSSxDQUFDOXVFLGNBQUwsQ0FBb0Jtc0UsVUFBcEIsQ0FBSixFQUFxQztDQUNuQytCLE1BQUFBLGtCQUFrQixDQUFDdEIsTUFBbkIsQ0FBMEJ0eEQsV0FBMUIsRUFBdUN3ekQsSUFBSSxDQUFDbEMsTUFBNUM7Q0FDRDs7Q0FFRCxTQUFLLElBQUlsc0UsSUFBVCxJQUFpQm91RSxJQUFqQixFQUF1QjtDQUNyQixVQUFJLENBQUNBLElBQUksQ0FBQzl1RSxjQUFMLENBQW9CVSxJQUFwQixDQUFMLEVBQWdDO0NBQzlCO0NBQ0Q7O0NBRUQsVUFBSUEsSUFBSSxLQUFLeXJFLFVBQWIsRUFBeUI7Q0FDdkI7Q0FDQTtDQUNEOztDQUVELFVBQUl6bkQsUUFBUSxHQUFHb3FELElBQUksQ0FBQ3B1RSxJQUFELENBQW5CO0NBQ0EsVUFBSWl1RSxnQkFBZ0IsR0FBRzU5RCxLQUFLLENBQUMvUSxjQUFOLENBQXFCVSxJQUFyQixDQUF2QjtDQUNBZ3VFLE1BQUFBLHNCQUFzQixDQUFDQyxnQkFBRCxFQUFtQmp1RSxJQUFuQixDQUF0Qjs7Q0FFQSxVQUFJd3RFLGtCQUFrQixDQUFDbHVFLGNBQW5CLENBQWtDVSxJQUFsQyxDQUFKLEVBQTZDO0NBQzNDd3RFLFFBQUFBLGtCQUFrQixDQUFDeHRFLElBQUQsQ0FBbEIsQ0FBeUI0YSxXQUF6QixFQUFzQ29KLFFBQXRDO0NBQ0QsT0FGRCxNQUVPO0NBQ0w7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxZQUFJeXFELGtCQUFrQixHQUFHeEMsbUJBQW1CLENBQUMzc0UsY0FBcEIsQ0FBbUNVLElBQW5DLENBQXpCO0NBQ0EsWUFBSXM4QixVQUFVLEdBQUcsT0FBT3RZLFFBQVAsS0FBb0IsVUFBckM7Q0FDQSxZQUFJMHFELGNBQWMsR0FDaEJweUMsVUFBVSxJQUNWLENBQUNteUMsa0JBREQsSUFFQSxDQUFDUixnQkFGRCxJQUdBRyxJQUFJLENBQUNOLFFBQUwsS0FBa0IsS0FKcEI7O0NBTUEsWUFBSVksY0FBSixFQUFvQjtDQUNsQkgsVUFBQUEsYUFBYSxDQUFDcnZFLElBQWQsQ0FBbUJjLElBQW5CLEVBQXlCZ2tCLFFBQXpCO0NBQ0EzVCxVQUFBQSxLQUFLLENBQUNyUSxJQUFELENBQUwsR0FBY2drQixRQUFkO0NBQ0QsU0FIRCxNQUdPO0NBQ0wsY0FBSWlxRCxnQkFBSixFQUFzQjtDQUNwQixnQkFBSUMsVUFBVSxHQUFHakMsbUJBQW1CLENBQUNqc0UsSUFBRCxDQUFwQyxDQURvQjs7Q0FJcEJnckUsWUFBQUEsVUFBVSxDQUNSeUQsa0JBQWtCLEtBQ2ZQLFVBQVUsS0FBSyxvQkFBZixJQUNDQSxVQUFVLEtBQUssYUFGRCxDQURWLEVBSVIsc0RBQ0UsaUNBTE0sRUFNUkEsVUFOUSxFQU9SbHVFLElBUFEsQ0FBVixDQUpvQjtDQWVwQjs7O0NBQ0EsZ0JBQUlrdUUsVUFBVSxLQUFLLG9CQUFuQixFQUF5QztDQUN2Qzc5RCxjQUFBQSxLQUFLLENBQUNyUSxJQUFELENBQUwsR0FBYzR0RSwwQkFBMEIsQ0FBQ3Y5RCxLQUFLLENBQUNyUSxJQUFELENBQU4sRUFBY2drQixRQUFkLENBQXhDO0NBQ0QsYUFGRCxNQUVPLElBQUlrcUQsVUFBVSxLQUFLLGFBQW5CLEVBQWtDO0NBQ3ZDNzlELGNBQUFBLEtBQUssQ0FBQ3JRLElBQUQsQ0FBTCxHQUFjMnVFLHFCQUFxQixDQUFDdCtELEtBQUssQ0FBQ3JRLElBQUQsQ0FBTixFQUFjZ2tCLFFBQWQsQ0FBbkM7Q0FDRDtDQUNGLFdBckJELE1BcUJPO0NBQ0wzVCxZQUFBQSxLQUFLLENBQUNyUSxJQUFELENBQUwsR0FBY2drQixRQUFkOztDQUNBLFlBQTJDO0NBQ3pDO0NBQ0E7Q0FDQSxrQkFBSSxPQUFPQSxRQUFQLEtBQW9CLFVBQXBCLElBQWtDb3FELElBQUksQ0FBQ1gsV0FBM0MsRUFBd0Q7Q0FDdERwOUQsZ0JBQUFBLEtBQUssQ0FBQ3JRLElBQUQsQ0FBTCxDQUFZeXRFLFdBQVosR0FBMEJXLElBQUksQ0FBQ1gsV0FBTCxHQUFtQixHQUFuQixHQUF5Qnp0RSxJQUFuRDtDQUNEO0NBQ0Y7Q0FDRjtDQUNGO0NBQ0Y7Q0FDRjtDQUNGOztDQUVELFdBQVM2dEUsMEJBQVQsQ0FBb0NqekQsV0FBcEMsRUFBaUR1eEQsT0FBakQsRUFBMEQ7Q0FDeEQsUUFBSSxDQUFDQSxPQUFMLEVBQWM7Q0FDWjtDQUNEOztDQUVELFNBQUssSUFBSW5zRSxJQUFULElBQWlCbXNFLE9BQWpCLEVBQTBCO0NBQ3hCLFVBQUlub0QsUUFBUSxHQUFHbW9ELE9BQU8sQ0FBQ25zRSxJQUFELENBQXRCOztDQUNBLFVBQUksQ0FBQ21zRSxPQUFPLENBQUM3c0UsY0FBUixDQUF1QlUsSUFBdkIsQ0FBTCxFQUFtQztDQUNqQztDQUNEOztDQUVELFVBQUk0dUUsVUFBVSxJQUFHNXVFLElBQUksSUFBSXd0RSxrQkFBWCxDQUFkOztDQUNBeEMsTUFBQUEsVUFBVSxDQUNSLENBQUM0RCxVQURPLEVBRVIseURBQ0UscUVBREYsR0FFRSxzRUFGRixHQUdFLGNBTE0sRUFNUjV1RSxJQU5RLENBQVY7O0NBU0EsVUFBSWl1RSxnQkFBZ0IsSUFBR2p1RSxJQUFJLElBQUk0YSxXQUFYLENBQXBCOztDQUNBLFVBQUlxekQsZ0JBQUosRUFBc0I7Q0FDcEIsWUFBSUMsVUFBVSxHQUFHWix5QkFBeUIsQ0FBQ2h1RSxjQUExQixDQUF5Q1UsSUFBekMsSUFDYnN0RSx5QkFBeUIsQ0FBQ3R0RSxJQUFELENBRFosR0FFYixJQUZKOztDQUlBZ3JFLFFBQUFBLFVBQVUsQ0FDUmtELFVBQVUsS0FBSyxvQkFEUCxFQUVSLDhDQUNFLDhEQURGLEdBRUUsaUJBSk0sRUFLUmx1RSxJQUxRLENBQVY7O0NBUUE0YSxRQUFBQSxXQUFXLENBQUM1YSxJQUFELENBQVgsR0FBb0I0dEUsMEJBQTBCLENBQUNoekQsV0FBVyxDQUFDNWEsSUFBRCxDQUFaLEVBQW9CZ2tCLFFBQXBCLENBQTlDO0NBRUE7Q0FDRDs7Q0FFRHBKLE1BQUFBLFdBQVcsQ0FBQzVhLElBQUQsQ0FBWCxHQUFvQmdrQixRQUFwQjtDQUNEO0NBQ0Y7Q0FFRDtDQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7O0NBQ0UsV0FBUzZxRCw0QkFBVCxDQUFzQzk2QixHQUF0QyxFQUEyQys2QixHQUEzQyxFQUFnRDtDQUM5QzlELElBQUFBLFVBQVUsQ0FDUmozQixHQUFHLElBQUkrNkIsR0FBUCxJQUFjLE9BQU8vNkIsR0FBUCxLQUFlLFFBQTdCLElBQXlDLE9BQU8rNkIsR0FBUCxLQUFlLFFBRGhELEVBRVIsMkRBRlEsQ0FBVjs7Q0FLQSxTQUFLLElBQUlod0UsR0FBVCxJQUFnQmd3RSxHQUFoQixFQUFxQjtDQUNuQixVQUFJQSxHQUFHLENBQUN4dkUsY0FBSixDQUFtQlIsR0FBbkIsQ0FBSixFQUE2QjtDQUMzQmtzRSxRQUFBQSxVQUFVLENBQ1JqM0IsR0FBRyxDQUFDajFDLEdBQUQsQ0FBSCxLQUFhdkMsU0FETCxFQUVSLHFDQUNFLG9FQURGLEdBRUUsa0VBRkYsR0FHRSxtRUFIRixHQUlFLHFCQU5NLEVBT1J1QyxHQVBRLENBQVY7O0NBU0FpMUMsUUFBQUEsR0FBRyxDQUFDajFDLEdBQUQsQ0FBSCxHQUFXZ3dFLEdBQUcsQ0FBQ2h3RSxHQUFELENBQWQ7Q0FDRDtDQUNGOztDQUNELFdBQU9pMUMsR0FBUDtDQUNEO0NBRUQ7Q0FDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7O0NBQ0UsV0FBUzY1QiwwQkFBVCxDQUFvQzc1QixHQUFwQyxFQUF5Qys2QixHQUF6QyxFQUE4QztDQUM1QyxXQUFPLFNBQVNDLFlBQVQsR0FBd0I7Q0FDN0IsVUFBSWx1RSxDQUFDLEdBQUdrekMsR0FBRyxDQUFDcHBDLEtBQUosQ0FBVSxJQUFWLEVBQWdCM04sU0FBaEIsQ0FBUjtDQUNBLFVBQUl5TixDQUFDLEdBQUdxa0UsR0FBRyxDQUFDbmtFLEtBQUosQ0FBVSxJQUFWLEVBQWdCM04sU0FBaEIsQ0FBUjs7Q0FDQSxVQUFJNkQsQ0FBQyxJQUFJLElBQVQsRUFBZTtDQUNiLGVBQU80SixDQUFQO0NBQ0QsT0FGRCxNQUVPLElBQUlBLENBQUMsSUFBSSxJQUFULEVBQWU7Q0FDcEIsZUFBTzVKLENBQVA7Q0FDRDs7Q0FDRCxVQUFJNkosQ0FBQyxHQUFHLEVBQVI7Q0FDQW1rRSxNQUFBQSw0QkFBNEIsQ0FBQ25rRSxDQUFELEVBQUk3SixDQUFKLENBQTVCO0NBQ0FndUUsTUFBQUEsNEJBQTRCLENBQUNua0UsQ0FBRCxFQUFJRCxDQUFKLENBQTVCO0NBQ0EsYUFBT0MsQ0FBUDtDQUNELEtBWkQ7Q0FhRDtDQUVEO0NBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7OztDQUNFLFdBQVNpa0UscUJBQVQsQ0FBK0I1NkIsR0FBL0IsRUFBb0MrNkIsR0FBcEMsRUFBeUM7Q0FDdkMsV0FBTyxTQUFTRSxlQUFULEdBQTJCO0NBQ2hDajdCLE1BQUFBLEdBQUcsQ0FBQ3BwQyxLQUFKLENBQVUsSUFBVixFQUFnQjNOLFNBQWhCO0NBQ0E4eEUsTUFBQUEsR0FBRyxDQUFDbmtFLEtBQUosQ0FBVSxJQUFWLEVBQWdCM04sU0FBaEI7Q0FDRCxLQUhEO0NBSUQ7Q0FFRDtDQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7O0NBQ0UsV0FBU2l5RSxrQkFBVCxDQUE0QjdILFNBQTVCLEVBQXVDcnFFLE1BQXZDLEVBQStDO0NBQzdDLFFBQUlteUUsV0FBVyxHQUFHbnlFLE1BQU0sQ0FBQzBPLElBQVAsQ0FBWTI3RCxTQUFaLENBQWxCOztDQUNBLElBQTJDO0NBQ3pDOEgsTUFBQUEsV0FBVyxDQUFDQyxtQkFBWixHQUFrQy9ILFNBQWxDO0NBQ0E4SCxNQUFBQSxXQUFXLENBQUNFLGtCQUFaLEdBQWlDcnlFLE1BQWpDO0NBQ0FteUUsTUFBQUEsV0FBVyxDQUFDRyxxQkFBWixHQUFvQyxJQUFwQztDQUNBLFVBQUluYyxhQUFhLEdBQUdrVSxTQUFTLENBQUM3N0QsV0FBVixDQUFzQmtpRSxXQUExQztDQUNBLFVBQUk2QixLQUFLLEdBQUdKLFdBQVcsQ0FBQ3pqRSxJQUF4Qjs7Q0FDQXlqRSxNQUFBQSxXQUFXLENBQUN6akUsSUFBWixHQUFtQixVQUFTOGpFLE9BQVQsRUFBa0I7Q0FDbkMsYUFDRSxJQUFJbEUsSUFBSSxHQUFHcnVFLFNBQVMsQ0FBQ0MsTUFBckIsRUFDRXFTLElBQUksR0FBR2hJLEtBQUssQ0FBQytqRSxJQUFJLEdBQUcsQ0FBUCxHQUFXQSxJQUFJLEdBQUcsQ0FBbEIsR0FBc0IsQ0FBdkIsQ0FEZCxFQUVFQyxJQUFJLEdBQUcsQ0FIWCxFQUlFQSxJQUFJLEdBQUdELElBSlQsRUFLRUMsSUFBSSxFQUxOLEVBTUU7Q0FDQWg4RCxVQUFBQSxJQUFJLENBQUNnOEQsSUFBSSxHQUFHLENBQVIsQ0FBSixHQUFpQnR1RSxTQUFTLENBQUNzdUUsSUFBRCxDQUExQjtDQUNELFNBVGtDO0NBWW5DO0NBQ0E7OztDQUNBLFlBQUlpRSxPQUFPLEtBQUtuSSxTQUFaLElBQXlCbUksT0FBTyxLQUFLLElBQXpDLEVBQStDO0NBQzdDLFVBQTJDO0NBQ3pDbkUsWUFBQUEsT0FBTyxDQUNMLEtBREssRUFFTCw4REFDRSw0QkFIRyxFQUlMbFksYUFKSyxDQUFQO0NBTUQ7Q0FDRixTQVRELE1BU08sSUFBSSxDQUFDNWpELElBQUksQ0FBQ3JTLE1BQVYsRUFBa0I7Q0FDdkIsVUFBMkM7Q0FDekNtdUUsWUFBQUEsT0FBTyxDQUNMLEtBREssRUFFTCxrRUFDRSw4REFERixHQUVFLGlEQUpHLEVBS0xsWSxhQUxLLENBQVA7Q0FPRDs7Q0FDRCxpQkFBT2djLFdBQVA7Q0FDRDs7Q0FDRCxZQUFJTSxhQUFhLEdBQUdGLEtBQUssQ0FBQzNrRSxLQUFOLENBQVl1a0UsV0FBWixFQUF5Qmx5RSxTQUF6QixDQUFwQjs7Q0FDQXd5RSxRQUFBQSxhQUFhLENBQUNMLG1CQUFkLEdBQW9DL0gsU0FBcEM7Q0FDQW9JLFFBQUFBLGFBQWEsQ0FBQ0osa0JBQWQsR0FBbUNyeUUsTUFBbkM7Q0FDQXl5RSxRQUFBQSxhQUFhLENBQUNILHFCQUFkLEdBQXNDLy9ELElBQXRDO0NBQ0EsZUFBT2tnRSxhQUFQO0NBQ0QsT0F4Q0Q7Q0F5Q0Q7O0NBQ0QsV0FBT04sV0FBUDtDQUNEO0NBRUQ7Q0FDRjtDQUNBO0NBQ0E7Q0FDQTs7O0NBQ0UsV0FBU08sbUJBQVQsQ0FBNkJySSxTQUE3QixFQUF3QztDQUN0QyxRQUFJc0ksS0FBSyxHQUFHdEksU0FBUyxDQUFDb0gsb0JBQXRCOztDQUNBLFNBQUssSUFBSWhwRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHa3FFLEtBQUssQ0FBQ3p5RSxNQUExQixFQUFrQ3VJLENBQUMsSUFBSSxDQUF2QyxFQUEwQztDQUN4QyxVQUFJbXFFLFdBQVcsR0FBR0QsS0FBSyxDQUFDbHFFLENBQUQsQ0FBdkI7Q0FDQSxVQUFJekksTUFBTSxHQUFHMnlFLEtBQUssQ0FBQ2xxRSxDQUFDLEdBQUcsQ0FBTCxDQUFsQjtDQUNBNGhFLE1BQUFBLFNBQVMsQ0FBQ3VJLFdBQUQsQ0FBVCxHQUF5QlYsa0JBQWtCLENBQUM3SCxTQUFELEVBQVlycUUsTUFBWixDQUEzQztDQUNEO0NBQ0Y7O0NBRUQsTUFBSTZ5RSxpQkFBaUIsR0FBRztDQUN0QmhELElBQUFBLGlCQUFpQixFQUFFLFlBQVc7Q0FDNUIsV0FBS2lELFdBQUwsR0FBbUIsSUFBbkI7Q0FDRDtDQUhxQixHQUF4QjtDQU1BLE1BQUlDLGtCQUFrQixHQUFHO0NBQ3ZCN0MsSUFBQUEsb0JBQW9CLEVBQUUsWUFBVztDQUMvQixXQUFLNEMsV0FBTCxHQUFtQixLQUFuQjtDQUNEO0NBSHNCLEdBQXpCO0NBTUE7Q0FDRjtDQUNBO0NBQ0E7O0NBQ0UsTUFBSTFCLGVBQWUsR0FBRztDQUNwQjtDQUNKO0NBQ0E7Q0FDQTtDQUNJNEIsSUFBQUEsWUFBWSxFQUFFLFVBQVM1TyxRQUFULEVBQW1CdnFCLFFBQW5CLEVBQTZCO0NBQ3pDLFdBQUtvNUIsT0FBTCxDQUFhQyxtQkFBYixDQUFpQyxJQUFqQyxFQUF1QzlPLFFBQXZDLEVBQWlEdnFCLFFBQWpEO0NBQ0QsS0FQbUI7O0NBU3BCO0NBQ0o7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNJczVCLElBQUFBLFNBQVMsRUFBRSxZQUFXO0NBQ3BCLE1BQTJDO0NBQ3pDOUUsUUFBQUEsT0FBTyxDQUNMLEtBQUsrRSxrQkFEQSxFQUVMLGlFQUNFLGdFQURGLEdBRUUsdUJBSkcsRUFLSixLQUFLNWtFLFdBQUwsSUFBb0IsS0FBS0EsV0FBTCxDQUFpQmtpRSxXQUF0QyxJQUNFLEtBQUt6dEUsSUFEUCxJQUVFLFdBUEcsQ0FBUDtDQVNBLGFBQUttd0Usa0JBQUwsR0FBMEIsSUFBMUI7Q0FDRDs7Q0FDRCxhQUFPLENBQUMsQ0FBQyxLQUFLTixXQUFkO0NBQ0Q7Q0E3Qm1CLEdBQXRCOztDQWdDQSxNQUFJTyxtQkFBbUIsR0FBRyxZQUFXLEVBQXJDOztDQUNBeEYsRUFBQUEsT0FBTyxDQUNMd0YsbUJBQW1CLENBQUNqdEUsU0FEZixFQUVMMm9FLGNBQWMsQ0FBQzNvRSxTQUZWLEVBR0xnckUsZUFISyxDQUFQO0NBTUE7Q0FDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7O0NBQ0UsV0FBU2tDLFdBQVQsQ0FBcUJqQyxJQUFyQixFQUEyQjtDQUN6QjtDQUNBO0NBQ0E7Q0FDQSxRQUFJeHpELFdBQVcsR0FBRzh3RCxRQUFRLENBQUMsVUFBUzNWLEtBQVQsRUFBZ0J1RixPQUFoQixFQUF5QjBVLE9BQXpCLEVBQWtDO0NBQzNEO0NBQ0E7Q0FFQSxNQUEyQztDQUN6QzVFLFFBQUFBLE9BQU8sQ0FDTCxnQkFBZ0J4d0QsV0FEWCxFQUVMLHVFQUNFLHFEQUhHLENBQVA7Q0FLRCxPQVYwRDs7O0NBYTNELFVBQUksS0FBSzR6RCxvQkFBTCxDQUEwQnZ4RSxNQUE5QixFQUFzQztDQUNwQ3d5RSxRQUFBQSxtQkFBbUIsQ0FBQyxJQUFELENBQW5CO0NBQ0Q7O0NBRUQsV0FBSzFaLEtBQUwsR0FBYUEsS0FBYjtDQUNBLFdBQUt1RixPQUFMLEdBQWVBLE9BQWY7Q0FDQSxXQUFLZ1YsSUFBTCxHQUFZekYsV0FBWjtDQUNBLFdBQUttRixPQUFMLEdBQWVBLE9BQU8sSUFBSWpFLG9CQUExQjtDQUVBLFdBQUtycEUsS0FBTCxHQUFhLElBQWIsQ0F0QjJEO0NBeUIzRDs7Q0FFQSxVQUFJNnRFLFlBQVksR0FBRyxLQUFLL0QsZUFBTCxHQUF1QixLQUFLQSxlQUFMLEVBQXZCLEdBQWdELElBQW5FOztDQUNBLE1BQTJDO0NBQ3pDO0NBQ0EsWUFDRStELFlBQVksS0FBS2gwRSxTQUFqQixJQUNBLEtBQUtpd0UsZUFBTCxDQUFxQmdFLGVBRnZCLEVBR0U7Q0FDQTtDQUNBO0NBQ0FELFVBQUFBLFlBQVksR0FBRyxJQUFmO0NBQ0Q7Q0FDRjs7Q0FDRHZGLE1BQUFBLFVBQVUsQ0FDUixPQUFPdUYsWUFBUCxLQUF3QixRQUF4QixJQUFvQyxDQUFDanBFLEtBQUssQ0FBQ0MsT0FBTixDQUFjZ3BFLFlBQWQsQ0FEN0IsRUFFUixxREFGUSxFQUdSMzFELFdBQVcsQ0FBQzZ5RCxXQUFaLElBQTJCLHlCQUhuQixDQUFWOztDQU1BLFdBQUsvcUUsS0FBTCxHQUFhNnRFLFlBQWI7Q0FDRCxLQTlDeUIsQ0FBMUI7Q0ErQ0EzMUQsSUFBQUEsV0FBVyxDQUFDelgsU0FBWixHQUF3QixJQUFJaXRFLG1CQUFKLEVBQXhCO0NBQ0F4MUQsSUFBQUEsV0FBVyxDQUFDelgsU0FBWixDQUFzQm9JLFdBQXRCLEdBQW9DcVAsV0FBcEM7Q0FDQUEsSUFBQUEsV0FBVyxDQUFDelgsU0FBWixDQUFzQnFyRSxvQkFBdEIsR0FBNkMsRUFBN0M7Q0FFQXhDLElBQUFBLGNBQWMsQ0FBQzMvRCxPQUFmLENBQXVCcWhFLG9CQUFvQixDQUFDamlFLElBQXJCLENBQTBCLElBQTFCLEVBQWdDbVAsV0FBaEMsQ0FBdkI7Q0FFQTh5RCxJQUFBQSxvQkFBb0IsQ0FBQzl5RCxXQUFELEVBQWNnMUQsaUJBQWQsQ0FBcEI7Q0FDQWxDLElBQUFBLG9CQUFvQixDQUFDOXlELFdBQUQsRUFBY3d6RCxJQUFkLENBQXBCO0NBQ0FWLElBQUFBLG9CQUFvQixDQUFDOXlELFdBQUQsRUFBY2sxRCxrQkFBZCxDQUFwQixDQTNEeUI7O0NBOER6QixRQUFJbDFELFdBQVcsQ0FBQzJ4RCxlQUFoQixFQUFpQztDQUMvQjN4RCxNQUFBQSxXQUFXLENBQUM2MUQsWUFBWixHQUEyQjcxRCxXQUFXLENBQUMyeEQsZUFBWixFQUEzQjtDQUNEOztDQUVELElBQTJDO0NBQ3pDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsVUFBSTN4RCxXQUFXLENBQUMyeEQsZUFBaEIsRUFBaUM7Q0FDL0IzeEQsUUFBQUEsV0FBVyxDQUFDMnhELGVBQVosQ0FBNEJtRSxvQkFBNUIsR0FBbUQsRUFBbkQ7Q0FDRDs7Q0FDRCxVQUFJOTFELFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0JxcEUsZUFBMUIsRUFBMkM7Q0FDekM1eEQsUUFBQUEsV0FBVyxDQUFDelgsU0FBWixDQUFzQnFwRSxlQUF0QixDQUFzQ2tFLG9CQUF0QyxHQUE2RCxFQUE3RDtDQUNEO0NBQ0Y7O0NBRUQxRixJQUFBQSxVQUFVLENBQ1Jwd0QsV0FBVyxDQUFDelgsU0FBWixDQUFzQnVwRSxNQURkLEVBRVIseUVBRlEsQ0FBVjs7Q0FLQSxJQUEyQztDQUN6Q3RCLE1BQUFBLE9BQU8sQ0FDTCxDQUFDeHdELFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0J3dEUscUJBRGxCLEVBRUwsNEJBQ0UsaUVBREYsR0FFRSw0REFGRixHQUdFLDZCQUxHLEVBTUx2QyxJQUFJLENBQUNYLFdBQUwsSUFBb0IsYUFOZixDQUFQO0NBUUFyQyxNQUFBQSxPQUFPLENBQ0wsQ0FBQ3h3RCxXQUFXLENBQUN6WCxTQUFaLENBQXNCeXRFLHlCQURsQixFQUVMLDRCQUNFLHdFQUhHLEVBSUx4QyxJQUFJLENBQUNYLFdBQUwsSUFBb0IsYUFKZixDQUFQO0NBTUFyQyxNQUFBQSxPQUFPLENBQ0wsQ0FBQ3h3RCxXQUFXLENBQUN6WCxTQUFaLENBQXNCMHRFLGdDQURsQixFQUVMLGdFQUNFLGtEQUhHLEVBSUx6QyxJQUFJLENBQUNYLFdBQUwsSUFBb0IsYUFKZixDQUFQO0NBTUQsS0F6R3dCOzs7Q0E0R3pCLFNBQUssSUFBSXFELFVBQVQsSUFBdUI3RSxtQkFBdkIsRUFBNEM7Q0FDMUMsVUFBSSxDQUFDcnhELFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0IydEUsVUFBdEIsQ0FBTCxFQUF3QztDQUN0Q2wyRCxRQUFBQSxXQUFXLENBQUN6WCxTQUFaLENBQXNCMnRFLFVBQXRCLElBQW9DLElBQXBDO0NBQ0Q7Q0FDRjs7Q0FFRCxXQUFPbDJELFdBQVA7Q0FDRDs7Q0FFRCxTQUFPeTFELFdBQVA7Q0FDRDs7S0FFRDMxRSxXQUFBLEdBQWlCbXhFLFNBQWpCOzs7Ozs7Ozs7O0NDLzlCQSxJQUFJOUUsT0FBSyxHQUFHNXJFLFFBQVEsT0FBRCxDQUFuQjs7Q0FDQSxJQUFJMHdFLFNBQU8sR0FBRzF3RSxXQUFkOztDQUVBLElBQUksT0FBTzRyRSxPQUFQLEtBQWlCLFdBQXJCLEVBQWtDO0NBQ2hDLFFBQU12MEQsS0FBSyxDQUNULHVGQUNFLGlFQUZPLENBQVg7Q0FJRDs7O0NBR0QsSUFBSXU1RCxvQkFBb0IsR0FBRyxJQUFJaEYsT0FBSyxDQUFDZ0ssU0FBVixHQUFzQmYsT0FBakQ7S0FFQXQxRSxrQkFBQSxHQUFpQm14RSxTQUFPLENBQ3RCOUUsT0FBSyxDQUFDZ0ssU0FEZ0IsRUFFdEJoSyxPQUFLLENBQUNyVCxjQUZnQixFQUd0QnFZLG9CQUhzQixDQUF4Qjs7Q0NyQkEsSUFBSWlGLE9BQU8sR0FBRzcxRSxpQkFBZDtDQUVBO0NBQ0E7Q0FDQTtDQUNBOzs7Q0FDQSxJQUFJODFFLGFBQWEsR0FBRztDQUNsQjNFLEVBQUFBLGlCQUFpQixFQUFFLElBREQ7Q0FFbEI0RSxFQUFBQSxXQUFXLEVBQUUsSUFGSztDQUdsQjdFLEVBQUFBLFlBQVksRUFBRSxJQUhJO0NBSWxCb0UsRUFBQUEsWUFBWSxFQUFFLElBSkk7Q0FLbEJoRCxFQUFBQSxXQUFXLEVBQUUsSUFMSztDQU1sQmxCLEVBQUFBLGVBQWUsRUFBRSxJQU5DO0NBT2xCNEUsRUFBQUEsd0JBQXdCLEVBQUUsSUFQUjtDQVFsQjVELEVBQUFBLHdCQUF3QixFQUFFLElBUlI7Q0FTbEJyQixFQUFBQSxNQUFNLEVBQUUsSUFUVTtDQVVsQkUsRUFBQUEsU0FBUyxFQUFFLElBVk87Q0FXbEJ6cEUsRUFBQUEsSUFBSSxFQUFFO0NBWFksQ0FBcEI7Q0FhQSxJQUFJeXVFLGFBQWEsR0FBRztDQUNsQnB4RSxFQUFBQSxJQUFJLEVBQUUsSUFEWTtDQUVsQi9DLEVBQUFBLE1BQU0sRUFBRSxJQUZVO0NBR2xCa0csRUFBQUEsU0FBUyxFQUFFLElBSE87Q0FJbEJrdUUsRUFBQUEsTUFBTSxFQUFFLElBSlU7Q0FLbEJ2cEUsRUFBQUEsTUFBTSxFQUFFLElBTFU7Q0FNbEI5SyxFQUFBQSxTQUFTLEVBQUUsSUFOTztDQU9sQnMwRSxFQUFBQSxLQUFLLEVBQUU7Q0FQVyxDQUFwQjtDQVNBLElBQUlDLG1CQUFtQixHQUFHO0NBQ3hCLGNBQVksSUFEWTtDQUV4QjdFLEVBQUFBLE1BQU0sRUFBRSxJQUZnQjtDQUd4QitELEVBQUFBLFlBQVksRUFBRSxJQUhVO0NBSXhCaEQsRUFBQUEsV0FBVyxFQUFFLElBSlc7Q0FLeEJyQixFQUFBQSxTQUFTLEVBQUU7Q0FMYSxDQUExQjtDQU9BLElBQUlvRixZQUFZLEdBQUc7Q0FDakIsY0FBWSxJQURLO0NBRWpCQyxFQUFBQSxPQUFPLEVBQUUsSUFGUTtDQUdqQmhCLEVBQUFBLFlBQVksRUFBRSxJQUhHO0NBSWpCaEQsRUFBQUEsV0FBVyxFQUFFLElBSkk7Q0FLakJyQixFQUFBQSxTQUFTLEVBQUUsSUFMTTtDQU1qQnpwRSxFQUFBQSxJQUFJLEVBQUU7Q0FOVyxDQUFuQjtDQVFBLElBQUkrdUUsWUFBWSxHQUFHLEVBQW5CO0NBQ0FBLFlBQVksQ0FBQ1YsT0FBTyxDQUFDbGdCLFVBQVQsQ0FBWixHQUFtQ3lnQixtQkFBbkM7Q0FDQUcsWUFBWSxDQUFDVixPQUFPLENBQUMvZixJQUFULENBQVosR0FBNkJ1Z0IsWUFBN0I7O0NBRUEsU0FBU0csVUFBVCxDQUFvQnZLLFNBQXBCLEVBQStCO0NBQzdCO0NBQ0EsTUFBSTRKLE9BQU8sQ0FBQ2pmLE1BQVIsQ0FBZXFWLFNBQWYsQ0FBSixFQUErQjtDQUM3QixXQUFPb0ssWUFBUDtDQUNELEdBSjRCOzs7Q0FPN0IsU0FBT0UsWUFBWSxDQUFDdEssU0FBUyxDQUFDLFVBQUQsQ0FBVixDQUFaLElBQXVDNkosYUFBOUM7Q0FDRDs7Q0FFRCxJQUFJNTFFLGNBQWMsR0FBR0QsTUFBTSxDQUFDQyxjQUE1QjtDQUNBLElBQUl1SyxtQkFBbUIsR0FBR3hLLE1BQU0sQ0FBQ3dLLG1CQUFqQztDQUNBLElBQUlqSSxxQkFBcUIsR0FBR3ZDLE1BQU0sQ0FBQ3VDLHFCQUFuQztDQUNBLElBQUlsQyx3QkFBd0IsR0FBR0wsTUFBTSxDQUFDSyx3QkFBdEM7Q0FDQSxJQUFJdVUsY0FBYyxHQUFHNVUsTUFBTSxDQUFDNFUsY0FBNUI7Q0FDQSxJQUFJNGhFLGVBQWUsR0FBR3gyRSxNQUFNLENBQUMrSCxTQUE3Qjs7Q0FDQSxTQUFTMHVFLHNCQUFULENBQThCQyxlQUE5QixFQUErQ0MsZUFBL0MsRUFBZ0VDLFNBQWhFLEVBQTJFO0NBQ3pFLE1BQUksT0FBT0QsZUFBUCxLQUEyQixRQUEvQixFQUF5QztDQUN2QztDQUNBLFFBQUlILGVBQUosRUFBcUI7Q0FDbkIsVUFBSUssa0JBQWtCLEdBQUdqaUUsY0FBYyxDQUFDK2hFLGVBQUQsQ0FBdkM7O0NBRUEsVUFBSUUsa0JBQWtCLElBQUlBLGtCQUFrQixLQUFLTCxlQUFqRCxFQUFrRTtDQUNoRUMsUUFBQUEsc0JBQW9CLENBQUNDLGVBQUQsRUFBa0JHLGtCQUFsQixFQUFzQ0QsU0FBdEMsQ0FBcEI7Q0FDRDtDQUNGOztDQUVELFFBQUlqd0UsSUFBSSxHQUFHNkQsbUJBQW1CLENBQUNtc0UsZUFBRCxDQUE5Qjs7Q0FFQSxRQUFJcDBFLHFCQUFKLEVBQTJCO0NBQ3pCb0UsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUM0RCxNQUFMLENBQVloSSxxQkFBcUIsQ0FBQ28wRSxlQUFELENBQWpDLENBQVA7Q0FDRDs7Q0FFRCxRQUFJRyxhQUFhLEdBQUdQLFVBQVUsQ0FBQ0csZUFBRCxDQUE5QjtDQUNBLFFBQUlLLGFBQWEsR0FBR1IsVUFBVSxDQUFDSSxlQUFELENBQTlCOztDQUVBLFNBQUssSUFBSXZzRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHekQsSUFBSSxDQUFDOUUsTUFBekIsRUFBaUMsRUFBRXVJLENBQW5DLEVBQXNDO0NBQ3BDLFVBQUkxRyxHQUFHLEdBQUdpRCxJQUFJLENBQUN5RCxDQUFELENBQWQ7O0NBRUEsVUFBSSxDQUFDNHJFLGFBQWEsQ0FBQ3R5RSxHQUFELENBQWQsSUFBdUIsRUFBRWt6RSxTQUFTLElBQUlBLFNBQVMsQ0FBQ2x6RSxHQUFELENBQXhCLENBQXZCLElBQXlELEVBQUVxekUsYUFBYSxJQUFJQSxhQUFhLENBQUNyekUsR0FBRCxDQUFoQyxDQUF6RCxJQUFtRyxFQUFFb3pFLGFBQWEsSUFBSUEsYUFBYSxDQUFDcHpFLEdBQUQsQ0FBaEMsQ0FBdkcsRUFBK0k7Q0FDN0ksWUFBSWpELFVBQVUsR0FBR0osd0JBQXdCLENBQUNzMkUsZUFBRCxFQUFrQmp6RSxHQUFsQixDQUF6Qzs7Q0FFQSxZQUFJO0NBQ0Y7Q0FDQXpELFVBQUFBLGNBQWMsQ0FBQ3kyRSxlQUFELEVBQWtCaHpFLEdBQWxCLEVBQXVCakQsVUFBdkIsQ0FBZDtDQUNELFNBSEQsQ0FHRSxPQUFPazJCLENBQVAsRUFBVTtDQUNiO0NBQ0Y7Q0FDRjs7Q0FFRCxTQUFPKy9DLGVBQVA7Q0FDRDs7S0FFRHAzRSx3QkFBQSxHQUFpQm0zRSxzQkFBakI7O0NDdEdBLElBQUk5SyxLQUFLLEdBQUc1ckUsUUFBUSxPQUFELENBQW5COztDQUNBLElBQUlpM0UsZ0JBQWdCLEdBQUdqM0Usa0JBQXZCOztDQUNBLElBQUl3N0MsU0FBUyxHQUFHeDdDLFdBQWhCOztDQUNBLElBQUkwMkUsb0JBQW9CLEdBQUcxMkUsd0JBQTNCOztDQUVBLFNBQVNrM0Usa0JBQVQsQ0FBNkJ4aEIsT0FBN0IsRUFBc0M7Q0FDcEMsV0FBU3loQixXQUFULENBQXNCQyxnQkFBdEIsRUFBd0M7Q0FDdEMsUUFBSUMsV0FBVyxHQUFHSixnQkFBZ0IsQ0FBQztDQUNqQ3pGLE1BQUFBLGtCQUFrQixFQUFFLFlBQVk7Q0FDOUIsYUFBSzhGLGdCQUFMLEdBQXdCLEVBQXhCO0NBQ0EsYUFBS0MsbUJBQUwsR0FBMkIsQ0FBM0I7Q0FDRCxPQUpnQztDQUtqQ3pGLE1BQUFBLG9CQUFvQixFQUFFLFlBQVk7Q0FDaEMsYUFBSzBGLG9CQUFMO0NBQ0EsYUFBS0MsZUFBTDtDQUNELE9BUmdDO0NBU2pDQyxNQUFBQSxjQUFjLEVBQUUsVUFBVWw4QyxJQUFWLEVBQWdCMzJCLElBQWhCLEVBQXNCOHlFLFdBQXRCLEVBQW1DO0NBQ2pELFlBQUksQ0FBQyxLQUFLTCxnQkFBTCxDQUFzQnp5RSxJQUF0QixDQUFELElBQWdDOHlFLFdBQXBDLEVBQWlEO0NBQy9DLGVBQUtMLGdCQUFMLENBQXNCenlFLElBQXRCLElBQThCLE9BQU8yMkIsSUFBUCxLQUFnQixRQUFoQixHQUEyQkEsSUFBM0IsR0FBa0MsSUFBSWs2QixPQUFKLENBQVlsNkIsSUFBWixDQUFoRTtDQUNBLGVBQUtvOEMsa0JBQUwsR0FBMEJqOUMsVUFBVSxDQUFDLEtBQUtrOUMsV0FBTixDQUFwQztDQUNEOztDQUNELGVBQU8sS0FBS1AsZ0JBQUwsQ0FBc0J6eUUsSUFBdEIsQ0FBUDtDQUNELE9BZmdDO0NBZ0JqQ2d6RSxNQUFBQSxXQUFXLEVBQUUsWUFBWTtDQUN2QixZQUFJQyxVQUFVLEdBQUd0OEIsU0FBUyxDQUFDLEtBQUs4N0IsZ0JBQU4sRUFBd0IsVUFBVXorRCxDQUFWLEVBQWE7Q0FDN0QsaUJBQU9BLENBQUMsQ0FBQ3ExRCxPQUFGLEVBQVA7Q0FDRCxTQUZ5QixDQUExQjtDQUdBLGFBQUs2SixRQUFMLENBQWNELFVBQWQ7Q0FDRCxPQXJCZ0M7Q0FzQmpDRSxNQUFBQSxjQUFjLEVBQUUsVUFBVUMsUUFBVixFQUFvQjtDQUNsQyxhQUFLVixtQkFBTCxHQUEyQmo0RSxJQUFJLENBQUMrSixHQUFMLENBQVN1Z0IsSUFBSSxDQUFDRyxHQUFMLEtBQWFrdUQsUUFBdEIsRUFBZ0MsS0FBS1YsbUJBQXJDLENBQTNCOztDQUNBLFlBQUksQ0FBQyxLQUFLVyx3QkFBVixFQUFvQztDQUNsQyxlQUFLQSx3QkFBTCxHQUFnQ3p4QixXQUFXLENBQUMsWUFBWTtDQUN0RCxnQkFBSTc4QixJQUFJLENBQUNHLEdBQUwsS0FBYSxLQUFLd3RELG1CQUF0QixFQUEyQztDQUN6QyxtQkFBS00sV0FBTDtDQUNELGFBRkQsTUFFTztDQUNMLG1CQUFLTCxvQkFBTDtDQUNEO0NBQ0YsV0FOMkMsQ0FNMUNsbkUsSUFOMEMsQ0FNckMsSUFOcUMsQ0FBRCxFQU03QixFQU42QixDQUEzQztDQU9EO0NBQ0YsT0FqQ2dDO0NBa0NqQ2tuRSxNQUFBQSxvQkFBb0IsRUFBRSxZQUFZO0NBQ2hDLGFBQUtVLHdCQUFMLEdBQWdDQyxhQUFhLENBQUMsS0FBS0Qsd0JBQU4sQ0FBN0M7Q0FDQSxhQUFLWCxtQkFBTCxHQUEyQixDQUEzQjtDQUNELE9BckNnQztDQXNDakNFLE1BQUFBLGVBQWUsRUFBRSxZQUFZO0NBQzNCLGFBQUtHLGtCQUFMLEdBQTBCUSxZQUFZLENBQUMsS0FBS1Isa0JBQU4sQ0FBdEM7Q0FDRCxPQXhDZ0M7Q0F5Q2pDUyxNQUFBQSxrQkFBa0IsRUFBRSxZQUFZO0NBQzlCLGVBQU8sQ0FBQyxDQUFDLEtBQUtILHdCQUFkO0NBQ0QsT0EzQ2dDO0NBNENqQzNHLE1BQUFBLE1BQU0sRUFBRSxZQUFZO0NBQ2xCLFlBQUkzVyxLQUFLLEdBQUczNkQsTUFBTSxDQUFDaTNCLE1BQVAsQ0FBYyxFQUFkLEVBQWtCLEtBQUswakMsS0FBdkIsRUFBOEIsS0FBS3J6RCxLQUFuQyxFQUEwQztDQUNwRG13RSxVQUFBQSxjQUFjLEVBQUUsS0FBS0EsY0FEK0I7Q0FFcERHLFVBQUFBLFdBQVcsRUFBRSxLQUFLQSxXQUZrQztDQUdwREcsVUFBQUEsY0FBYyxFQUFFLEtBQUtBLGNBSCtCO0NBSXBEUixVQUFBQSxvQkFBb0IsRUFBRSxLQUFLQSxvQkFKeUI7Q0FLcERhLFVBQUFBLGtCQUFrQixFQUFFLEtBQUtBO0NBTDJCLFNBQTFDLENBQVo7Q0FPQSxlQUFPek0sS0FBSyxDQUFDcG1FLGFBQU4sQ0FBb0I0eEUsZ0JBQXBCLEVBQXNDeGMsS0FBdEMsQ0FBUDtDQUNEO0NBckRnQyxLQUFELENBQWxDO0NBdURBeWMsSUFBQUEsV0FBVyxDQUFDL0UsV0FBWixHQUEwQixpQkFBaUJnRyxjQUFjLENBQUNsQixnQkFBRCxDQUEvQixHQUFvRCxHQUE5RTtDQUNBVixJQUFBQSxvQkFBb0IsQ0FBQ1csV0FBRCxFQUFjRCxnQkFBZCxDQUFwQjtDQUNBLFdBQU9DLFdBQVA7Q0FDRDs7Q0FFRCxTQUFPRixXQUFQO0NBQ0Q7O0NBRUQsU0FBU21CLGNBQVQsQ0FBeUJsQixnQkFBekIsRUFBMkM7Q0FDekMsU0FBT0EsZ0JBQWdCLENBQUM5RSxXQUFqQixJQUFnQzhFLGdCQUFnQixDQUFDdnlFLElBQWpELElBQXlELFdBQWhFO0NBQ0Q7O0tBRUR0RixZQUFBLEdBQWlCMjNFLGtCQUFqQjs7Q0MxRUEsSUFBSXQ4RCxPQUFPLEdBQUc1YSxRQUFkOztDQUNBLElBQUlQLFFBQU0sR0FBR08sT0FBYjs7Q0FDQSxJQUFJbTNFLFdBQVcsR0FBR24zRSxZQUFsQjs7Q0FFQSxTQUFTMHdFLFNBQVQsR0FBb0I7Q0FDbEIsTUFBSWhiLE9BQU8sR0FBRzk2QyxPQUFPLEVBQXJCO0NBQ0EsTUFBSTIwRCxNQUFNLEdBQUc5dkUsUUFBTSxFQUFuQjtDQUNBLE1BQUk4NEUsWUFBWSxHQUFHO0NBQ2pCN2lCLElBQUFBLE9BQU8sRUFBRUEsT0FEUTtDQUVqQjhpQixJQUFBQSxXQUFXLEVBQUVqSixNQUZJO0NBR2pCNEgsSUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUN6aEIsT0FBRCxDQUhQO0NBSWpCbHdELElBQUFBLGFBQWEsRUFBRSxVQUFVbTRELFFBQVYsRUFBb0I7Q0FDakMsYUFBTyxJQUFJakksT0FBSixDQUFZaUksUUFBWixDQUFQO0NBQ0QsS0FOZ0I7Q0FPakI4YSxJQUFBQSxlQUFlLEVBQUUsVUFBVTkyRSxTQUFWLEVBQXFCZzhELFFBQXJCLEVBQStCO0NBQzlDLGFBQU8sS0FBS240RCxhQUFMLENBQW1CbTRELFFBQW5CLENBQVA7Q0FDRCxLQVRnQjtDQVVqQjhDLElBQUFBLHVCQUF1QixFQUFFLFlBQVk7Q0FDbkM7Q0FDQTtDQUNBLGFBQU8sQ0FBUDtDQUNEO0NBZGdCLEdBQW5CO0NBaUJBL0ssRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0I4M0QsYUFBbEIsR0FBa0N5WSxZQUFsQztDQUNBLFNBQU9BLFlBQVA7Q0FDRDs7S0FFRGg1RSxTQUFBLEdBQWlCbXhFLFNBQWpCOztDQzVCQSxJQUFJQSxPQUFPLEdBQUcxd0UsU0FBZDs7S0FDQVQsWUFBQSxHQUFpQm14RSxPQUFPLEVBQXhCOztDQ0RBLElBQUlnSSxJQUFJLEdBQUc7Q0FBQzczRSxFQUFBQSxLQUFLLEVBQUUsWUFBVztDQUFuQixDQUFYOztDQUVBLFNBQVM4M0UsVUFBVCxHQUFvQjtDQUNsQixPQUFLLElBQUl0dUUsQ0FBQyxHQUFHLENBQVIsRUFBV3dPLENBQUMsR0FBR2hYLFNBQVMsQ0FBQ0MsTUFBekIsRUFBaUN3cEMsQ0FBQyxHQUFHLEVBQXJDLEVBQXlDbFosQ0FBOUMsRUFBaUQvbkIsQ0FBQyxHQUFHd08sQ0FBckQsRUFBd0QsRUFBRXhPLENBQTFELEVBQTZEO0NBQzNELFFBQUksRUFBRStuQixDQUFDLEdBQUd2d0IsU0FBUyxDQUFDd0ksQ0FBRCxDQUFULEdBQWUsRUFBckIsS0FBNkIrbkIsQ0FBQyxJQUFJa1osQ0FBbEMsSUFBd0MsUUFBUTNrQyxJQUFSLENBQWF5ckIsQ0FBYixDQUE1QyxFQUE2RCxNQUFNLElBQUkvYSxLQUFKLENBQVUsbUJBQW1CK2EsQ0FBN0IsQ0FBTjtDQUM3RGtaLElBQUFBLENBQUMsQ0FBQ2xaLENBQUQsQ0FBRCxHQUFPLEVBQVA7Q0FDRDs7Q0FDRCxTQUFPLElBQUlnSCxRQUFKLENBQWFrUyxDQUFiLENBQVA7Q0FDRDs7Q0FFRCxTQUFTbFMsUUFBVCxDQUFrQmtTLENBQWxCLEVBQXFCO0NBQ25CLE9BQUtBLENBQUwsR0FBU0EsQ0FBVDtDQUNEOztDQUVELFNBQVNzdEMsZ0JBQVQsQ0FBd0JDLFNBQXhCLEVBQW1DQyxLQUFuQyxFQUEwQztDQUN4QyxTQUFPRCxTQUFTLENBQUNya0QsSUFBVixHQUFpQnJ6QixLQUFqQixDQUF1QixPQUF2QixFQUFnQ2dRLEdBQWhDLENBQW9DLFVBQVNpaEIsQ0FBVCxFQUFZO0NBQ3JELFFBQUl2dEIsSUFBSSxHQUFHLEVBQVg7Q0FBQSxRQUFld0YsQ0FBQyxHQUFHK25CLENBQUMsQ0FBQ2pvQixPQUFGLENBQVUsR0FBVixDQUFuQjtDQUNBLFFBQUlFLENBQUMsSUFBSSxDQUFULEVBQVl4RixJQUFJLEdBQUd1dEIsQ0FBQyxDQUFDbnhCLEtBQUYsQ0FBUW9KLENBQUMsR0FBRyxDQUFaLENBQVAsRUFBdUIrbkIsQ0FBQyxHQUFHQSxDQUFDLENBQUNueEIsS0FBRixDQUFRLENBQVIsRUFBV29KLENBQVgsQ0FBM0I7Q0FDWixRQUFJK25CLENBQUMsSUFBSSxDQUFDMG1ELEtBQUssQ0FBQzMwRSxjQUFOLENBQXFCaXVCLENBQXJCLENBQVYsRUFBbUMsTUFBTSxJQUFJL2EsS0FBSixDQUFVLG1CQUFtQithLENBQTdCLENBQU47Q0FDbkMsV0FBTztDQUFDNXFCLE1BQUFBLElBQUksRUFBRTRxQixDQUFQO0NBQVV2dEIsTUFBQUEsSUFBSSxFQUFFQTtDQUFoQixLQUFQO0NBQ0QsR0FMTSxDQUFQO0NBTUQ7O0NBRUR1MEIsUUFBUSxDQUFDcHhCLFNBQVQsR0FBcUIyd0UsVUFBUSxDQUFDM3dFLFNBQVQsR0FBcUI7Q0FDeENvSSxFQUFBQSxXQUFXLEVBQUVncEIsUUFEMkI7Q0FFeEMyL0MsRUFBQUEsRUFBRSxFQUFFLFVBQVNDLFFBQVQsRUFBbUJ2OUIsUUFBbkIsRUFBNkI7Q0FDL0IsUUFBSW5RLENBQUMsR0FBRyxLQUFLQSxDQUFiO0NBQUEsUUFDSWpVLENBQUMsR0FBR3VoRCxnQkFBYyxDQUFDSSxRQUFRLEdBQUcsRUFBWixFQUFnQjF0QyxDQUFoQixDQUR0QjtDQUFBLFFBRUlsWixDQUZKO0NBQUEsUUFHSS9uQixDQUFDLEdBQUcsQ0FBQyxDQUhUO0NBQUEsUUFJSXdPLENBQUMsR0FBR3dlLENBQUMsQ0FBQ3YxQixNQUpWLENBRCtCOztDQVEvQixRQUFJRCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7Q0FDeEIsYUFBTyxFQUFFdUksQ0FBRixHQUFNd08sQ0FBYixFQUFnQixJQUFJLENBQUN1WixDQUFDLEdBQUcsQ0FBQzRtRCxRQUFRLEdBQUczaEQsQ0FBQyxDQUFDaHRCLENBQUQsQ0FBYixFQUFrQjdDLElBQXZCLE1BQWlDNHFCLENBQUMsR0FBR2p5QixHQUFHLENBQUNtckMsQ0FBQyxDQUFDbFosQ0FBRCxDQUFGLEVBQU80bUQsUUFBUSxDQUFDbjBFLElBQWhCLENBQXhDLENBQUosRUFBb0UsT0FBT3V0QixDQUFQOztDQUNwRjtDQUNELEtBWDhCO0NBYy9COzs7Q0FDQSxRQUFJcXBCLFFBQVEsSUFBSSxJQUFaLElBQW9CLE9BQU9BLFFBQVAsS0FBb0IsVUFBNUMsRUFBd0QsTUFBTSxJQUFJcGtDLEtBQUosQ0FBVSx1QkFBdUJva0MsUUFBakMsQ0FBTjs7Q0FDeEQsV0FBTyxFQUFFcHhDLENBQUYsR0FBTXdPLENBQWIsRUFBZ0I7Q0FDZCxVQUFJdVosQ0FBQyxHQUFHLENBQUM0bUQsUUFBUSxHQUFHM2hELENBQUMsQ0FBQ2h0QixDQUFELENBQWIsRUFBa0I3QyxJQUExQixFQUFnQzhqQyxDQUFDLENBQUNsWixDQUFELENBQUQsR0FBT2xyQixHQUFHLENBQUNva0MsQ0FBQyxDQUFDbFosQ0FBRCxDQUFGLEVBQU80bUQsUUFBUSxDQUFDbjBFLElBQWhCLEVBQXNCNDJDLFFBQXRCLENBQVYsQ0FBaEMsS0FDSyxJQUFJQSxRQUFRLElBQUksSUFBaEIsRUFBc0IsS0FBS3JwQixDQUFMLElBQVVrWixDQUFWLEVBQWFBLENBQUMsQ0FBQ2xaLENBQUQsQ0FBRCxHQUFPbHJCLEdBQUcsQ0FBQ29rQyxDQUFDLENBQUNsWixDQUFELENBQUYsRUFBTzRtRCxRQUFRLENBQUNuMEUsSUFBaEIsRUFBc0IsSUFBdEIsQ0FBVjtDQUN6Qzs7Q0FFRCxXQUFPLElBQVA7Q0FDRCxHQXhCdUM7Q0F5QnhDbzBFLEVBQUFBLElBQUksRUFBRSxZQUFXO0NBQ2YsUUFBSUEsSUFBSSxHQUFHLEVBQVg7Q0FBQSxRQUFlM3RDLENBQUMsR0FBRyxLQUFLQSxDQUF4Qjs7Q0FDQSxTQUFLLElBQUlsWixDQUFULElBQWNrWixDQUFkLEVBQWlCMnRDLElBQUksQ0FBQzdtRCxDQUFELENBQUosR0FBVWtaLENBQUMsQ0FBQ2xaLENBQUQsQ0FBRCxDQUFLbnhCLEtBQUwsRUFBVjs7Q0FDakIsV0FBTyxJQUFJbTRCLFFBQUosQ0FBYTYvQyxJQUFiLENBQVA7Q0FDRCxHQTdCdUM7Q0E4QnhDejRFLEVBQUFBLElBQUksRUFBRSxVQUFTZ0gsSUFBVCxFQUFlNkgsSUFBZixFQUFxQjtDQUN6QixRQUFJLENBQUN3SixDQUFDLEdBQUdoWCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBeEIsSUFBNkIsQ0FBakMsRUFBb0MsS0FBSyxJQUFJcVMsSUFBSSxHQUFHLElBQUloSSxLQUFKLENBQVUwTSxDQUFWLENBQVgsRUFBeUJ4TyxDQUFDLEdBQUcsQ0FBN0IsRUFBZ0N3TyxDQUFoQyxFQUFtQ3VaLENBQXhDLEVBQTJDL25CLENBQUMsR0FBR3dPLENBQS9DLEVBQWtELEVBQUV4TyxDQUFwRCxFQUF1RDhKLElBQUksQ0FBQzlKLENBQUQsQ0FBSixHQUFVeEksU0FBUyxDQUFDd0ksQ0FBQyxHQUFHLENBQUwsQ0FBbkI7Q0FDM0YsUUFBSSxDQUFDLEtBQUtpaEMsQ0FBTCxDQUFPbm5DLGNBQVAsQ0FBc0JxRCxJQUF0QixDQUFMLEVBQWtDLE1BQU0sSUFBSTZQLEtBQUosQ0FBVSxtQkFBbUI3UCxJQUE3QixDQUFOOztDQUNsQyxTQUFLNHFCLENBQUMsR0FBRyxLQUFLa1osQ0FBTCxDQUFPOWpDLElBQVAsQ0FBSixFQUFrQjZDLENBQUMsR0FBRyxDQUF0QixFQUF5QndPLENBQUMsR0FBR3VaLENBQUMsQ0FBQ3R3QixNQUFwQyxFQUE0Q3VJLENBQUMsR0FBR3dPLENBQWhELEVBQW1ELEVBQUV4TyxDQUFyRCxFQUF3RCtuQixDQUFDLENBQUMvbkIsQ0FBRCxDQUFELENBQUt4SixLQUFMLENBQVcyTyxLQUFYLENBQWlCSCxJQUFqQixFQUF1QjhFLElBQXZCO0NBQ3pELEdBbEN1QztDQW1DeEMzRSxFQUFBQSxLQUFLLEVBQUUsVUFBU2hJLElBQVQsRUFBZTZILElBQWYsRUFBcUI4RSxJQUFyQixFQUEyQjtDQUNoQyxRQUFJLENBQUMsS0FBS20zQixDQUFMLENBQU9ubkMsY0FBUCxDQUFzQnFELElBQXRCLENBQUwsRUFBa0MsTUFBTSxJQUFJNlAsS0FBSixDQUFVLG1CQUFtQjdQLElBQTdCLENBQU47O0NBQ2xDLFNBQUssSUFBSTRxQixDQUFDLEdBQUcsS0FBS2taLENBQUwsQ0FBTzlqQyxJQUFQLENBQVIsRUFBc0I2QyxDQUFDLEdBQUcsQ0FBMUIsRUFBNkJ3TyxDQUFDLEdBQUd1WixDQUFDLENBQUN0d0IsTUFBeEMsRUFBZ0R1SSxDQUFDLEdBQUd3TyxDQUFwRCxFQUF1RCxFQUFFeE8sQ0FBekQsRUFBNEQrbkIsQ0FBQyxDQUFDL25CLENBQUQsQ0FBRCxDQUFLeEosS0FBTCxDQUFXMk8sS0FBWCxDQUFpQkgsSUFBakIsRUFBdUI4RSxJQUF2QjtDQUM3RDtDQXRDdUMsQ0FBMUM7O0NBeUNBLFNBQVNoVSxHQUFULENBQWFxSCxJQUFiLEVBQW1CM0MsSUFBbkIsRUFBeUI7Q0FDdkIsT0FBSyxJQUFJd0YsQ0FBQyxHQUFHLENBQVIsRUFBV3dPLENBQUMsR0FBR3JSLElBQUksQ0FBQzFGLE1BQXBCLEVBQTRCeU4sQ0FBakMsRUFBb0NsRixDQUFDLEdBQUd3TyxDQUF4QyxFQUEyQyxFQUFFeE8sQ0FBN0MsRUFBZ0Q7Q0FDOUMsUUFBSSxDQUFDa0YsQ0FBQyxHQUFHL0gsSUFBSSxDQUFDNkMsQ0FBRCxDQUFULEVBQWN4RixJQUFkLEtBQXVCQSxJQUEzQixFQUFpQztDQUMvQixhQUFPMEssQ0FBQyxDQUFDMU8sS0FBVDtDQUNEO0NBQ0Y7Q0FDRjs7Q0FFRCxTQUFTcUcsR0FBVCxDQUFhTSxJQUFiLEVBQW1CM0MsSUFBbkIsRUFBeUI0MkMsUUFBekIsRUFBbUM7Q0FDakMsT0FBSyxJQUFJcHhDLENBQUMsR0FBRyxDQUFSLEVBQVd3TyxDQUFDLEdBQUdyUixJQUFJLENBQUMxRixNQUF6QixFQUFpQ3VJLENBQUMsR0FBR3dPLENBQXJDLEVBQXdDLEVBQUV4TyxDQUExQyxFQUE2QztDQUMzQyxRQUFJN0MsSUFBSSxDQUFDNkMsQ0FBRCxDQUFKLENBQVF4RixJQUFSLEtBQWlCQSxJQUFyQixFQUEyQjtDQUN6QjJDLE1BQUFBLElBQUksQ0FBQzZDLENBQUQsQ0FBSixHQUFVcXVFLElBQVYsRUFBZ0JseEUsSUFBSSxHQUFHQSxJQUFJLENBQUN2RyxLQUFMLENBQVcsQ0FBWCxFQUFjb0osQ0FBZCxFQUFpQkcsTUFBakIsQ0FBd0JoRCxJQUFJLENBQUN2RyxLQUFMLENBQVdvSixDQUFDLEdBQUcsQ0FBZixDQUF4QixDQUF2QjtDQUNBO0NBQ0Q7Q0FDRjs7Q0FDRCxNQUFJb3hDLFFBQVEsSUFBSSxJQUFoQixFQUFzQmowQyxJQUFJLENBQUN6RCxJQUFMLENBQVU7Q0FBQ2MsSUFBQUEsSUFBSSxFQUFFQSxJQUFQO0NBQWFoRSxJQUFBQSxLQUFLLEVBQUU0NkM7Q0FBcEIsR0FBVjtDQUN0QixTQUFPajBDLElBQVA7Q0FDRDs7Ozs7OztDQ2pGRDtDQUNBO0NBRUEsSUFBSW14RSxRQUFRLEdBQUczNEUsR0FBQSxDQUF1QjI0RSxRQUF0Qzs7Q0FFQSxJQUFJTyxZQUFZLEdBQUc1NUUsSUFBSSxDQUFDODhDLEVBQUwsR0FBVSxHQUE3QjtDQUFBLElBQ0krOEIsRUFBRSxHQUFHLEtBQUssRUFBTCxJQUFXLENBRHBCO0NBQUEsSUFFSXB1QyxFQUFFLEdBQUcsS0FBSyxFQUZkOztLQUlBeHJDLE9BQUEsR0FBaUIsWUFBVztDQUMxQixNQUFJOHdCLElBQUksR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLENBQVg7Q0FBQSxNQUNJdW5DLElBQUksR0FBR3doQixTQURYO0NBQUEsTUFFSUMsSUFBSSxHQUFHQyxTQUZYO0NBQUEsTUFHSUMsUUFBUSxHQUFHQyxhQUhmO0NBQUEsTUFJSUMsU0FBUyxHQUFHQyxlQUpoQjtDQUFBLE1BS0lDLFVBQVUsR0FBR0QsZUFMakI7Q0FBQSxNQU1JRSxNQUFNLEdBQUdDLFdBTmI7Q0FBQSxNQU9JQyxPQUFPLEdBQUdDLFlBUGQ7Q0FBQSxNQVFJQyxNQUFNLEdBQUdDLGlCQVJiO0NBQUEsTUFTSUMsS0FBSyxHQUFHLEVBVFo7Q0FBQSxNQVVJQyxZQUFZLEdBQUc1MkQsUUFWbkI7Q0FBQSxNQVdJd1csS0FBSyxHQUFHNCtDLFFBQVEsQ0FBQyxNQUFELEVBQVMsS0FBVCxDQVhwQjtDQUFBLE1BWUl5QixLQUFLLEdBQUcsSUFaWjtDQUFBLE1BYUk3MUUsTUFBTSxHQUFHakYsSUFBSSxDQUFDaUYsTUFibEI7Q0FBQSxNQWNJODFFLEtBQUssR0FBRyxFQWRaO0NBQUEsTUFlSUMsTUFBTSxHQUFHQyxXQWZiOztDQWlCQUYsRUFBQUEsS0FBSyxDQUFDQyxNQUFOLEdBQWUsVUFBU2h2QyxDQUFULEVBQVk7Q0FDekIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0J3NEUsTUFBTSxHQUFHRSxPQUFPLENBQUNsdkMsQ0FBRCxDQUFoQixFQUFxQit1QyxLQUF6QyxJQUFrREMsTUFBekQ7Q0FDRCxHQUZEOztDQUlBRCxFQUFBQSxLQUFLLENBQUNyaEUsS0FBTixHQUFjLFlBQVc7Q0FDdkIsUUFBSXloRSxlQUFlLEdBQUdDLFVBQVUsQ0FBQ0osTUFBTSxFQUFQLENBQWhDO0NBQUEsUUFDSUssS0FBSyxHQUFHQyxTQUFTLENBQUMsQ0FBQ3ZxRCxJQUFJLENBQUMsQ0FBRCxDQUFKLElBQVcsQ0FBWixJQUFpQkEsSUFBSSxDQUFDLENBQUQsQ0FBdEIsQ0FEckI7Q0FBQSxRQUVJd3FELE1BQU0sR0FBRyxJQUZiO0NBQUEsUUFHSWhpRSxDQUFDLEdBQUdxaEUsS0FBSyxDQUFDcDRFLE1BSGQ7Q0FBQSxRQUlJdUksQ0FBQyxHQUFHLENBQUMsQ0FKVDtDQUFBLFFBS0l5d0UsSUFBSSxHQUFHLEVBTFg7Q0FBQSxRQU1JM3ZFLElBQUksR0FBRyt1RSxLQUFLLENBQUMvb0UsR0FBTixDQUFVLFVBQVMyK0QsQ0FBVCxFQUFZemxFLENBQVosRUFBZTtDQUM5QnlsRSxNQUFBQSxDQUFDLENBQUNsWSxJQUFGLEdBQVNBLElBQUksQ0FBQ3AzRCxJQUFMLENBQVUsSUFBVixFQUFnQnN2RSxDQUFoQixFQUFtQnpsRSxDQUFuQixDQUFUO0NBQ0F5bEUsTUFBQUEsQ0FBQyxDQUFDdUosSUFBRixHQUFTQSxJQUFJLENBQUM3NEUsSUFBTCxDQUFVLElBQVYsRUFBZ0JzdkUsQ0FBaEIsRUFBbUJ6bEUsQ0FBbkIsQ0FBVDtDQUNBeWxFLE1BQUFBLENBQUMsQ0FBQzNoRSxLQUFGLEdBQVVzckUsU0FBUyxDQUFDajVFLElBQVYsQ0FBZSxJQUFmLEVBQXFCc3ZFLENBQXJCLEVBQXdCemxFLENBQXhCLENBQVY7Q0FDQXlsRSxNQUFBQSxDQUFDLENBQUNpTCxNQUFGLEdBQVdwQixVQUFVLENBQUNuNUUsSUFBWCxDQUFnQixJQUFoQixFQUFzQnN2RSxDQUF0QixFQUF5QnpsRSxDQUF6QixDQUFYO0NBQ0F5bEUsTUFBQUEsQ0FBQyxDQUFDOEosTUFBRixHQUFXQSxNQUFNLENBQUNwNUUsSUFBUCxDQUFZLElBQVosRUFBa0JzdkUsQ0FBbEIsRUFBcUJ6bEUsQ0FBckIsQ0FBWDtDQUNBeWxFLE1BQUFBLENBQUMsQ0FBQ3ovQyxJQUFGLEdBQVMsQ0FBQyxDQUFDa3BELFFBQVEsQ0FBQy80RSxJQUFULENBQWMsSUFBZCxFQUFvQnN2RSxDQUFwQixFQUF1QnpsRSxDQUF2QixDQUFYO0NBQ0F5bEUsTUFBQUEsQ0FBQyxDQUFDZ0ssT0FBRixHQUFZQSxPQUFPLENBQUN0NUUsSUFBUixDQUFhLElBQWIsRUFBbUJzdkUsQ0FBbkIsRUFBc0J6bEUsQ0FBdEIsQ0FBWjtDQUNBLGFBQU95bEUsQ0FBUDtDQUNELEtBVE0sRUFTSmh2RCxJQVRJLENBU0MsVUFBU3BiLENBQVQsRUFBWTRKLENBQVosRUFBZTtDQUFFLGFBQU9BLENBQUMsQ0FBQytnQixJQUFGLEdBQVMzcUIsQ0FBQyxDQUFDMnFCLElBQWxCO0NBQXlCLEtBVDNDLENBTlg7Q0FpQkEsUUFBSStwRCxLQUFKLEVBQVdqQyxhQUFhLENBQUNpQyxLQUFELENBQWI7Q0FDWEEsSUFBQUEsS0FBSyxHQUFHM3pCLFdBQVcsQ0FBQy92QyxJQUFELEVBQU8sQ0FBUCxDQUFuQjtDQUNBQSxJQUFBQSxJQUFJO0NBRUosV0FBTzJqRSxLQUFQOztDQUVBLGFBQVMzakUsSUFBVCxHQUFnQjtDQUNkLFVBQUlzQyxLQUFLLEdBQUc0USxJQUFJLENBQUNHLEdBQUwsRUFBWjs7Q0FDQSxhQUFPSCxJQUFJLENBQUNHLEdBQUwsS0FBYS9RLEtBQWIsR0FBcUJtaEUsWUFBckIsSUFBcUMsRUFBRTl2RSxDQUFGLEdBQU13TyxDQUEzQyxJQUFnRHVoRSxLQUF2RCxFQUE4RDtDQUM1RCxZQUFJdEssQ0FBQyxHQUFHM2tFLElBQUksQ0FBQ2QsQ0FBRCxDQUFaO0NBQ0F5bEUsUUFBQUEsQ0FBQyxDQUFDdHVELENBQUYsR0FBTzZPLElBQUksQ0FBQyxDQUFELENBQUosSUFBVzlyQixNQUFNLEtBQUssRUFBdEIsQ0FBRCxJQUErQixDQUFyQztDQUNBdXJFLFFBQUFBLENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU80TyxJQUFJLENBQUMsQ0FBRCxDQUFKLElBQVc5ckIsTUFBTSxLQUFLLEVBQXRCLENBQUQsSUFBK0IsQ0FBckM7Q0FDQXkyRSxRQUFBQSxXQUFXLENBQUNQLGVBQUQsRUFBa0IzSyxDQUFsQixFQUFxQjNrRSxJQUFyQixFQUEyQmQsQ0FBM0IsQ0FBWDs7Q0FDQSxZQUFJeWxFLENBQUMsQ0FBQ21MLE9BQUYsSUFBYUMsS0FBSyxDQUFDUCxLQUFELEVBQVE3SyxDQUFSLEVBQVcrSyxNQUFYLENBQXRCLEVBQTBDO0NBQ3hDQyxVQUFBQSxJQUFJLENBQUMvMkUsSUFBTCxDQUFVK3JFLENBQVY7Q0FDQS8xQyxVQUFBQSxLQUFLLENBQUN2NUIsSUFBTixDQUFXLE1BQVgsRUFBbUI2NUUsS0FBbkIsRUFBMEJ2SyxDQUExQjtDQUNBLGNBQUkrSyxNQUFKLEVBQVlNLFdBQVcsQ0FBQ04sTUFBRCxFQUFTL0ssQ0FBVCxDQUFYLENBQVosS0FDSytLLE1BQU0sR0FBRyxDQUFDO0NBQUNyNUQsWUFBQUEsQ0FBQyxFQUFFc3VELENBQUMsQ0FBQ3R1RCxDQUFGLEdBQU1zdUQsQ0FBQyxDQUFDL3lCLEVBQVo7Q0FBZ0J0N0IsWUFBQUEsQ0FBQyxFQUFFcXVELENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU1xdUQsQ0FBQyxDQUFDN3lCO0NBQTNCLFdBQUQsRUFBaUM7Q0FBQ3o3QixZQUFBQSxDQUFDLEVBQUVzdUQsQ0FBQyxDQUFDdHVELENBQUYsR0FBTXN1RCxDQUFDLENBQUM5eUIsRUFBWjtDQUFnQnY3QixZQUFBQSxDQUFDLEVBQUVxdUQsQ0FBQyxDQUFDcnVELENBQUYsR0FBTXF1RCxDQUFDLENBQUM1eUI7Q0FBM0IsV0FBakMsQ0FBVCxDQUptQzs7Q0FNeEM0eUIsVUFBQUEsQ0FBQyxDQUFDdHVELENBQUYsSUFBTzZPLElBQUksQ0FBQyxDQUFELENBQUosSUFBVyxDQUFsQjtDQUNBeS9DLFVBQUFBLENBQUMsQ0FBQ3J1RCxDQUFGLElBQU80TyxJQUFJLENBQUMsQ0FBRCxDQUFKLElBQVcsQ0FBbEI7Q0FDRDtDQUNGOztDQUNELFVBQUlobUIsQ0FBQyxJQUFJd08sQ0FBVCxFQUFZO0NBQ1Z3aEUsUUFBQUEsS0FBSyxDQUFDMWpFLElBQU47Q0FDQW9qQixRQUFBQSxLQUFLLENBQUN2NUIsSUFBTixDQUFXLEtBQVgsRUFBa0I2NUUsS0FBbEIsRUFBeUJTLElBQXpCLEVBQStCRCxNQUEvQjtDQUNEO0NBQ0Y7Q0FDRixHQTlDRDs7Q0FnREFSLEVBQUFBLEtBQUssQ0FBQzFqRSxJQUFOLEdBQWEsWUFBVztDQUN0QixRQUFJeWpFLEtBQUosRUFBVztDQUNUakMsTUFBQUEsYUFBYSxDQUFDaUMsS0FBRCxDQUFiO0NBQ0FBLE1BQUFBLEtBQUssR0FBRyxJQUFSO0NBQ0Q7O0NBQ0QsV0FBT0MsS0FBUDtDQUNELEdBTkQ7O0NBUUEsV0FBU0ssVUFBVCxDQUFvQkosTUFBcEIsRUFBNEI7Q0FDMUJBLElBQUFBLE1BQU0sQ0FBQ2MsS0FBUCxHQUFlZCxNQUFNLENBQUNlLE1BQVAsR0FBZ0IsQ0FBL0I7Q0FDQSxRQUFJQyxLQUFLLEdBQUdoOEUsSUFBSSxDQUFDK3hCLElBQUwsQ0FBVWlwRCxNQUFNLENBQUNJLFVBQVAsQ0FBa0IsSUFBbEIsRUFBd0JhLFlBQXhCLENBQXFDLENBQXJDLEVBQXdDLENBQXhDLEVBQTJDLENBQTNDLEVBQThDLENBQTlDLEVBQWlEcHdFLElBQWpELENBQXNEckosTUFBdEQsSUFBZ0UsQ0FBMUUsQ0FBWjtDQUNBdzRFLElBQUFBLE1BQU0sQ0FBQ2MsS0FBUCxHQUFlLENBQUNqQyxFQUFFLElBQUksQ0FBUCxJQUFZbUMsS0FBM0I7Q0FDQWhCLElBQUFBLE1BQU0sQ0FBQ2UsTUFBUCxHQUFnQnR3QyxFQUFFLEdBQUd1d0MsS0FBckI7Q0FFQSxRQUFJbmIsT0FBTyxHQUFHbWEsTUFBTSxDQUFDSSxVQUFQLENBQWtCLElBQWxCLENBQWQ7Q0FDQXZhLElBQUFBLE9BQU8sQ0FBQ3FiLFNBQVIsR0FBb0JyYixPQUFPLENBQUNzYixXQUFSLEdBQXNCLEtBQTFDO0NBQ0F0YixJQUFBQSxPQUFPLENBQUN1YixTQUFSLEdBQW9CLFFBQXBCO0NBRUEsV0FBTztDQUFDdmIsTUFBQUEsT0FBTyxFQUFFQSxPQUFWO0NBQW1CbWIsTUFBQUEsS0FBSyxFQUFFQTtDQUExQixLQUFQO0NBQ0Q7O0NBRUQsV0FBU0osS0FBVCxDQUFlUCxLQUFmLEVBQXNCanVFLEdBQXRCLEVBQTJCbXVFLE1BQTNCLEVBQW1DO0NBQ2pDLElBQWdCLENBQUM7Q0FBQ3I1RCxNQUFBQSxDQUFDLEVBQUUsQ0FBSjtDQUFPQyxNQUFBQSxDQUFDLEVBQUU7Q0FBVixLQUFELEVBQWU7Q0FBQ0QsTUFBQUEsQ0FBQyxFQUFFNk8sSUFBSSxDQUFDLENBQUQsQ0FBUjtDQUFhNU8sTUFBQUEsQ0FBQyxFQUFFNE8sSUFBSSxDQUFDLENBQUQ7Q0FBcEIsS0FBZixDQUFoQjtDQUFBLFlBQ0lzckQsTUFBTSxHQUFHanZFLEdBQUcsQ0FBQzhVLENBRGpCO0NBQUEsUUFFSW82RCxNQUFNLEdBQUdsdkUsR0FBRyxDQUFDK1UsQ0FGakI7Q0FBQSxRQUdJbzZELFFBQVEsR0FBR3Y4RSxJQUFJLENBQUMreEIsSUFBTCxDQUFVaEIsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVQSxJQUFJLENBQUMsQ0FBRCxDQUFkLEdBQW9CQSxJQUFJLENBQUMsQ0FBRCxDQUFKLEdBQVVBLElBQUksQ0FBQyxDQUFELENBQTVDLENBSGY7Q0FBQSxRQUlJb0csQ0FBQyxHQUFHdWpELE1BQU0sQ0FBQzNwRCxJQUFELENBSmQ7Q0FBQSxRQUtJeXJELEVBQUUsR0FBR3YzRSxNQUFNLEtBQUssRUFBWCxHQUFnQixDQUFoQixHQUFvQixDQUFDLENBTDlCO0NBQUEsUUFNSTZ0QixDQUFDLEdBQUcsQ0FBQzBwRCxFQU5UO0NBQUEsUUFPSUMsSUFQSjtDQUFBLFFBUUlDLEVBUko7Q0FBQSxRQVNJQzs7Q0FFSixXQUFPRixJQUFJLEdBQUd0bEQsQ0FBQyxDQUFDckUsQ0FBQyxJQUFJMHBELEVBQU4sQ0FBZixFQUEwQjtDQUN4QkUsTUFBQUEsRUFBRSxHQUFHLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLENBQUQsQ0FBWDtDQUNBRSxNQUFBQSxFQUFFLEdBQUcsQ0FBQyxDQUFDRixJQUFJLENBQUMsQ0FBRCxDQUFYO0NBRUEsVUFBSXo4RSxJQUFJLENBQUNnSyxHQUFMLENBQVNoSyxJQUFJLENBQUNrakIsR0FBTCxDQUFTdzVELEVBQVQsQ0FBVCxFQUF1QjE4RSxJQUFJLENBQUNrakIsR0FBTCxDQUFTeTVELEVBQVQsQ0FBdkIsS0FBd0NKLFFBQTVDLEVBQXNEO0NBRXREbnZFLE1BQUFBLEdBQUcsQ0FBQzhVLENBQUosR0FBUW02RCxNQUFNLEdBQUdLLEVBQWpCO0NBQ0F0dkUsTUFBQUEsR0FBRyxDQUFDK1UsQ0FBSixHQUFRbTZELE1BQU0sR0FBR0ssRUFBakI7Q0FFQSxVQUFJdnZFLEdBQUcsQ0FBQzhVLENBQUosR0FBUTlVLEdBQUcsQ0FBQ3F3QyxFQUFaLEdBQWlCLENBQWpCLElBQXNCcndDLEdBQUcsQ0FBQytVLENBQUosR0FBUS9VLEdBQUcsQ0FBQ3V3QyxFQUFaLEdBQWlCLENBQXZDLElBQ0F2d0MsR0FBRyxDQUFDOFUsQ0FBSixHQUFROVUsR0FBRyxDQUFDc3dDLEVBQVosR0FBaUIzc0IsSUFBSSxDQUFDLENBQUQsQ0FEckIsSUFDNEIzakIsR0FBRyxDQUFDK1UsQ0FBSixHQUFRL1UsR0FBRyxDQUFDd3dDLEVBQVosR0FBaUI3c0IsSUFBSSxDQUFDLENBQUQsQ0FEckQsRUFDMEQsU0FWbEM7O0NBWXhCLFVBQUksQ0FBQ3dxRCxNQUFELElBQVcsQ0FBQ3FCLFlBQVksQ0FBQ3h2RSxHQUFELEVBQU1pdUUsS0FBTixFQUFhdHFELElBQUksQ0FBQyxDQUFELENBQWpCLENBQTVCLEVBQW1EO0NBQ2pELFlBQUksQ0FBQ3dxRCxNQUFELElBQVdzQixZQUFZLENBQUN6dkUsR0FBRCxFQUFNbXVFLE1BQU4sQ0FBM0IsRUFBMEM7Q0FDeEMsY0FBSXVCLE1BQU0sR0FBRzF2RSxHQUFHLENBQUMwdkUsTUFBakI7Q0FBQSxjQUNJQyxDQUFDLEdBQUczdkUsR0FBRyxDQUFDMHVFLEtBQUosSUFBYSxDQURyQjtDQUFBLGNBRUlrQixFQUFFLEdBQUdqc0QsSUFBSSxDQUFDLENBQUQsQ0FBSixJQUFXLENBRnBCO0NBQUEsY0FHSWtzRCxFQUFFLEdBQUc3dkUsR0FBRyxDQUFDOFUsQ0FBSixJQUFTNjZELENBQUMsSUFBSSxDQUFkLENBSFQ7Q0FBQSxjQUlJRyxFQUFFLEdBQUdELEVBQUUsR0FBRyxJQUpkO0NBQUEsY0FLSUUsR0FBRyxHQUFHLEtBQUtELEVBTGY7Q0FBQSxjQU1JRSxDQUFDLEdBQUdod0UsR0FBRyxDQUFDd3dDLEVBQUosR0FBU3h3QyxHQUFHLENBQUN1d0MsRUFOckI7Q0FBQSxjQU9JejdCLENBQUMsR0FBRyxDQUFDOVUsR0FBRyxDQUFDK1UsQ0FBSixHQUFRL1UsR0FBRyxDQUFDdXdDLEVBQWIsSUFBbUJxL0IsRUFBbkIsSUFBeUJDLEVBQUUsSUFBSSxDQUEvQixDQVBSO0NBQUEsY0FRSW5zRCxJQVJKOztDQVNBLGVBQUssSUFBSXBRLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcwOEQsQ0FBcEIsRUFBdUIxOEQsQ0FBQyxFQUF4QixFQUE0QjtDQUMxQm9RLFlBQUFBLElBQUksR0FBRyxDQUFQOztDQUNBLGlCQUFLLElBQUkvbEIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsSUFBSWd5RSxDQUFyQixFQUF3Qmh5RSxDQUFDLEVBQXpCLEVBQTZCO0NBQzNCc3dFLGNBQUFBLEtBQUssQ0FBQ241RCxDQUFDLEdBQUduWCxDQUFMLENBQUwsSUFBaUIrbEIsSUFBSSxJQUFJcXNELEdBQVQsSUFBaUJweUUsQ0FBQyxHQUFHZ3lFLENBQUosR0FBUSxDQUFDanNELElBQUksR0FBR2dzRCxNQUFNLENBQUNwOEQsQ0FBQyxHQUFHcThELENBQUosR0FBUWh5RSxDQUFULENBQWQsTUFBK0JteUUsRUFBdkMsR0FBNEMsQ0FBN0QsQ0FBaEI7Q0FDRDs7Q0FDRGg3RCxZQUFBQSxDQUFDLElBQUk4NkQsRUFBTDtDQUNEOztDQUNELGlCQUFPNXZFLEdBQUcsQ0FBQzB2RSxNQUFYO0NBQ0EsaUJBQU8sSUFBUDtDQUNEO0NBQ0Y7Q0FDRjs7Q0FDRCxXQUFPLEtBQVA7Q0FDRDs7Q0FFRC9CLEVBQUFBLEtBQUssQ0FBQ0YsWUFBTixHQUFxQixVQUFTN3VDLENBQVQsRUFBWTtDQUMvQixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQnE0RSxZQUFZLEdBQUc3dUMsQ0FBQyxJQUFJLElBQUwsR0FBWS9uQixRQUFaLEdBQXVCK25CLENBQXRDLEVBQXlDK3VDLEtBQTdELElBQXNFRixZQUE3RTtDQUNELEdBRkQ7O0NBSUFFLEVBQUFBLEtBQUssQ0FBQ0gsS0FBTixHQUFjLFVBQVM1dUMsQ0FBVCxFQUFZO0NBQ3hCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CbzRFLEtBQUssR0FBRzV1QyxDQUFSLEVBQVcrdUMsS0FBL0IsSUFBd0NILEtBQS9DO0NBQ0QsR0FGRDs7Q0FJQUcsRUFBQUEsS0FBSyxDQUFDaHFELElBQU4sR0FBYSxVQUFTaWIsQ0FBVCxFQUFZO0NBQ3ZCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CdXVCLElBQUksR0FBRyxDQUFDLENBQUNpYixDQUFDLENBQUMsQ0FBRCxDQUFILEVBQVEsQ0FBQ0EsQ0FBQyxDQUFDLENBQUQsQ0FBVixDQUFQLEVBQXVCK3VDLEtBQTNDLElBQW9EaHFELElBQTNEO0NBQ0QsR0FGRDs7Q0FJQWdxRCxFQUFBQSxLQUFLLENBQUNoQixJQUFOLEdBQWEsVUFBUy90QyxDQUFULEVBQVk7Q0FDdkIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0J1M0UsSUFBSSxHQUFHbUIsT0FBTyxDQUFDbHZDLENBQUQsQ0FBZCxFQUFtQit1QyxLQUF2QyxJQUFnRGhCLElBQXZEO0NBQ0QsR0FGRDs7Q0FJQWdCLEVBQUFBLEtBQUssQ0FBQ1osU0FBTixHQUFrQixVQUFTbnVDLENBQVQsRUFBWTtDQUM1QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQjIzRSxTQUFTLEdBQUdlLE9BQU8sQ0FBQ2x2QyxDQUFELENBQW5CLEVBQXdCK3VDLEtBQTVDLElBQXFEWixTQUE1RDtDQUNELEdBRkQ7O0NBSUFZLEVBQUFBLEtBQUssQ0FBQ1YsVUFBTixHQUFtQixVQUFTcnVDLENBQVQsRUFBWTtDQUM3QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQjYzRSxVQUFVLEdBQUdhLE9BQU8sQ0FBQ2x2QyxDQUFELENBQXBCLEVBQXlCK3VDLEtBQTdDLElBQXNEVixVQUE3RDtDQUNELEdBRkQ7O0NBSUFVLEVBQUFBLEtBQUssQ0FBQ1QsTUFBTixHQUFlLFVBQVN0dUMsQ0FBVCxFQUFZO0NBQ3pCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CODNFLE1BQU0sR0FBR1ksT0FBTyxDQUFDbHZDLENBQUQsQ0FBaEIsRUFBcUIrdUMsS0FBekMsSUFBa0RULE1BQXpEO0NBQ0QsR0FGRDs7Q0FJQVMsRUFBQUEsS0FBSyxDQUFDemlCLElBQU4sR0FBYSxVQUFTdHNCLENBQVQsRUFBWTtDQUN2QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQjgxRCxJQUFJLEdBQUc0aUIsT0FBTyxDQUFDbHZDLENBQUQsQ0FBZCxFQUFtQit1QyxLQUF2QyxJQUFnRHppQixJQUF2RDtDQUNELEdBRkQ7O0NBSUF5aUIsRUFBQUEsS0FBSyxDQUFDTCxNQUFOLEdBQWUsVUFBUzF1QyxDQUFULEVBQVk7Q0FDekIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0JrNEUsTUFBTSxHQUFHMkMsT0FBTyxDQUFDcnhDLENBQUQsQ0FBUCxJQUFjQSxDQUF2QixFQUEwQit1QyxLQUE5QyxJQUF1REwsTUFBOUQ7Q0FDRCxHQUZEOztDQUlBSyxFQUFBQSxLQUFLLENBQUNkLFFBQU4sR0FBaUIsVUFBU2p1QyxDQUFULEVBQVk7Q0FDM0IsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0J5M0UsUUFBUSxHQUFHaUIsT0FBTyxDQUFDbHZDLENBQUQsQ0FBbEIsRUFBdUIrdUMsS0FBM0MsSUFBb0RkLFFBQTNEO0NBQ0QsR0FGRDs7Q0FJQWMsRUFBQUEsS0FBSyxDQUFDUCxPQUFOLEdBQWdCLFVBQVN4dUMsQ0FBVCxFQUFZO0NBQzFCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CZzRFLE9BQU8sR0FBR1UsT0FBTyxDQUFDbHZDLENBQUQsQ0FBakIsRUFBc0IrdUMsS0FBMUMsSUFBbURQLE9BQTFEO0NBQ0QsR0FGRDs7Q0FJQU8sRUFBQUEsS0FBSyxDQUFDOTFFLE1BQU4sR0FBZSxVQUFTK21DLENBQVQsRUFBWTtDQUN6QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQnlDLE1BQU0sR0FBRyttQyxDQUFULEVBQVkrdUMsS0FBaEMsSUFBeUM5MUUsTUFBaEQ7Q0FDRCxHQUZEOztDQUlBODFFLEVBQUFBLEtBQUssQ0FBQ3RCLEVBQU4sR0FBVyxZQUFXO0NBQ3BCLFFBQUlsNEUsS0FBSyxHQUFHazVCLEtBQUssQ0FBQ2cvQyxFQUFOLENBQVN2cEUsS0FBVCxDQUFldXFCLEtBQWYsRUFBc0JsNEIsU0FBdEIsQ0FBWjtDQUNBLFdBQU9oQixLQUFLLEtBQUtrNUIsS0FBVixHQUFrQnNnRCxLQUFsQixHQUEwQng1RSxLQUFqQztDQUNELEdBSEQ7O0NBS0EsU0FBT3c1RSxLQUFQO0NBQ0QsQ0FuTUQ7O0NBcU1BLFNBQVNqQixTQUFULENBQW1CdEosQ0FBbkIsRUFBc0I7Q0FDcEIsU0FBT0EsQ0FBQyxDQUFDbFksSUFBVDtDQUNEOztDQUVELFNBQVMwaEIsU0FBVCxHQUFxQjtDQUNuQixTQUFPLE9BQVA7Q0FDRDs7Q0FFRCxTQUFTSSxlQUFULEdBQTJCO0NBQ3pCLFNBQU8sUUFBUDtDQUNEOztDQUVELFNBQVNGLGFBQVQsQ0FBdUIxSixDQUF2QixFQUEwQjtDQUN4QixTQUFPeHdFLElBQUksQ0FBQyt4QixJQUFMLENBQVV5K0MsQ0FBQyxDQUFDanZFLEtBQVosQ0FBUDtDQUNEOztDQUVELFNBQVNnNUUsV0FBVCxHQUF1QjtDQUNyQixTQUFPLENBQUMsQ0FBQyxFQUFFdjZFLElBQUksQ0FBQ2lGLE1BQUwsS0FBZ0IsQ0FBbEIsQ0FBRCxHQUF3QixDQUF6QixJQUE4QixFQUFyQztDQUNEOztDQUVELFNBQVN3MUUsWUFBVCxHQUF3QjtDQUN0QixTQUFPLENBQVA7Q0FDRDtDQUdEOzs7Q0FDQSxTQUFTaUIsV0FBVCxDQUFxQlAsZUFBckIsRUFBc0MzSyxDQUF0QyxFQUF5QzNrRSxJQUF6QyxFQUErQ3l4RSxFQUEvQyxFQUFtRDtDQUNqRCxNQUFJOU0sQ0FBQyxDQUFDc00sTUFBTixFQUFjO0NBQ2QsTUFBSTdzRSxDQUFDLEdBQUdrckUsZUFBZSxDQUFDdGEsT0FBeEI7Q0FBQSxNQUNJbWIsS0FBSyxHQUFHYixlQUFlLENBQUNhLEtBRDVCO0NBR0EvckUsRUFBQUEsQ0FBQyxDQUFDc3RFLFNBQUYsQ0FBWSxDQUFaLEVBQWUsQ0FBZixFQUFrQixDQUFDMUQsRUFBRSxJQUFJLENBQVAsSUFBWW1DLEtBQTlCLEVBQXFDdndDLEVBQUUsR0FBR3V3QyxLQUExQztDQUNBLE1BQUk5NUQsQ0FBQyxHQUFHLENBQVI7Q0FBQSxNQUNJQyxDQUFDLEdBQUcsQ0FEUjtDQUFBLE1BRUlxN0QsSUFBSSxHQUFHLENBRlg7Q0FBQSxNQUdJamtFLENBQUMsR0FBRzFOLElBQUksQ0FBQ3JKLE1BSGI7Q0FJQSxJQUFFODZFLEVBQUY7O0NBQ0EsU0FBTyxFQUFFQSxFQUFGLEdBQU8vakUsQ0FBZCxFQUFpQjtDQUNmaTNELElBQUFBLENBQUMsR0FBRzNrRSxJQUFJLENBQUN5eEUsRUFBRCxDQUFSO0NBQ0FydEUsSUFBQUEsQ0FBQyxDQUFDd3RFLElBQUY7Q0FDQXh0RSxJQUFBQSxDQUFDLENBQUM4cEUsSUFBRixHQUFTdkosQ0FBQyxDQUFDM2hFLEtBQUYsR0FBVSxHQUFWLEdBQWdCMmhFLENBQUMsQ0FBQ2lMLE1BQWxCLEdBQTJCLEdBQTNCLEdBQWlDLENBQUMsRUFBRSxDQUFDakwsQ0FBQyxDQUFDei9DLElBQUYsR0FBUyxDQUFWLElBQWVpckQsS0FBakIsQ0FBbEMsR0FBNEQsS0FBNUQsR0FBb0V4TCxDQUFDLENBQUN1SixJQUEvRTtDQUNBLFFBQUlnRCxDQUFDLEdBQUc5c0UsQ0FBQyxDQUFDeXRFLFdBQUYsQ0FBY2xOLENBQUMsQ0FBQ2xZLElBQUYsR0FBUyxHQUF2QixFQUE0QndqQixLQUE1QixHQUFvQ0UsS0FBNUM7Q0FBQSxRQUNJb0IsQ0FBQyxHQUFHNU0sQ0FBQyxDQUFDei9DLElBQUYsSUFBVSxDQURsQjs7Q0FFQSxRQUFJeS9DLENBQUMsQ0FBQzhKLE1BQU4sRUFBYztDQUNaLFVBQUlxRCxFQUFFLEdBQUczOUUsSUFBSSxDQUFDNDlFLEdBQUwsQ0FBU3BOLENBQUMsQ0FBQzhKLE1BQUYsR0FBV1YsWUFBcEIsQ0FBVDtDQUFBLFVBQ0lpRSxFQUFFLEdBQUc3OUUsSUFBSSxDQUFDODlFLEdBQUwsQ0FBU3ROLENBQUMsQ0FBQzhKLE1BQUYsR0FBV1YsWUFBcEIsQ0FEVDtDQUFBLFVBRUltRSxHQUFHLEdBQUdoQixDQUFDLEdBQUdjLEVBRmQ7Q0FBQSxVQUdJRyxHQUFHLEdBQUdqQixDQUFDLEdBQUdZLEVBSGQ7Q0FBQSxVQUlJTSxHQUFHLEdBQUdiLENBQUMsR0FBR1MsRUFKZDtDQUFBLFVBS0lLLEdBQUcsR0FBR2QsQ0FBQyxHQUFHTyxFQUxkO0NBTUFaLE1BQUFBLENBQUMsR0FBSS84RSxJQUFJLENBQUMrSixHQUFMLENBQVMvSixJQUFJLENBQUNrakIsR0FBTCxDQUFTNjZELEdBQUcsR0FBR0csR0FBZixDQUFULEVBQThCbCtFLElBQUksQ0FBQ2tqQixHQUFMLENBQVM2NkQsR0FBRyxHQUFHRyxHQUFmLENBQTlCLElBQXFELElBQXRELElBQStELENBQS9ELElBQW9FLENBQXhFO0NBQ0FkLE1BQUFBLENBQUMsR0FBRyxDQUFDLENBQUNwOUUsSUFBSSxDQUFDK0osR0FBTCxDQUFTL0osSUFBSSxDQUFDa2pCLEdBQUwsQ0FBUzg2RCxHQUFHLEdBQUdDLEdBQWYsQ0FBVCxFQUE4QmorRSxJQUFJLENBQUNrakIsR0FBTCxDQUFTODZELEdBQUcsR0FBR0MsR0FBZixDQUE5QixDQUFOO0NBQ0QsS0FURCxNQVNPO0NBQ0xsQixNQUFBQSxDQUFDLEdBQUlBLENBQUMsR0FBRyxJQUFMLElBQWMsQ0FBZCxJQUFtQixDQUF2QjtDQUNEOztDQUNELFFBQUlLLENBQUMsR0FBR0ksSUFBUixFQUFjQSxJQUFJLEdBQUdKLENBQVA7O0NBQ2QsUUFBSWw3RCxDQUFDLEdBQUc2NkQsQ0FBSixJQUFVbEQsRUFBRSxJQUFJLENBQXBCLEVBQXdCO0NBQ3RCMzNELE1BQUFBLENBQUMsR0FBRyxDQUFKO0NBQ0FDLE1BQUFBLENBQUMsSUFBSXE3RCxJQUFMO0NBQ0FBLE1BQUFBLElBQUksR0FBRyxDQUFQO0NBQ0Q7O0NBQ0QsUUFBSXI3RCxDQUFDLEdBQUdpN0QsQ0FBSixJQUFTM3hDLEVBQWIsRUFBaUI7Q0FDakJ4N0IsSUFBQUEsQ0FBQyxDQUFDa3VFLFNBQUYsQ0FBWSxDQUFDajhELENBQUMsSUFBSTY2RCxDQUFDLElBQUksQ0FBVCxDQUFGLElBQWlCZixLQUE3QixFQUFvQyxDQUFDNzVELENBQUMsSUFBSWk3RCxDQUFDLElBQUksQ0FBVCxDQUFGLElBQWlCcEIsS0FBckQ7Q0FDQSxRQUFJeEwsQ0FBQyxDQUFDOEosTUFBTixFQUFjcnFFLENBQUMsQ0FBQ3FxRSxNQUFGLENBQVM5SixDQUFDLENBQUM4SixNQUFGLEdBQVdWLFlBQXBCO0NBQ2QzcEUsSUFBQUEsQ0FBQyxDQUFDbXVFLFFBQUYsQ0FBVzVOLENBQUMsQ0FBQ2xZLElBQWIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEI7Q0FDQSxRQUFJa1ksQ0FBQyxDQUFDZ0ssT0FBTixFQUFldnFFLENBQUMsQ0FBQ291RSxTQUFGLEdBQWMsSUFBSTdOLENBQUMsQ0FBQ2dLLE9BQXBCLEVBQTZCdnFFLENBQUMsQ0FBQ3F1RSxVQUFGLENBQWE5TixDQUFDLENBQUNsWSxJQUFmLEVBQXFCLENBQXJCLEVBQXdCLENBQXhCLENBQTdCO0NBQ2Zyb0QsSUFBQUEsQ0FBQyxDQUFDc3VFLE9BQUY7Q0FDQS9OLElBQUFBLENBQUMsQ0FBQ3NMLEtBQUYsR0FBVWlCLENBQVY7Q0FDQXZNLElBQUFBLENBQUMsQ0FBQ3VMLE1BQUYsR0FBV3FCLENBQVg7Q0FDQTVNLElBQUFBLENBQUMsQ0FBQ2dPLElBQUYsR0FBU3Q4RCxDQUFUO0NBQ0FzdUQsSUFBQUEsQ0FBQyxDQUFDaU8sSUFBRixHQUFTdDhELENBQVQ7Q0FDQXF1RCxJQUFBQSxDQUFDLENBQUM5eUIsRUFBRixHQUFPcS9CLENBQUMsSUFBSSxDQUFaO0NBQ0F2TSxJQUFBQSxDQUFDLENBQUM1eUIsRUFBRixHQUFPdy9CLENBQUMsSUFBSSxDQUFaO0NBQ0E1TSxJQUFBQSxDQUFDLENBQUMveUIsRUFBRixHQUFPLENBQUMreUIsQ0FBQyxDQUFDOXlCLEVBQVY7Q0FDQTh5QixJQUFBQSxDQUFDLENBQUM3eUIsRUFBRixHQUFPLENBQUM2eUIsQ0FBQyxDQUFDNXlCLEVBQVY7Q0FDQTR5QixJQUFBQSxDQUFDLENBQUNtTCxPQUFGLEdBQVksSUFBWjtDQUNBejVELElBQUFBLENBQUMsSUFBSTY2RCxDQUFMO0NBQ0Q7O0NBQ0QsTUFBSTJCLE1BQU0sR0FBR3p1RSxDQUFDLENBQUNnc0UsWUFBRixDQUFlLENBQWYsRUFBa0IsQ0FBbEIsRUFBcUIsQ0FBQ3BDLEVBQUUsSUFBSSxDQUFQLElBQVltQyxLQUFqQyxFQUF3Q3Z3QyxFQUFFLEdBQUd1d0MsS0FBN0MsRUFBb0Rud0UsSUFBakU7Q0FBQSxNQUNJaXhFLE1BQU0sR0FBRyxFQURiOztDQUVBLFNBQU8sRUFBRVEsRUFBRixJQUFRLENBQWYsRUFBa0I7Q0FDaEI5TSxJQUFBQSxDQUFDLEdBQUcza0UsSUFBSSxDQUFDeXhFLEVBQUQsQ0FBUjtDQUNBLFFBQUksQ0FBQzlNLENBQUMsQ0FBQ21MLE9BQVAsRUFBZ0I7Q0FDaEIsUUFBSW9CLENBQUMsR0FBR3ZNLENBQUMsQ0FBQ3NMLEtBQVY7Q0FBQSxRQUNJNkMsR0FBRyxHQUFHNUIsQ0FBQyxJQUFJLENBRGY7Q0FBQSxRQUVJSyxDQUFDLEdBQUc1TSxDQUFDLENBQUM1eUIsRUFBRixHQUFPNHlCLENBQUMsQ0FBQzd5QixFQUZqQixDQUhnQjs7Q0FPaEIsU0FBSyxJQUFJNXlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdxeUUsQ0FBQyxHQUFHdUIsR0FBeEIsRUFBNkI1ekUsQ0FBQyxFQUE5QixFQUFrQyt4RSxNQUFNLENBQUMveEUsQ0FBRCxDQUFOLEdBQVksQ0FBWjs7Q0FDbENtWCxJQUFBQSxDQUFDLEdBQUdzdUQsQ0FBQyxDQUFDZ08sSUFBTjtDQUNBLFFBQUl0OEQsQ0FBQyxJQUFJLElBQVQsRUFBZTtDQUNmQyxJQUFBQSxDQUFDLEdBQUdxdUQsQ0FBQyxDQUFDaU8sSUFBTjtDQUNBLFFBQUlHLElBQUksR0FBRyxDQUFYO0NBQUEsUUFDSUMsT0FBTyxHQUFHLENBQUMsQ0FEZjs7Q0FFQSxTQUFLLElBQUluK0QsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzA4RCxDQUFwQixFQUF1QjE4RCxDQUFDLEVBQXhCLEVBQTRCO0NBQzFCLFdBQUssSUFBSTNWLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdneUUsQ0FBcEIsRUFBdUJoeUUsQ0FBQyxFQUF4QixFQUE0QjtDQUMxQixZQUFJdU4sQ0FBQyxHQUFHcW1FLEdBQUcsR0FBR2orRCxDQUFOLElBQVczVixDQUFDLElBQUksQ0FBaEIsQ0FBUjtDQUFBLFlBQ0l3Z0MsQ0FBQyxHQUFHbXpDLE1BQU0sQ0FBRSxDQUFDdjhELENBQUMsR0FBR3pCLENBQUwsS0FBV201RCxFQUFFLElBQUksQ0FBakIsS0FBdUIzM0QsQ0FBQyxHQUFHblgsQ0FBM0IsQ0FBRCxJQUFtQyxDQUFwQyxDQUFOLEdBQStDLEtBQU0sS0FBTUEsQ0FBQyxHQUFHLEVBQS9ELEdBQXNFLENBRDlFO0NBRUEreEUsUUFBQUEsTUFBTSxDQUFDeGtFLENBQUQsQ0FBTixJQUFhaXpCLENBQWI7Q0FDQXF6QyxRQUFBQSxJQUFJLElBQUlyekMsQ0FBUjtDQUNEOztDQUNELFVBQUlxekMsSUFBSixFQUFVQyxPQUFPLEdBQUduK0QsQ0FBVixDQUFWLEtBQ0s7Q0FDSDh2RCxRQUFBQSxDQUFDLENBQUM3eUIsRUFBRjtDQUNBeS9CLFFBQUFBLENBQUM7Q0FDRDE4RCxRQUFBQSxDQUFDO0NBQ0R5QixRQUFBQSxDQUFDO0NBQ0Y7Q0FDRjs7Q0FDRHF1RCxJQUFBQSxDQUFDLENBQUM1eUIsRUFBRixHQUFPNHlCLENBQUMsQ0FBQzd5QixFQUFGLEdBQU9raEMsT0FBZDtDQUNBck8sSUFBQUEsQ0FBQyxDQUFDc00sTUFBRixHQUFXQSxNQUFNLENBQUNuN0UsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBQzZ1RSxDQUFDLENBQUM1eUIsRUFBRixHQUFPNHlCLENBQUMsQ0FBQzd5QixFQUFWLElBQWdCZ2hDLEdBQWhDLENBQVg7Q0FDRDtDQUNGOzs7Q0FHRCxTQUFTL0IsWUFBVCxDQUFzQnh2RSxHQUF0QixFQUEyQml1RSxLQUEzQixFQUFrQzJCLEVBQWxDLEVBQXNDO0NBQ3BDQSxFQUFBQSxFQUFFLEtBQUssQ0FBUDtDQUNBLE1BQUlGLE1BQU0sR0FBRzF2RSxHQUFHLENBQUMwdkUsTUFBakI7Q0FBQSxNQUNJQyxDQUFDLEdBQUczdkUsR0FBRyxDQUFDMHVFLEtBQUosSUFBYSxDQURyQjtDQUFBLE1BRUltQixFQUFFLEdBQUc3dkUsR0FBRyxDQUFDOFUsQ0FBSixJQUFTNjZELENBQUMsSUFBSSxDQUFkLENBRlQ7Q0FBQSxNQUdJRyxFQUFFLEdBQUdELEVBQUUsR0FBRyxJQUhkO0NBQUEsTUFJSUUsR0FBRyxHQUFHLEtBQUtELEVBSmY7Q0FBQSxNQUtJRSxDQUFDLEdBQUdod0UsR0FBRyxDQUFDd3dDLEVBQUosR0FBU3h3QyxHQUFHLENBQUN1d0MsRUFMckI7Q0FBQSxNQU1JejdCLENBQUMsR0FBRyxDQUFDOVUsR0FBRyxDQUFDK1UsQ0FBSixHQUFRL1UsR0FBRyxDQUFDdXdDLEVBQWIsSUFBbUJxL0IsRUFBbkIsSUFBeUJDLEVBQUUsSUFBSSxDQUEvQixDQU5SO0NBQUEsTUFPSW5zRCxJQVBKOztDQVFBLE9BQUssSUFBSXBRLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcwOEQsQ0FBcEIsRUFBdUIxOEQsQ0FBQyxFQUF4QixFQUE0QjtDQUMxQm9RLElBQUFBLElBQUksR0FBRyxDQUFQOztDQUNBLFNBQUssSUFBSS9sQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxJQUFJZ3lFLENBQXJCLEVBQXdCaHlFLENBQUMsRUFBekIsRUFBNkI7Q0FDM0IsVUFBSSxDQUFFK2xCLElBQUksSUFBSXFzRCxHQUFULElBQWlCcHlFLENBQUMsR0FBR2d5RSxDQUFKLEdBQVEsQ0FBQ2pzRCxJQUFJLEdBQUdnc0QsTUFBTSxDQUFDcDhELENBQUMsR0FBR3E4RCxDQUFKLEdBQVFoeUUsQ0FBVCxDQUFkLE1BQStCbXlFLEVBQXZDLEdBQTRDLENBQTdELENBQUQsSUFDRTdCLEtBQUssQ0FBQ241RCxDQUFDLEdBQUduWCxDQUFMLENBRFgsRUFDb0IsT0FBTyxJQUFQO0NBQ3JCOztDQUNEbVgsSUFBQUEsQ0FBQyxJQUFJODZELEVBQUw7Q0FDRDs7Q0FDRCxTQUFPLEtBQVA7Q0FDRDs7Q0FFRCxTQUFTbkIsV0FBVCxDQUFxQk4sTUFBckIsRUFBNkIvSyxDQUE3QixFQUFnQztDQUM5QixNQUFJc08sRUFBRSxHQUFHdkQsTUFBTSxDQUFDLENBQUQsQ0FBZjtDQUFBLE1BQ0l3RCxFQUFFLEdBQUd4RCxNQUFNLENBQUMsQ0FBRCxDQURmO0NBRUEsTUFBSS9LLENBQUMsQ0FBQ3R1RCxDQUFGLEdBQU1zdUQsQ0FBQyxDQUFDL3lCLEVBQVIsR0FBYXFoQyxFQUFFLENBQUM1OEQsQ0FBcEIsRUFBdUI0OEQsRUFBRSxDQUFDNThELENBQUgsR0FBT3N1RCxDQUFDLENBQUN0dUQsQ0FBRixHQUFNc3VELENBQUMsQ0FBQy95QixFQUFmO0NBQ3ZCLE1BQUkreUIsQ0FBQyxDQUFDcnVELENBQUYsR0FBTXF1RCxDQUFDLENBQUM3eUIsRUFBUixHQUFhbWhDLEVBQUUsQ0FBQzM4RCxDQUFwQixFQUF1QjI4RCxFQUFFLENBQUMzOEQsQ0FBSCxHQUFPcXVELENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU1xdUQsQ0FBQyxDQUFDN3lCLEVBQWY7Q0FDdkIsTUFBSTZ5QixDQUFDLENBQUN0dUQsQ0FBRixHQUFNc3VELENBQUMsQ0FBQzl5QixFQUFSLEdBQWFxaEMsRUFBRSxDQUFDNzhELENBQXBCLEVBQXVCNjhELEVBQUUsQ0FBQzc4RCxDQUFILEdBQU9zdUQsQ0FBQyxDQUFDdHVELENBQUYsR0FBTXN1RCxDQUFDLENBQUM5eUIsRUFBZjtDQUN2QixNQUFJOHlCLENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU1xdUQsQ0FBQyxDQUFDNXlCLEVBQVIsR0FBYW1oQyxFQUFFLENBQUM1OEQsQ0FBcEIsRUFBdUI0OEQsRUFBRSxDQUFDNThELENBQUgsR0FBT3F1RCxDQUFDLENBQUNydUQsQ0FBRixHQUFNcXVELENBQUMsQ0FBQzV5QixFQUFmO0NBQ3hCOztDQUVELFNBQVNpL0IsWUFBVCxDQUFzQnoyRSxDQUF0QixFQUF5QjRKLENBQXpCLEVBQTRCO0NBQzFCLFNBQU81SixDQUFDLENBQUM4YixDQUFGLEdBQU05YixDQUFDLENBQUNzM0MsRUFBUixHQUFhMXRDLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS2tTLENBQWxCLElBQXVCOWIsQ0FBQyxDQUFDOGIsQ0FBRixHQUFNOWIsQ0FBQyxDQUFDcTNDLEVBQVIsR0FBYXp0QyxDQUFDLENBQUMsQ0FBRCxDQUFELENBQUtrUyxDQUF6QyxJQUE4QzliLENBQUMsQ0FBQytiLENBQUYsR0FBTS9iLENBQUMsQ0FBQ3czQyxFQUFSLEdBQWE1dEMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFLbVMsQ0FBaEUsSUFBcUUvYixDQUFDLENBQUMrYixDQUFGLEdBQU0vYixDQUFDLENBQUN1M0MsRUFBUixHQUFhM3RDLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS21TLENBQTlGO0NBQ0Q7O0NBRUQsU0FBU3c0RCxpQkFBVCxDQUEyQjVwRCxJQUEzQixFQUFpQztDQUMvQixNQUFJdUcsQ0FBQyxHQUFHdkcsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVQSxJQUFJLENBQUMsQ0FBRCxDQUF0QjtDQUNBLFNBQU8sVUFBUytCLENBQVQsRUFBWTtDQUNqQixXQUFPLENBQUN3RSxDQUFDLElBQUl4RSxDQUFDLElBQUksRUFBVCxDQUFELEdBQWdCOXlCLElBQUksQ0FBQzg5RSxHQUFMLENBQVNockQsQ0FBVCxDQUFqQixFQUE4QkEsQ0FBQyxHQUFHOXlCLElBQUksQ0FBQzQ5RSxHQUFMLENBQVM5cUQsQ0FBVCxDQUFsQyxDQUFQO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNrc0QsaUJBQVQsQ0FBMkJqdUQsSUFBM0IsRUFBaUM7Q0FDL0IsTUFBSTRyRCxFQUFFLEdBQUcsQ0FBVDtDQUFBLE1BQ0lELEVBQUUsR0FBR0MsRUFBRSxHQUFHNXJELElBQUksQ0FBQyxDQUFELENBQVQsR0FBZUEsSUFBSSxDQUFDLENBQUQsQ0FENUI7Q0FBQSxNQUVJN08sQ0FBQyxHQUFHLENBRlI7Q0FBQSxNQUdJQyxDQUFDLEdBQUcsQ0FIUjtDQUlBLFNBQU8sVUFBUzJRLENBQVQsRUFBWTtDQUNqQixRQUFJaFAsSUFBSSxHQUFHZ1AsQ0FBQyxHQUFHLENBQUosR0FBUSxDQUFDLENBQVQsR0FBYSxDQUF4QixDQURpQjs7Q0FHakIsWUFBUzl5QixJQUFJLENBQUMreEIsSUFBTCxDQUFVLElBQUksSUFBSWpPLElBQUosR0FBV2dQLENBQXpCLElBQThCaFAsSUFBL0IsR0FBdUMsQ0FBL0M7Q0FDRSxXQUFLLENBQUw7Q0FBUzVCLFFBQUFBLENBQUMsSUFBSXc2RCxFQUFMO0NBQVM7O0NBQ2xCLFdBQUssQ0FBTDtDQUFTdjZELFFBQUFBLENBQUMsSUFBSXc2RCxFQUFMO0NBQVM7O0NBQ2xCLFdBQUssQ0FBTDtDQUFTejZELFFBQUFBLENBQUMsSUFBSXc2RCxFQUFMO0NBQVM7O0NBQ2xCO0NBQVN2NkQsUUFBQUEsQ0FBQyxJQUFJdzZELEVBQUw7Q0FBUztDQUpwQjs7Q0FNQSxXQUFPLENBQUN6NkQsQ0FBRCxFQUFJQyxDQUFKLENBQVA7Q0FDRCxHQVZEO0NBV0Q7OztDQUdELFNBQVNtNUQsU0FBVCxDQUFtQi9oRSxDQUFuQixFQUFzQjtDQUNwQixNQUFJblQsQ0FBQyxHQUFHLEVBQVI7Q0FBQSxNQUNJMkUsQ0FBQyxHQUFHLENBQUMsQ0FEVDs7Q0FFQSxTQUFPLEVBQUVBLENBQUYsR0FBTXdPLENBQWIsRUFBZ0JuVCxDQUFDLENBQUMyRSxDQUFELENBQUQsR0FBTyxDQUFQOztDQUNoQixTQUFPM0UsQ0FBUDtDQUNEOztDQUVELFNBQVM2MEUsV0FBVCxHQUF1QjtDQUNyQixTQUFPajFFLFFBQVEsQ0FBQ0UsYUFBVCxDQUF1QixRQUF2QixDQUFQO0NBQ0Q7O0NBRUQsU0FBU2cxRSxPQUFULENBQWlCMUssQ0FBakIsRUFBb0I7Q0FDbEIsU0FBTyxPQUFPQSxDQUFQLEtBQWEsVUFBYixHQUEwQkEsQ0FBMUIsR0FBOEIsWUFBVztDQUFFLFdBQU9BLENBQVA7Q0FBVyxHQUE3RDtDQUNEOztDQUVELElBQUk2TSxPQUFPLEdBQUc7Q0FDWjRCLEVBQUFBLFdBQVcsRUFBRXRFLGlCQUREO0NBRVp1RSxFQUFBQSxXQUFXLEVBQUVGO0NBRkQsQ0FBZDs7OztDQ3pZQSxJQUFJRyxjQUFjLEdBQUcsT0FBTy9vQixPQUFQLEtBQW1CLFdBQXhDO0NBQ0EsSUFBSWdwQixNQUFNLEdBQUcsT0FBT3p0RCxHQUFQLEtBQWUsVUFBNUI7Q0FDQSxJQUFJMHRELE1BQU0sR0FBRyxPQUFPaDRDLEdBQVAsS0FBZSxVQUE1QjtDQUNBLElBQUlpNEMsY0FBYyxHQUFHLE9BQU92OEQsV0FBUCxLQUF1QixVQUF2QixJQUFxQyxDQUFDLENBQUNBLFdBQVcsQ0FBQ2tHLE1BQXhFOztDQUlBLFNBQVNzMkQsS0FBVCxDQUFlbjVFLENBQWYsRUFBa0I0SixDQUFsQixFQUFxQjtDQUNuQjtDQUNBLE1BQUk1SixDQUFDLEtBQUs0SixDQUFWLEVBQWEsT0FBTyxJQUFQOztDQUViLE1BQUk1SixDQUFDLElBQUk0SixDQUFMLElBQVUsT0FBTzVKLENBQVAsSUFBWSxRQUF0QixJQUFrQyxPQUFPNEosQ0FBUCxJQUFZLFFBQWxELEVBQTREO0NBQzFELFFBQUk1SixDQUFDLENBQUMwSyxXQUFGLEtBQWtCZCxDQUFDLENBQUNjLFdBQXhCLEVBQXFDLE9BQU8sS0FBUDtDQUVyQyxRQUFJdE8sTUFBSixFQUFZdUksQ0FBWixFQUFlekQsSUFBZjs7Q0FDQSxRQUFJdUYsS0FBSyxDQUFDQyxPQUFOLENBQWMxRyxDQUFkLENBQUosRUFBc0I7Q0FDcEI1RCxNQUFBQSxNQUFNLEdBQUc0RCxDQUFDLENBQUM1RCxNQUFYO0NBQ0EsVUFBSUEsTUFBTSxJQUFJd04sQ0FBQyxDQUFDeE4sTUFBaEIsRUFBd0IsT0FBTyxLQUFQOztDQUN4QixXQUFLdUksQ0FBQyxHQUFHdkksTUFBVCxFQUFpQnVJLENBQUMsT0FBTyxDQUF6QixHQUNFLElBQUksQ0FBQ3cwRSxLQUFLLENBQUNuNUUsQ0FBQyxDQUFDMkUsQ0FBRCxDQUFGLEVBQU9pRixDQUFDLENBQUNqRixDQUFELENBQVIsQ0FBVixFQUF3QixPQUFPLEtBQVA7O0NBQzFCLGFBQU8sSUFBUDtDQUNELEtBVnlEO0NBYTFEO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBOzs7Q0FDQSxRQUFJaEwsRUFBSjs7Q0FDQSxRQUFJcS9FLE1BQU0sSUFBS2g1RSxDQUFDLFlBQVl1ckIsR0FBeEIsSUFBaUMzaEIsQ0FBQyxZQUFZMmhCLEdBQWxELEVBQXdEO0NBQ3RELFVBQUl2ckIsQ0FBQyxDQUFDMnFCLElBQUYsS0FBVy9nQixDQUFDLENBQUMrZ0IsSUFBakIsRUFBdUIsT0FBTyxLQUFQO0NBQ3ZCaHhCLE1BQUFBLEVBQUUsR0FBR3FHLENBQUMsQ0FBQzZYLE9BQUYsRUFBTDs7Q0FDQSxhQUFPLENBQUMsQ0FBQ2xULENBQUMsR0FBR2hMLEVBQUUsQ0FBQ29YLElBQUgsRUFBTCxFQUFnQkssSUFBeEIsRUFDRSxJQUFJLENBQUN4SCxDQUFDLENBQUNuSSxHQUFGLENBQU1rRCxDQUFDLENBQUN4SixLQUFGLENBQVEsQ0FBUixDQUFOLENBQUwsRUFBd0IsT0FBTyxLQUFQOztDQUMxQnhCLE1BQUFBLEVBQUUsR0FBR3FHLENBQUMsQ0FBQzZYLE9BQUYsRUFBTDs7Q0FDQSxhQUFPLENBQUMsQ0FBQ2xULENBQUMsR0FBR2hMLEVBQUUsQ0FBQ29YLElBQUgsRUFBTCxFQUFnQkssSUFBeEIsRUFDRSxJQUFJLENBQUMrbkUsS0FBSyxDQUFDeDBFLENBQUMsQ0FBQ3hKLEtBQUYsQ0FBUSxDQUFSLENBQUQsRUFBYXlPLENBQUMsQ0FBQ25QLEdBQUYsQ0FBTWtLLENBQUMsQ0FBQ3hKLEtBQUYsQ0FBUSxDQUFSLENBQU4sQ0FBYixDQUFWLEVBQTJDLE9BQU8sS0FBUDs7Q0FDN0MsYUFBTyxJQUFQO0NBQ0Q7O0NBRUQsUUFBSTg5RSxNQUFNLElBQUtqNUUsQ0FBQyxZQUFZaWhDLEdBQXhCLElBQWlDcjNCLENBQUMsWUFBWXEzQixHQUFsRCxFQUF3RDtDQUN0RCxVQUFJamhDLENBQUMsQ0FBQzJxQixJQUFGLEtBQVcvZ0IsQ0FBQyxDQUFDK2dCLElBQWpCLEVBQXVCLE9BQU8sS0FBUDtDQUN2Qmh4QixNQUFBQSxFQUFFLEdBQUdxRyxDQUFDLENBQUM2WCxPQUFGLEVBQUw7O0NBQ0EsYUFBTyxDQUFDLENBQUNsVCxDQUFDLEdBQUdoTCxFQUFFLENBQUNvWCxJQUFILEVBQUwsRUFBZ0JLLElBQXhCLEVBQ0UsSUFBSSxDQUFDeEgsQ0FBQyxDQUFDbkksR0FBRixDQUFNa0QsQ0FBQyxDQUFDeEosS0FBRixDQUFRLENBQVIsQ0FBTixDQUFMLEVBQXdCLE9BQU8sS0FBUDs7Q0FDMUIsYUFBTyxJQUFQO0NBQ0QsS0FsRHlEOzs7Q0FxRDFELFFBQUkrOUUsY0FBYyxJQUFJdjhELFdBQVcsQ0FBQ2tHLE1BQVosQ0FBbUI3aUIsQ0FBbkIsQ0FBbEIsSUFBMkMyYyxXQUFXLENBQUNrRyxNQUFaLENBQW1CalosQ0FBbkIsQ0FBL0MsRUFBc0U7Q0FDcEV4TixNQUFBQSxNQUFNLEdBQUc0RCxDQUFDLENBQUM1RCxNQUFYO0NBQ0EsVUFBSUEsTUFBTSxJQUFJd04sQ0FBQyxDQUFDeE4sTUFBaEIsRUFBd0IsT0FBTyxLQUFQOztDQUN4QixXQUFLdUksQ0FBQyxHQUFHdkksTUFBVCxFQUFpQnVJLENBQUMsT0FBTyxDQUF6QixHQUNFLElBQUkzRSxDQUFDLENBQUMyRSxDQUFELENBQUQsS0FBU2lGLENBQUMsQ0FBQ2pGLENBQUQsQ0FBZCxFQUFtQixPQUFPLEtBQVA7O0NBQ3JCLGFBQU8sSUFBUDtDQUNEOztDQUVELFFBQUkzRSxDQUFDLENBQUMwSyxXQUFGLEtBQWtCa2tCLE1BQXRCLEVBQThCLE9BQU81dUIsQ0FBQyxDQUFDcUQsTUFBRixLQUFhdUcsQ0FBQyxDQUFDdkcsTUFBZixJQUF5QnJELENBQUMsQ0FBQzI5QixLQUFGLEtBQVkvekIsQ0FBQyxDQUFDK3pCLEtBQTlDO0NBQzlCLFFBQUkzOUIsQ0FBQyxDQUFDaEMsT0FBRixLQUFjekQsTUFBTSxDQUFDK0gsU0FBUCxDQUFpQnRFLE9BQW5DLEVBQTRDLE9BQU9nQyxDQUFDLENBQUNoQyxPQUFGLE9BQWdCNEwsQ0FBQyxDQUFDNUwsT0FBRixFQUF2QjtDQUM1QyxRQUFJZ0MsQ0FBQyxDQUFDMUUsUUFBRixLQUFlZixNQUFNLENBQUMrSCxTQUFQLENBQWlCaEgsUUFBcEMsRUFBOEMsT0FBTzBFLENBQUMsQ0FBQzFFLFFBQUYsT0FBaUJzTyxDQUFDLENBQUN0TyxRQUFGLEVBQXhCO0NBRTlDNEYsSUFBQUEsSUFBSSxHQUFHM0csTUFBTSxDQUFDMkcsSUFBUCxDQUFZbEIsQ0FBWixDQUFQO0NBQ0E1RCxJQUFBQSxNQUFNLEdBQUc4RSxJQUFJLENBQUM5RSxNQUFkO0NBQ0EsUUFBSUEsTUFBTSxLQUFLN0IsTUFBTSxDQUFDMkcsSUFBUCxDQUFZMEksQ0FBWixFQUFleE4sTUFBOUIsRUFBc0MsT0FBTyxLQUFQOztDQUV0QyxTQUFLdUksQ0FBQyxHQUFHdkksTUFBVCxFQUFpQnVJLENBQUMsT0FBTyxDQUF6QixHQUNFLElBQUksQ0FBQ3BLLE1BQU0sQ0FBQytILFNBQVAsQ0FBaUI3RCxjQUFqQixDQUFnQzNELElBQWhDLENBQXFDOE8sQ0FBckMsRUFBd0MxSSxJQUFJLENBQUN5RCxDQUFELENBQTVDLENBQUwsRUFBdUQsT0FBTyxLQUFQLENBdEVDO0NBeUUxRDtDQUNBOzs7Q0FDQSxRQUFJbzBFLGNBQWMsSUFBSS80RSxDQUFDLFlBQVlnd0QsT0FBbkMsRUFBNEMsT0FBTyxLQUFQLENBM0VjOztDQThFMUQsU0FBS3JyRCxDQUFDLEdBQUd2SSxNQUFULEVBQWlCdUksQ0FBQyxPQUFPLENBQXpCLEdBQTZCO0NBQzNCLFVBQUksQ0FBQ3pELElBQUksQ0FBQ3lELENBQUQsQ0FBSixLQUFZLFFBQVosSUFBd0J6RCxJQUFJLENBQUN5RCxDQUFELENBQUosS0FBWSxLQUFwQyxJQUE2Q3pELElBQUksQ0FBQ3lELENBQUQsQ0FBSixLQUFZLEtBQTFELEtBQW9FM0UsQ0FBQyxDQUFDeXZELFFBQTFFLEVBQW9GO0NBQ2xGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBRUE7Q0FDRCxPQVgwQjs7O0NBYzNCLFVBQUksQ0FBQzBwQixLQUFLLENBQUNuNUUsQ0FBQyxDQUFDa0IsSUFBSSxDQUFDeUQsQ0FBRCxDQUFMLENBQUYsRUFBYWlGLENBQUMsQ0FBQzFJLElBQUksQ0FBQ3lELENBQUQsQ0FBTCxDQUFkLENBQVYsRUFBb0MsT0FBTyxLQUFQO0NBQ3JDLEtBN0Z5RDtDQWdHMUQ7OztDQUNBLFdBQU8sSUFBUDtDQUNEOztDQUVELFNBQU8zRSxDQUFDLEtBQUtBLENBQU4sSUFBVzRKLENBQUMsS0FBS0EsQ0FBeEI7Q0FDRDs7O0tBR0QvUCxnQkFBQSxHQUFpQixTQUFTdS9FLE9BQVQsQ0FBaUJwNUUsQ0FBakIsRUFBb0I0SixDQUFwQixFQUF1QjtDQUN0QyxNQUFJO0NBQ0YsV0FBT3V2RSxLQUFLLENBQUNuNUUsQ0FBRCxFQUFJNEosQ0FBSixDQUFaO0NBQ0QsR0FGRCxDQUVFLE9BQU94UCxLQUFQLEVBQWM7Q0FDZCxRQUFLLENBQUNBLEtBQUssQ0FBQ3NYLE9BQU4sSUFBaUIsRUFBbEIsRUFBc0I5VSxLQUF0QixDQUE0QixrQkFBNUIsQ0FBTCxFQUF1RDtDQUNyRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0FtNkIsTUFBQUEsT0FBTyxDQUFDc2lELElBQVIsQ0FBYSxnREFBYjtDQUNBLGFBQU8sS0FBUDtDQUNELEtBVGE7OztDQVdkLFVBQU1qL0UsS0FBTjtDQUNEO0NBQ0YsQ0FoQkQ7O0NDckhPLElBQUlrL0UsS0FBSyxHQUFHLDhCQUFaO0FBRVAsa0JBQWU7Q0FDYkMsRUFBQUEsR0FBRyxFQUFFLDRCQURRO0NBRWJELEVBQUFBLEtBQUssRUFBRUEsS0FGTTtDQUdiRSxFQUFBQSxLQUFLLEVBQUUsOEJBSE07Q0FJYkMsRUFBQUEsR0FBRyxFQUFFLHNDQUpRO0NBS2JDLEVBQUFBLEtBQUssRUFBRTtDQUxNLENBQWY7O0NDQWUsb0JBQVN2NkUsSUFBVCxFQUFlO0NBQzVCLE1BQUkwOEQsTUFBTSxHQUFHMThELElBQUksSUFBSSxFQUFyQjtDQUFBLE1BQXlCd0YsQ0FBQyxHQUFHazNELE1BQU0sQ0FBQ3AzRCxPQUFQLENBQWUsR0FBZixDQUE3QjtDQUNBLE1BQUlFLENBQUMsSUFBSSxDQUFMLElBQVUsQ0FBQ2szRCxNQUFNLEdBQUcxOEQsSUFBSSxDQUFDNUQsS0FBTCxDQUFXLENBQVgsRUFBY29KLENBQWQsQ0FBVixNQUFnQyxPQUE5QyxFQUF1RHhGLElBQUksR0FBR0EsSUFBSSxDQUFDNUQsS0FBTCxDQUFXb0osQ0FBQyxHQUFHLENBQWYsQ0FBUDtDQUN2RCxTQUFPZzFFLFVBQVUsQ0FBQ2w3RSxjQUFYLENBQTBCbzlELE1BQTFCLElBQW9DO0NBQUNydEQsSUFBQUEsS0FBSyxFQUFFbXJFLFVBQVUsQ0FBQzlkLE1BQUQsQ0FBbEI7Q0FBNEIrZCxJQUFBQSxLQUFLLEVBQUV6NkU7Q0FBbkMsR0FBcEMsR0FBK0VBLElBQXRGLENBSDRCO0NBSTdCOztDQ0hELFNBQVMwNkUsY0FBVCxDQUF3QjE2RSxJQUF4QixFQUE4QjtDQUM1QixTQUFPLFlBQVc7Q0FDaEIsUUFBSVMsUUFBUSxHQUFHLEtBQUt3NkQsYUFBcEI7Q0FBQSxRQUNJMGYsR0FBRyxHQUFHLEtBQUtDLFlBRGY7Q0FFQSxXQUFPRCxHQUFHLEtBQUtSLEtBQVIsSUFBaUIxNUUsUUFBUSxDQUFDazdELGVBQVQsQ0FBeUJpZixZQUF6QixLQUEwQ1QsS0FBM0QsR0FDRDE1RSxRQUFRLENBQUNFLGFBQVQsQ0FBdUJYLElBQXZCLENBREMsR0FFRFMsUUFBUSxDQUFDbXpFLGVBQVQsQ0FBeUIrRyxHQUF6QixFQUE4QjM2RSxJQUE5QixDQUZOO0NBR0QsR0FORDtDQU9EOztDQUVELFNBQVM2NkUsWUFBVCxDQUFzQkMsUUFBdEIsRUFBZ0M7Q0FDOUIsU0FBTyxZQUFXO0NBQ2hCLFdBQU8sS0FBSzdmLGFBQUwsQ0FBbUIyWSxlQUFuQixDQUFtQ2tILFFBQVEsQ0FBQ3pyRSxLQUE1QyxFQUFtRHlyRSxRQUFRLENBQUNMLEtBQTVELENBQVA7Q0FDRCxHQUZEO0NBR0Q7O0NBRWMsa0JBQVN6NkUsSUFBVCxFQUFlO0NBQzVCLE1BQUk4NkUsUUFBUSxHQUFHaCtFLFNBQVMsQ0FBQ2tELElBQUQsQ0FBeEI7Q0FDQSxTQUFPLENBQUM4NkUsUUFBUSxDQUFDTCxLQUFULEdBQ0ZJLFlBREUsR0FFRkgsY0FGQyxFQUVlSSxRQUZmLENBQVA7Q0FHRDs7Q0N4QkQsU0FBU0MsSUFBVCxHQUFnQjs7Q0FFRCxtQkFBUzVWLFFBQVQsRUFBbUI7Q0FDaEMsU0FBT0EsUUFBUSxJQUFJLElBQVosR0FBbUI0VixJQUFuQixHQUEwQixZQUFXO0NBQzFDLFdBQU8sS0FBS2xTLGFBQUwsQ0FBbUIxRCxRQUFuQixDQUFQO0NBQ0QsR0FGRDtDQUdEOztDQ0hjLDJCQUFTbkIsTUFBVCxFQUFpQjtDQUM5QixNQUFJLE9BQU9BLE1BQVAsS0FBa0IsVUFBdEIsRUFBa0NBLE1BQU0sR0FBR21CLFFBQVEsQ0FBQ25CLE1BQUQsQ0FBakI7O0NBRWxDLE9BQUssSUFBSXZsQyxNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQmgxQyxDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBdEMsRUFBOENnK0UsU0FBUyxHQUFHLElBQUkzekUsS0FBSixDQUFVMCtCLENBQVYsQ0FBMUQsRUFBd0U3cUIsQ0FBQyxHQUFHLENBQWpGLEVBQW9GQSxDQUFDLEdBQUc2cUIsQ0FBeEYsRUFBMkYsRUFBRTdxQixDQUE3RixFQUFnRztDQUM5RixTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUJuSCxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQWpDLEVBQXlDaStFLFFBQVEsR0FBR0QsU0FBUyxDQUFDOS9ELENBQUQsQ0FBVCxHQUFlLElBQUk3VCxLQUFKLENBQVUwTSxDQUFWLENBQW5FLEVBQWlGMmlCLElBQWpGLEVBQXVGd2tELE9BQXZGLEVBQWdHMzFFLENBQUMsR0FBRyxDQUF6RyxFQUE0R0EsQ0FBQyxHQUFHd08sQ0FBaEgsRUFBbUgsRUFBRXhPLENBQXJILEVBQXdIO0NBQ3RILFVBQUksQ0FBQ214QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFiLE1BQXNCMjFFLE9BQU8sR0FBR25YLE1BQU0sQ0FBQ3JvRSxJQUFQLENBQVlnN0IsSUFBWixFQUFrQkEsSUFBSSxDQUFDeWtELFFBQXZCLEVBQWlDNTFFLENBQWpDLEVBQW9DdzdCLEtBQXBDLENBQWhDLENBQUosRUFBaUY7Q0FDL0UsWUFBSSxjQUFjckssSUFBbEIsRUFBd0J3a0QsT0FBTyxDQUFDQyxRQUFSLEdBQW1CemtELElBQUksQ0FBQ3lrRCxRQUF4QjtDQUN4QkYsUUFBQUEsUUFBUSxDQUFDMTFFLENBQUQsQ0FBUixHQUFjMjFFLE9BQWQ7Q0FDRDtDQUNGO0NBQ0Y7O0NBRUQsU0FBTyxJQUFJRSxTQUFKLENBQWNKLFNBQWQsRUFBeUIsS0FBS0ssUUFBOUIsQ0FBUDtDQUNEOztDQ2hCYyxnQkFBUzMrRCxDQUFULEVBQVk7Q0FDekIsU0FBTyxPQUFPQSxDQUFQLEtBQWEsUUFBYixJQUF5QixZQUFZQSxDQUFyQyxHQUNIQSxDQURHO0NBQUEsSUFFSHJWLEtBQUssQ0FBQytNLElBQU4sQ0FBV3NJLENBQVgsQ0FGSixDQUR5QjtDQUkxQjs7Q0NKRCxTQUFTL1IsS0FBVCxHQUFpQjtDQUNmLFNBQU8sRUFBUDtDQUNEOztDQUVjLHNCQUFTdTZELFFBQVQsRUFBbUI7Q0FDaEMsU0FBT0EsUUFBUSxJQUFJLElBQVosR0FBbUJ2NkQsS0FBbkIsR0FBMkIsWUFBVztDQUMzQyxXQUFPLEtBQUtxOEQsZ0JBQUwsQ0FBc0I5QixRQUF0QixDQUFQO0NBQ0QsR0FGRDtDQUdEOztDQ0pELFNBQVNvVyxRQUFULENBQWtCdlgsTUFBbEIsRUFBMEI7Q0FDeEIsU0FBTyxZQUFXO0NBQ2hCLFFBQUloakMsS0FBSyxHQUFHZ2pDLE1BQU0sQ0FBQ3I1RCxLQUFQLENBQWEsSUFBYixFQUFtQjNOLFNBQW5CLENBQVo7Q0FDQSxXQUFPZ2tDLEtBQUssSUFBSSxJQUFULEdBQWdCLEVBQWhCLEdBQXFCOXRCLEtBQUssQ0FBQzh0QixLQUFELENBQWpDO0NBQ0QsR0FIRDtDQUlEOztDQUVjLDhCQUFTZ2pDLE1BQVQsRUFBaUI7Q0FDOUIsTUFBSSxPQUFPQSxNQUFQLEtBQWtCLFVBQXRCLEVBQWtDQSxNQUFNLEdBQUd1WCxRQUFRLENBQUN2WCxNQUFELENBQWpCLENBQWxDLEtBQ0tBLE1BQU0sR0FBR3dYLFdBQVcsQ0FBQ3hYLE1BQUQsQ0FBcEI7O0NBRUwsT0FBSyxJQUFJdmxDLE1BQU0sR0FBRyxLQUFLdThDLE9BQWxCLEVBQTJCaDFDLENBQUMsR0FBR3ZILE1BQU0sQ0FBQ3hoQyxNQUF0QyxFQUE4Q2crRSxTQUFTLEdBQUcsRUFBMUQsRUFBOERRLE9BQU8sR0FBRyxFQUF4RSxFQUE0RXRnRSxDQUFDLEdBQUcsQ0FBckYsRUFBd0ZBLENBQUMsR0FBRzZxQixDQUE1RixFQUErRixFQUFFN3FCLENBQWpHLEVBQW9HO0NBQ2xHLFNBQUssSUFBSTZsQixLQUFLLEdBQUd2QyxNQUFNLENBQUN0akIsQ0FBRCxDQUFsQixFQUF1Qm5ILENBQUMsR0FBR2d0QixLQUFLLENBQUMvakMsTUFBakMsRUFBeUMwNUIsSUFBekMsRUFBK0NueEIsQ0FBQyxHQUFHLENBQXhELEVBQTJEQSxDQUFDLEdBQUd3TyxDQUEvRCxFQUFrRSxFQUFFeE8sQ0FBcEUsRUFBdUU7Q0FDckUsVUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQjtDQUNuQnkxRSxRQUFBQSxTQUFTLENBQUMvN0UsSUFBVixDQUFlOGtFLE1BQU0sQ0FBQ3JvRSxJQUFQLENBQVlnN0IsSUFBWixFQUFrQkEsSUFBSSxDQUFDeWtELFFBQXZCLEVBQWlDNTFFLENBQWpDLEVBQW9DdzdCLEtBQXBDLENBQWY7Q0FDQXk2QyxRQUFBQSxPQUFPLENBQUN2OEUsSUFBUixDQUFheTNCLElBQWI7Q0FDRDtDQUNGO0NBQ0Y7O0NBRUQsU0FBTyxJQUFJMGtELFNBQUosQ0FBY0osU0FBZCxFQUF5QlEsT0FBekIsQ0FBUDtDQUNEOztDQ3pCYyxrQkFBU3RXLFFBQVQsRUFBbUI7Q0FDaEMsU0FBTyxZQUFXO0NBQ2hCLFdBQU8sS0FBS3JHLE9BQUwsQ0FBYXFHLFFBQWIsQ0FBUDtDQUNELEdBRkQ7Q0FHRDtDQUVNLFNBQVN1VyxZQUFULENBQXNCdlcsUUFBdEIsRUFBZ0M7Q0FDckMsU0FBTyxVQUFTeHVDLElBQVQsRUFBZTtDQUNwQixXQUFPQSxJQUFJLENBQUNtb0MsT0FBTCxDQUFhcUcsUUFBYixDQUFQO0NBQ0QsR0FGRDtDQUdEOztDQ1JELElBQUl6NEQsSUFBSSxHQUFHcEYsS0FBSyxDQUFDbkUsU0FBTixDQUFnQnVKLElBQTNCOztDQUVBLFNBQVNpdkUsU0FBVCxDQUFtQmwrRSxLQUFuQixFQUEwQjtDQUN4QixTQUFPLFlBQVc7Q0FDaEIsV0FBT2lQLElBQUksQ0FBQy9RLElBQUwsQ0FBVSxLQUFLbXRFLFFBQWYsRUFBeUJyckUsS0FBekIsQ0FBUDtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTbStFLFVBQVQsR0FBc0I7Q0FDcEIsU0FBTyxLQUFLQyxpQkFBWjtDQUNEOztDQUVjLGdDQUFTcCtFLEtBQVQsRUFBZ0I7Q0FDN0IsU0FBTyxLQUFLdW1FLE1BQUwsQ0FBWXZtRSxLQUFLLElBQUksSUFBVCxHQUFnQm0rRSxVQUFoQixHQUNiRCxTQUFTLENBQUMsT0FBT2wrRSxLQUFQLEtBQWlCLFVBQWpCLEdBQThCQSxLQUE5QixHQUFzQ2krRSxZQUFZLENBQUNqK0UsS0FBRCxDQUFuRCxDQURSLENBQVA7Q0FFRDs7Q0NmRCxJQUFJOE8sTUFBTSxHQUFHakYsS0FBSyxDQUFDbkUsU0FBTixDQUFnQm9KLE1BQTdCOztDQUVBLFNBQVN1OEQsUUFBVCxHQUFvQjtDQUNsQixTQUFPLEtBQUtBLFFBQVo7Q0FDRDs7Q0FFRCxTQUFTZ1QsY0FBVCxDQUF3QnIrRSxLQUF4QixFQUErQjtDQUM3QixTQUFPLFlBQVc7Q0FDaEIsV0FBTzhPLE1BQU0sQ0FBQzVRLElBQVAsQ0FBWSxLQUFLbXRFLFFBQWpCLEVBQTJCcnJFLEtBQTNCLENBQVA7Q0FDRCxHQUZEO0NBR0Q7O0NBRWMsbUNBQVNBLEtBQVQsRUFBZ0I7Q0FDN0IsU0FBTyxLQUFLcytFLFNBQUwsQ0FBZXQrRSxLQUFLLElBQUksSUFBVCxHQUFnQnFyRSxRQUFoQixHQUNoQmdULGNBQWMsQ0FBQyxPQUFPcitFLEtBQVAsS0FBaUIsVUFBakIsR0FBOEJBLEtBQTlCLEdBQXNDaStFLFlBQVksQ0FBQ2orRSxLQUFELENBQW5ELENBRGIsQ0FBUDtDQUVEOztDQ2RjLDJCQUFTQSxLQUFULEVBQWdCO0NBQzdCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixVQUFyQixFQUFpQ0EsS0FBSyxHQUFHeW1DLE9BQU8sQ0FBQ3ptQyxLQUFELENBQWY7O0NBRWpDLE9BQUssSUFBSWdoQyxNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQmgxQyxDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBdEMsRUFBOENnK0UsU0FBUyxHQUFHLElBQUkzekUsS0FBSixDQUFVMCtCLENBQVYsQ0FBMUQsRUFBd0U3cUIsQ0FBQyxHQUFHLENBQWpGLEVBQW9GQSxDQUFDLEdBQUc2cUIsQ0FBeEYsRUFBMkYsRUFBRTdxQixDQUE3RixFQUFnRztDQUM5RixTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUJuSCxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQWpDLEVBQXlDaStFLFFBQVEsR0FBR0QsU0FBUyxDQUFDOS9ELENBQUQsQ0FBVCxHQUFlLEVBQW5FLEVBQXVFd2IsSUFBdkUsRUFBNkVueEIsQ0FBQyxHQUFHLENBQXRGLEVBQXlGQSxDQUFDLEdBQUd3TyxDQUE3RixFQUFnRyxFQUFFeE8sQ0FBbEcsRUFBcUc7Q0FDbkcsVUFBSSxDQUFDbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWIsS0FBcUIvSCxLQUFLLENBQUM5QixJQUFOLENBQVdnN0IsSUFBWCxFQUFpQkEsSUFBSSxDQUFDeWtELFFBQXRCLEVBQWdDNTFFLENBQWhDLEVBQW1DdzdCLEtBQW5DLENBQXpCLEVBQW9FO0NBQ2xFazZDLFFBQUFBLFFBQVEsQ0FBQ2g4RSxJQUFULENBQWN5M0IsSUFBZDtDQUNEO0NBQ0Y7Q0FDRjs7Q0FFRCxTQUFPLElBQUkwa0QsU0FBSixDQUFjSixTQUFkLEVBQXlCLEtBQUtLLFFBQTlCLENBQVA7Q0FDRDs7Q0NmYyxpQkFBU3hsQyxNQUFULEVBQWlCO0NBQzlCLFNBQU8sSUFBSXh1QyxLQUFKLENBQVV3dUMsTUFBTSxDQUFDNzRDLE1BQWpCLENBQVA7Q0FDRDs7Q0NDYyw0QkFBVztDQUN4QixTQUFPLElBQUlvK0UsU0FBSixDQUFjLEtBQUtXLE1BQUwsSUFBZSxLQUFLaEIsT0FBTCxDQUFhMXVFLEdBQWIsQ0FBaUIydkUsTUFBakIsQ0FBN0IsRUFBdUQsS0FBS1gsUUFBNUQsQ0FBUDtDQUNEO0NBRU0sU0FBU1ksU0FBVCxDQUFtQnBsRCxNQUFuQixFQUEyQnFsRCxLQUEzQixFQUFrQztDQUN2QyxPQUFLbGhCLGFBQUwsR0FBcUJua0MsTUFBTSxDQUFDbWtDLGFBQTVCO0NBQ0EsT0FBSzJmLFlBQUwsR0FBb0I5akQsTUFBTSxDQUFDOGpELFlBQTNCO0NBQ0EsT0FBS3dCLEtBQUwsR0FBYSxJQUFiO0NBQ0EsT0FBS0MsT0FBTCxHQUFldmxELE1BQWY7Q0FDQSxPQUFLc2tELFFBQUwsR0FBZ0JlLEtBQWhCO0NBQ0Q7Q0FFREQsU0FBUyxDQUFDLzRFLFNBQVYsR0FBc0I7Q0FDcEJvSSxFQUFBQSxXQUFXLEVBQUUyd0UsU0FETztDQUVwQjF5RSxFQUFBQSxXQUFXLEVBQUUsVUFBUzI0RCxLQUFULEVBQWdCO0NBQUUsV0FBTyxLQUFLa2EsT0FBTCxDQUFhMVQsWUFBYixDQUEwQnhHLEtBQTFCLEVBQWlDLEtBQUtpYSxLQUF0QyxDQUFQO0NBQXNELEdBRmpFO0NBR3BCelQsRUFBQUEsWUFBWSxFQUFFLFVBQVN4RyxLQUFULEVBQWdCdndELElBQWhCLEVBQXNCO0NBQUUsV0FBTyxLQUFLeXFFLE9BQUwsQ0FBYTFULFlBQWIsQ0FBMEJ4RyxLQUExQixFQUFpQ3Z3RCxJQUFqQyxDQUFQO0NBQWdELEdBSGxFO0NBSXBCaTNELEVBQUFBLGFBQWEsRUFBRSxVQUFTMUQsUUFBVCxFQUFtQjtDQUFFLFdBQU8sS0FBS2tYLE9BQUwsQ0FBYXhULGFBQWIsQ0FBMkIxRCxRQUEzQixDQUFQO0NBQThDLEdBSjlEO0NBS3BCOEIsRUFBQUEsZ0JBQWdCLEVBQUUsVUFBUzlCLFFBQVQsRUFBbUI7Q0FBRSxXQUFPLEtBQUtrWCxPQUFMLENBQWFwVixnQkFBYixDQUE4QjlCLFFBQTlCLENBQVA7Q0FBaUQ7Q0FMcEUsQ0FBdEI7O0NDZmUsbUJBQVN4b0QsQ0FBVCxFQUFZO0NBQ3pCLFNBQU8sWUFBVztDQUNoQixXQUFPQSxDQUFQO0NBQ0QsR0FGRDtDQUdEOztDQ0NELFNBQVMyL0QsU0FBVCxDQUFtQnhsRCxNQUFuQixFQUEyQmtLLEtBQTNCLEVBQWtDaEssS0FBbEMsRUFBeUM4ZSxNQUF6QyxFQUFpRC9lLElBQWpELEVBQXVEendCLElBQXZELEVBQTZEO0NBQzNELE1BQUlkLENBQUMsR0FBRyxDQUFSO0NBQUEsTUFDSW14QixJQURKO0NBQUEsTUFFSTRsRCxXQUFXLEdBQUd2N0MsS0FBSyxDQUFDL2pDLE1BRnhCO0NBQUEsTUFHSXUvRSxVQUFVLEdBQUdsMkUsSUFBSSxDQUFDckosTUFIdEIsQ0FEMkQ7Q0FPM0Q7Q0FDQTs7Q0FDQSxTQUFPdUksQ0FBQyxHQUFHZzNFLFVBQVgsRUFBdUIsRUFBRWgzRSxDQUF6QixFQUE0QjtDQUMxQixRQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCLEVBQXFCO0NBQ25CbXhCLE1BQUFBLElBQUksQ0FBQ3lrRCxRQUFMLEdBQWdCOTBFLElBQUksQ0FBQ2QsQ0FBRCxDQUFwQjtDQUNBc3dDLE1BQUFBLE1BQU0sQ0FBQ3R3QyxDQUFELENBQU4sR0FBWW14QixJQUFaO0NBQ0QsS0FIRCxNQUdPO0NBQ0xLLE1BQUFBLEtBQUssQ0FBQ3h4QixDQUFELENBQUwsR0FBVyxJQUFJMDJFLFNBQUosQ0FBY3BsRCxNQUFkLEVBQXNCeHdCLElBQUksQ0FBQ2QsQ0FBRCxDQUExQixDQUFYO0NBQ0Q7Q0FDRixHQWhCMEQ7OztDQW1CM0QsU0FBT0EsQ0FBQyxHQUFHKzJFLFdBQVgsRUFBd0IsRUFBRS8yRSxDQUExQixFQUE2QjtDQUMzQixRQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCLEVBQXFCO0NBQ25CdXhCLE1BQUFBLElBQUksQ0FBQ3Z4QixDQUFELENBQUosR0FBVW14QixJQUFWO0NBQ0Q7Q0FDRjtDQUNGOztDQUVELFNBQVM4bEQsT0FBVCxDQUFpQjNsRCxNQUFqQixFQUF5QmtLLEtBQXpCLEVBQWdDaEssS0FBaEMsRUFBdUM4ZSxNQUF2QyxFQUErQy9lLElBQS9DLEVBQXFEendCLElBQXJELEVBQTJEeEgsR0FBM0QsRUFBZ0U7Q0FDOUQsTUFBSTBHLENBQUo7Q0FBQSxNQUNJbXhCLElBREo7Q0FBQSxNQUVJK2xELGNBQWMsR0FBRyxJQUFJdHdELEdBQUosRUFGckI7Q0FBQSxNQUdJbXdELFdBQVcsR0FBR3Y3QyxLQUFLLENBQUMvakMsTUFIeEI7Q0FBQSxNQUlJdS9FLFVBQVUsR0FBR2wyRSxJQUFJLENBQUNySixNQUp0QjtDQUFBLE1BS0kwL0UsU0FBUyxHQUFHLElBQUlyMUUsS0FBSixDQUFVaTFFLFdBQVYsQ0FMaEI7Q0FBQSxNQU1JSyxRQU5KLENBRDhEO0NBVTlEOztDQUNBLE9BQUtwM0UsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHKzJFLFdBQWhCLEVBQTZCLEVBQUUvMkUsQ0FBL0IsRUFBa0M7Q0FDaEMsUUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQjtDQUNuQm0zRSxNQUFBQSxTQUFTLENBQUNuM0UsQ0FBRCxDQUFULEdBQWVvM0UsUUFBUSxHQUFHOTlFLEdBQUcsQ0FBQ25ELElBQUosQ0FBU2c3QixJQUFULEVBQWVBLElBQUksQ0FBQ3lrRCxRQUFwQixFQUE4QjUxRSxDQUE5QixFQUFpQ3c3QixLQUFqQyxJQUEwQyxFQUFwRTs7Q0FDQSxVQUFJMDdDLGNBQWMsQ0FBQ3A2RSxHQUFmLENBQW1CczZFLFFBQW5CLENBQUosRUFBa0M7Q0FDaEM3bEQsUUFBQUEsSUFBSSxDQUFDdnhCLENBQUQsQ0FBSixHQUFVbXhCLElBQVY7Q0FDRCxPQUZELE1BRU87Q0FDTCtsRCxRQUFBQSxjQUFjLENBQUNyNkUsR0FBZixDQUFtQnU2RSxRQUFuQixFQUE2QmptRCxJQUE3QjtDQUNEO0NBQ0Y7Q0FDRixHQXBCNkQ7Q0F1QjlEO0NBQ0E7OztDQUNBLE9BQUtueEIsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHZzNFLFVBQWhCLEVBQTRCLEVBQUVoM0UsQ0FBOUIsRUFBaUM7Q0FDL0JvM0UsSUFBQUEsUUFBUSxHQUFHOTlFLEdBQUcsQ0FBQ25ELElBQUosQ0FBU203QixNQUFULEVBQWlCeHdCLElBQUksQ0FBQ2QsQ0FBRCxDQUFyQixFQUEwQkEsQ0FBMUIsRUFBNkJjLElBQTdCLElBQXFDLEVBQWhEOztDQUNBLFFBQUlxd0IsSUFBSSxHQUFHK2xELGNBQWMsQ0FBQ3BoRixHQUFmLENBQW1Cc2hGLFFBQW5CLENBQVgsRUFBeUM7Q0FDdkM5bUMsTUFBQUEsTUFBTSxDQUFDdHdDLENBQUQsQ0FBTixHQUFZbXhCLElBQVo7Q0FDQUEsTUFBQUEsSUFBSSxDQUFDeWtELFFBQUwsR0FBZ0I5MEUsSUFBSSxDQUFDZCxDQUFELENBQXBCO0NBQ0FrM0UsTUFBQUEsY0FBYyxDQUFDRyxNQUFmLENBQXNCRCxRQUF0QjtDQUNELEtBSkQsTUFJTztDQUNMNWxELE1BQUFBLEtBQUssQ0FBQ3h4QixDQUFELENBQUwsR0FBVyxJQUFJMDJFLFNBQUosQ0FBY3BsRCxNQUFkLEVBQXNCeHdCLElBQUksQ0FBQ2QsQ0FBRCxDQUExQixDQUFYO0NBQ0Q7Q0FDRixHQWxDNkQ7OztDQXFDOUQsT0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHKzJFLFdBQWhCLEVBQTZCLEVBQUUvMkUsQ0FBL0IsRUFBa0M7Q0FDaEMsUUFBSSxDQUFDbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWIsS0FBc0JrM0UsY0FBYyxDQUFDcGhGLEdBQWYsQ0FBbUJxaEYsU0FBUyxDQUFDbjNFLENBQUQsQ0FBNUIsTUFBcUNteEIsSUFBL0QsRUFBc0U7Q0FDcEVJLE1BQUFBLElBQUksQ0FBQ3Z4QixDQUFELENBQUosR0FBVW14QixJQUFWO0NBQ0Q7Q0FDRjtDQUNGOztDQUVELFNBQVN3bEQsS0FBVCxDQUFleGxELElBQWYsRUFBcUI7Q0FDbkIsU0FBT0EsSUFBSSxDQUFDeWtELFFBQVo7Q0FDRDs7Q0FFYyx5QkFBU3AvRSxLQUFULEVBQWdCOEMsR0FBaEIsRUFBcUI7Q0FDbEMsTUFBSSxDQUFDOUIsU0FBUyxDQUFDQyxNQUFmLEVBQXVCLE9BQU9xSyxLQUFLLENBQUMrTSxJQUFOLENBQVcsSUFBWCxFQUFpQjhuRSxLQUFqQixDQUFQO0NBRXZCLE1BQUkxd0UsSUFBSSxHQUFHM00sR0FBRyxHQUFHMjlFLE9BQUgsR0FBYUgsU0FBM0I7Q0FBQSxNQUNJYixPQUFPLEdBQUcsS0FBS0gsUUFEbkI7Q0FBQSxNQUVJNzhDLE1BQU0sR0FBRyxLQUFLdThDLE9BRmxCO0NBSUEsTUFBSSxPQUFPaC9FLEtBQVAsS0FBaUIsVUFBckIsRUFBaUNBLEtBQUssR0FBRzhnRixRQUFRLENBQUM5Z0YsS0FBRCxDQUFoQjs7Q0FFakMsT0FBSyxJQUFJZ3FDLENBQUMsR0FBR3ZILE1BQU0sQ0FBQ3hoQyxNQUFmLEVBQXVCNjRDLE1BQU0sR0FBRyxJQUFJeHVDLEtBQUosQ0FBVTArQixDQUFWLENBQWhDLEVBQThDaFAsS0FBSyxHQUFHLElBQUkxdkIsS0FBSixDQUFVMCtCLENBQVYsQ0FBdEQsRUFBb0VqUCxJQUFJLEdBQUcsSUFBSXp2QixLQUFKLENBQVUwK0IsQ0FBVixDQUEzRSxFQUF5RjdxQixDQUFDLEdBQUcsQ0FBbEcsRUFBcUdBLENBQUMsR0FBRzZxQixDQUF6RyxFQUE0RyxFQUFFN3FCLENBQTlHLEVBQWlIO0NBQy9HLFFBQUkyYixNQUFNLEdBQUcya0QsT0FBTyxDQUFDdGdFLENBQUQsQ0FBcEI7Q0FBQSxRQUNJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBRGxCO0NBQUEsUUFFSW9oRSxXQUFXLEdBQUd2N0MsS0FBSyxDQUFDL2pDLE1BRnhCO0NBQUEsUUFHSXFKLElBQUksR0FBRzRNLEtBQUssQ0FBQ2xYLEtBQUssQ0FBQ0wsSUFBTixDQUFXbTdCLE1BQVgsRUFBbUJBLE1BQU0sSUFBSUEsTUFBTSxDQUFDc2tELFFBQXBDLEVBQThDamdFLENBQTlDLEVBQWlEc2dFLE9BQWpELENBQUQsQ0FIaEI7Q0FBQSxRQUlJZSxVQUFVLEdBQUdsMkUsSUFBSSxDQUFDckosTUFKdEI7Q0FBQSxRQUtJOC9FLFVBQVUsR0FBRy9sRCxLQUFLLENBQUM3YixDQUFELENBQUwsR0FBVyxJQUFJN1QsS0FBSixDQUFVazFFLFVBQVYsQ0FMNUI7Q0FBQSxRQU1JUSxXQUFXLEdBQUdsbkMsTUFBTSxDQUFDMzZCLENBQUQsQ0FBTixHQUFZLElBQUk3VCxLQUFKLENBQVVrMUUsVUFBVixDQU45QjtDQUFBLFFBT0lTLFNBQVMsR0FBR2xtRCxJQUFJLENBQUM1YixDQUFELENBQUosR0FBVSxJQUFJN1QsS0FBSixDQUFVaTFFLFdBQVYsQ0FQMUI7Q0FTQTl3RSxJQUFBQSxJQUFJLENBQUNxckIsTUFBRCxFQUFTa0ssS0FBVCxFQUFnQis3QyxVQUFoQixFQUE0QkMsV0FBNUIsRUFBeUNDLFNBQXpDLEVBQW9EMzJFLElBQXBELEVBQTBEeEgsR0FBMUQsQ0FBSixDQVYrRztDQWEvRztDQUNBOztDQUNBLFNBQUssSUFBSW8rRSxFQUFFLEdBQUcsQ0FBVCxFQUFZQyxFQUFFLEdBQUcsQ0FBakIsRUFBb0J2eEQsUUFBcEIsRUFBOEJoYSxJQUFuQyxFQUF5Q3NyRSxFQUFFLEdBQUdWLFVBQTlDLEVBQTBELEVBQUVVLEVBQTVELEVBQWdFO0NBQzlELFVBQUl0eEQsUUFBUSxHQUFHbXhELFVBQVUsQ0FBQ0csRUFBRCxDQUF6QixFQUErQjtDQUM3QixZQUFJQSxFQUFFLElBQUlDLEVBQVYsRUFBY0EsRUFBRSxHQUFHRCxFQUFFLEdBQUcsQ0FBVjs7Q0FDZCxlQUFPLEVBQUV0ckUsSUFBSSxHQUFHb3JFLFdBQVcsQ0FBQ0csRUFBRCxDQUFwQixLQUE2QixFQUFFQSxFQUFGLEdBQU9YLFVBQTNDLENBQXNEOztDQUN0RDV3RCxRQUFBQSxRQUFRLENBQUN3d0QsS0FBVCxHQUFpQnhxRSxJQUFJLElBQUksSUFBekI7Q0FDRDtDQUNGO0NBQ0Y7O0NBRURra0MsRUFBQUEsTUFBTSxHQUFHLElBQUl1bEMsU0FBSixDQUFjdmxDLE1BQWQsRUFBc0IybEMsT0FBdEIsQ0FBVDtDQUNBM2xDLEVBQUFBLE1BQU0sQ0FBQ2ttQyxNQUFQLEdBQWdCaGxELEtBQWhCO0NBQ0E4ZSxFQUFBQSxNQUFNLENBQUNzbkMsS0FBUCxHQUFlcm1ELElBQWY7Q0FDQSxTQUFPK2UsTUFBUDtDQUNEOztDQ2pIYywyQkFBVztDQUN4QixTQUFPLElBQUl1bEMsU0FBSixDQUFjLEtBQUsrQixLQUFMLElBQWMsS0FBS3BDLE9BQUwsQ0FBYTF1RSxHQUFiLENBQWlCMnZFLE1BQWpCLENBQTVCLEVBQXNELEtBQUtYLFFBQTNELENBQVA7Q0FDRDs7Q0NMYyx5QkFBUytCLE9BQVQsRUFBa0JDLFFBQWxCLEVBQTRCQyxNQUE1QixFQUFvQztDQUNqRCxNQUFJdm1ELEtBQUssR0FBRyxLQUFLQSxLQUFMLEVBQVo7Q0FBQSxNQUEwQjhlLE1BQU0sR0FBRyxJQUFuQztDQUFBLE1BQXlDL2UsSUFBSSxHQUFHLEtBQUtBLElBQUwsRUFBaEQ7Q0FDQUMsRUFBQUEsS0FBSyxHQUFHLE9BQU9xbUQsT0FBUCxLQUFtQixVQUFuQixHQUFnQ0EsT0FBTyxDQUFDcm1ELEtBQUQsQ0FBdkMsR0FBaURBLEtBQUssQ0FBQ3F2QixNQUFOLENBQWFnM0IsT0FBTyxHQUFHLEVBQXZCLENBQXpEO0NBQ0EsTUFBSUMsUUFBUSxJQUFJLElBQWhCLEVBQXNCeG5DLE1BQU0sR0FBR3duQyxRQUFRLENBQUN4bkMsTUFBRCxDQUFqQjtDQUN0QixNQUFJeW5DLE1BQU0sSUFBSSxJQUFkLEVBQW9CeG1ELElBQUksQ0FBQ3ltRCxNQUFMLEdBQXBCLEtBQXdDRCxNQUFNLENBQUN4bUQsSUFBRCxDQUFOO0NBQ3hDLFNBQU9DLEtBQUssSUFBSThlLE1BQVQsR0FBa0I5ZSxLQUFLLENBQUM5YixLQUFOLENBQVk0NkIsTUFBWixFQUFvQjhwQixLQUFwQixFQUFsQixHQUFnRDlwQixNQUF2RDtDQUNEOztDQ0pjLDBCQUFTMm5DLFNBQVQsRUFBb0I7Q0FDakMsTUFBSSxFQUFFQSxTQUFTLFlBQVlwQyxTQUF2QixDQUFKLEVBQXVDLE1BQU0sSUFBSTdvRSxLQUFKLENBQVUsZUFBVixDQUFOOztDQUV2QyxPQUFLLElBQUlrckUsT0FBTyxHQUFHLEtBQUsxQyxPQUFuQixFQUE0QjJDLE9BQU8sR0FBR0YsU0FBUyxDQUFDekMsT0FBaEQsRUFBeUQ0QyxFQUFFLEdBQUdGLE9BQU8sQ0FBQ3pnRixNQUF0RSxFQUE4RTRnRixFQUFFLEdBQUdGLE9BQU8sQ0FBQzFnRixNQUEzRixFQUFtRytvQyxDQUFDLEdBQUd2ckMsSUFBSSxDQUFDZ0ssR0FBTCxDQUFTbTVFLEVBQVQsRUFBYUMsRUFBYixDQUF2RyxFQUF5SEMsTUFBTSxHQUFHLElBQUl4MkUsS0FBSixDQUFVczJFLEVBQVYsQ0FBbEksRUFBaUp6aUUsQ0FBQyxHQUFHLENBQTFKLEVBQTZKQSxDQUFDLEdBQUc2cUIsQ0FBakssRUFBb0ssRUFBRTdxQixDQUF0SyxFQUF5SztDQUN2SyxTQUFLLElBQUk0aUUsTUFBTSxHQUFHTCxPQUFPLENBQUN2aUUsQ0FBRCxDQUFwQixFQUF5QjZpRSxNQUFNLEdBQUdMLE9BQU8sQ0FBQ3hpRSxDQUFELENBQXpDLEVBQThDbkgsQ0FBQyxHQUFHK3BFLE1BQU0sQ0FBQzlnRixNQUF6RCxFQUFpRWllLEtBQUssR0FBRzRpRSxNQUFNLENBQUMzaUUsQ0FBRCxDQUFOLEdBQVksSUFBSTdULEtBQUosQ0FBVTBNLENBQVYsQ0FBckYsRUFBbUcyaUIsSUFBbkcsRUFBeUdueEIsQ0FBQyxHQUFHLENBQWxILEVBQXFIQSxDQUFDLEdBQUd3TyxDQUF6SCxFQUE0SCxFQUFFeE8sQ0FBOUgsRUFBaUk7Q0FDL0gsVUFBSW14QixJQUFJLEdBQUdvbkQsTUFBTSxDQUFDdjRFLENBQUQsQ0FBTixJQUFhdzRFLE1BQU0sQ0FBQ3g0RSxDQUFELENBQTlCLEVBQW1DO0NBQ2pDMFYsUUFBQUEsS0FBSyxDQUFDMVYsQ0FBRCxDQUFMLEdBQVdteEIsSUFBWDtDQUNEO0NBQ0Y7Q0FDRjs7Q0FFRCxTQUFPeGIsQ0FBQyxHQUFHeWlFLEVBQVgsRUFBZSxFQUFFemlFLENBQWpCLEVBQW9CO0NBQ2xCMmlFLElBQUFBLE1BQU0sQ0FBQzNpRSxDQUFELENBQU4sR0FBWXVpRSxPQUFPLENBQUN2aUUsQ0FBRCxDQUFuQjtDQUNEOztDQUVELFNBQU8sSUFBSWtnRSxTQUFKLENBQWN5QyxNQUFkLEVBQXNCLEtBQUt4QyxRQUEzQixDQUFQO0NBQ0Q7O0NDbEJjLDRCQUFXO0NBRXhCLE9BQUssSUFBSTc4QyxNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQjcvRCxDQUFDLEdBQUcsQ0FBQyxDQUFoQyxFQUFtQzZxQixDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBbkQsRUFBMkQsRUFBRWtlLENBQUYsR0FBTTZxQixDQUFqRSxHQUFxRTtDQUNuRSxTQUFLLElBQUloRixLQUFLLEdBQUd2QyxNQUFNLENBQUN0akIsQ0FBRCxDQUFsQixFQUF1QjNWLENBQUMsR0FBR3c3QixLQUFLLENBQUMvakMsTUFBTixHQUFlLENBQTFDLEVBQTZDMlUsSUFBSSxHQUFHb3ZCLEtBQUssQ0FBQ3g3QixDQUFELENBQXpELEVBQThEbXhCLElBQW5FLEVBQXlFLEVBQUVueEIsQ0FBRixJQUFPLENBQWhGLEdBQW9GO0NBQ2xGLFVBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEIsRUFBcUI7Q0FDbkIsWUFBSW9NLElBQUksSUFBSStrQixJQUFJLENBQUNpbEMsdUJBQUwsQ0FBNkJocUQsSUFBN0IsSUFBcUMsQ0FBakQsRUFBb0RBLElBQUksQ0FBQ3lxRCxVQUFMLENBQWdCc00sWUFBaEIsQ0FBNkJoeUMsSUFBN0IsRUFBbUMva0IsSUFBbkM7Q0FDcERBLFFBQUFBLElBQUksR0FBRytrQixJQUFQO0NBQ0Q7Q0FDRjtDQUNGOztDQUVELFNBQU8sSUFBUDtDQUNEOztDQ1ZjLHlCQUFTODZDLE9BQVQsRUFBa0I7Q0FDL0IsTUFBSSxDQUFDQSxPQUFMLEVBQWNBLE9BQU8sR0FBR3dNLFNBQVY7O0NBRWQsV0FBU0MsV0FBVCxDQUFxQnI5RSxDQUFyQixFQUF3QjRKLENBQXhCLEVBQTJCO0NBQ3pCLFdBQU81SixDQUFDLElBQUk0SixDQUFMLEdBQVNnbkUsT0FBTyxDQUFDNXdFLENBQUMsQ0FBQ3U2RSxRQUFILEVBQWEzd0UsQ0FBQyxDQUFDMndFLFFBQWYsQ0FBaEIsR0FBMkMsQ0FBQ3Y2RSxDQUFELEdBQUssQ0FBQzRKLENBQXhEO0NBQ0Q7O0NBRUQsT0FBSyxJQUFJZzBCLE1BQU0sR0FBRyxLQUFLdThDLE9BQWxCLEVBQTJCaDFDLENBQUMsR0FBR3ZILE1BQU0sQ0FBQ3hoQyxNQUF0QyxFQUE4Q2toRixVQUFVLEdBQUcsSUFBSTcyRSxLQUFKLENBQVUwK0IsQ0FBVixDQUEzRCxFQUF5RTdxQixDQUFDLEdBQUcsQ0FBbEYsRUFBcUZBLENBQUMsR0FBRzZxQixDQUF6RixFQUE0RixFQUFFN3FCLENBQTlGLEVBQWlHO0NBQy9GLFNBQUssSUFBSTZsQixLQUFLLEdBQUd2QyxNQUFNLENBQUN0akIsQ0FBRCxDQUFsQixFQUF1Qm5ILENBQUMsR0FBR2d0QixLQUFLLENBQUMvakMsTUFBakMsRUFBeUNtaEYsU0FBUyxHQUFHRCxVQUFVLENBQUNoakUsQ0FBRCxDQUFWLEdBQWdCLElBQUk3VCxLQUFKLENBQVUwTSxDQUFWLENBQXJFLEVBQW1GMmlCLElBQW5GLEVBQXlGbnhCLENBQUMsR0FBRyxDQUFsRyxFQUFxR0EsQ0FBQyxHQUFHd08sQ0FBekcsRUFBNEcsRUFBRXhPLENBQTlHLEVBQWlIO0NBQy9HLFVBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEIsRUFBcUI7Q0FDbkI0NEUsUUFBQUEsU0FBUyxDQUFDNTRFLENBQUQsQ0FBVCxHQUFlbXhCLElBQWY7Q0FDRDtDQUNGOztDQUNEeW5ELElBQUFBLFNBQVMsQ0FBQ25pRSxJQUFWLENBQWVpaUUsV0FBZjtDQUNEOztDQUVELFNBQU8sSUFBSTdDLFNBQUosQ0FBYzhDLFVBQWQsRUFBMEIsS0FBSzdDLFFBQS9CLEVBQXlDMWIsS0FBekMsRUFBUDtDQUNEOztDQUVELFNBQVNxZSxTQUFULENBQW1CcDlFLENBQW5CLEVBQXNCNEosQ0FBdEIsRUFBeUI7Q0FDdkIsU0FBTzVKLENBQUMsR0FBRzRKLENBQUosR0FBUSxDQUFDLENBQVQsR0FBYTVKLENBQUMsR0FBRzRKLENBQUosR0FBUSxDQUFSLEdBQVk1SixDQUFDLElBQUk0SixDQUFMLEdBQVMsQ0FBVCxHQUFhb1UsR0FBN0M7Q0FDRDs7Q0N2QmMsMkJBQVc7Q0FDeEIsTUFBSSszQixRQUFRLEdBQUc1NUMsU0FBUyxDQUFDLENBQUQsQ0FBeEI7Q0FDQUEsRUFBQUEsU0FBUyxDQUFDLENBQUQsQ0FBVCxHQUFlLElBQWY7Q0FDQTQ1QyxFQUFBQSxRQUFRLENBQUNqc0MsS0FBVCxDQUFlLElBQWYsRUFBcUIzTixTQUFyQjtDQUNBLFNBQU8sSUFBUDtDQUNEOztDQ0xjLDRCQUFXO0NBQ3hCLFNBQU9zSyxLQUFLLENBQUMrTSxJQUFOLENBQVcsSUFBWCxDQUFQO0NBQ0Q7O0NDRmMsMkJBQVc7Q0FFeEIsT0FBSyxJQUFJb3FCLE1BQU0sR0FBRyxLQUFLdThDLE9BQWxCLEVBQTJCNy9ELENBQUMsR0FBRyxDQUEvQixFQUFrQzZxQixDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBbEQsRUFBMERrZSxDQUFDLEdBQUc2cUIsQ0FBOUQsRUFBaUUsRUFBRTdxQixDQUFuRSxFQUFzRTtDQUNwRSxTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUIzVixDQUFDLEdBQUcsQ0FBM0IsRUFBOEJ3TyxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQTdDLEVBQXFEdUksQ0FBQyxHQUFHd08sQ0FBekQsRUFBNEQsRUFBRXhPLENBQTlELEVBQWlFO0NBQy9ELFVBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEI7Q0FDQSxVQUFJbXhCLElBQUosRUFBVSxPQUFPQSxJQUFQO0NBQ1g7Q0FDRjs7Q0FFRCxTQUFPLElBQVA7Q0FDRDs7Q0NWYywyQkFBVztDQUN4QixNQUFJbkwsSUFBSSxHQUFHLENBQVg7O0NBQ0EsT0FBSyxNQUFNbUwsSUFBWCxJQUFtQixJQUFuQixFQUF5QixFQUFFbkwsSUFBRixDQUZEOzs7Q0FHeEIsU0FBT0EsSUFBUDtDQUNEOztDQ0pjLDRCQUFXO0NBQ3hCLFNBQU8sQ0FBQyxLQUFLbUwsSUFBTCxFQUFSO0NBQ0Q7O0NDRmMseUJBQVNpZ0IsUUFBVCxFQUFtQjtDQUVoQyxPQUFLLElBQUluWSxNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQjcvRCxDQUFDLEdBQUcsQ0FBL0IsRUFBa0M2cUIsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQWxELEVBQTBEa2UsQ0FBQyxHQUFHNnFCLENBQTlELEVBQWlFLEVBQUU3cUIsQ0FBbkUsRUFBc0U7Q0FDcEUsU0FBSyxJQUFJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBQWxCLEVBQXVCM1YsQ0FBQyxHQUFHLENBQTNCLEVBQThCd08sQ0FBQyxHQUFHZ3RCLEtBQUssQ0FBQy9qQyxNQUF4QyxFQUFnRDA1QixJQUFyRCxFQUEyRG54QixDQUFDLEdBQUd3TyxDQUEvRCxFQUFrRSxFQUFFeE8sQ0FBcEUsRUFBdUU7Q0FDckUsVUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQm94QyxRQUFRLENBQUNqN0MsSUFBVCxDQUFjZzdCLElBQWQsRUFBb0JBLElBQUksQ0FBQ3lrRCxRQUF6QixFQUFtQzUxRSxDQUFuQyxFQUFzQ3c3QixLQUF0QztDQUN0QjtDQUNGOztDQUVELFNBQU8sSUFBUDtDQUNEOztDQ1BELFNBQVNxOUMsVUFBVCxDQUFvQnIrRSxJQUFwQixFQUEwQjtDQUN4QixTQUFPLFlBQVc7Q0FDaEIsU0FBS3NvRSxlQUFMLENBQXFCdG9FLElBQXJCO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNzK0UsWUFBVCxDQUFzQnhELFFBQXRCLEVBQWdDO0NBQzlCLFNBQU8sWUFBVztDQUNoQixTQUFLeUQsaUJBQUwsQ0FBdUJ6RCxRQUFRLENBQUN6ckUsS0FBaEMsRUFBdUN5ckUsUUFBUSxDQUFDTCxLQUFoRDtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTK0QsWUFBVCxDQUFzQngrRSxJQUF0QixFQUE0QmhFLEtBQTVCLEVBQW1DO0NBQ2pDLFNBQU8sWUFBVztDQUNoQixTQUFLay9ELFlBQUwsQ0FBa0JsN0QsSUFBbEIsRUFBd0JoRSxLQUF4QjtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTeWlGLGNBQVQsQ0FBd0IzRCxRQUF4QixFQUFrQzkrRSxLQUFsQyxFQUF5QztDQUN2QyxTQUFPLFlBQVc7Q0FDaEIsU0FBSzBpRixjQUFMLENBQW9CNUQsUUFBUSxDQUFDenJFLEtBQTdCLEVBQW9DeXJFLFFBQVEsQ0FBQ0wsS0FBN0MsRUFBb0R6K0UsS0FBcEQ7Q0FDRCxHQUZEO0NBR0Q7O0NBRUQsU0FBUzJpRixZQUFULENBQXNCMytFLElBQXRCLEVBQTRCaEUsS0FBNUIsRUFBbUM7Q0FDakMsU0FBTyxZQUFXO0NBQ2hCLFFBQUl3Z0IsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtDQUNBLFFBQUl3ZixDQUFDLElBQUksSUFBVCxFQUFlLEtBQUs4ckQsZUFBTCxDQUFxQnRvRSxJQUFyQixFQUFmLEtBQ0ssS0FBS2s3RCxZQUFMLENBQWtCbDdELElBQWxCLEVBQXdCd2MsQ0FBeEI7Q0FDTixHQUpEO0NBS0Q7O0NBRUQsU0FBU29pRSxjQUFULENBQXdCOUQsUUFBeEIsRUFBa0M5K0UsS0FBbEMsRUFBeUM7Q0FDdkMsU0FBTyxZQUFXO0NBQ2hCLFFBQUl3Z0IsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtDQUNBLFFBQUl3ZixDQUFDLElBQUksSUFBVCxFQUFlLEtBQUsraEUsaUJBQUwsQ0FBdUJ6RCxRQUFRLENBQUN6ckUsS0FBaEMsRUFBdUN5ckUsUUFBUSxDQUFDTCxLQUFoRCxFQUFmLEtBQ0ssS0FBS2lFLGNBQUwsQ0FBb0I1RCxRQUFRLENBQUN6ckUsS0FBN0IsRUFBb0N5ckUsUUFBUSxDQUFDTCxLQUE3QyxFQUFvRGorRCxDQUFwRDtDQUNOLEdBSkQ7Q0FLRDs7Q0FFYyx5QkFBU3hjLElBQVQsRUFBZWhFLEtBQWYsRUFBc0I7Q0FDbkMsTUFBSTgrRSxRQUFRLEdBQUdoK0UsU0FBUyxDQUFDa0QsSUFBRCxDQUF4Qjs7Q0FFQSxNQUFJaEQsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQXZCLEVBQTBCO0NBQ3hCLFFBQUkwNUIsSUFBSSxHQUFHLEtBQUtBLElBQUwsRUFBWDtDQUNBLFdBQU9ta0QsUUFBUSxDQUFDTCxLQUFULEdBQ0Q5akQsSUFBSSxDQUFDa29ELGNBQUwsQ0FBb0IvRCxRQUFRLENBQUN6ckUsS0FBN0IsRUFBb0N5ckUsUUFBUSxDQUFDTCxLQUE3QyxDQURDLEdBRUQ5akQsSUFBSSxDQUFDZ2tDLFlBQUwsQ0FBa0JtZ0IsUUFBbEIsQ0FGTjtDQUdEOztDQUVELFNBQU8sS0FBSzFnQixJQUFMLENBQVUsQ0FBQ3ArRCxLQUFLLElBQUksSUFBVCxHQUNYOCtFLFFBQVEsQ0FBQ0wsS0FBVCxHQUFpQjZELFlBQWpCLEdBQWdDRCxVQURyQixHQUNvQyxPQUFPcmlGLEtBQVAsS0FBaUIsVUFBakIsR0FDL0M4K0UsUUFBUSxDQUFDTCxLQUFULEdBQWlCbUUsY0FBakIsR0FBa0NELFlBRGEsR0FFL0M3RCxRQUFRLENBQUNMLEtBQVQsR0FBaUJnRSxjQUFqQixHQUFrQ0QsWUFIeEIsRUFHd0MxRCxRQUh4QyxFQUdrRDkrRSxLQUhsRCxDQUFWLENBQVA7Q0FJRDs7Q0N4RGMsc0JBQVMyNkIsSUFBVCxFQUFlO0NBQzVCLFNBQVFBLElBQUksQ0FBQ3NrQyxhQUFMLElBQXNCdGtDLElBQUksQ0FBQ3NrQyxhQUFMLENBQW1CMFksV0FBMUM7Q0FBQSxLQUNDaDlDLElBQUksQ0FBQ2wyQixRQUFMLElBQWlCazJCLElBRGxCO0NBQUEsS0FFQUEsSUFBSSxDQUFDZzlDLFdBRlosQ0FENEI7Q0FJN0I7O0NDRkQsU0FBU21MLFdBQVQsQ0FBcUI5K0UsSUFBckIsRUFBMkI7Q0FDekIsU0FBTyxZQUFXO0NBQ2hCLFNBQUtzSixLQUFMLENBQVdrK0QsY0FBWCxDQUEwQnhuRSxJQUExQjtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTKytFLGFBQVQsQ0FBdUIvK0UsSUFBdkIsRUFBNkJoRSxLQUE3QixFQUFvQ2dqRixRQUFwQyxFQUE4QztDQUM1QyxTQUFPLFlBQVc7Q0FDaEIsU0FBSzExRSxLQUFMLENBQVcrOUQsV0FBWCxDQUF1QnJuRSxJQUF2QixFQUE2QmhFLEtBQTdCLEVBQW9DZ2pGLFFBQXBDO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNDLGFBQVQsQ0FBdUJqL0UsSUFBdkIsRUFBNkJoRSxLQUE3QixFQUFvQ2dqRixRQUFwQyxFQUE4QztDQUM1QyxTQUFPLFlBQVc7Q0FDaEIsUUFBSXhpRSxDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDMk8sS0FBTixDQUFZLElBQVosRUFBa0IzTixTQUFsQixDQUFSO0NBQ0EsUUFBSXdmLENBQUMsSUFBSSxJQUFULEVBQWUsS0FBS2xULEtBQUwsQ0FBV2srRCxjQUFYLENBQTBCeG5FLElBQTFCLEVBQWYsS0FDSyxLQUFLc0osS0FBTCxDQUFXKzlELFdBQVgsQ0FBdUJybkUsSUFBdkIsRUFBNkJ3YyxDQUE3QixFQUFnQ3dpRSxRQUFoQztDQUNOLEdBSkQ7Q0FLRDs7Q0FFYywwQkFBU2gvRSxJQUFULEVBQWVoRSxLQUFmLEVBQXNCZ2pGLFFBQXRCLEVBQWdDO0NBQzdDLFNBQU9oaUYsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQ0QsS0FBS205RCxJQUFMLENBQVUsQ0FBQ3ArRCxLQUFLLElBQUksSUFBVCxHQUNMOGlGLFdBREssR0FDUyxPQUFPOWlGLEtBQVAsS0FBaUIsVUFBakIsR0FDZGlqRixhQURjLEdBRWRGLGFBSEksRUFHVy8rRSxJQUhYLEVBR2lCaEUsS0FIakIsRUFHd0JnakYsUUFBUSxJQUFJLElBQVosR0FBbUIsRUFBbkIsR0FBd0JBLFFBSGhELENBQVYsQ0FEQyxHQUtERSxVQUFVLENBQUMsS0FBS3ZvRCxJQUFMLEVBQUQsRUFBYzMyQixJQUFkLENBTGhCO0NBTUQ7Q0FFTSxTQUFTay9FLFVBQVQsQ0FBb0J2b0QsSUFBcEIsRUFBMEIzMkIsSUFBMUIsRUFBZ0M7Q0FDckMsU0FBTzIyQixJQUFJLENBQUNydEIsS0FBTCxDQUFXaStELGdCQUFYLENBQTRCdm5FLElBQTVCLEtBQ0EyekUsV0FBVyxDQUFDaDlDLElBQUQsQ0FBWCxDQUFrQmcwQyxnQkFBbEIsQ0FBbUNoMEMsSUFBbkMsRUFBeUMsSUFBekMsRUFBK0M0d0MsZ0JBQS9DLENBQWdFdm5FLElBQWhFLENBRFA7Q0FFRDs7Q0NsQ0QsU0FBU20vRSxjQUFULENBQXdCbi9FLElBQXhCLEVBQThCO0NBQzVCLFNBQU8sWUFBVztDQUNoQixXQUFPLEtBQUtBLElBQUwsQ0FBUDtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTby9FLGdCQUFULENBQTBCcC9FLElBQTFCLEVBQWdDaEUsS0FBaEMsRUFBdUM7Q0FDckMsU0FBTyxZQUFXO0NBQ2hCLFNBQUtnRSxJQUFMLElBQWFoRSxLQUFiO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNxakYsZ0JBQVQsQ0FBMEJyL0UsSUFBMUIsRUFBZ0NoRSxLQUFoQyxFQUF1QztDQUNyQyxTQUFPLFlBQVc7Q0FDaEIsUUFBSXdnQixDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDMk8sS0FBTixDQUFZLElBQVosRUFBa0IzTixTQUFsQixDQUFSO0NBQ0EsUUFBSXdmLENBQUMsSUFBSSxJQUFULEVBQWUsT0FBTyxLQUFLeGMsSUFBTCxDQUFQLENBQWYsS0FDSyxLQUFLQSxJQUFMLElBQWF3YyxDQUFiO0NBQ04sR0FKRDtDQUtEOztDQUVjLDZCQUFTeGMsSUFBVCxFQUFlaEUsS0FBZixFQUFzQjtDQUNuQyxTQUFPZ0IsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQ0QsS0FBS205RCxJQUFMLENBQVUsQ0FBQ3ArRCxLQUFLLElBQUksSUFBVCxHQUNQbWpGLGNBRE8sR0FDVSxPQUFPbmpGLEtBQVAsS0FBaUIsVUFBakIsR0FDakJxakYsZ0JBRGlCLEdBRWpCRCxnQkFITSxFQUdZcC9FLElBSFosRUFHa0JoRSxLQUhsQixDQUFWLENBREMsR0FLRCxLQUFLMjZCLElBQUwsR0FBWTMyQixJQUFaLENBTE47Q0FNRDs7Q0MzQkQsU0FBU3MvRSxVQUFULENBQW9CNTRFLE1BQXBCLEVBQTRCO0NBQzFCLFNBQU9BLE1BQU0sQ0FBQ2lwQixJQUFQLEdBQWNyekIsS0FBZCxDQUFvQixPQUFwQixDQUFQO0NBQ0Q7O0NBRUQsU0FBUzBrRCxTQUFULENBQW1CcnFCLElBQW5CLEVBQXlCO0NBQ3ZCLFNBQU9BLElBQUksQ0FBQ3FxQixTQUFMLElBQWtCLElBQUl1K0IsU0FBSixDQUFjNW9ELElBQWQsQ0FBekI7Q0FDRDs7Q0FFRCxTQUFTNG9ELFNBQVQsQ0FBbUI1b0QsSUFBbkIsRUFBeUI7Q0FDdkIsT0FBSzZvRCxLQUFMLEdBQWE3b0QsSUFBYjtDQUNBLE9BQUs4b0QsTUFBTCxHQUFjSCxVQUFVLENBQUMzb0QsSUFBSSxDQUFDZ2tDLFlBQUwsQ0FBa0IsT0FBbEIsS0FBOEIsRUFBL0IsQ0FBeEI7Q0FDRDs7Q0FFRDRrQixTQUFTLENBQUNwOEUsU0FBVixHQUFzQjtDQUNwQnduQixFQUFBQSxHQUFHLEVBQUUsVUFBUzNxQixJQUFULEVBQWU7Q0FDbEIsUUFBSXdGLENBQUMsR0FBRyxLQUFLaTZFLE1BQUwsQ0FBWW42RSxPQUFaLENBQW9CdEYsSUFBcEIsQ0FBUjs7Q0FDQSxRQUFJd0YsQ0FBQyxHQUFHLENBQVIsRUFBVztDQUNULFdBQUtpNkUsTUFBTCxDQUFZdmdGLElBQVosQ0FBaUJjLElBQWpCOztDQUNBLFdBQUt3L0UsS0FBTCxDQUFXdGtCLFlBQVgsQ0FBd0IsT0FBeEIsRUFBaUMsS0FBS3VrQixNQUFMLENBQVl0N0UsSUFBWixDQUFpQixHQUFqQixDQUFqQztDQUNEO0NBQ0YsR0FQbUI7Q0FRcEJxNUUsRUFBQUEsTUFBTSxFQUFFLFVBQVN4OUUsSUFBVCxFQUFlO0NBQ3JCLFFBQUl3RixDQUFDLEdBQUcsS0FBS2k2RSxNQUFMLENBQVluNkUsT0FBWixDQUFvQnRGLElBQXBCLENBQVI7O0NBQ0EsUUFBSXdGLENBQUMsSUFBSSxDQUFULEVBQVk7Q0FDVixXQUFLaTZFLE1BQUwsQ0FBWXRpRSxNQUFaLENBQW1CM1gsQ0FBbkIsRUFBc0IsQ0FBdEI7O0NBQ0EsV0FBS2c2RSxLQUFMLENBQVd0a0IsWUFBWCxDQUF3QixPQUF4QixFQUFpQyxLQUFLdWtCLE1BQUwsQ0FBWXQ3RSxJQUFaLENBQWlCLEdBQWpCLENBQWpDO0NBQ0Q7Q0FDRixHQWRtQjtDQWVwQmk0RCxFQUFBQSxRQUFRLEVBQUUsVUFBU3A4RCxJQUFULEVBQWU7Q0FDdkIsV0FBTyxLQUFLeS9FLE1BQUwsQ0FBWW42RSxPQUFaLENBQW9CdEYsSUFBcEIsS0FBNkIsQ0FBcEM7Q0FDRDtDQWpCbUIsQ0FBdEI7O0NBb0JBLFNBQVMwL0UsVUFBVCxDQUFvQi9vRCxJQUFwQixFQUEwQnB4QixLQUExQixFQUFpQztDQUMvQixNQUFJMGlCLElBQUksR0FBRys0QixTQUFTLENBQUNycUIsSUFBRCxDQUFwQjtDQUFBLE1BQTRCbnhCLENBQUMsR0FBRyxDQUFDLENBQWpDO0NBQUEsTUFBb0N3TyxDQUFDLEdBQUd6TyxLQUFLLENBQUN0SSxNQUE5Qzs7Q0FDQSxTQUFPLEVBQUV1SSxDQUFGLEdBQU13TyxDQUFiLEVBQWdCaVUsSUFBSSxDQUFDMEMsR0FBTCxDQUFTcGxCLEtBQUssQ0FBQ0MsQ0FBRCxDQUFkO0NBQ2pCOztDQUVELFNBQVNtNkUsYUFBVCxDQUF1QmhwRCxJQUF2QixFQUE2QnB4QixLQUE3QixFQUFvQztDQUNsQyxNQUFJMGlCLElBQUksR0FBRys0QixTQUFTLENBQUNycUIsSUFBRCxDQUFwQjtDQUFBLE1BQTRCbnhCLENBQUMsR0FBRyxDQUFDLENBQWpDO0NBQUEsTUFBb0N3TyxDQUFDLEdBQUd6TyxLQUFLLENBQUN0SSxNQUE5Qzs7Q0FDQSxTQUFPLEVBQUV1SSxDQUFGLEdBQU13TyxDQUFiLEVBQWdCaVUsSUFBSSxDQUFDdTFELE1BQUwsQ0FBWWo0RSxLQUFLLENBQUNDLENBQUQsQ0FBakI7Q0FDakI7O0NBRUQsU0FBU282RSxXQUFULENBQXFCcjZFLEtBQXJCLEVBQTRCO0NBQzFCLFNBQU8sWUFBVztDQUNoQm02RSxJQUFBQSxVQUFVLENBQUMsSUFBRCxFQUFPbjZFLEtBQVAsQ0FBVjtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTczZFLFlBQVQsQ0FBc0J0NkUsS0FBdEIsRUFBNkI7Q0FDM0IsU0FBTyxZQUFXO0NBQ2hCbzZFLElBQUFBLGFBQWEsQ0FBQyxJQUFELEVBQU9wNkUsS0FBUCxDQUFiO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVN1NkUsZUFBVCxDQUF5QnY2RSxLQUF6QixFQUFnQ3ZKLEtBQWhDLEVBQXVDO0NBQ3JDLFNBQU8sWUFBVztDQUNoQixLQUFDQSxLQUFLLENBQUMyTyxLQUFOLENBQVksSUFBWixFQUFrQjNOLFNBQWxCLElBQStCMGlGLFVBQS9CLEdBQTRDQyxhQUE3QyxFQUE0RCxJQUE1RCxFQUFrRXA2RSxLQUFsRTtDQUNELEdBRkQ7Q0FHRDs7Q0FFYyw0QkFBU3ZGLElBQVQsRUFBZWhFLEtBQWYsRUFBc0I7Q0FDbkMsTUFBSXVKLEtBQUssR0FBRys1RSxVQUFVLENBQUN0L0UsSUFBSSxHQUFHLEVBQVIsQ0FBdEI7O0NBRUEsTUFBSWhELFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUF2QixFQUEwQjtDQUN4QixRQUFJZ3JCLElBQUksR0FBRys0QixTQUFTLENBQUMsS0FBS3JxQixJQUFMLEVBQUQsQ0FBcEI7Q0FBQSxRQUFtQ254QixDQUFDLEdBQUcsQ0FBQyxDQUF4QztDQUFBLFFBQTJDd08sQ0FBQyxHQUFHek8sS0FBSyxDQUFDdEksTUFBckQ7O0NBQ0EsV0FBTyxFQUFFdUksQ0FBRixHQUFNd08sQ0FBYixFQUFnQixJQUFJLENBQUNpVSxJQUFJLENBQUNtMEMsUUFBTCxDQUFjNzJELEtBQUssQ0FBQ0MsQ0FBRCxDQUFuQixDQUFMLEVBQThCLE9BQU8sS0FBUDs7Q0FDOUMsV0FBTyxJQUFQO0NBQ0Q7O0NBRUQsU0FBTyxLQUFLNDBELElBQUwsQ0FBVSxDQUFDLE9BQU9wK0QsS0FBUCxLQUFpQixVQUFqQixHQUNaOGpGLGVBRFksR0FDTTlqRixLQUFLLEdBQ3ZCNGpGLFdBRHVCLEdBRXZCQyxZQUhXLEVBR0d0NkUsS0FISCxFQUdVdkosS0FIVixDQUFWLENBQVA7Q0FJRDs7Q0MxRUQsU0FBUytqRixVQUFULEdBQXNCO0NBQ3BCLE9BQUt2VixXQUFMLEdBQW1CLEVBQW5CO0NBQ0Q7O0NBRUQsU0FBU3dWLFlBQVQsQ0FBc0Joa0YsS0FBdEIsRUFBNkI7Q0FDM0IsU0FBTyxZQUFXO0NBQ2hCLFNBQUt3dUUsV0FBTCxHQUFtQnh1RSxLQUFuQjtDQUNELEdBRkQ7Q0FHRDs7Q0FFRCxTQUFTaWtGLFlBQVQsQ0FBc0Jqa0YsS0FBdEIsRUFBNkI7Q0FDM0IsU0FBTyxZQUFXO0NBQ2hCLFFBQUl3Z0IsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtDQUNBLFNBQUt3dEUsV0FBTCxHQUFtQmh1RCxDQUFDLElBQUksSUFBTCxHQUFZLEVBQVosR0FBaUJBLENBQXBDO0NBQ0QsR0FIRDtDQUlEOztDQUVjLHlCQUFTeGdCLEtBQVQsRUFBZ0I7Q0FDN0IsU0FBT2dCLFNBQVMsQ0FBQ0MsTUFBVixHQUNELEtBQUttOUQsSUFBTCxDQUFVcCtELEtBQUssSUFBSSxJQUFULEdBQ04rakYsVUFETSxHQUNPLENBQUMsT0FBTy9qRixLQUFQLEtBQWlCLFVBQWpCLEdBQ2Rpa0YsWUFEYyxHQUVkRCxZQUZhLEVBRUNoa0YsS0FGRCxDQURqQixDQURDLEdBS0QsS0FBSzI2QixJQUFMLEdBQVk2ekMsV0FMbEI7Q0FNRDs7Q0N4QkQsU0FBUzBWLFVBQVQsR0FBc0I7Q0FDcEIsT0FBSzNWLFNBQUwsR0FBaUIsRUFBakI7Q0FDRDs7Q0FFRCxTQUFTNFYsWUFBVCxDQUFzQm5rRixLQUF0QixFQUE2QjtDQUMzQixTQUFPLFlBQVc7Q0FDaEIsU0FBS3V1RSxTQUFMLEdBQWlCdnVFLEtBQWpCO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNva0YsWUFBVCxDQUFzQnBrRixLQUF0QixFQUE2QjtDQUMzQixTQUFPLFlBQVc7Q0FDaEIsUUFBSXdnQixDQUFDLEdBQUd4Z0IsS0FBSyxDQUFDMk8sS0FBTixDQUFZLElBQVosRUFBa0IzTixTQUFsQixDQUFSO0NBQ0EsU0FBS3V0RSxTQUFMLEdBQWlCL3RELENBQUMsSUFBSSxJQUFMLEdBQVksRUFBWixHQUFpQkEsQ0FBbEM7Q0FDRCxHQUhEO0NBSUQ7O0NBRWMseUJBQVN4Z0IsS0FBVCxFQUFnQjtDQUM3QixTQUFPZ0IsU0FBUyxDQUFDQyxNQUFWLEdBQ0QsS0FBS205RCxJQUFMLENBQVVwK0QsS0FBSyxJQUFJLElBQVQsR0FDTmtrRixVQURNLEdBQ08sQ0FBQyxPQUFPbGtGLEtBQVAsS0FBaUIsVUFBakIsR0FDZG9rRixZQURjLEdBRWRELFlBRmEsRUFFQ25rRixLQUZELENBRGpCLENBREMsR0FLRCxLQUFLMjZCLElBQUwsR0FBWTR6QyxTQUxsQjtDQU1EOztDQ3hCRCxTQUFTOFYsS0FBVCxHQUFpQjtDQUNmLE1BQUksS0FBS2xXLFdBQVQsRUFBc0IsS0FBSzlOLFVBQUwsQ0FBZ0I3eUQsV0FBaEIsQ0FBNEIsSUFBNUI7Q0FDdkI7O0NBRWMsNEJBQVc7Q0FDeEIsU0FBTyxLQUFLNHdELElBQUwsQ0FBVWltQixLQUFWLENBQVA7Q0FDRDs7Q0NORCxTQUFTanBDLEtBQVQsR0FBaUI7Q0FDZixNQUFJLEtBQUtrekIsZUFBVCxFQUEwQixLQUFLak8sVUFBTCxDQUFnQnNNLFlBQWhCLENBQTZCLElBQTdCLEVBQW1DLEtBQUt0TSxVQUFMLENBQWdCaWtCLFVBQW5EO0NBQzNCOztDQUVjLDRCQUFXO0NBQ3hCLFNBQU8sS0FBS2xtQixJQUFMLENBQVVoakIsS0FBVixDQUFQO0NBQ0Q7O0NDSmMsMkJBQVNwM0MsSUFBVCxFQUFlO0NBQzVCLE1BQUlnSyxNQUFNLEdBQUcsT0FBT2hLLElBQVAsS0FBZ0IsVUFBaEIsR0FBNkJBLElBQTdCLEdBQW9DdWdGLE9BQU8sQ0FBQ3ZnRixJQUFELENBQXhEO0NBQ0EsU0FBTyxLQUFLZ2tFLE1BQUwsQ0FBWSxZQUFXO0NBQzVCLFdBQU8sS0FBS3g2RCxXQUFMLENBQWlCUSxNQUFNLENBQUNXLEtBQVAsQ0FBYSxJQUFiLEVBQW1CM04sU0FBbkIsQ0FBakIsQ0FBUDtDQUNELEdBRk0sQ0FBUDtDQUdEOztDQ0pELFNBQVN3akYsWUFBVCxHQUF3QjtDQUN0QixTQUFPLElBQVA7Q0FDRDs7Q0FFYywyQkFBU3hnRixJQUFULEVBQWU0b0UsTUFBZixFQUF1QjtDQUNwQyxNQUFJNStELE1BQU0sR0FBRyxPQUFPaEssSUFBUCxLQUFnQixVQUFoQixHQUE2QkEsSUFBN0IsR0FBb0N1Z0YsT0FBTyxDQUFDdmdGLElBQUQsQ0FBeEQ7Q0FBQSxNQUNJZ2tFLE1BQU0sR0FBRzRFLE1BQU0sSUFBSSxJQUFWLEdBQWlCNFgsWUFBakIsR0FBZ0MsT0FBTzVYLE1BQVAsS0FBa0IsVUFBbEIsR0FBK0JBLE1BQS9CLEdBQXdDekQsUUFBUSxDQUFDeUQsTUFBRCxDQUQ3RjtDQUVBLFNBQU8sS0FBSzVFLE1BQUwsQ0FBWSxZQUFXO0NBQzVCLFdBQU8sS0FBSzJFLFlBQUwsQ0FBa0IzK0QsTUFBTSxDQUFDVyxLQUFQLENBQWEsSUFBYixFQUFtQjNOLFNBQW5CLENBQWxCLEVBQWlEZ25FLE1BQU0sQ0FBQ3I1RCxLQUFQLENBQWEsSUFBYixFQUFtQjNOLFNBQW5CLEtBQWlDLElBQWxGLENBQVA7Q0FDRCxHQUZNLENBQVA7Q0FHRDs7Q0NiRCxTQUFTd2dGLE1BQVQsR0FBa0I7Q0FDaEIsTUFBSTFtRCxNQUFNLEdBQUcsS0FBS3VsQyxVQUFsQjtDQUNBLE1BQUl2bEMsTUFBSixFQUFZQSxNQUFNLENBQUNqQixXQUFQLENBQW1CLElBQW5CO0NBQ2I7O0NBRWMsNkJBQVc7Q0FDeEIsU0FBTyxLQUFLdWtDLElBQUwsQ0FBVW9qQixNQUFWLENBQVA7Q0FDRDs7Q0NQRCxTQUFTaUQsc0JBQVQsR0FBa0M7Q0FDaEMsTUFBSUMsS0FBSyxHQUFHLEtBQUt6WCxTQUFMLENBQWUsS0FBZixDQUFaO0NBQUEsTUFBbUNueUMsTUFBTSxHQUFHLEtBQUt1bEMsVUFBakQ7Q0FDQSxTQUFPdmxDLE1BQU0sR0FBR0EsTUFBTSxDQUFDNnhDLFlBQVAsQ0FBb0IrWCxLQUFwQixFQUEyQixLQUFLdlcsV0FBaEMsQ0FBSCxHQUFrRHVXLEtBQS9EO0NBQ0Q7O0NBRUQsU0FBU0MsbUJBQVQsR0FBK0I7Q0FDN0IsTUFBSUQsS0FBSyxHQUFHLEtBQUt6WCxTQUFMLENBQWUsSUFBZixDQUFaO0NBQUEsTUFBa0NueUMsTUFBTSxHQUFHLEtBQUt1bEMsVUFBaEQ7Q0FDQSxTQUFPdmxDLE1BQU0sR0FBR0EsTUFBTSxDQUFDNnhDLFlBQVAsQ0FBb0IrWCxLQUFwQixFQUEyQixLQUFLdlcsV0FBaEMsQ0FBSCxHQUFrRHVXLEtBQS9EO0NBQ0Q7O0NBRWMsMEJBQVN4WCxJQUFULEVBQWU7Q0FDNUIsU0FBTyxLQUFLbEYsTUFBTCxDQUFZa0YsSUFBSSxHQUFHeVgsbUJBQUgsR0FBeUJGLHNCQUF6QyxDQUFQO0NBQ0Q7O0NDWmMsMEJBQVN6a0YsS0FBVCxFQUFnQjtDQUM3QixTQUFPZ0IsU0FBUyxDQUFDQyxNQUFWLEdBQ0QsS0FBSyttQixRQUFMLENBQWMsVUFBZCxFQUEwQmhvQixLQUExQixDQURDLEdBRUQsS0FBSzI2QixJQUFMLEdBQVl5a0QsUUFGbEI7Q0FHRDs7Q0NKRCxTQUFTd0YsZUFBVCxDQUF5QjNyRCxRQUF6QixFQUFtQztDQUNqQyxTQUFPLFVBQVNDLEtBQVQsRUFBZ0I7Q0FDckJELElBQUFBLFFBQVEsQ0FBQ3Q1QixJQUFULENBQWMsSUFBZCxFQUFvQnU1QixLQUFwQixFQUEyQixLQUFLa21ELFFBQWhDO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVNySCxjQUFULENBQXdCQyxTQUF4QixFQUFtQztDQUNqQyxTQUFPQSxTQUFTLENBQUNya0QsSUFBVixHQUFpQnJ6QixLQUFqQixDQUF1QixPQUF2QixFQUFnQ2dRLEdBQWhDLENBQW9DLFVBQVNpaEIsQ0FBVCxFQUFZO0NBQ3JELFFBQUl2dEIsSUFBSSxHQUFHLEVBQVg7Q0FBQSxRQUFld0YsQ0FBQyxHQUFHK25CLENBQUMsQ0FBQ2pvQixPQUFGLENBQVUsR0FBVixDQUFuQjtDQUNBLFFBQUlFLENBQUMsSUFBSSxDQUFULEVBQVl4RixJQUFJLEdBQUd1dEIsQ0FBQyxDQUFDbnhCLEtBQUYsQ0FBUW9KLENBQUMsR0FBRyxDQUFaLENBQVAsRUFBdUIrbkIsQ0FBQyxHQUFHQSxDQUFDLENBQUNueEIsS0FBRixDQUFRLENBQVIsRUFBV29KLENBQVgsQ0FBM0I7Q0FDWixXQUFPO0NBQUM3QyxNQUFBQSxJQUFJLEVBQUU0cUIsQ0FBUDtDQUFVdnRCLE1BQUFBLElBQUksRUFBRUE7Q0FBaEIsS0FBUDtDQUNELEdBSk0sQ0FBUDtDQUtEOztDQUVELFNBQVM2Z0YsUUFBVCxDQUFrQjFNLFFBQWxCLEVBQTRCO0NBQzFCLFNBQU8sWUFBVztDQUNoQixRQUFJRCxFQUFFLEdBQUcsS0FBSzRNLElBQWQ7Q0FDQSxRQUFJLENBQUM1TSxFQUFMLEVBQVM7O0NBQ1QsU0FBSyxJQUFJLzRELENBQUMsR0FBRyxDQUFSLEVBQVczVixDQUFDLEdBQUcsQ0FBQyxDQUFoQixFQUFtQndnQyxDQUFDLEdBQUdrdUMsRUFBRSxDQUFDajNFLE1BQTFCLEVBQWtDOGpGLENBQXZDLEVBQTBDNWxFLENBQUMsR0FBRzZxQixDQUE5QyxFQUFpRCxFQUFFN3FCLENBQW5ELEVBQXNEO0NBQ3BELFVBQUk0bEUsQ0FBQyxHQUFHN00sRUFBRSxDQUFDLzRELENBQUQsQ0FBTixFQUFXLENBQUMsQ0FBQ2c1RCxRQUFRLENBQUN4eEUsSUFBVixJQUFrQm8rRSxDQUFDLENBQUNwK0UsSUFBRixLQUFXd3hFLFFBQVEsQ0FBQ3h4RSxJQUF2QyxLQUFnRG8rRSxDQUFDLENBQUMvZ0YsSUFBRixLQUFXbTBFLFFBQVEsQ0FBQ24wRSxJQUFuRixFQUF5RjtDQUN2RixhQUFLeW9FLG1CQUFMLENBQXlCc1ksQ0FBQyxDQUFDcCtFLElBQTNCLEVBQWlDbytFLENBQUMsQ0FBQzlyRCxRQUFuQyxFQUE2QzhyRCxDQUFDLENBQUNsOUUsT0FBL0M7Q0FDRCxPQUZELE1BRU87Q0FDTHF3RSxRQUFBQSxFQUFFLENBQUMsRUFBRTF1RSxDQUFILENBQUYsR0FBVXU3RSxDQUFWO0NBQ0Q7Q0FDRjs7Q0FDRCxRQUFJLEVBQUV2N0UsQ0FBTixFQUFTMHVFLEVBQUUsQ0FBQ2ozRSxNQUFILEdBQVl1SSxDQUFaLENBQVQsS0FDSyxPQUFPLEtBQUtzN0UsSUFBWjtDQUNOLEdBWkQ7Q0FhRDs7Q0FFRCxTQUFTRSxLQUFULENBQWU3TSxRQUFmLEVBQXlCbjRFLEtBQXpCLEVBQWdDNkgsT0FBaEMsRUFBeUM7Q0FDdkMsU0FBTyxZQUFXO0NBQ2hCLFFBQUlxd0UsRUFBRSxHQUFHLEtBQUs0TSxJQUFkO0NBQUEsUUFBb0JDLENBQXBCO0NBQUEsUUFBdUI5ckQsUUFBUSxHQUFHMnJELGVBQWUsQ0FBQzVrRixLQUFELENBQWpEO0NBQ0EsUUFBSWs0RSxFQUFKLEVBQVEsS0FBSyxJQUFJLzRELENBQUMsR0FBRyxDQUFSLEVBQVc2cUIsQ0FBQyxHQUFHa3VDLEVBQUUsQ0FBQ2ozRSxNQUF2QixFQUErQmtlLENBQUMsR0FBRzZxQixDQUFuQyxFQUFzQyxFQUFFN3FCLENBQXhDLEVBQTJDO0NBQ2pELFVBQUksQ0FBQzRsRSxDQUFDLEdBQUc3TSxFQUFFLENBQUMvNEQsQ0FBRCxDQUFQLEVBQVl4WSxJQUFaLEtBQXFCd3hFLFFBQVEsQ0FBQ3h4RSxJQUE5QixJQUFzQ28rRSxDQUFDLENBQUMvZ0YsSUFBRixLQUFXbTBFLFFBQVEsQ0FBQ24wRSxJQUE5RCxFQUFvRTtDQUNsRSxhQUFLeW9FLG1CQUFMLENBQXlCc1ksQ0FBQyxDQUFDcCtFLElBQTNCLEVBQWlDbytFLENBQUMsQ0FBQzlyRCxRQUFuQyxFQUE2QzhyRCxDQUFDLENBQUNsOUUsT0FBL0M7Q0FDQSxhQUFLOHhCLGdCQUFMLENBQXNCb3JELENBQUMsQ0FBQ3ArRSxJQUF4QixFQUE4Qm8rRSxDQUFDLENBQUM5ckQsUUFBRixHQUFhQSxRQUEzQyxFQUFxRDhyRCxDQUFDLENBQUNsOUUsT0FBRixHQUFZQSxPQUFqRTtDQUNBazlFLFFBQUFBLENBQUMsQ0FBQy9rRixLQUFGLEdBQVVBLEtBQVY7Q0FDQTtDQUNEO0NBQ0Y7Q0FDRCxTQUFLMjVCLGdCQUFMLENBQXNCdytDLFFBQVEsQ0FBQ3h4RSxJQUEvQixFQUFxQ3N5QixRQUFyQyxFQUErQ3B4QixPQUEvQztDQUNBazlFLElBQUFBLENBQUMsR0FBRztDQUFDcCtFLE1BQUFBLElBQUksRUFBRXd4RSxRQUFRLENBQUN4eEUsSUFBaEI7Q0FBc0IzQyxNQUFBQSxJQUFJLEVBQUVtMEUsUUFBUSxDQUFDbjBFLElBQXJDO0NBQTJDaEUsTUFBQUEsS0FBSyxFQUFFQSxLQUFsRDtDQUF5RGk1QixNQUFBQSxRQUFRLEVBQUVBLFFBQW5FO0NBQTZFcHhCLE1BQUFBLE9BQU8sRUFBRUE7Q0FBdEYsS0FBSjtDQUNBLFFBQUksQ0FBQ3F3RSxFQUFMLEVBQVMsS0FBSzRNLElBQUwsR0FBWSxDQUFDQyxDQUFELENBQVosQ0FBVCxLQUNLN00sRUFBRSxDQUFDaDFFLElBQUgsQ0FBUTZoRixDQUFSO0NBQ04sR0FkRDtDQWVEOztDQUVjLHVCQUFTNU0sUUFBVCxFQUFtQm40RSxLQUFuQixFQUEwQjZILE9BQTFCLEVBQW1DO0NBQ2hELE1BQUltd0UsU0FBUyxHQUFHRCxjQUFjLENBQUNJLFFBQVEsR0FBRyxFQUFaLENBQTlCO0NBQUEsTUFBK0MzdUUsQ0FBL0M7Q0FBQSxNQUFrRHdPLENBQUMsR0FBR2dnRSxTQUFTLENBQUMvMkUsTUFBaEU7Q0FBQSxNQUF3RXN3QixDQUF4RTs7Q0FFQSxNQUFJdndCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUF2QixFQUEwQjtDQUN4QixRQUFJaTNFLEVBQUUsR0FBRyxLQUFLdjlDLElBQUwsR0FBWW1xRCxJQUFyQjs7Q0FDQSxRQUFJNU0sRUFBSixFQUFRLEtBQUssSUFBSS80RCxDQUFDLEdBQUcsQ0FBUixFQUFXNnFCLENBQUMsR0FBR2t1QyxFQUFFLENBQUNqM0UsTUFBbEIsRUFBMEI4akYsQ0FBL0IsRUFBa0M1bEUsQ0FBQyxHQUFHNnFCLENBQXRDLEVBQXlDLEVBQUU3cUIsQ0FBM0MsRUFBOEM7Q0FDcEQsV0FBSzNWLENBQUMsR0FBRyxDQUFKLEVBQU91N0UsQ0FBQyxHQUFHN00sRUFBRSxDQUFDLzRELENBQUQsQ0FBbEIsRUFBdUIzVixDQUFDLEdBQUd3TyxDQUEzQixFQUE4QixFQUFFeE8sQ0FBaEMsRUFBbUM7Q0FDakMsWUFBSSxDQUFDK25CLENBQUMsR0FBR3ltRCxTQUFTLENBQUN4dUUsQ0FBRCxDQUFkLEVBQW1CN0MsSUFBbkIsS0FBNEJvK0UsQ0FBQyxDQUFDcCtFLElBQTlCLElBQXNDNHFCLENBQUMsQ0FBQ3Z0QixJQUFGLEtBQVcrZ0YsQ0FBQyxDQUFDL2dGLElBQXZELEVBQTZEO0NBQzNELGlCQUFPK2dGLENBQUMsQ0FBQy9rRixLQUFUO0NBQ0Q7Q0FDRjtDQUNGO0NBQ0Q7Q0FDRDs7Q0FFRGs0RSxFQUFBQSxFQUFFLEdBQUdsNEUsS0FBSyxHQUFHZ2xGLEtBQUgsR0FBV0gsUUFBckI7O0NBQ0EsT0FBS3I3RSxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUd3TyxDQUFoQixFQUFtQixFQUFFeE8sQ0FBckIsRUFBd0IsS0FBSzQwRCxJQUFMLENBQVU4WixFQUFFLENBQUNGLFNBQVMsQ0FBQ3h1RSxDQUFELENBQVYsRUFBZXhKLEtBQWYsRUFBc0I2SCxPQUF0QixDQUFaOztDQUN4QixTQUFPLElBQVA7Q0FDRDs7Q0NoRUQsU0FBUyswQixhQUFULENBQXVCakMsSUFBdkIsRUFBNkJoMEIsSUFBN0IsRUFBbUNvakQsTUFBbkMsRUFBMkM7Q0FDekMsTUFBSW5yRCxNQUFNLEdBQUcrNEUsV0FBVyxDQUFDaDlDLElBQUQsQ0FBeEI7Q0FBQSxNQUNJekIsS0FBSyxHQUFHdDZCLE1BQU0sQ0FBQ3FtRixXQURuQjs7Q0FHQSxNQUFJLE9BQU8vckQsS0FBUCxLQUFpQixVQUFyQixFQUFpQztDQUMvQkEsSUFBQUEsS0FBSyxHQUFHLElBQUlBLEtBQUosQ0FBVXZ5QixJQUFWLEVBQWdCb2pELE1BQWhCLENBQVI7Q0FDRCxHQUZELE1BRU87Q0FDTDd3QixJQUFBQSxLQUFLLEdBQUd0NkIsTUFBTSxDQUFDNkYsUUFBUCxDQUFnQms0QixXQUFoQixDQUE0QixPQUE1QixDQUFSO0NBQ0EsUUFBSW90QixNQUFKLEVBQVk3d0IsS0FBSyxDQUFDMkYsU0FBTixDQUFnQmw0QixJQUFoQixFQUFzQm9qRCxNQUFNLENBQUNtN0IsT0FBN0IsRUFBc0NuN0IsTUFBTSxDQUFDbzdCLFVBQTdDLEdBQTBEanNELEtBQUssQ0FBQ2tzRCxNQUFOLEdBQWVyN0IsTUFBTSxDQUFDcTdCLE1BQWhGLENBQVosS0FDS2xzRCxLQUFLLENBQUMyRixTQUFOLENBQWdCbDRCLElBQWhCLEVBQXNCLEtBQXRCLEVBQTZCLEtBQTdCO0NBQ047O0NBRURnMEIsRUFBQUEsSUFBSSxDQUFDaUMsYUFBTCxDQUFtQjFELEtBQW5CO0NBQ0Q7O0NBRUQsU0FBU21zRCxnQkFBVCxDQUEwQjErRSxJQUExQixFQUFnQ29qRCxNQUFoQyxFQUF3QztDQUN0QyxTQUFPLFlBQVc7Q0FDaEIsV0FBT250QixhQUFhLENBQUMsSUFBRCxFQUFPajJCLElBQVAsRUFBYW9qRCxNQUFiLENBQXBCO0NBQ0QsR0FGRDtDQUdEOztDQUVELFNBQVN1N0IsZ0JBQVQsQ0FBMEIzK0UsSUFBMUIsRUFBZ0NvakQsTUFBaEMsRUFBd0M7Q0FDdEMsU0FBTyxZQUFXO0NBQ2hCLFdBQU9udEIsYUFBYSxDQUFDLElBQUQsRUFBT2oyQixJQUFQLEVBQWFvakQsTUFBTSxDQUFDcDdDLEtBQVAsQ0FBYSxJQUFiLEVBQW1CM04sU0FBbkIsQ0FBYixDQUFwQjtDQUNELEdBRkQ7Q0FHRDs7Q0FFYyw2QkFBUzJGLElBQVQsRUFBZW9qRCxNQUFmLEVBQXVCO0NBQ3BDLFNBQU8sS0FBS3FVLElBQUwsQ0FBVSxDQUFDLE9BQU9yVSxNQUFQLEtBQWtCLFVBQWxCLEdBQ1p1N0IsZ0JBRFksR0FFWkQsZ0JBRlcsRUFFTzErRSxJQUZQLEVBRWFvakQsTUFGYixDQUFWLENBQVA7Q0FHRDs7Q0NqQ2MsZ0NBQVk7Q0FDekIsT0FBSyxJQUFJdG5CLE1BQU0sR0FBRyxLQUFLdThDLE9BQWxCLEVBQTJCNy9ELENBQUMsR0FBRyxDQUEvQixFQUFrQzZxQixDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBbEQsRUFBMERrZSxDQUFDLEdBQUc2cUIsQ0FBOUQsRUFBaUUsRUFBRTdxQixDQUFuRSxFQUFzRTtDQUNwRSxTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUIzVixDQUFDLEdBQUcsQ0FBM0IsRUFBOEJ3TyxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQXhDLEVBQWdEMDVCLElBQXJELEVBQTJEbnhCLENBQUMsR0FBR3dPLENBQS9ELEVBQWtFLEVBQUV4TyxDQUFwRSxFQUF1RTtDQUNyRSxVQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCLEVBQXFCLE1BQU1teEIsSUFBTjtDQUN0QjtDQUNGO0NBQ0Y7O0NDNkJNLElBQUltZSxJQUFJLEdBQUcsQ0FBQyxJQUFELENBQVg7Q0FFQSxTQUFTdW1DLFNBQVQsQ0FBbUI1OEMsTUFBbkIsRUFBMkJnOUMsT0FBM0IsRUFBb0M7Q0FDekMsT0FBS1QsT0FBTCxHQUFldjhDLE1BQWY7Q0FDQSxPQUFLNjhDLFFBQUwsR0FBZ0JHLE9BQWhCO0NBQ0Q7O0NBTUQsU0FBUzhGLG1CQUFULEdBQStCO0NBQzdCLFNBQU8sSUFBUDtDQUNEOztDQUVEbEcsU0FBUyxDQUFDbDRFLFNBQVYsR0FBNEM7Q0FDMUNvSSxFQUFBQSxXQUFXLEVBQUU4dkUsU0FENkI7Q0FFMUNyWCxFQUFBQSxNQUFNLEVBQUV3ZCxnQkFGa0M7Q0FHMUN6RixFQUFBQSxTQUFTLEVBQUUwRixtQkFIK0I7Q0FJMUNDLEVBQUFBLFdBQVcsRUFBRUMscUJBSjZCO0NBSzFDQyxFQUFBQSxjQUFjLEVBQUVDLHdCQUwwQjtDQU0xQ3QxRSxFQUFBQSxNQUFNLEVBQUV1MUUsZ0JBTmtDO0NBTzFDeDdFLEVBQUFBLElBQUksRUFBRXk3RSxjQVBvQztDQVExQy9xRCxFQUFBQSxLQUFLLEVBQUVnckQsZUFSbUM7Q0FTMUNqckQsRUFBQUEsSUFBSSxFQUFFa3JELGNBVG9DO0NBVTFDOTlFLEVBQUFBLElBQUksRUFBRSs5RSxjQVZvQztDQVcxQ2huRSxFQUFBQSxLQUFLLEVBQUVpbkUsZUFYbUM7Q0FZMUMxRSxFQUFBQSxTQUFTLEVBQUU4RCxtQkFaK0I7Q0FhMUMzaEIsRUFBQUEsS0FBSyxFQUFFd2lCLGVBYm1DO0NBYzFDbm1FLEVBQUFBLElBQUksRUFBRW9tRSxjQWRvQztDQWUxQzFtRixFQUFBQSxJQUFJLEVBQUUybUYsY0Fmb0M7Q0FnQjFDOW1CLEVBQUFBLEtBQUssRUFBRSttQixlQWhCbUM7Q0FpQjFDNXJELEVBQUFBLElBQUksRUFBRTZyRCxjQWpCb0M7Q0FrQjFDaDNELEVBQUFBLElBQUksRUFBRWkzRCxjQWxCb0M7Q0FtQjFDNzNFLEVBQUFBLEtBQUssRUFBRTgzRSxlQW5CbUM7Q0FvQjFDdG9CLEVBQUFBLElBQUksRUFBRXVvQixjQXBCb0M7Q0FxQjFDOWxCLEVBQUFBLElBQUksRUFBRStsQixjQXJCb0M7Q0FzQjFDdDVFLEVBQUFBLEtBQUssRUFBRXU1RSxlQXRCbUM7Q0F1QjFDNytELEVBQUFBLFFBQVEsRUFBRTgrRCxrQkF2QmdDO0NBd0IxQ0MsRUFBQUEsT0FBTyxFQUFFQyxpQkF4QmlDO0NBeUIxQ2p3QixFQUFBQSxJQUFJLEVBQUVrd0IsY0F6Qm9DO0NBMEIxQy82RSxFQUFBQSxJQUFJLEVBQUVnN0UsY0ExQm9DO0NBMkIxQzdDLEVBQUFBLEtBQUssRUFBRThDLGVBM0JtQztDQTRCMUMvckMsRUFBQUEsS0FBSyxFQUFFZ3NDLGVBNUJtQztDQTZCMUMvOEIsRUFBQUEsTUFBTSxFQUFFZzlCLGdCQTdCa0M7Q0E4QjFDdHRDLEVBQUFBLE1BQU0sRUFBRXV0QyxnQkE5QmtDO0NBK0IxQzlGLEVBQUFBLE1BQU0sRUFBRStGLGdCQS9Ca0M7Q0FnQzFDN0MsRUFBQUEsS0FBSyxFQUFFOEMsZUFoQ21DO0NBaUMxQ3JILEVBQUFBLEtBQUssRUFBRXNILGVBakNtQztDQWtDMUN2UCxFQUFBQSxFQUFFLEVBQUV3UCxZQWxDc0M7Q0FtQzFDNVAsRUFBQUEsUUFBUSxFQUFFNlAsa0JBbkNnQztDQW9DMUMsR0FBQzlsRixNQUFNLENBQUNJLFFBQVIsR0FBbUIybEY7Q0FwQ3VCLENBQTVDOztDQ2hEZSxpQkFBU3plLFFBQVQsRUFBbUI7Q0FDaEMsU0FBTyxPQUFPQSxRQUFQLEtBQW9CLFFBQXBCLEdBQ0QsSUFBSWtXLFNBQUosQ0FBYyxDQUFDLENBQUM1NkUsUUFBUSxDQUFDb29FLGFBQVQsQ0FBdUIxRCxRQUF2QixDQUFELENBQUQsQ0FBZCxFQUFvRCxDQUFDMWtFLFFBQVEsQ0FBQ2s3RCxlQUFWLENBQXBELENBREMsR0FFRCxJQUFJMGYsU0FBSixDQUFjLENBQUMsQ0FBQ2xXLFFBQUQsQ0FBRCxDQUFkLEVBQTRCcndCLElBQTVCLENBRk47Q0FHRDs7Q0NOTSxTQUFTK3VDLFNBQVQsQ0FBbUI5NUUsTUFBbkIsRUFBMkJ5cUMsS0FBM0IsRUFBa0M7Q0FDdkMsVUFBUXgzQyxTQUFTLENBQUNDLE1BQWxCO0NBQ0UsU0FBSyxDQUFMO0NBQVE7O0NBQ1IsU0FBSyxDQUFMO0NBQVEsV0FBS3UzQyxLQUFMLENBQVd6cUMsTUFBWDtDQUFvQjs7Q0FDNUI7Q0FBUyxXQUFLeXFDLEtBQUwsQ0FBV0EsS0FBWCxFQUFrQnpxQyxNQUFsQixDQUF5QkEsTUFBekI7Q0FBa0M7Q0FIN0M7O0NBS0EsU0FBTyxJQUFQO0NBQ0Q7O0NDTE0sTUFBTSs1RSxRQUFRLEdBQUdqbUYsTUFBTSxDQUFDLFVBQUQsQ0FBdkI7Q0FFUSxTQUFTa21GLE9BQVQsR0FBbUI7Q0FDaEMsTUFBSXIvRSxLQUFLLEdBQUcsSUFBSTBuQixHQUFKLEVBQVo7Q0FBQSxNQUNJcmlCLE1BQU0sR0FBRyxFQURiO0NBQUEsTUFFSXlxQyxLQUFLLEdBQUcsRUFGWjtDQUFBLE1BR0l3dkMsT0FBTyxHQUFHRixRQUhkOztDQUtBLFdBQVNuc0MsS0FBVCxDQUFlc3pCLENBQWYsRUFBa0I7Q0FDaEIsUUFBSW5zRSxHQUFHLEdBQUdtc0UsQ0FBQyxHQUFHLEVBQWQ7Q0FBQSxRQUFrQnpsRSxDQUFDLEdBQUdkLEtBQUssQ0FBQ3BKLEdBQU4sQ0FBVXdELEdBQVYsQ0FBdEI7O0NBQ0EsUUFBSSxDQUFDMEcsQ0FBTCxFQUFRO0NBQ04sVUFBSXcrRSxPQUFPLEtBQUtGLFFBQWhCLEVBQTBCLE9BQU9FLE9BQVA7Q0FDMUJ0L0UsTUFBQUEsS0FBSyxDQUFDckMsR0FBTixDQUFVdkQsR0FBVixFQUFlMEcsQ0FBQyxHQUFHdUUsTUFBTSxDQUFDN0ssSUFBUCxDQUFZK3JFLENBQVosQ0FBbkI7Q0FDRDs7Q0FDRCxXQUFPejJCLEtBQUssQ0FBQyxDQUFDaHZDLENBQUMsR0FBRyxDQUFMLElBQVVndkMsS0FBSyxDQUFDdjNDLE1BQWpCLENBQVo7Q0FDRDs7Q0FFRDA2QyxFQUFBQSxLQUFLLENBQUM1dEMsTUFBTixHQUFlLFVBQVMwOEIsQ0FBVCxFQUFZO0NBQ3pCLFFBQUksQ0FBQ3pwQyxTQUFTLENBQUNDLE1BQWYsRUFBdUIsT0FBTzhNLE1BQU0sQ0FBQzNOLEtBQVAsRUFBUDtDQUN2QjJOLElBQUFBLE1BQU0sR0FBRyxFQUFULEVBQWFyRixLQUFLLEdBQUcsSUFBSTBuQixHQUFKLEVBQXJCOztDQUNBLFNBQUssTUFBTXB3QixLQUFYLElBQW9CeXFDLENBQXBCLEVBQXVCO0NBQ3JCLFlBQU0zbkMsR0FBRyxHQUFHOUMsS0FBSyxHQUFHLEVBQXBCO0NBQ0EsVUFBSTBJLEtBQUssQ0FBQ3BDLEdBQU4sQ0FBVXhELEdBQVYsQ0FBSixFQUFvQjtDQUNwQjRGLE1BQUFBLEtBQUssQ0FBQ3JDLEdBQU4sQ0FBVXZELEdBQVYsRUFBZWlMLE1BQU0sQ0FBQzdLLElBQVAsQ0FBWWxELEtBQVosQ0FBZjtDQUNEOztDQUNELFdBQU8yN0MsS0FBUDtDQUNELEdBVEQ7O0NBV0FBLEVBQUFBLEtBQUssQ0FBQ25ELEtBQU4sR0FBYyxVQUFTL04sQ0FBVCxFQUFZO0NBQ3hCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CdTNDLEtBQUssR0FBR2x0QyxLQUFLLENBQUMrTSxJQUFOLENBQVdveUIsQ0FBWCxDQUFSLEVBQXVCa1IsS0FBM0MsSUFBb0RuRCxLQUFLLENBQUNwNEMsS0FBTixFQUEzRDtDQUNELEdBRkQ7O0NBSUF1N0MsRUFBQUEsS0FBSyxDQUFDcXNDLE9BQU4sR0FBZ0IsVUFBU3Y5QyxDQUFULEVBQVk7Q0FDMUIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0IrbUYsT0FBTyxHQUFHdjlDLENBQVYsRUFBYWtSLEtBQWpDLElBQTBDcXNDLE9BQWpEO0NBQ0QsR0FGRDs7Q0FJQXJzQyxFQUFBQSxLQUFLLENBQUN5OEIsSUFBTixHQUFhLFlBQVc7Q0FDdEIsV0FBTzJQLE9BQU8sQ0FBQ2g2RSxNQUFELEVBQVN5cUMsS0FBVCxDQUFQLENBQXVCd3ZDLE9BQXZCLENBQStCQSxPQUEvQixDQUFQO0NBQ0QsR0FGRDs7Q0FJQUgsRUFBQUEsU0FBUyxDQUFDbDVFLEtBQVYsQ0FBZ0JndEMsS0FBaEIsRUFBdUIzNkMsU0FBdkI7Q0FFQSxTQUFPMjZDLEtBQVA7Q0FDRDs7Q0M3Q2MsaUJBQVNzc0MsU0FBVCxFQUFvQjtDQUNqQyxNQUFJandFLENBQUMsR0FBR2l3RSxTQUFTLENBQUNobkYsTUFBVixHQUFtQixDQUFuQixHQUF1QixDQUEvQjtDQUFBLE1BQWtDaW5GLE1BQU0sR0FBRyxJQUFJNThFLEtBQUosQ0FBVTBNLENBQVYsQ0FBM0M7Q0FBQSxNQUF5RHhPLENBQUMsR0FBRyxDQUE3RDs7Q0FDQSxTQUFPQSxDQUFDLEdBQUd3TyxDQUFYLEVBQWNrd0UsTUFBTSxDQUFDMStFLENBQUQsQ0FBTixHQUFZLE1BQU15K0UsU0FBUyxDQUFDN25GLEtBQVYsQ0FBZ0JvSixDQUFDLEdBQUcsQ0FBcEIsRUFBdUIsRUFBRUEsQ0FBRixHQUFNLENBQTdCLENBQWxCOztDQUNkLFNBQU8wK0UsTUFBUDtDQUNEOztBQ0ZELHdCQUFlQSxNQUFNLENBQUMsOERBQUQsQ0FBckI7O0NDQUEsU0FBU0MsY0FBVCxDQUF3QjlwQixHQUF4QixFQUE2QjcwRCxDQUE3QixFQUFnQztDQUFFLFNBQU80K0UsZUFBZSxDQUFDL3BCLEdBQUQsQ0FBZixJQUF3QmdxQixxQkFBcUIsQ0FBQ2hxQixHQUFELEVBQU03MEQsQ0FBTixDQUE3QyxJQUF5RDgrRSwyQkFBMkIsQ0FBQ2pxQixHQUFELEVBQU03MEQsQ0FBTixDQUFwRixJQUFnRysrRSxnQkFBZ0IsRUFBdkg7Q0FBNEg7O0NBRTlKLFNBQVNBLGdCQUFULEdBQTRCO0NBQUUsUUFBTSxJQUFJL25GLFNBQUosQ0FBYywySUFBZCxDQUFOO0NBQW1LOztDQUVqTSxTQUFTOG5GLDJCQUFULENBQXFDdkQsQ0FBckMsRUFBd0N5RCxNQUF4QyxFQUFnRDtDQUFFLE1BQUksQ0FBQ3pELENBQUwsRUFBUTtDQUFRLE1BQUksT0FBT0EsQ0FBUCxLQUFhLFFBQWpCLEVBQTJCLE9BQU8wRCxpQkFBaUIsQ0FBQzFELENBQUQsRUFBSXlELE1BQUosQ0FBeEI7Q0FBcUMsTUFBSXh3RSxDQUFDLEdBQUc1WSxNQUFNLENBQUMrSCxTQUFQLENBQWlCaEgsUUFBakIsQ0FBMEJSLElBQTFCLENBQStCb2xGLENBQS9CLEVBQWtDM2tGLEtBQWxDLENBQXdDLENBQXhDLEVBQTJDLENBQUMsQ0FBNUMsQ0FBUjtDQUF3RCxNQUFJNFgsQ0FBQyxLQUFLLFFBQU4sSUFBa0Irc0UsQ0FBQyxDQUFDeDFFLFdBQXhCLEVBQXFDeUksQ0FBQyxHQUFHK3NFLENBQUMsQ0FBQ3gxRSxXQUFGLENBQWN2TCxJQUFsQjtDQUF3QixNQUFJZ1UsQ0FBQyxLQUFLLEtBQU4sSUFBZUEsQ0FBQyxLQUFLLEtBQXpCLEVBQWdDLE9BQU8xTSxLQUFLLENBQUMrTSxJQUFOLENBQVcwc0UsQ0FBWCxDQUFQO0NBQXNCLE1BQUkvc0UsQ0FBQyxLQUFLLFdBQU4sSUFBcUIsMkNBQTJDbFMsSUFBM0MsQ0FBZ0RrUyxDQUFoRCxDQUF6QixFQUE2RSxPQUFPeXdFLGlCQUFpQixDQUFDMUQsQ0FBRCxFQUFJeUQsTUFBSixDQUF4QjtDQUFzQzs7Q0FFaGEsU0FBU0MsaUJBQVQsQ0FBMkJwcUIsR0FBM0IsRUFBZ0N4bkQsR0FBaEMsRUFBcUM7Q0FBRSxNQUFJQSxHQUFHLElBQUksSUFBUCxJQUFlQSxHQUFHLEdBQUd3bkQsR0FBRyxDQUFDcDlELE1BQTdCLEVBQXFDNFYsR0FBRyxHQUFHd25ELEdBQUcsQ0FBQ3A5RCxNQUFWOztDQUFrQixPQUFLLElBQUl1SSxDQUFDLEdBQUcsQ0FBUixFQUFXay9FLElBQUksR0FBRyxJQUFJcDlFLEtBQUosQ0FBVXVMLEdBQVYsQ0FBdkIsRUFBdUNyTixDQUFDLEdBQUdxTixHQUEzQyxFQUFnRHJOLENBQUMsRUFBakQsRUFBcUQ7Q0FBRWsvRSxJQUFBQSxJQUFJLENBQUNsL0UsQ0FBRCxDQUFKLEdBQVU2MEQsR0FBRyxDQUFDNzBELENBQUQsQ0FBYjtDQUFtQjs7Q0FBQyxTQUFPay9FLElBQVA7Q0FBYzs7Q0FFdkwsU0FBU0wscUJBQVQsQ0FBK0JocUIsR0FBL0IsRUFBb0M3MEQsQ0FBcEMsRUFBdUM7Q0FBRSxNQUFJbS9FLEVBQUUsR0FBR3RxQixHQUFHLElBQUksSUFBUCxHQUFjLElBQWQsR0FBcUIsT0FBT3g4RCxNQUFQLEtBQWtCLFdBQWxCLElBQWlDdzhELEdBQUcsQ0FBQ3g4RCxNQUFNLENBQUNJLFFBQVIsQ0FBcEMsSUFBeURvOEQsR0FBRyxDQUFDLFlBQUQsQ0FBMUY7O0NBQTBHLE1BQUlzcUIsRUFBRSxJQUFJLElBQVYsRUFBZ0I7Q0FBUSxNQUFJQyxJQUFJLEdBQUcsRUFBWDtDQUFlLE1BQUlDLEVBQUUsR0FBRyxJQUFUO0NBQWUsTUFBSUMsRUFBRSxHQUFHLEtBQVQ7O0NBQWdCLE1BQUlDLEVBQUosRUFBUUMsRUFBUjs7Q0FBWSxNQUFJO0NBQUUsU0FBS0wsRUFBRSxHQUFHQSxFQUFFLENBQUNocEYsSUFBSCxDQUFRMCtELEdBQVIsQ0FBVixFQUF3QixFQUFFd3FCLEVBQUUsR0FBRyxDQUFDRSxFQUFFLEdBQUdKLEVBQUUsQ0FBQy95RSxJQUFILEVBQU4sRUFBaUJLLElBQXhCLENBQXhCLEVBQXVENHlFLEVBQUUsR0FBRyxJQUE1RCxFQUFrRTtDQUFFRCxNQUFBQSxJQUFJLENBQUMxbEYsSUFBTCxDQUFVNmxGLEVBQUUsQ0FBQy9vRixLQUFiOztDQUFxQixVQUFJd0osQ0FBQyxJQUFJby9FLElBQUksQ0FBQzNuRixNQUFMLEtBQWdCdUksQ0FBekIsRUFBNEI7Q0FBUTtDQUFFLEdBQXJJLENBQXNJLE9BQU9tdEMsR0FBUCxFQUFZO0NBQUVteUMsSUFBQUEsRUFBRSxHQUFHLElBQUw7Q0FBV0UsSUFBQUEsRUFBRSxHQUFHcnlDLEdBQUw7Q0FBVyxHQUExSyxTQUFtTDtDQUFFLFFBQUk7Q0FBRSxVQUFJLENBQUNreUMsRUFBRCxJQUFPRixFQUFFLENBQUMsUUFBRCxDQUFGLElBQWdCLElBQTNCLEVBQWlDQSxFQUFFLENBQUMsUUFBRCxDQUFGO0NBQWlCLEtBQXhELFNBQWlFO0NBQUUsVUFBSUcsRUFBSixFQUFRLE1BQU1FLEVBQU47Q0FBVztDQUFFOztDQUFDLFNBQU9KLElBQVA7Q0FBYzs7Q0FFamdCLFNBQVNSLGVBQVQsQ0FBeUIvcEIsR0FBekIsRUFBOEI7Q0FBRSxNQUFJL3lELEtBQUssQ0FBQ0MsT0FBTixDQUFjOHlELEdBQWQsQ0FBSixFQUF3QixPQUFPQSxHQUFQO0NBQWE7Q0FTckUsSUFBSTRxQixtQkFBbUIsR0FBR0MsT0FBWSxDQUFDQyxnQkFBRCxDQUF0Qzs7Q0FFQSxTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF5QjtDQUN2QixNQUFJLytFLElBQUksR0FBRysrRSxJQUFJLENBQUMvK0UsSUFBaEI7Q0FBQSxNQUNJZy9FLFVBQVUsR0FBR0QsSUFBSSxDQUFDOU8sS0FEdEI7Q0FBQSxNQUVJQSxLQUFLLEdBQUcrTyxVQUFVLEtBQUssS0FBSyxDQUFwQixHQUF3QixHQUF4QixHQUE4QkEsVUFGMUM7Q0FBQSxNQUdJQyxXQUFXLEdBQUdGLElBQUksQ0FBQzdPLE1BSHZCO0NBQUEsTUFJSUEsTUFBTSxHQUFHK08sV0FBVyxLQUFLLEtBQUssQ0FBckIsR0FBeUIsR0FBekIsR0FBK0JBLFdBSjVDO0NBQUEsTUFLSUMsU0FBUyxHQUFHSCxJQUFJLENBQUM3USxJQUxyQjtDQUFBLE1BTUlBLElBQUksR0FBR2dSLFNBQVMsS0FBSyxLQUFLLENBQW5CLEdBQXVCLE9BQXZCLEdBQWlDQSxTQU41QztDQUFBLE1BT0lDLGNBQWMsR0FBR0osSUFBSSxDQUFDelEsU0FQMUI7Q0FBQSxNQVFJQSxTQUFTLEdBQUc2USxjQUFjLEtBQUssS0FBSyxDQUF4QixHQUE0QixRQUE1QixHQUF1Q0EsY0FSdkQ7Q0FBQSxNQVNJQyxlQUFlLEdBQUdMLElBQUksQ0FBQ3ZRLFVBVDNCO0NBQUEsTUFVSUEsVUFBVSxHQUFHNFEsZUFBZSxLQUFLLEtBQUssQ0FBekIsR0FBNkIsUUFBN0IsR0FBd0NBLGVBVnpEO0NBQUEsTUFXSUMsYUFBYSxHQUFHTixJQUFJLENBQUMzUSxRQVh6QjtDQUFBLE1BWUlBLFFBQVEsR0FBR2lSLGFBQWEsS0FBSyxLQUFLLENBQXZCLEdBQTJCLFVBQVUxYSxDQUFWLEVBQWE7Q0FDckQsV0FBT3h3RSxJQUFJLENBQUMreEIsSUFBTCxDQUFVeStDLENBQUMsQ0FBQ2p2RSxLQUFaLENBQVA7Q0FDRCxHQUZjLEdBRVgycEYsYUFkSjtDQUFBLE1BZUlDLFdBQVcsR0FBR1AsSUFBSSxDQUFDdFEsTUFmdkI7Q0FBQSxNQWdCSUEsTUFBTSxHQUFHNlEsV0FBVyxLQUFLLEtBQUssQ0FBckIsR0FBeUIsWUFBWTtDQUNoRCxXQUFPLENBQUMsQ0FBQyxFQUFFbnJGLElBQUksQ0FBQ2lGLE1BQUwsS0FBZ0IsQ0FBbEIsQ0FBRCxHQUF3QixDQUF6QixJQUE4QixFQUFyQztDQUNELEdBRlksR0FFVGttRixXQWxCSjtDQUFBLE1BbUJJQyxXQUFXLEdBQUdSLElBQUksQ0FBQ2xRLE1BbkJ2QjtDQUFBLE1Bb0JJQSxNQUFNLEdBQUcwUSxXQUFXLEtBQUssS0FBSyxDQUFyQixHQUF5QixhQUF6QixHQUF5Q0EsV0FwQnREO0NBQUEsTUFxQklDLFlBQVksR0FBR1QsSUFBSSxDQUFDcFEsT0FyQnhCO0NBQUEsTUFzQklBLE9BQU8sR0FBRzZRLFlBQVksS0FBSyxLQUFLLENBQXRCLEdBQTBCLENBQTFCLEdBQThCQSxZQXRCNUM7Q0FBQSxNQXVCSUMsV0FBVyxHQUFHVixJQUFJLENBQUMzbEYsTUF2QnZCO0NBQUEsTUF3QklBLE1BQU0sR0FBR3FtRixXQUFXLEtBQUssS0FBSyxDQUFyQixHQUF5QnRyRixJQUFJLENBQUNpRixNQUE5QixHQUF1Q3FtRixXQXhCcEQ7Q0FBQSxNQXlCSUMsU0FBUyxHQUFHWCxJQUFJLENBQUN6d0UsSUF6QnJCO0NBQUEsTUEwQklBLElBQUksR0FBR294RSxTQUFTLEtBQUssS0FBSyxDQUFuQixHQUF1QixVQUFVdi9DLENBQVYsRUFBYWpoQyxDQUFiLEVBQWdCO0NBQ2hELFdBQU95L0UsbUJBQW1CLENBQUN6L0UsQ0FBRCxDQUExQjtDQUNELEdBRlUsR0FFUHdnRixTQTVCSjtDQUFBLE1BNkJJQyxXQUFXLEdBQUdaLElBQUksQ0FBQ1ksV0E3QnZCO0NBQUEsTUE4QklDLGVBQWUsR0FBR2IsSUFBSSxDQUFDYSxlQTlCM0I7Q0FBQSxNQStCSUMsY0FBYyxHQUFHZCxJQUFJLENBQUNjLGNBL0IxQjtDQWdDQSxNQUFJQyxVQUFVLEdBQUdDLGNBQU0sRUFBdkI7O0NBRUEsTUFBSSxDQUFDRCxVQUFVLENBQUNFLE9BQWhCLEVBQXlCO0NBQ3ZCRixJQUFBQSxVQUFVLENBQUNFLE9BQVgsR0FBcUJDLFlBQVksQ0FBQzVsRixhQUFiLENBQTJCLEtBQTNCLENBQXJCO0NBQ0Q7O0NBRUQsTUFBSXdFLEVBQUUsR0FBR2loRixVQUFVLENBQUNFLE9BQXBCLENBdkN1Qjs7Q0F5Q3ZCdGlCLEVBQUFBLE1BQU0sQ0FBQzcrRCxFQUFELENBQU4sQ0FBVzQyRSxTQUFYLENBQXFCLEdBQXJCLEVBQTBCeUIsTUFBMUIsR0F6Q3VCOztDQTJDdkIsTUFBSWdKLE1BQU0sR0FBR2hSLE9BQUssR0FBR0gsS0FBUixDQUFjL3VFLElBQWQsRUFBb0JrbEIsSUFBcEIsQ0FBeUIsQ0FBQytxRCxLQUFELEVBQVFDLE1BQVIsQ0FBekIsRUFBMENoQyxJQUExQyxDQUErQ0EsSUFBL0MsRUFBcURJLFNBQXJELENBQStEQSxTQUEvRCxFQUEwRUUsVUFBMUUsQ0FBcUZBLFVBQXJGLEVBQWlHSixRQUFqRyxDQUEwR0EsUUFBMUcsRUFBb0hLLE1BQXBILENBQTJIQSxNQUEzSCxFQUFtSUksTUFBbkksQ0FBMElBLE1BQTFJLEVBQWtKRixPQUFsSixDQUEwSkEsT0FBMUosRUFBbUt2MUUsTUFBbkssQ0FBMEtBLE1BQTFLLEVBQWtMdzBFLEVBQWxMLENBQXFMLEtBQXJMLEVBQTRMLFVBQVVtQixLQUFWLEVBQWlCO0NBQ3hOLFFBQUlvUixZQUFZLEdBQUdELE1BQU0sQ0FBQ2g3RCxJQUFQLEVBQW5CO0NBQUEsUUFDSWs3RCxhQUFhLEdBQUd2QyxjQUFjLENBQUNzQyxZQUFELEVBQWUsQ0FBZixDQURsQztDQUFBLFFBRUlqUCxDQUFDLEdBQUdrUCxhQUFhLENBQUMsQ0FBRCxDQUZyQjtDQUFBLFFBR0k3TyxDQUFDLEdBQUc2TyxhQUFhLENBQUMsQ0FBRCxDQUhyQjs7Q0FLQSxRQUFJQyxLQUFLLEdBQUczaUIsTUFBTSxDQUFDNytELEVBQUQsQ0FBTixDQUFXa2hELE1BQVgsQ0FBa0IsS0FBbEIsRUFBeUJ3VyxJQUF6QixDQUE4QixTQUE5QixFQUF5QyxPQUFPbDNELE1BQVAsQ0FBYzZ4RSxDQUFkLEVBQWlCLEdBQWpCLEVBQXNCN3hFLE1BQXRCLENBQTZCa3lFLENBQTdCLENBQXpDLEVBQTBFaGIsSUFBMUUsQ0FBK0UscUJBQS9FLEVBQXNHLGVBQXRHLEVBQXVIeFcsTUFBdkgsQ0FBOEgsR0FBOUgsRUFBbUl3VyxJQUFuSSxDQUF3SSxXQUF4SSxFQUFxSixhQUFhbDNELE1BQWIsQ0FBb0I2eEUsQ0FBQyxHQUFHLENBQXhCLEVBQTJCLEdBQTNCLEVBQWdDN3hFLE1BQWhDLENBQXVDa3lFLENBQUMsR0FBRyxDQUEzQyxFQUE4QyxHQUE5QyxDQUFySixFQUF5TWtFLFNBQXpNLENBQW1OLE1BQW5OLEVBQTJOejFFLElBQTNOLENBQWdPK3VFLEtBQWhPLEVBQXVPcitDLEtBQXZPLEdBQStPcXZCLE1BQS9PLENBQXNQLE1BQXRQLEVBQThQLzhDLEtBQTlQLENBQW9RLGFBQXBRLEVBQW1SLFVBQVUyaEUsQ0FBVixFQUFhO0NBQzFTLGFBQU9BLENBQUMsQ0FBQ3VKLElBQVQ7Q0FDRCxLQUZXLEVBRVRsckUsS0FGUyxDQUVILFlBRkcsRUFFVyxVQUFVMmhFLENBQVYsRUFBYTtDQUNsQyxhQUFPQSxDQUFDLENBQUMzaEUsS0FBVDtDQUNELEtBSlcsRUFJVEEsS0FKUyxDQUlILGFBSkcsRUFJWSxVQUFVMmhFLENBQVYsRUFBYTtDQUNuQyxhQUFPQSxDQUFDLENBQUNpTCxNQUFUO0NBQ0QsS0FOVyxFQU1UNXNFLEtBTlMsQ0FNSCxXQU5HLEVBTVUsVUFBVTJoRSxDQUFWLEVBQWE7Q0FDakMsYUFBTyxHQUFHdGxFLE1BQUgsQ0FBVXNsRSxDQUFDLENBQUN6L0MsSUFBWixFQUFrQixJQUFsQixDQUFQO0NBQ0QsS0FSVyxFQVFUbGlCLEtBUlMsQ0FRSCxNQVJHLEVBUUtzTCxJQVJMLEVBUVdpb0QsSUFSWCxDQVFnQixhQVJoQixFQVErQixRQVIvQixFQVF5Q0EsSUFSekMsQ0FROEMsV0FSOUMsRUFRMkQsVUFBVW9PLENBQVYsRUFBYTtDQUNsRixhQUFPLGFBQWF0bEUsTUFBYixDQUFvQixDQUFDc2xFLENBQUMsQ0FBQ3R1RCxDQUFILEVBQU1zdUQsQ0FBQyxDQUFDcnVELENBQVIsQ0FBcEIsRUFBZ0MsVUFBaEMsRUFBNENqWCxNQUE1QyxDQUFtRHNsRSxDQUFDLENBQUM4SixNQUFyRCxFQUE2RCxHQUE3RCxDQUFQO0NBQ0QsS0FWVyxFQVVUaGlCLElBVlMsQ0FVSixVQUFVa1ksQ0FBVixFQUFhO0NBQ25CLGFBQU9BLENBQUMsQ0FBQ2xZLElBQVQ7Q0FDRCxLQVpXLENBQVo7O0NBY0EsUUFBSWt6QixXQUFKLEVBQWlCO0NBQ2ZVLE1BQUFBLEtBQUssQ0FBQ3pTLEVBQU4sQ0FBUyxPQUFULEVBQWtCK1IsV0FBbEI7Q0FDRDs7Q0FFRCxRQUFJQyxlQUFKLEVBQXFCO0NBQ25CUyxNQUFBQSxLQUFLLENBQUN6UyxFQUFOLENBQVMsV0FBVCxFQUFzQmdTLGVBQXRCO0NBQ0Q7O0NBRUQsUUFBSUMsY0FBSixFQUFvQjtDQUNsQlEsTUFBQUEsS0FBSyxDQUFDelMsRUFBTixDQUFTLFVBQVQsRUFBcUJpUyxjQUFyQjtDQUNEO0NBQ0YsR0EvQlksQ0FBYjtDQWdDQUssRUFBQUEsTUFBTSxDQUFDcnlFLEtBQVA7Q0FDQSxTQUFPaFAsRUFBRSxDQUFDa2tFLE9BQUgsRUFBUDtDQUNEOztDQUVEK2IsU0FBUyxDQUFDaFosU0FBVixHQUFzQjtDQUNwQjlsRSxFQUFBQSxJQUFJLEVBQUVzZ0YsR0FBRyxDQUFDdHlCLE9BQUosQ0FBWXN5QixHQUFHLENBQUN4eEIsS0FBSixDQUFVO0NBQzFCckMsSUFBQUEsSUFBSSxFQUFFNnpCLEdBQUcsQ0FBQ2xnRixNQUFKLENBQVdvdkQsVUFEUztDQUUxQjk1RCxJQUFBQSxLQUFLLEVBQUU0cUYsR0FBRyxDQUFDdGlGLE1BQUosQ0FBV3d4RDtDQUZRLEdBQVYsQ0FBWixFQUdGQSxVQUpnQjtDQUtwQnlnQixFQUFBQSxLQUFLLEVBQUVxUSxHQUFHLENBQUN0aUYsTUFMUztDQU1wQmt5RSxFQUFBQSxNQUFNLEVBQUVvUSxHQUFHLENBQUN0aUYsTUFOUTtDQU9wQmt3RSxFQUFBQSxJQUFJLEVBQUVvUyxHQUFHLENBQUMxeEIsU0FBSixDQUFjLENBQUMweEIsR0FBRyxDQUFDbGdGLE1BQUwsRUFBYWtnRixHQUFHLENBQUNyb0YsSUFBakIsQ0FBZCxDQVBjO0NBUXBCcTJFLEVBQUFBLFNBQVMsRUFBRWdTLEdBQUcsQ0FBQzF4QixTQUFKLENBQWMsQ0FBQzB4QixHQUFHLENBQUNsZ0YsTUFBTCxFQUFha2dGLEdBQUcsQ0FBQ3JvRixJQUFqQixDQUFkLENBUlM7Q0FTcEJ1MkUsRUFBQUEsVUFBVSxFQUFFOFIsR0FBRyxDQUFDMXhCLFNBQUosQ0FBYyxDQUFDMHhCLEdBQUcsQ0FBQ2xnRixNQUFMLEVBQWFrZ0YsR0FBRyxDQUFDdGlGLE1BQWpCLEVBQXlCc2lGLEdBQUcsQ0FBQ3JvRixJQUE3QixDQUFkLENBVFE7Q0FVcEJtMkUsRUFBQUEsUUFBUSxFQUFFa1MsR0FBRyxDQUFDMXhCLFNBQUosQ0FBYyxDQUFDMHhCLEdBQUcsQ0FBQ3RpRixNQUFMLEVBQWFzaUYsR0FBRyxDQUFDcm9GLElBQWpCLENBQWQsQ0FWVTtDQVdwQncyRSxFQUFBQSxNQUFNLEVBQUU2UixHQUFHLENBQUMxeEIsU0FBSixDQUFjLENBQUMweEIsR0FBRyxDQUFDdGlGLE1BQUwsRUFBYXNpRixHQUFHLENBQUNyb0YsSUFBakIsQ0FBZCxDQVhZO0NBWXBCNDJFLEVBQUFBLE1BQU0sRUFBRXlSLEdBQUcsQ0FBQzF4QixTQUFKLENBQWMsQ0FBQzB4QixHQUFHLENBQUM1eEIsS0FBSixDQUFVLENBQUMsYUFBRCxDQUFWLENBQUQsRUFBNkI0eEIsR0FBRyxDQUFDNXhCLEtBQUosQ0FBVSxDQUFDLGFBQUQsQ0FBVixDQUE3QixFQUF5RDR4QixHQUFHLENBQUNyb0YsSUFBN0QsQ0FBZCxDQVpZO0NBYXBCMDJFLEVBQUFBLE9BQU8sRUFBRTJSLEdBQUcsQ0FBQzF4QixTQUFKLENBQWMsQ0FBQzB4QixHQUFHLENBQUN0aUYsTUFBTCxFQUFhc2lGLEdBQUcsQ0FBQ3JvRixJQUFqQixDQUFkLENBYlc7Q0FjcEJtQixFQUFBQSxNQUFNLEVBQUVrbkYsR0FBRyxDQUFDcm9GLElBZFE7Q0FlcEIwbkYsRUFBQUEsV0FBVyxFQUFFVyxHQUFHLENBQUNyb0YsSUFmRztDQWdCcEIybkYsRUFBQUEsZUFBZSxFQUFFVSxHQUFHLENBQUNyb0YsSUFoQkQ7Q0FpQnBCNG5GLEVBQUFBLGNBQWMsRUFBRVMsR0FBRyxDQUFDcm9GO0NBakJBLENBQXRCO0FBbUJBLG1CQUFlLGFBQWF3b0UseUJBQUssQ0FBQ2p0RCxJQUFOLENBQVdzckUsU0FBWCxFQUFzQnlCLGdCQUF0QixDQUE1Qjs7Q0NqSGUsU0FBU0Msd0JBQVQsQ0FBa0Mvd0IsS0FBbEMsRUFBeUM7Q0FFdEQsUUFBTXp2RCxJQUFJLEdBQUd5dkQsS0FBSyxDQUFDZ3hCLFNBQW5COztDQUNBLFFBQU1DLGNBQWMsR0FBR0MsSUFBSSxJQUFJeHNGLElBQUksQ0FBQ3kwQixJQUFMLENBQVUrM0QsSUFBSSxDQUFDanJGLEtBQWYsSUFBd0IsQ0FBdkQ7O0NBQ0EsUUFBTSs0RSxNQUFNLEdBQUdrUyxJQUFJLElBQUt4c0YsSUFBSSxDQUFDNEosS0FBTCxDQUFXNUosSUFBSSxDQUFDaUYsTUFBTCxLQUFnQixDQUEzQixJQUFnQyxFQUF4RDs7Q0FDQSxRQUFNd25GLGFBQWEsR0FBSW4wQixJQUFELElBQVU7Q0FFN0JnRCxJQUFBQSxLQUFLLENBQUNveEIsYUFBTixDQUFvQkMsVUFBcEIsSUFBa0MsQ0FBQ3J4QixLQUFLLENBQUNveEIsYUFBTixDQUFvQkUsV0FBeEQ7Q0FFQTtDQUNFdHhCLE1BQUFBLEtBQUssQ0FBQ3V4QixVQUFOLENBQWlCQyxRQUFqQixDQUEwQngwQixJQUExQjtDQUNBZ0QsTUFBQUEsS0FBSyxDQUFDb3hCLGFBQU4sQ0FBb0JLLE9BQXBCO0NBQ0Q7Q0FDRixHQVJEOztDQVVBLFNBRUU3bUYsc0JBQUN5a0YsV0FBRDtDQUFXLElBQUEsSUFBSSxFQUFFOStFLElBQWpCO0NBQXVCLElBQUEsY0FBYyxFQUFFMGdGLGNBQXZDO0NBQXVELElBQUEsTUFBTSxFQUFFalMsTUFBL0Q7Q0FBdUUsSUFBQSxXQUFXLEVBQUUsQ0FBQzcvQyxLQUFELEVBQVEreEQsSUFBUixLQUFpQkMsYUFBYSxDQUFDRCxJQUFJLENBQUNsMEIsSUFBTjtDQUFsSCxJQUZGO0NBS0Q7O0NDbkJjLE1BQU0wMEIsZUFBTixTQUE4QjFXLGlCQUE5QixDQUF3QztDQUduRGpFLEVBQUFBLHFCQUFxQixDQUFDNGEsU0FBRCxFQUFZO0NBRTdCLFdBQU9BLFNBQVMsQ0FBQ0MsVUFBVixLQUF5QixLQUFLNXhCLEtBQUwsQ0FBVzR4QixVQUEzQztDQUNIOztDQUVEamIsRUFBQUEsTUFBTSxHQUFHO0NBRUwsUUFBSWtiLFlBQVksR0FBRyxFQUFuQjs7Q0FFQSxRQUFJLEtBQUs3eEIsS0FBTCxDQUFXNHhCLFVBQVgsQ0FBc0I3ckQsTUFBdEIsS0FBaUMsV0FBakMsSUFBZ0QsS0FBS2k2QixLQUFMLENBQVc0eEIsVUFBWCxDQUFzQjlxRSxLQUExRSxFQUFpRjtDQUU3RSxVQUFJclgsQ0FBQyxHQUFHLENBQVI7O0NBQ1ksV0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHLEtBQUt1d0QsS0FBTCxDQUFXNHhCLFVBQVgsQ0FBc0I5cUUsS0FBdEIsQ0FBNEI1ZixNQUE1QyxFQUFvRHVJLENBQUMsRUFBckQsRUFBeUQ7Q0FDakVvaUYsUUFBQUEsWUFBWSxDQUFDMW9GLElBQWIsQ0FBa0I7Q0FHZDZ6RCxVQUFBQSxJQUFJLEVBQUUsS0FBS2dELEtBQUwsQ0FBVzh4QixVQUFYLENBQXNCdnNGLEdBQXRCLENBQTJCLEtBQUt5NkQsS0FBTCxDQUFXNHhCLFVBQVgsQ0FBc0I5cUUsS0FBdEIsQ0FBNEJyWCxDQUE1QixDQUEzQixFQUE0RHhKLEtBSHBEO0NBSWRBLFVBQUFBLEtBQUssRUFBRSxLQUFLKzVELEtBQUwsQ0FBVyt4QixTQUFYLENBQXFCeHNGLEdBQXJCLENBQTBCLEtBQUt5NkQsS0FBTCxDQUFXNHhCLFVBQVgsQ0FBc0I5cUUsS0FBdEIsQ0FBNEJyWCxDQUE1QixDQUExQixFQUEyRHhKO0NBSnBELFNBQWxCO0NBTUg7Q0FDSjs7Q0FDRCxXQUFPMkUsc0JBQUMsd0JBQUQ7Q0FBMEIsTUFBQSxTQUFTLEVBQUVpbkYsWUFBckM7Q0FBbUQsTUFBQSxVQUFVLEVBQUUsS0FBSzd4QixLQUFMLENBQVd1eEIsVUFBMUU7Q0FBc0YsTUFBQSxhQUFhLEVBQUUsS0FBS3Z4QixLQUFMLENBQVdveEI7Q0FBaEgsTUFBUDtDQUVIOztDQTFCa0Q7Ozs7Ozs7OyJ9
diff --git a/dist/tmp/widgets/objectivity/wordcloud/WordCloud.mjs b/dist/tmp/widgets/objectivity/wordcloud/WordCloud.mjs
new file mode 100644
index 0000000..7d7151d
--- /dev/null
+++ b/dist/tmp/widgets/objectivity/wordcloud/WordCloud.mjs
@@ -0,0 +1,25506 @@
+
+(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35730/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document);
+function ___$insertStyle(css) {
+ if (!css || typeof window === 'undefined') {
+ return;
+ }
+ const style = document.createElement('style');
+ style.setAttribute('type', 'text/css');
+ style.innerHTML = css;
+ document.head.appendChild(style);
+ return css;
+}
+
+import React$3, { useRef, createElement as createElement$2, Component } from 'react';
+
+var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+var check = function (it) {
+ return it && it.Math == Math && it;
+}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+
+
+var global$R = // eslint-disable-next-line es/no-global-this -- safe
+check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe
+check(typeof self == 'object' && self) || check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func -- fallback
+function () {
+ return this;
+}() || Function('return this')();
+
+var objectGetOwnPropertyDescriptor = {};
+
+var fails$15 = function (exec) {
+ try {
+ return !!exec();
+ } catch (error) {
+ return true;
+ }
+};
+
+var fails$14 = fails$15; // Detect IE8's incomplete defineProperty implementation
+
+
+var descriptors = !fails$14(function () {
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+ return Object.defineProperty({}, 1, {
+ get: function () {
+ return 7;
+ }
+ })[1] != 7;
+});
+
+var objectPropertyIsEnumerable = {};
+
+var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+var getOwnPropertyDescriptor$9 = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug
+
+var NASHORN_BUG = getOwnPropertyDescriptor$9 && !$propertyIsEnumerable$1.call({
+ 1: 2
+}, 1); // `Object.prototype.propertyIsEnumerable` method implementation
+// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
+
+objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+ var descriptor = getOwnPropertyDescriptor$9(this, V);
+ return !!descriptor && descriptor.enumerable;
+} : $propertyIsEnumerable$1;
+
+var createPropertyDescriptor$9 = function (bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+};
+
+var toString$u = {}.toString;
+
+var classofRaw$1 = function (it) {
+ return toString$u.call(it).slice(8, -1);
+};
+
+var fails$13 = fails$15;
+
+var classof$d = classofRaw$1;
+
+var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings
+
+var indexedObject = fails$13(function () {
+ // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
+ // eslint-disable-next-line no-prototype-builtins -- safe
+ return !Object('z').propertyIsEnumerable(0);
+}) ? function (it) {
+ return classof$d(it) == 'String' ? split.call(it, '') : Object(it);
+} : Object;
+
+// `RequireObjectCoercible` abstract operation
+// https://tc39.es/ecma262/#sec-requireobjectcoercible
+var requireObjectCoercible$j = function (it) {
+ if (it == undefined) throw TypeError("Can't call method on " + it);
+ return it;
+};
+
+// toObject with fallback for non-array-like ES3 strings
+var IndexedObject$6 = indexedObject;
+
+var requireObjectCoercible$i = requireObjectCoercible$j;
+
+var toIndexedObject$d = function (it) {
+ return IndexedObject$6(requireObjectCoercible$i(it));
+};
+
+// `IsCallable` abstract operation
+// https://tc39.es/ecma262/#sec-iscallable
+var isCallable$z = function (argument) {
+ return typeof argument === 'function';
+};
+
+var isCallable$y = isCallable$z;
+
+var isObject$C = function (it) {
+ return typeof it === 'object' ? it !== null : isCallable$y(it);
+};
+
+var global$Q = global$R;
+
+var isCallable$x = isCallable$z;
+
+var aFunction = function (argument) {
+ return isCallable$x(argument) ? argument : undefined;
+};
+
+var getBuiltIn$y = function (namespace, method) {
+ return arguments.length < 2 ? aFunction(global$Q[namespace]) : global$Q[namespace] && global$Q[namespace][method];
+};
+
+var getBuiltIn$x = getBuiltIn$y;
+
+var engineUserAgent = getBuiltIn$x('navigator', 'userAgent') || '';
+
+var global$P = global$R;
+
+var userAgent$7 = engineUserAgent;
+
+var process$4 = global$P.process;
+var Deno = global$P.Deno;
+var versions = process$4 && process$4.versions || Deno && Deno.version;
+var v8 = versions && versions.v8;
+var match, version;
+
+if (v8) {
+ match = v8.split('.');
+ version = match[0] < 4 ? 1 : match[0] + match[1];
+} else if (userAgent$7) {
+ match = userAgent$7.match(/Edge\/(\d+)/);
+
+ if (!match || match[1] >= 74) {
+ match = userAgent$7.match(/Chrome\/(\d+)/);
+ if (match) version = match[1];
+ }
+}
+
+var engineV8Version = version && +version;
+
+/* eslint-disable es/no-symbol -- required for testing */
+
+var V8_VERSION$3 = engineV8Version;
+
+var fails$12 = fails$15; // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
+
+
+var nativeSymbol$1 = !!Object.getOwnPropertySymbols && !fails$12(function () {
+ var symbol = Symbol(); // Chrome 38 Symbol has incorrect toString conversion
+ // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
+
+ return !String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
+ !Symbol.sham && V8_VERSION$3 && V8_VERSION$3 < 41;
+});
+
+/* eslint-disable es/no-symbol -- required for testing */
+
+var NATIVE_SYMBOL$2 = nativeSymbol$1;
+
+var useSymbolAsUid = NATIVE_SYMBOL$2 && !Symbol.sham && typeof Symbol.iterator == 'symbol';
+
+var isCallable$w = isCallable$z;
+
+var getBuiltIn$w = getBuiltIn$y;
+
+var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
+
+var isSymbol$5 = USE_SYMBOL_AS_UID$1 ? function (it) {
+ return typeof it == 'symbol';
+} : function (it) {
+ var $Symbol = getBuiltIn$w('Symbol');
+ return isCallable$w($Symbol) && Object(it) instanceof $Symbol;
+};
+
+var tryToString$3 = function (argument) {
+ try {
+ return String(argument);
+ } catch (error) {
+ return 'Object';
+ }
+};
+
+var isCallable$v = isCallable$z;
+
+var tryToString$2 = tryToString$3; // `Assert: IsCallable(argument) is true`
+
+
+var aCallable$Q = function (argument) {
+ if (isCallable$v(argument)) return argument;
+ throw TypeError(tryToString$2(argument) + ' is not a function');
+};
+
+var aCallable$P = aCallable$Q; // `GetMethod` abstract operation
+// https://tc39.es/ecma262/#sec-getmethod
+
+
+var getMethod$h = function (V, P) {
+ var func = V[P];
+ return func == null ? undefined : aCallable$P(func);
+};
+
+var isCallable$u = isCallable$z;
+
+var isObject$B = isObject$C; // `OrdinaryToPrimitive` abstract operation
+// https://tc39.es/ecma262/#sec-ordinarytoprimitive
+
+
+var ordinaryToPrimitive$2 = function (input, pref) {
+ var fn, val;
+ if (pref === 'string' && isCallable$u(fn = input.toString) && !isObject$B(val = fn.call(input))) return val;
+ if (isCallable$u(fn = input.valueOf) && !isObject$B(val = fn.call(input))) return val;
+ if (pref !== 'string' && isCallable$u(fn = input.toString) && !isObject$B(val = fn.call(input))) return val;
+ throw TypeError("Can't convert object to primitive value");
+};
+
+var shared$7 = {exports: {}};
+
+var isPure = false;
+
+var global$O = global$R;
+
+var setGlobal$3 = function (key, value) {
+ try {
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
+ Object.defineProperty(global$O, key, {
+ value: value,
+ configurable: true,
+ writable: true
+ });
+ } catch (error) {
+ global$O[key] = value;
+ }
+
+ return value;
+};
+
+var global$N = global$R;
+
+var setGlobal$2 = setGlobal$3;
+
+var SHARED = '__core-js_shared__';
+var store$5 = global$N[SHARED] || setGlobal$2(SHARED, {});
+var sharedStore = store$5;
+
+var store$4 = sharedStore;
+
+(shared$7.exports = function (key, value) {
+ return store$4[key] || (store$4[key] = value !== undefined ? value : {});
+})('versions', []).push({
+ version: '3.18.3',
+ mode: 'global',
+ copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
+});
+
+var requireObjectCoercible$h = requireObjectCoercible$j; // `ToObject` abstract operation
+// https://tc39.es/ecma262/#sec-toobject
+
+
+var toObject$A = function (argument) {
+ return Object(requireObjectCoercible$h(argument));
+};
+
+var toObject$z = toObject$A;
+
+var hasOwnProperty$1 = {}.hasOwnProperty; // `HasOwnProperty` abstract operation
+// https://tc39.es/ecma262/#sec-hasownproperty
+
+var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
+ return hasOwnProperty$1.call(toObject$z(it), key);
+};
+
+var id$2 = 0;
+var postfix = Math.random();
+
+var uid$5 = function (key) {
+ return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id$2 + postfix).toString(36);
+};
+
+var global$M = global$R;
+
+var shared$6 = shared$7.exports;
+
+var hasOwn$o = hasOwnProperty_1;
+
+var uid$4 = uid$5;
+
+var NATIVE_SYMBOL$1 = nativeSymbol$1;
+
+var USE_SYMBOL_AS_UID = useSymbolAsUid;
+
+var WellKnownSymbolsStore$1 = shared$6('wks');
+var Symbol$3 = global$M.Symbol;
+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$3 : Symbol$3 && Symbol$3.withoutSetter || uid$4;
+
+var wellKnownSymbol$G = function (name) {
+ if (!hasOwn$o(WellKnownSymbolsStore$1, name) || !(NATIVE_SYMBOL$1 || typeof WellKnownSymbolsStore$1[name] == 'string')) {
+ if (NATIVE_SYMBOL$1 && hasOwn$o(Symbol$3, name)) {
+ WellKnownSymbolsStore$1[name] = Symbol$3[name];
+ } else {
+ WellKnownSymbolsStore$1[name] = createWellKnownSymbol('Symbol.' + name);
+ }
+ }
+
+ return WellKnownSymbolsStore$1[name];
+};
+
+var isObject$A = isObject$C;
+
+var isSymbol$4 = isSymbol$5;
+
+var getMethod$g = getMethod$h;
+
+var ordinaryToPrimitive$1 = ordinaryToPrimitive$2;
+
+var wellKnownSymbol$F = wellKnownSymbol$G;
+
+var TO_PRIMITIVE$2 = wellKnownSymbol$F('toPrimitive'); // `ToPrimitive` abstract operation
+// https://tc39.es/ecma262/#sec-toprimitive
+
+var toPrimitive$3 = function (input, pref) {
+ if (!isObject$A(input) || isSymbol$4(input)) return input;
+ var exoticToPrim = getMethod$g(input, TO_PRIMITIVE$2);
+ var result;
+
+ if (exoticToPrim) {
+ if (pref === undefined) pref = 'default';
+ result = exoticToPrim.call(input, pref);
+ if (!isObject$A(result) || isSymbol$4(result)) return result;
+ throw TypeError("Can't convert object to primitive value");
+ }
+
+ if (pref === undefined) pref = 'number';
+ return ordinaryToPrimitive$1(input, pref);
+};
+
+var toPrimitive$2 = toPrimitive$3;
+
+var isSymbol$3 = isSymbol$5; // `ToPropertyKey` abstract operation
+// https://tc39.es/ecma262/#sec-topropertykey
+
+
+var toPropertyKey$9 = function (argument) {
+ var key = toPrimitive$2(argument, 'string');
+ return isSymbol$3(key) ? key : String(key);
+};
+
+var global$L = global$R;
+
+var isObject$z = isObject$C;
+
+var document$3 = global$L.document; // typeof document.createElement is 'object' in old IE
+
+var EXISTS$1 = isObject$z(document$3) && isObject$z(document$3.createElement);
+
+var documentCreateElement$2 = function (it) {
+ return EXISTS$1 ? document$3.createElement(it) : {};
+};
+
+var DESCRIPTORS$A = descriptors;
+
+var fails$11 = fails$15;
+
+var createElement$1 = documentCreateElement$2; // Thank's IE8 for his funny defineProperty
+
+
+var ie8DomDefine = !DESCRIPTORS$A && !fails$11(function () {
+ // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
+ return Object.defineProperty(createElement$1('div'), 'a', {
+ get: function () {
+ return 7;
+ }
+ }).a != 7;
+});
+
+var DESCRIPTORS$z = descriptors;
+
+var propertyIsEnumerableModule$2 = objectPropertyIsEnumerable;
+
+var createPropertyDescriptor$8 = createPropertyDescriptor$9;
+
+var toIndexedObject$c = toIndexedObject$d;
+
+var toPropertyKey$8 = toPropertyKey$9;
+
+var hasOwn$n = hasOwnProperty_1;
+
+var IE8_DOM_DEFINE$1 = ie8DomDefine; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+
+var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+
+objectGetOwnPropertyDescriptor.f = DESCRIPTORS$z ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {
+ O = toIndexedObject$c(O);
+ P = toPropertyKey$8(P);
+ if (IE8_DOM_DEFINE$1) try {
+ return $getOwnPropertyDescriptor$1(O, P);
+ } catch (error) {
+ /* empty */
+ }
+ if (hasOwn$n(O, P)) return createPropertyDescriptor$8(!propertyIsEnumerableModule$2.f.call(O, P), O[P]);
+};
+
+var objectDefineProperty = {};
+
+var isObject$y = isObject$C; // `Assert: Type(argument) is Object`
+
+
+var anObject$1C = function (argument) {
+ if (isObject$y(argument)) return argument;
+ throw TypeError(String(argument) + ' is not an object');
+};
+
+var DESCRIPTORS$y = descriptors;
+
+var IE8_DOM_DEFINE = ie8DomDefine;
+
+var anObject$1B = anObject$1C;
+
+var toPropertyKey$7 = toPropertyKey$9; // eslint-disable-next-line es/no-object-defineproperty -- safe
+
+
+var $defineProperty$1 = Object.defineProperty; // `Object.defineProperty` method
+// https://tc39.es/ecma262/#sec-object.defineproperty
+
+objectDefineProperty.f = DESCRIPTORS$y ? $defineProperty$1 : function defineProperty(O, P, Attributes) {
+ anObject$1B(O);
+ P = toPropertyKey$7(P);
+ anObject$1B(Attributes);
+ if (IE8_DOM_DEFINE) try {
+ return $defineProperty$1(O, P, Attributes);
+ } catch (error) {
+ /* empty */
+ }
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
+ if ('value' in Attributes) O[P] = Attributes.value;
+ return O;
+};
+
+var DESCRIPTORS$x = descriptors;
+
+var definePropertyModule$c = objectDefineProperty;
+
+var createPropertyDescriptor$7 = createPropertyDescriptor$9;
+
+var createNonEnumerableProperty$h = DESCRIPTORS$x ? function (object, key, value) {
+ return definePropertyModule$c.f(object, key, createPropertyDescriptor$7(1, value));
+} : function (object, key, value) {
+ object[key] = value;
+ return object;
+};
+
+var redefine$l = {exports: {}};
+
+var isCallable$t = isCallable$z;
+
+var store$3 = sharedStore;
+
+var functionToString = Function.toString; // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
+
+if (!isCallable$t(store$3.inspectSource)) {
+ store$3.inspectSource = function (it) {
+ return functionToString.call(it);
+ };
+}
+
+var inspectSource$4 = store$3.inspectSource;
+
+var global$K = global$R;
+
+var isCallable$s = isCallable$z;
+
+var inspectSource$3 = inspectSource$4;
+
+var WeakMap$3 = global$K.WeakMap;
+var nativeWeakMap = isCallable$s(WeakMap$3) && /native code/.test(inspectSource$3(WeakMap$3));
+
+var shared$5 = shared$7.exports;
+
+var uid$3 = uid$5;
+
+var keys$3 = shared$5('keys');
+
+var sharedKey$4 = function (key) {
+ return keys$3[key] || (keys$3[key] = uid$3(key));
+};
+
+var hiddenKeys$6 = {};
+
+var NATIVE_WEAK_MAP$1 = nativeWeakMap;
+
+var global$J = global$R;
+
+var isObject$x = isObject$C;
+
+var createNonEnumerableProperty$g = createNonEnumerableProperty$h;
+
+var hasOwn$m = hasOwnProperty_1;
+
+var shared$4 = sharedStore;
+
+var sharedKey$3 = sharedKey$4;
+
+var hiddenKeys$5 = hiddenKeys$6;
+
+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
+var WeakMap$2 = global$J.WeakMap;
+var set$4, get$3, has$2;
+
+var enforce = function (it) {
+ return has$2(it) ? get$3(it) : set$4(it, {});
+};
+
+var getterFor = function (TYPE) {
+ return function (it) {
+ var state;
+
+ if (!isObject$x(it) || (state = get$3(it)).type !== TYPE) {
+ throw TypeError('Incompatible receiver, ' + TYPE + ' required');
+ }
+
+ return state;
+ };
+};
+
+if (NATIVE_WEAK_MAP$1 || shared$4.state) {
+ var store$2 = shared$4.state || (shared$4.state = new WeakMap$2());
+ var wmget = store$2.get;
+ var wmhas = store$2.has;
+ var wmset = store$2.set;
+
+ set$4 = function (it, metadata) {
+ if (wmhas.call(store$2, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+ metadata.facade = it;
+ wmset.call(store$2, it, metadata);
+ return metadata;
+ };
+
+ get$3 = function (it) {
+ return wmget.call(store$2, it) || {};
+ };
+
+ has$2 = function (it) {
+ return wmhas.call(store$2, it);
+ };
+} else {
+ var STATE = sharedKey$3('state');
+ hiddenKeys$5[STATE] = true;
+
+ set$4 = function (it, metadata) {
+ if (hasOwn$m(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+ metadata.facade = it;
+ createNonEnumerableProperty$g(it, STATE, metadata);
+ return metadata;
+ };
+
+ get$3 = function (it) {
+ return hasOwn$m(it, STATE) ? it[STATE] : {};
+ };
+
+ has$2 = function (it) {
+ return hasOwn$m(it, STATE);
+ };
+}
+
+var internalState = {
+ set: set$4,
+ get: get$3,
+ has: has$2,
+ enforce: enforce,
+ getterFor: getterFor
+};
+
+var DESCRIPTORS$w = descriptors;
+
+var hasOwn$l = hasOwnProperty_1;
+
+var FunctionPrototype$2 = Function.prototype; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+
+var getDescriptor = DESCRIPTORS$w && Object.getOwnPropertyDescriptor;
+var EXISTS = hasOwn$l(FunctionPrototype$2, 'name'); // additional protection from minified / mangled / dropped function names
+
+var PROPER = EXISTS && function something() {
+ /* empty */
+}.name === 'something';
+
+var CONFIGURABLE = EXISTS && (!DESCRIPTORS$w || DESCRIPTORS$w && getDescriptor(FunctionPrototype$2, 'name').configurable);
+var functionName = {
+ EXISTS: EXISTS,
+ PROPER: PROPER,
+ CONFIGURABLE: CONFIGURABLE
+};
+
+var global$I = global$R;
+
+var isCallable$r = isCallable$z;
+
+var hasOwn$k = hasOwnProperty_1;
+
+var createNonEnumerableProperty$f = createNonEnumerableProperty$h;
+
+var setGlobal$1 = setGlobal$3;
+
+var inspectSource$2 = inspectSource$4;
+
+var InternalStateModule$j = internalState;
+
+var CONFIGURABLE_FUNCTION_NAME$2 = functionName.CONFIGURABLE;
+
+var getInternalState$i = InternalStateModule$j.get;
+var enforceInternalState$1 = InternalStateModule$j.enforce;
+var TEMPLATE = String(String).split('String');
+(redefine$l.exports = function (O, key, value, options) {
+ var unsafe = options ? !!options.unsafe : false;
+ var simple = options ? !!options.enumerable : false;
+ var noTargetGet = options ? !!options.noTargetGet : false;
+ var name = options && options.name !== undefined ? options.name : key;
+ var state;
+
+ if (isCallable$r(value)) {
+ if (String(name).slice(0, 7) === 'Symbol(') {
+ name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
+ }
+
+ if (!hasOwn$k(value, 'name') || CONFIGURABLE_FUNCTION_NAME$2 && value.name !== name) {
+ createNonEnumerableProperty$f(value, 'name', name);
+ }
+
+ state = enforceInternalState$1(value);
+
+ if (!state.source) {
+ state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
+ }
+ }
+
+ if (O === global$I) {
+ if (simple) O[key] = value;else setGlobal$1(key, value);
+ return;
+ } else if (!unsafe) {
+ delete O[key];
+ } else if (!noTargetGet && O[key]) {
+ simple = true;
+ }
+
+ if (simple) O[key] = value;else createNonEnumerableProperty$f(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+})(Function.prototype, 'toString', function toString() {
+ return isCallable$r(this) && getInternalState$i(this).source || inspectSource$2(this);
+});
+
+var objectGetOwnPropertyNames = {};
+
+var ceil$2 = Math.ceil;
+var floor$a = Math.floor; // `ToIntegerOrInfinity` abstract operation
+// https://tc39.es/ecma262/#sec-tointegerorinfinity
+
+var toIntegerOrInfinity$i = function (argument) {
+ var number = +argument; // eslint-disable-next-line no-self-compare -- safe
+
+ return number !== number || number === 0 ? 0 : (number > 0 ? floor$a : ceil$2)(number);
+};
+
+var toIntegerOrInfinity$h = toIntegerOrInfinity$i;
+
+var max$6 = Math.max;
+var min$a = Math.min; // Helper for a popular repeating case of the spec:
+// Let integer be ? ToInteger(index).
+// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
+
+var toAbsoluteIndex$8 = function (index, length) {
+ var integer = toIntegerOrInfinity$h(index);
+ return integer < 0 ? max$6(integer + length, 0) : min$a(integer, length);
+};
+
+var toIntegerOrInfinity$g = toIntegerOrInfinity$i;
+
+var min$9 = Math.min; // `ToLength` abstract operation
+// https://tc39.es/ecma262/#sec-tolength
+
+var toLength$d = function (argument) {
+ return argument > 0 ? min$9(toIntegerOrInfinity$g(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
+};
+
+var toLength$c = toLength$d; // `LengthOfArrayLike` abstract operation
+// https://tc39.es/ecma262/#sec-lengthofarraylike
+
+
+var lengthOfArrayLike$q = function (obj) {
+ return toLength$c(obj.length);
+};
+
+var toIndexedObject$b = toIndexedObject$d;
+
+var toAbsoluteIndex$7 = toAbsoluteIndex$8;
+
+var lengthOfArrayLike$p = lengthOfArrayLike$q; // `Array.prototype.{ indexOf, includes }` methods implementation
+
+
+var createMethod$8 = function (IS_INCLUDES) {
+ return function ($this, el, fromIndex) {
+ var O = toIndexedObject$b($this);
+ var length = lengthOfArrayLike$p(O);
+ var index = toAbsoluteIndex$7(fromIndex, length);
+ var value; // Array#includes uses SameValueZero equality algorithm
+ // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (IS_INCLUDES && el != el) while (length > index) {
+ value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not
+ } else for (; length > index; index++) {
+ if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
+ }
+ return !IS_INCLUDES && -1;
+ };
+};
+
+var arrayIncludes = {
+ // `Array.prototype.includes` method
+ // https://tc39.es/ecma262/#sec-array.prototype.includes
+ includes: createMethod$8(true),
+ // `Array.prototype.indexOf` method
+ // https://tc39.es/ecma262/#sec-array.prototype.indexof
+ indexOf: createMethod$8(false)
+};
+
+var hasOwn$j = hasOwnProperty_1;
+
+var toIndexedObject$a = toIndexedObject$d;
+
+var indexOf = arrayIncludes.indexOf;
+
+var hiddenKeys$4 = hiddenKeys$6;
+
+var objectKeysInternal = function (object, names) {
+ var O = toIndexedObject$a(object);
+ var i = 0;
+ var result = [];
+ var key;
+
+ for (key in O) !hasOwn$j(hiddenKeys$4, key) && hasOwn$j(O, key) && result.push(key); // Don't enum bug & hidden keys
+
+
+ while (names.length > i) if (hasOwn$j(O, key = names[i++])) {
+ ~indexOf(result, key) || result.push(key);
+ }
+
+ return result;
+};
+
+// IE8- don't enum bug keys
+var enumBugKeys$3 = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];
+
+var internalObjectKeys$1 = objectKeysInternal;
+
+var enumBugKeys$2 = enumBugKeys$3;
+
+var hiddenKeys$3 = enumBugKeys$2.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method
+// https://tc39.es/ecma262/#sec-object.getownpropertynames
+// eslint-disable-next-line es/no-object-getownpropertynames -- safe
+
+objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+ return internalObjectKeys$1(O, hiddenKeys$3);
+};
+
+var objectGetOwnPropertySymbols = {};
+
+// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
+objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;
+
+var getBuiltIn$v = getBuiltIn$y;
+
+var getOwnPropertyNamesModule$2 = objectGetOwnPropertyNames;
+
+var getOwnPropertySymbolsModule$2 = objectGetOwnPropertySymbols;
+
+var anObject$1A = anObject$1C; // all object keys, includes non-enumerable and symbols
+
+
+var ownKeys$3 = getBuiltIn$v('Reflect', 'ownKeys') || function ownKeys(it) {
+ var keys = getOwnPropertyNamesModule$2.f(anObject$1A(it));
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule$2.f;
+ return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
+};
+
+var hasOwn$i = hasOwnProperty_1;
+
+var ownKeys$2 = ownKeys$3;
+
+var getOwnPropertyDescriptorModule$6 = objectGetOwnPropertyDescriptor;
+
+var definePropertyModule$b = objectDefineProperty;
+
+var copyConstructorProperties$3 = function (target, source) {
+ var keys = ownKeys$2(source);
+ var defineProperty = definePropertyModule$b.f;
+ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$6.f;
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ if (!hasOwn$i(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+ }
+};
+
+var fails$10 = fails$15;
+
+var isCallable$q = isCallable$z;
+
+var replacement = /#|\.prototype\./;
+
+var isForced$5 = function (feature, detection) {
+ var value = data[normalize$1(feature)];
+ return value == POLYFILL ? true : value == NATIVE ? false : isCallable$q(detection) ? fails$10(detection) : !!detection;
+};
+
+var normalize$1 = isForced$5.normalize = function (string) {
+ return String(string).replace(replacement, '.').toLowerCase();
+};
+
+var data = isForced$5.data = {};
+var NATIVE = isForced$5.NATIVE = 'N';
+var POLYFILL = isForced$5.POLYFILL = 'P';
+var isForced_1 = isForced$5;
+
+var global$H = global$R;
+
+var getOwnPropertyDescriptor$8 = objectGetOwnPropertyDescriptor.f;
+
+var createNonEnumerableProperty$e = createNonEnumerableProperty$h;
+
+var redefine$k = redefine$l.exports;
+
+var setGlobal = setGlobal$3;
+
+var copyConstructorProperties$2 = copyConstructorProperties$3;
+
+var isForced$4 = isForced_1;
+/*
+ options.target - name of the target object
+ options.global - target is the global object
+ options.stat - export as static methods of target
+ options.proto - export as prototype methods of target
+ options.real - real prototype method for the `pure` version
+ options.forced - export even if the native feature is available
+ options.bind - bind methods to the target, required for the `pure` version
+ options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
+ options.unsafe - use the simple assignment of property instead of delete + defineProperty
+ options.sham - add a flag to not completely full polyfills
+ options.enumerable - export as enumerable property
+ options.noTargetGet - prevent calling a getter on target
+ options.name - the .name of the function if it does not match the key
+*/
+
+
+var _export = function (options, source) {
+ var TARGET = options.target;
+ var GLOBAL = options.global;
+ var STATIC = options.stat;
+ var FORCED, target, key, targetProperty, sourceProperty, descriptor;
+
+ if (GLOBAL) {
+ target = global$H;
+ } else if (STATIC) {
+ target = global$H[TARGET] || setGlobal(TARGET, {});
+ } else {
+ target = (global$H[TARGET] || {}).prototype;
+ }
+
+ if (target) for (key in source) {
+ sourceProperty = source[key];
+
+ if (options.noTargetGet) {
+ descriptor = getOwnPropertyDescriptor$8(target, key);
+ targetProperty = descriptor && descriptor.value;
+ } else targetProperty = target[key];
+
+ FORCED = isForced$4(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target
+
+ if (!FORCED && targetProperty !== undefined) {
+ if (typeof sourceProperty === typeof targetProperty) continue;
+ copyConstructorProperties$2(sourceProperty, targetProperty);
+ } // add a flag to not completely full polyfills
+
+
+ if (options.sham || targetProperty && targetProperty.sham) {
+ createNonEnumerableProperty$e(sourceProperty, 'sham', true);
+ } // extend global
+
+
+ redefine$k(target, key, sourceProperty, options);
+ }
+};
+
+var classof$c = classofRaw$1; // `IsArray` abstract operation
+// https://tc39.es/ecma262/#sec-isarray
+// eslint-disable-next-line es/no-array-isarray -- safe
+
+
+var isArray$8 = Array.isArray || function isArray(argument) {
+ return classof$c(argument) == 'Array';
+};
+
+var wellKnownSymbol$E = wellKnownSymbol$G;
+
+var TO_STRING_TAG$8 = wellKnownSymbol$E('toStringTag');
+var test$2 = {};
+test$2[TO_STRING_TAG$8] = 'z';
+var toStringTagSupport = String(test$2) === '[object z]';
+
+var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport;
+
+var isCallable$p = isCallable$z;
+
+var classofRaw = classofRaw$1;
+
+var wellKnownSymbol$D = wellKnownSymbol$G;
+
+var TO_STRING_TAG$7 = wellKnownSymbol$D('toStringTag'); // ES3 wrong here
+
+var CORRECT_ARGUMENTS = classofRaw(function () {
+ return arguments;
+}()) == 'Arguments'; // fallback for IE11 Script Access Denied error
+
+var tryGet = function (it, key) {
+ try {
+ return it[key];
+ } catch (error) {
+ /* empty */
+ }
+}; // getting tag from ES6+ `Object.prototype.toString`
+
+
+var classof$b = TO_STRING_TAG_SUPPORT$2 ? classofRaw : function (it) {
+ var O, tag, result;
+ return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case
+ : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$7)) == 'string' ? tag // builtinTag case
+ : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback
+ : (result = classofRaw(O)) == 'Object' && isCallable$p(O.callee) ? 'Arguments' : result;
+};
+
+var classof$a = classof$b;
+
+var toString$t = function (argument) {
+ if (classof$a(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
+ return String(argument);
+};
+
+var internalObjectKeys = objectKeysInternal;
+
+var enumBugKeys$1 = enumBugKeys$3; // `Object.keys` method
+// https://tc39.es/ecma262/#sec-object.keys
+// eslint-disable-next-line es/no-object-keys -- safe
+
+
+var objectKeys$5 = Object.keys || function keys(O) {
+ return internalObjectKeys(O, enumBugKeys$1);
+};
+
+var DESCRIPTORS$v = descriptors;
+
+var definePropertyModule$a = objectDefineProperty;
+
+var anObject$1z = anObject$1C;
+
+var objectKeys$4 = objectKeys$5; // `Object.defineProperties` method
+// https://tc39.es/ecma262/#sec-object.defineproperties
+// eslint-disable-next-line es/no-object-defineproperties -- safe
+
+
+var objectDefineProperties = DESCRIPTORS$v ? Object.defineProperties : function defineProperties(O, Properties) {
+ anObject$1z(O);
+ var keys = objectKeys$4(Properties);
+ var length = keys.length;
+ var index = 0;
+ var key;
+
+ while (length > index) definePropertyModule$a.f(O, key = keys[index++], Properties[key]);
+
+ return O;
+};
+
+var getBuiltIn$u = getBuiltIn$y;
+
+var html$2 = getBuiltIn$u('document', 'documentElement');
+
+/* global ActiveXObject -- old IE, WSH */
+
+var anObject$1y = anObject$1C;
+
+var defineProperties$3 = objectDefineProperties;
+
+var enumBugKeys = enumBugKeys$3;
+
+var hiddenKeys$2 = hiddenKeys$6;
+
+var html$1 = html$2;
+
+var documentCreateElement$1 = documentCreateElement$2;
+
+var sharedKey$2 = sharedKey$4;
+
+var GT = '>';
+var LT = '<';
+var PROTOTYPE$2 = 'prototype';
+var SCRIPT = 'script';
+var IE_PROTO$1 = sharedKey$2('IE_PROTO');
+
+var EmptyConstructor = function () {
+ /* empty */
+};
+
+var scriptTag = function (content) {
+ return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
+}; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
+
+
+var NullProtoObjectViaActiveX = function (activeXDocument) {
+ activeXDocument.write(scriptTag(''));
+ activeXDocument.close();
+ var temp = activeXDocument.parentWindow.Object;
+ activeXDocument = null; // avoid memory leak
+
+ return temp;
+}; // Create object with fake `null` prototype: use iframe Object with cleared prototype
+
+
+var NullProtoObjectViaIFrame = function () {
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = documentCreateElement$1('iframe');
+ var JS = 'java' + SCRIPT + ':';
+ var iframeDocument;
+ iframe.style.display = 'none';
+ html$1.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475
+
+ iframe.src = String(JS);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(scriptTag('document.F=Object'));
+ iframeDocument.close();
+ return iframeDocument.F;
+}; // Check for document.domain and active x support
+// No need to use active x approach when document.domain is not set
+// see https://github.com/es-shims/es5-shim/issues/150
+// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
+// avoid IE GC bug
+
+
+var activeXDocument;
+
+var NullProtoObject = function () {
+ try {
+ activeXDocument = new ActiveXObject('htmlfile');
+ } catch (error) {
+ /* ignore */
+ }
+
+ NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) // old IE
+ : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); // WSH
+
+ var length = enumBugKeys.length;
+
+ while (length--) delete NullProtoObject[PROTOTYPE$2][enumBugKeys[length]];
+
+ return NullProtoObject();
+};
+
+hiddenKeys$2[IE_PROTO$1] = true; // `Object.create` method
+// https://tc39.es/ecma262/#sec-object.create
+
+var objectCreate$1 = Object.create || function create(O, Properties) {
+ var result;
+
+ if (O !== null) {
+ EmptyConstructor[PROTOTYPE$2] = anObject$1y(O);
+ result = new EmptyConstructor();
+ EmptyConstructor[PROTOTYPE$2] = null; // add "__proto__" for Object.getPrototypeOf polyfill
+
+ result[IE_PROTO$1] = O;
+ } else result = NullProtoObject();
+
+ return Properties === undefined ? result : defineProperties$3(result, Properties);
+};
+
+var objectGetOwnPropertyNamesExternal = {};
+
+/* eslint-disable es/no-object-getownpropertynames -- safe */
+
+var toIndexedObject$9 = toIndexedObject$d;
+
+var $getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;
+
+var toString$s = {}.toString;
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+ try {
+ return $getOwnPropertyNames$1(it);
+ } catch (error) {
+ return windowNames.slice();
+ }
+}; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+
+
+objectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames(it) {
+ return windowNames && toString$s.call(it) == '[object Window]' ? getWindowNames(it) : $getOwnPropertyNames$1(toIndexedObject$9(it));
+};
+
+var wellKnownSymbolWrapped = {};
+
+var wellKnownSymbol$C = wellKnownSymbol$G;
+
+wellKnownSymbolWrapped.f = wellKnownSymbol$C;
+
+var global$G = global$R;
+
+var path$1 = global$G;
+
+var path = path$1;
+
+var hasOwn$h = hasOwnProperty_1;
+
+var wrappedWellKnownSymbolModule$1 = wellKnownSymbolWrapped;
+
+var defineProperty$g = objectDefineProperty.f;
+
+var defineWellKnownSymbol$l = function (NAME) {
+ var Symbol = path.Symbol || (path.Symbol = {});
+ if (!hasOwn$h(Symbol, NAME)) defineProperty$g(Symbol, NAME, {
+ value: wrappedWellKnownSymbolModule$1.f(NAME)
+ });
+};
+
+var defineProperty$f = objectDefineProperty.f;
+
+var hasOwn$g = hasOwnProperty_1;
+
+var wellKnownSymbol$B = wellKnownSymbol$G;
+
+var TO_STRING_TAG$6 = wellKnownSymbol$B('toStringTag');
+
+var setToStringTag$b = function (it, TAG, STATIC) {
+ if (it && !hasOwn$g(it = STATIC ? it : it.prototype, TO_STRING_TAG$6)) {
+ defineProperty$f(it, TO_STRING_TAG$6, {
+ configurable: true,
+ value: TAG
+ });
+ }
+};
+
+var aCallable$O = aCallable$Q; // optional / simple context binding
+
+
+var functionBindContext = function (fn, that, length) {
+ aCallable$O(fn);
+ if (that === undefined) return fn;
+
+ switch (length) {
+ case 0:
+ return function () {
+ return fn.call(that);
+ };
+
+ 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 () {
+ return fn.apply(that, arguments);
+ };
+};
+
+var fails$$ = fails$15;
+
+var isCallable$o = isCallable$z;
+
+var classof$9 = classof$b;
+
+var getBuiltIn$t = getBuiltIn$y;
+
+var inspectSource$1 = inspectSource$4;
+
+var empty$1 = [];
+var construct$1 = getBuiltIn$t('Reflect', 'construct');
+var constructorRegExp = /^\s*(?:class|function)\b/;
+var exec$1 = constructorRegExp.exec;
+var INCORRECT_TO_STRING = !constructorRegExp.exec(function () {
+ /* empty */
+});
+
+var isConstructorModern = function (argument) {
+ if (!isCallable$o(argument)) return false;
+
+ try {
+ construct$1(Object, empty$1, argument);
+ return true;
+ } catch (error) {
+ return false;
+ }
+};
+
+var isConstructorLegacy = function (argument) {
+ if (!isCallable$o(argument)) return false;
+
+ switch (classof$9(argument)) {
+ case 'AsyncFunction':
+ case 'GeneratorFunction':
+ case 'AsyncGeneratorFunction':
+ return false;
+ // we can't check .prototype since constructors produced by .bind haven't it
+ }
+
+ return INCORRECT_TO_STRING || !!exec$1.call(constructorRegExp, inspectSource$1(argument));
+}; // `IsConstructor` abstract operation
+// https://tc39.es/ecma262/#sec-isconstructor
+
+
+var isConstructor$7 = !construct$1 || fails$$(function () {
+ var called;
+ return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () {
+ called = true;
+ }) || called;
+}) ? isConstructorLegacy : isConstructorModern;
+
+var isArray$7 = isArray$8;
+
+var isConstructor$6 = isConstructor$7;
+
+var isObject$w = isObject$C;
+
+var wellKnownSymbol$A = wellKnownSymbol$G;
+
+var SPECIES$6 = wellKnownSymbol$A('species'); // a part of `ArraySpeciesCreate` abstract operation
+// https://tc39.es/ecma262/#sec-arrayspeciescreate
+
+var arraySpeciesConstructor$2 = function (originalArray) {
+ var C;
+
+ if (isArray$7(originalArray)) {
+ C = originalArray.constructor; // cross-realm fallback
+
+ if (isConstructor$6(C) && (C === Array || isArray$7(C.prototype))) C = undefined;else if (isObject$w(C)) {
+ C = C[SPECIES$6];
+ if (C === null) C = undefined;
+ }
+ }
+
+ return C === undefined ? Array : C;
+};
+
+var arraySpeciesConstructor$1 = arraySpeciesConstructor$2; // `ArraySpeciesCreate` abstract operation
+// https://tc39.es/ecma262/#sec-arrayspeciescreate
+
+
+var arraySpeciesCreate$6 = function (originalArray, length) {
+ return new (arraySpeciesConstructor$1(originalArray))(length === 0 ? 0 : length);
+};
+
+var bind$q = functionBindContext;
+
+var IndexedObject$5 = indexedObject;
+
+var toObject$y = toObject$A;
+
+var lengthOfArrayLike$o = lengthOfArrayLike$q;
+
+var arraySpeciesCreate$5 = arraySpeciesCreate$6;
+
+var push$4 = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
+
+var createMethod$7 = function (TYPE) {
+ var IS_MAP = TYPE == 1;
+ var IS_FILTER = TYPE == 2;
+ var IS_SOME = TYPE == 3;
+ var IS_EVERY = TYPE == 4;
+ var IS_FIND_INDEX = TYPE == 6;
+ var IS_FILTER_REJECT = TYPE == 7;
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+ return function ($this, callbackfn, that, specificCreate) {
+ var O = toObject$y($this);
+ var self = IndexedObject$5(O);
+ var boundFunction = bind$q(callbackfn, that, 3);
+ var length = lengthOfArrayLike$o(self);
+ var index = 0;
+ var create = specificCreate || arraySpeciesCreate$5;
+ var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
+ var value, result;
+
+ for (; length > index; index++) if (NO_HOLES || index in self) {
+ value = self[index];
+ result = boundFunction(value, index, O);
+
+ if (TYPE) {
+ if (IS_MAP) target[index] = result; // map
+ else if (result) switch (TYPE) {
+ case 3:
+ return true;
+ // some
+
+ case 5:
+ return value;
+ // find
+
+ case 6:
+ return index;
+ // findIndex
+
+ case 2:
+ push$4.call(target, value);
+ // filter
+ } else switch (TYPE) {
+ case 4:
+ return false;
+ // every
+
+ case 7:
+ push$4.call(target, value);
+ // filterReject
+ }
+ }
+ }
+
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
+ };
+};
+
+var arrayIteration = {
+ // `Array.prototype.forEach` method
+ // https://tc39.es/ecma262/#sec-array.prototype.foreach
+ forEach: createMethod$7(0),
+ // `Array.prototype.map` method
+ // https://tc39.es/ecma262/#sec-array.prototype.map
+ map: createMethod$7(1),
+ // `Array.prototype.filter` method
+ // https://tc39.es/ecma262/#sec-array.prototype.filter
+ filter: createMethod$7(2),
+ // `Array.prototype.some` method
+ // https://tc39.es/ecma262/#sec-array.prototype.some
+ some: createMethod$7(3),
+ // `Array.prototype.every` method
+ // https://tc39.es/ecma262/#sec-array.prototype.every
+ every: createMethod$7(4),
+ // `Array.prototype.find` method
+ // https://tc39.es/ecma262/#sec-array.prototype.find
+ find: createMethod$7(5),
+ // `Array.prototype.findIndex` method
+ // https://tc39.es/ecma262/#sec-array.prototype.findIndex
+ findIndex: createMethod$7(6),
+ // `Array.prototype.filterReject` method
+ // https://github.com/tc39/proposal-array-filtering
+ filterReject: createMethod$7(7)
+};
+
+var $$4i = _export;
+
+var global$F = global$R;
+
+var getBuiltIn$s = getBuiltIn$y;
+
+var DESCRIPTORS$u = descriptors;
+
+var NATIVE_SYMBOL = nativeSymbol$1;
+
+var fails$_ = fails$15;
+
+var hasOwn$f = hasOwnProperty_1;
+
+var isArray$6 = isArray$8;
+
+var isCallable$n = isCallable$z;
+
+var isObject$v = isObject$C;
+
+var isSymbol$2 = isSymbol$5;
+
+var anObject$1x = anObject$1C;
+
+var toObject$x = toObject$A;
+
+var toIndexedObject$8 = toIndexedObject$d;
+
+var toPropertyKey$6 = toPropertyKey$9;
+
+var $toString$3 = toString$t;
+
+var createPropertyDescriptor$6 = createPropertyDescriptor$9;
+
+var nativeObjectCreate = objectCreate$1;
+
+var objectKeys$3 = objectKeys$5;
+
+var getOwnPropertyNamesModule$1 = objectGetOwnPropertyNames;
+
+var getOwnPropertyNamesExternal = objectGetOwnPropertyNamesExternal;
+
+var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols;
+
+var getOwnPropertyDescriptorModule$5 = objectGetOwnPropertyDescriptor;
+
+var definePropertyModule$9 = objectDefineProperty;
+
+var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable;
+
+var redefine$j = redefine$l.exports;
+
+var shared$3 = shared$7.exports;
+
+var sharedKey$1 = sharedKey$4;
+
+var hiddenKeys$1 = hiddenKeys$6;
+
+var uid$2 = uid$5;
+
+var wellKnownSymbol$z = wellKnownSymbol$G;
+
+var wrappedWellKnownSymbolModule = wellKnownSymbolWrapped;
+
+var defineWellKnownSymbol$k = defineWellKnownSymbol$l;
+
+var setToStringTag$a = setToStringTag$b;
+
+var InternalStateModule$i = internalState;
+
+var $forEach$3 = arrayIteration.forEach;
+
+var HIDDEN = sharedKey$1('hidden');
+var SYMBOL = 'Symbol';
+var PROTOTYPE$1 = 'prototype';
+var TO_PRIMITIVE$1 = wellKnownSymbol$z('toPrimitive');
+var setInternalState$i = InternalStateModule$i.set;
+var getInternalState$h = InternalStateModule$i.getterFor(SYMBOL);
+var ObjectPrototype$3 = Object[PROTOTYPE$1];
+var $Symbol = global$F.Symbol;
+var $stringify$1 = getBuiltIn$s('JSON', 'stringify');
+var nativeGetOwnPropertyDescriptor$2 = getOwnPropertyDescriptorModule$5.f;
+var nativeDefineProperty$1 = definePropertyModule$9.f;
+var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
+var nativePropertyIsEnumerable = propertyIsEnumerableModule$1.f;
+var AllSymbols = shared$3('symbols');
+var ObjectPrototypeSymbols = shared$3('op-symbols');
+var StringToSymbolRegistry = shared$3('string-to-symbol-registry');
+var SymbolToStringRegistry = shared$3('symbol-to-string-registry');
+var WellKnownSymbolsStore = shared$3('wks');
+var QObject = global$F.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+
+var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+
+var setSymbolDescriptor = DESCRIPTORS$u && fails$_(function () {
+ return nativeObjectCreate(nativeDefineProperty$1({}, 'a', {
+ get: function () {
+ return nativeDefineProperty$1(this, 'a', {
+ value: 7
+ }).a;
+ }
+ })).a != 7;
+}) ? function (O, P, Attributes) {
+ var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$2(ObjectPrototype$3, P);
+ if (ObjectPrototypeDescriptor) delete ObjectPrototype$3[P];
+ nativeDefineProperty$1(O, P, Attributes);
+
+ if (ObjectPrototypeDescriptor && O !== ObjectPrototype$3) {
+ nativeDefineProperty$1(ObjectPrototype$3, P, ObjectPrototypeDescriptor);
+ }
+} : nativeDefineProperty$1;
+
+var wrap$1 = function (tag, description) {
+ var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE$1]);
+ setInternalState$i(symbol, {
+ type: SYMBOL,
+ tag: tag,
+ description: description
+ });
+ if (!DESCRIPTORS$u) symbol.description = description;
+ return symbol;
+};
+
+var $defineProperty = function defineProperty(O, P, Attributes) {
+ if (O === ObjectPrototype$3) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
+ anObject$1x(O);
+ var key = toPropertyKey$6(P);
+ anObject$1x(Attributes);
+
+ if (hasOwn$f(AllSymbols, key)) {
+ if (!Attributes.enumerable) {
+ if (!hasOwn$f(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor$6(1, {}));
+ O[HIDDEN][key] = true;
+ } else {
+ if (hasOwn$f(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
+ Attributes = nativeObjectCreate(Attributes, {
+ enumerable: createPropertyDescriptor$6(0, false)
+ });
+ }
+
+ return setSymbolDescriptor(O, key, Attributes);
+ }
+
+ return nativeDefineProperty$1(O, key, Attributes);
+};
+
+var $defineProperties = function defineProperties(O, Properties) {
+ anObject$1x(O);
+ var properties = toIndexedObject$8(Properties);
+ var keys = objectKeys$3(properties).concat($getOwnPropertySymbols(properties));
+ $forEach$3(keys, function (key) {
+ if (!DESCRIPTORS$u || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
+ });
+ return O;
+};
+
+var $create = function create(O, Properties) {
+ return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
+};
+
+var $propertyIsEnumerable = function propertyIsEnumerable(V) {
+ var P = toPropertyKey$6(V);
+ var enumerable = nativePropertyIsEnumerable.call(this, P);
+ if (this === ObjectPrototype$3 && hasOwn$f(AllSymbols, P) && !hasOwn$f(ObjectPrototypeSymbols, P)) return false;
+ return enumerable || !hasOwn$f(this, P) || !hasOwn$f(AllSymbols, P) || hasOwn$f(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
+};
+
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
+ var it = toIndexedObject$8(O);
+ var key = toPropertyKey$6(P);
+ if (it === ObjectPrototype$3 && hasOwn$f(AllSymbols, key) && !hasOwn$f(ObjectPrototypeSymbols, key)) return;
+ var descriptor = nativeGetOwnPropertyDescriptor$2(it, key);
+
+ if (descriptor && hasOwn$f(AllSymbols, key) && !(hasOwn$f(it, HIDDEN) && it[HIDDEN][key])) {
+ descriptor.enumerable = true;
+ }
+
+ return descriptor;
+};
+
+var $getOwnPropertyNames = function getOwnPropertyNames(O) {
+ var names = nativeGetOwnPropertyNames(toIndexedObject$8(O));
+ var result = [];
+ $forEach$3(names, function (key) {
+ if (!hasOwn$f(AllSymbols, key) && !hasOwn$f(hiddenKeys$1, key)) result.push(key);
+ });
+ return result;
+};
+
+var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
+ var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$3;
+ var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject$8(O));
+ var result = [];
+ $forEach$3(names, function (key) {
+ if (hasOwn$f(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn$f(ObjectPrototype$3, key))) {
+ result.push(AllSymbols[key]);
+ }
+ });
+ return result;
+}; // `Symbol` constructor
+// https://tc39.es/ecma262/#sec-symbol-constructor
+
+
+if (!NATIVE_SYMBOL) {
+ $Symbol = function Symbol() {
+ if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
+ var description = !arguments.length || arguments[0] === undefined ? undefined : $toString$3(arguments[0]);
+ var tag = uid$2(description);
+
+ var setter = function (value) {
+ if (this === ObjectPrototype$3) setter.call(ObjectPrototypeSymbols, value);
+ if (hasOwn$f(this, HIDDEN) && hasOwn$f(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+ setSymbolDescriptor(this, tag, createPropertyDescriptor$6(1, value));
+ };
+
+ if (DESCRIPTORS$u && USE_SETTER) setSymbolDescriptor(ObjectPrototype$3, tag, {
+ configurable: true,
+ set: setter
+ });
+ return wrap$1(tag, description);
+ };
+
+ redefine$j($Symbol[PROTOTYPE$1], 'toString', function toString() {
+ return getInternalState$h(this).tag;
+ });
+ redefine$j($Symbol, 'withoutSetter', function (description) {
+ return wrap$1(uid$2(description), description);
+ });
+ propertyIsEnumerableModule$1.f = $propertyIsEnumerable;
+ definePropertyModule$9.f = $defineProperty;
+ getOwnPropertyDescriptorModule$5.f = $getOwnPropertyDescriptor;
+ getOwnPropertyNamesModule$1.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
+ getOwnPropertySymbolsModule$1.f = $getOwnPropertySymbols;
+
+ wrappedWellKnownSymbolModule.f = function (name) {
+ return wrap$1(wellKnownSymbol$z(name), name);
+ };
+
+ if (DESCRIPTORS$u) {
+ // https://github.com/tc39/proposal-Symbol-description
+ nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {
+ configurable: true,
+ get: function description() {
+ return getInternalState$h(this).description;
+ }
+ });
+
+ {
+ redefine$j(ObjectPrototype$3, 'propertyIsEnumerable', $propertyIsEnumerable, {
+ unsafe: true
+ });
+ }
+ }
+}
+
+$$4i({
+ global: true,
+ wrap: true,
+ forced: !NATIVE_SYMBOL,
+ sham: !NATIVE_SYMBOL
+}, {
+ Symbol: $Symbol
+});
+$forEach$3(objectKeys$3(WellKnownSymbolsStore), function (name) {
+ defineWellKnownSymbol$k(name);
+});
+$$4i({
+ target: SYMBOL,
+ stat: true,
+ forced: !NATIVE_SYMBOL
+}, {
+ // `Symbol.for` method
+ // https://tc39.es/ecma262/#sec-symbol.for
+ 'for': function (key) {
+ var string = $toString$3(key);
+ if (hasOwn$f(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
+ var symbol = $Symbol(string);
+ StringToSymbolRegistry[string] = symbol;
+ SymbolToStringRegistry[symbol] = string;
+ return symbol;
+ },
+ // `Symbol.keyFor` method
+ // https://tc39.es/ecma262/#sec-symbol.keyfor
+ keyFor: function keyFor(sym) {
+ if (!isSymbol$2(sym)) throw TypeError(sym + ' is not a symbol');
+ if (hasOwn$f(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
+ },
+ useSetter: function () {
+ USE_SETTER = true;
+ },
+ useSimple: function () {
+ USE_SETTER = false;
+ }
+});
+$$4i({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_SYMBOL,
+ sham: !DESCRIPTORS$u
+}, {
+ // `Object.create` method
+ // https://tc39.es/ecma262/#sec-object.create
+ create: $create,
+ // `Object.defineProperty` method
+ // https://tc39.es/ecma262/#sec-object.defineproperty
+ defineProperty: $defineProperty,
+ // `Object.defineProperties` method
+ // https://tc39.es/ecma262/#sec-object.defineproperties
+ defineProperties: $defineProperties,
+ // `Object.getOwnPropertyDescriptor` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor
+});
+$$4i({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_SYMBOL
+}, {
+ // `Object.getOwnPropertyNames` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertynames
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // `Object.getOwnPropertySymbols` method
+ // https://tc39.es/ecma262/#sec-object.getownpropertysymbols
+ getOwnPropertySymbols: $getOwnPropertySymbols
+}); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
+// https://bugs.chromium.org/p/v8/issues/detail?id=3443
+
+$$4i({
+ target: 'Object',
+ stat: true,
+ forced: fails$_(function () {
+ getOwnPropertySymbolsModule$1.f(1);
+ })
+}, {
+ getOwnPropertySymbols: function getOwnPropertySymbols(it) {
+ return getOwnPropertySymbolsModule$1.f(toObject$x(it));
+ }
+}); // `JSON.stringify` method behavior with symbols
+// https://tc39.es/ecma262/#sec-json.stringify
+
+if ($stringify$1) {
+ var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails$_(function () {
+ var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {}
+
+ return $stringify$1([symbol]) != '[null]' // WebKit converts symbol values to JSON as null
+ || $stringify$1({
+ a: symbol
+ }) != '{}' // V8 throws on boxed symbols
+ || $stringify$1(Object(symbol)) != '{}';
+ });
+ $$4i({
+ target: 'JSON',
+ stat: true,
+ forced: FORCED_JSON_STRINGIFY
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ stringify: function stringify(it, replacer, space) {
+ var args = [it];
+ var index = 1;
+ var $replacer;
+
+ while (arguments.length > index) args.push(arguments[index++]);
+
+ $replacer = replacer;
+ if (!isObject$v(replacer) && it === undefined || isSymbol$2(it)) return; // IE8 returns string on undefined
+
+ if (!isArray$6(replacer)) replacer = function (key, value) {
+ if (isCallable$n($replacer)) value = $replacer.call(this, key, value);
+ if (!isSymbol$2(value)) return value;
+ };
+ args[1] = replacer;
+ return $stringify$1.apply(null, args);
+ }
+ });
+} // `Symbol.prototype[@@toPrimitive]` method
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
+
+
+if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE$1]) {
+ var valueOf$1 = $Symbol[PROTOTYPE$1].valueOf;
+ redefine$j($Symbol[PROTOTYPE$1], TO_PRIMITIVE$1, function () {
+ return valueOf$1.apply(this, arguments);
+ });
+} // `Symbol.prototype[@@toStringTag]` property
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
+
+
+setToStringTag$a($Symbol, SYMBOL);
+hiddenKeys$1[HIDDEN] = true;
+
+var $$4h = _export;
+
+var DESCRIPTORS$t = descriptors;
+
+var global$E = global$R;
+
+var hasOwn$e = hasOwnProperty_1;
+
+var isCallable$m = isCallable$z;
+
+var isObject$u = isObject$C;
+
+var defineProperty$e = objectDefineProperty.f;
+
+var copyConstructorProperties$1 = copyConstructorProperties$3;
+
+var NativeSymbol = global$E.Symbol;
+
+if (DESCRIPTORS$t && isCallable$m(NativeSymbol) && (!('description' in NativeSymbol.prototype) || // Safari 12 bug
+NativeSymbol().description !== undefined)) {
+ var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description
+
+ var SymbolWrapper = function Symbol() {
+ var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
+ var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
+ : description === undefined ? NativeSymbol() : NativeSymbol(description);
+ if (description === '') EmptyStringDescriptionStore[result] = true;
+ return result;
+ };
+
+ copyConstructorProperties$1(SymbolWrapper, NativeSymbol);
+ var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
+ symbolPrototype.constructor = SymbolWrapper;
+ var symbolToString = symbolPrototype.toString;
+ var nativeSymbol = String(NativeSymbol('test')) == 'Symbol(test)';
+ var regexp = /^Symbol\((.*)\)[^)]+$/;
+ defineProperty$e(symbolPrototype, 'description', {
+ configurable: true,
+ get: function description() {
+ var symbol = isObject$u(this) ? this.valueOf() : this;
+ var string = symbolToString.call(symbol);
+ if (hasOwn$e(EmptyStringDescriptionStore, symbol)) return '';
+ var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');
+ return desc === '' ? undefined : desc;
+ }
+ });
+ $$4h({
+ global: true,
+ forced: true
+ }, {
+ Symbol: SymbolWrapper
+ });
+}
+
+var defineWellKnownSymbol$j = defineWellKnownSymbol$l; // `Symbol.asyncIterator` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.asynciterator
+
+
+defineWellKnownSymbol$j('asyncIterator');
+
+var defineWellKnownSymbol$i = defineWellKnownSymbol$l; // `Symbol.hasInstance` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.hasinstance
+
+
+defineWellKnownSymbol$i('hasInstance');
+
+var defineWellKnownSymbol$h = defineWellKnownSymbol$l; // `Symbol.isConcatSpreadable` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable
+
+
+defineWellKnownSymbol$h('isConcatSpreadable');
+
+var defineWellKnownSymbol$g = defineWellKnownSymbol$l; // `Symbol.iterator` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.iterator
+
+
+defineWellKnownSymbol$g('iterator');
+
+var defineWellKnownSymbol$f = defineWellKnownSymbol$l; // `Symbol.match` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.match
+
+
+defineWellKnownSymbol$f('match');
+
+var defineWellKnownSymbol$e = defineWellKnownSymbol$l; // `Symbol.matchAll` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.matchall
+
+
+defineWellKnownSymbol$e('matchAll');
+
+var defineWellKnownSymbol$d = defineWellKnownSymbol$l; // `Symbol.replace` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.replace
+
+
+defineWellKnownSymbol$d('replace');
+
+var defineWellKnownSymbol$c = defineWellKnownSymbol$l; // `Symbol.search` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.search
+
+
+defineWellKnownSymbol$c('search');
+
+var defineWellKnownSymbol$b = defineWellKnownSymbol$l; // `Symbol.species` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.species
+
+
+defineWellKnownSymbol$b('species');
+
+var defineWellKnownSymbol$a = defineWellKnownSymbol$l; // `Symbol.split` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.split
+
+
+defineWellKnownSymbol$a('split');
+
+var defineWellKnownSymbol$9 = defineWellKnownSymbol$l; // `Symbol.toPrimitive` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.toprimitive
+
+
+defineWellKnownSymbol$9('toPrimitive');
+
+var defineWellKnownSymbol$8 = defineWellKnownSymbol$l; // `Symbol.toStringTag` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.tostringtag
+
+
+defineWellKnownSymbol$8('toStringTag');
+
+var defineWellKnownSymbol$7 = defineWellKnownSymbol$l; // `Symbol.unscopables` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.unscopables
+
+
+defineWellKnownSymbol$7('unscopables');
+
+var fails$Z = fails$15;
+
+var correctPrototypeGetter = !fails$Z(function () {
+ function F() {
+ /* empty */
+ }
+
+ F.prototype.constructor = null; // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
+
+ return Object.getPrototypeOf(new F()) !== F.prototype;
+});
+
+var hasOwn$d = hasOwnProperty_1;
+
+var isCallable$l = isCallable$z;
+
+var toObject$w = toObject$A;
+
+var sharedKey = sharedKey$4;
+
+var CORRECT_PROTOTYPE_GETTER$2 = correctPrototypeGetter;
+
+var IE_PROTO = sharedKey('IE_PROTO');
+var ObjectPrototype$2 = Object.prototype; // `Object.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.getprototypeof
+// eslint-disable-next-line es/no-object-getprototypeof -- safe
+
+var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER$2 ? Object.getPrototypeOf : function (O) {
+ var object = toObject$w(O);
+ if (hasOwn$d(object, IE_PROTO)) return object[IE_PROTO];
+ var constructor = object.constructor;
+
+ if (isCallable$l(constructor) && object instanceof constructor) {
+ return constructor.prototype;
+ }
+
+ return object instanceof Object ? ObjectPrototype$2 : null;
+};
+
+var isCallable$k = isCallable$z;
+
+var aPossiblePrototype$2 = function (argument) {
+ if (typeof argument === 'object' || isCallable$k(argument)) return argument;
+ throw TypeError("Can't set " + String(argument) + ' as a prototype');
+};
+
+/* eslint-disable no-proto -- safe */
+
+var anObject$1w = anObject$1C;
+
+var aPossiblePrototype$1 = aPossiblePrototype$2; // `Object.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.setprototypeof
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+// eslint-disable-next-line es/no-object-setprototypeof -- safe
+
+
+var objectSetPrototypeOf$1 = Object.setPrototypeOf || ('__proto__' in {} ? function () {
+ var CORRECT_SETTER = false;
+ var test = {};
+ var setter;
+
+ try {
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+ setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
+ setter.call(test, []);
+ CORRECT_SETTER = test instanceof Array;
+ } catch (error) {
+ /* empty */
+ }
+
+ return function setPrototypeOf(O, proto) {
+ anObject$1w(O);
+ aPossiblePrototype$1(proto);
+ if (CORRECT_SETTER) setter.call(O, proto);else O.__proto__ = proto;
+ return O;
+ };
+}() : undefined);
+
+var isObject$t = isObject$C;
+
+var createNonEnumerableProperty$d = createNonEnumerableProperty$h; // `InstallErrorCause` abstract operation
+// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
+
+
+var installErrorCause$1 = function (O, options) {
+ if (isObject$t(options) && 'cause' in options) {
+ createNonEnumerableProperty$d(O, 'cause', options.cause);
+ }
+};
+
+var iterators = {};
+
+var wellKnownSymbol$y = wellKnownSymbol$G;
+
+var Iterators$4 = iterators;
+
+var ITERATOR$a = wellKnownSymbol$y('iterator');
+var ArrayPrototype$2 = Array.prototype; // check on default Array iterator
+
+var isArrayIteratorMethod$3 = function (it) {
+ return it !== undefined && (Iterators$4.Array === it || ArrayPrototype$2[ITERATOR$a] === it);
+};
+
+var classof$8 = classof$b;
+
+var getMethod$f = getMethod$h;
+
+var Iterators$3 = iterators;
+
+var wellKnownSymbol$x = wellKnownSymbol$G;
+
+var ITERATOR$9 = wellKnownSymbol$x('iterator');
+
+var getIteratorMethod$9 = function (it) {
+ if (it != undefined) return getMethod$f(it, ITERATOR$9) || getMethod$f(it, '@@iterator') || Iterators$3[classof$8(it)];
+};
+
+var aCallable$N = aCallable$Q;
+
+var anObject$1v = anObject$1C;
+
+var getIteratorMethod$8 = getIteratorMethod$9;
+
+var getIterator$b = function (argument, usingIterator) {
+ var iteratorMethod = arguments.length < 2 ? getIteratorMethod$8(argument) : usingIterator;
+ if (aCallable$N(iteratorMethod)) return anObject$1v(iteratorMethod.call(argument));
+ throw TypeError(String(argument) + ' is not iterable');
+};
+
+var anObject$1u = anObject$1C;
+
+var getMethod$e = getMethod$h;
+
+var iteratorClose$4 = function (iterator, kind, value) {
+ var innerResult, innerError;
+ anObject$1u(iterator);
+
+ try {
+ innerResult = getMethod$e(iterator, 'return');
+
+ if (!innerResult) {
+ if (kind === 'throw') throw value;
+ return value;
+ }
+
+ innerResult = innerResult.call(iterator);
+ } catch (error) {
+ innerError = true;
+ innerResult = error;
+ }
+
+ if (kind === 'throw') throw value;
+ if (innerError) throw innerResult;
+ anObject$1u(innerResult);
+ return value;
+};
+
+var anObject$1t = anObject$1C;
+
+var isArrayIteratorMethod$2 = isArrayIteratorMethod$3;
+
+var lengthOfArrayLike$n = lengthOfArrayLike$q;
+
+var bind$p = functionBindContext;
+
+var getIterator$a = getIterator$b;
+
+var getIteratorMethod$7 = getIteratorMethod$9;
+
+var iteratorClose$3 = iteratorClose$4;
+
+var Result = function (stopped, result) {
+ this.stopped = stopped;
+ this.result = result;
+};
+
+var iterate$I = function (iterable, unboundFunction, options) {
+ var that = options && options.that;
+ var AS_ENTRIES = !!(options && options.AS_ENTRIES);
+ var IS_ITERATOR = !!(options && options.IS_ITERATOR);
+ var INTERRUPTED = !!(options && options.INTERRUPTED);
+ var fn = bind$p(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
+ var iterator, iterFn, index, length, result, next, step;
+
+ var stop = function (condition) {
+ if (iterator) iteratorClose$3(iterator, 'normal', condition);
+ return new Result(true, condition);
+ };
+
+ var callFn = function (value) {
+ if (AS_ENTRIES) {
+ anObject$1t(value);
+ return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
+ }
+
+ return INTERRUPTED ? fn(value, stop) : fn(value);
+ };
+
+ if (IS_ITERATOR) {
+ iterator = iterable;
+ } else {
+ iterFn = getIteratorMethod$7(iterable);
+ if (!iterFn) throw TypeError(String(iterable) + ' is not iterable'); // optimisation for array iterators
+
+ if (isArrayIteratorMethod$2(iterFn)) {
+ for (index = 0, length = lengthOfArrayLike$n(iterable); length > index; index++) {
+ result = callFn(iterable[index]);
+ if (result && result instanceof Result) return result;
+ }
+
+ return new Result(false);
+ }
+
+ iterator = getIterator$a(iterable, iterFn);
+ }
+
+ next = iterator.next;
+
+ while (!(step = next.call(iterator)).done) {
+ try {
+ result = callFn(step.value);
+ } catch (error) {
+ iteratorClose$3(iterator, 'throw', error);
+ }
+
+ if (typeof result == 'object' && result && result instanceof Result) return result;
+ }
+
+ return new Result(false);
+};
+
+var $$4g = _export;
+
+var getPrototypeOf$e = objectGetPrototypeOf$1;
+
+var setPrototypeOf$7 = objectSetPrototypeOf$1;
+
+var copyConstructorProperties = copyConstructorProperties$3;
+
+var create$d = objectCreate$1;
+
+var createNonEnumerableProperty$c = createNonEnumerableProperty$h;
+
+var createPropertyDescriptor$5 = createPropertyDescriptor$9;
+
+var installErrorCause = installErrorCause$1;
+
+var iterate$H = iterate$I;
+
+var toString$r = toString$t;
+
+var $AggregateError = function AggregateError(errors, message
+/* , options */
+) {
+ var that = this;
+ var options = arguments.length > 2 ? arguments[2] : undefined;
+ if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message, options);
+
+ if (setPrototypeOf$7) {
+ // eslint-disable-next-line unicorn/error-message -- expected
+ that = setPrototypeOf$7(new Error(undefined), getPrototypeOf$e(that));
+ }
+
+ if (message !== undefined) createNonEnumerableProperty$c(that, 'message', toString$r(message));
+ installErrorCause(that, options);
+ var errorsArray = [];
+ iterate$H(errors, errorsArray.push, {
+ that: errorsArray
+ });
+ createNonEnumerableProperty$c(that, 'errors', errorsArray);
+ return that;
+};
+
+if (setPrototypeOf$7) setPrototypeOf$7($AggregateError, Error);else copyConstructorProperties($AggregateError, Error);
+$AggregateError.prototype = create$d(Error.prototype, {
+ constructor: createPropertyDescriptor$5(1, $AggregateError),
+ message: createPropertyDescriptor$5(1, ''),
+ name: createPropertyDescriptor$5(1, 'AggregateError')
+}); // `AggregateError` constructor
+// https://tc39.es/ecma262/#sec-aggregate-error-constructor
+
+$$4g({
+ global: true
+}, {
+ AggregateError: $AggregateError
+});
+
+var wellKnownSymbol$w = wellKnownSymbol$G;
+
+var create$c = objectCreate$1;
+
+var definePropertyModule$8 = objectDefineProperty;
+
+var UNSCOPABLES = wellKnownSymbol$w('unscopables');
+var ArrayPrototype$1 = Array.prototype; // Array.prototype[@@unscopables]
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+if (ArrayPrototype$1[UNSCOPABLES] == undefined) {
+ definePropertyModule$8.f(ArrayPrototype$1, UNSCOPABLES, {
+ configurable: true,
+ value: create$c(null)
+ });
+} // add a key to Array.prototype[@@unscopables]
+
+
+var addToUnscopables$h = function (key) {
+ ArrayPrototype$1[UNSCOPABLES][key] = true;
+};
+
+var $$4f = _export;
+
+var toObject$v = toObject$A;
+
+var lengthOfArrayLike$m = lengthOfArrayLike$q;
+
+var toIntegerOrInfinity$f = toIntegerOrInfinity$i;
+
+var addToUnscopables$g = addToUnscopables$h; // `Array.prototype.at` method
+// https://github.com/tc39/proposal-relative-indexing-method
+
+
+$$4f({
+ target: 'Array',
+ proto: true
+}, {
+ at: function at(index) {
+ var O = toObject$v(this);
+ var len = lengthOfArrayLike$m(O);
+ var relativeIndex = toIntegerOrInfinity$f(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : O[k];
+ }
+});
+addToUnscopables$g('at');
+
+var toPropertyKey$5 = toPropertyKey$9;
+
+var definePropertyModule$7 = objectDefineProperty;
+
+var createPropertyDescriptor$4 = createPropertyDescriptor$9;
+
+var createProperty$7 = function (object, key, value) {
+ var propertyKey = toPropertyKey$5(key);
+ if (propertyKey in object) definePropertyModule$7.f(object, propertyKey, createPropertyDescriptor$4(0, value));else object[propertyKey] = value;
+};
+
+var fails$Y = fails$15;
+
+var wellKnownSymbol$v = wellKnownSymbol$G;
+
+var V8_VERSION$2 = engineV8Version;
+
+var SPECIES$5 = wellKnownSymbol$v('species');
+
+var arrayMethodHasSpeciesSupport$5 = function (METHOD_NAME) {
+ // We can't use this feature detection in V8 since it causes
+ // deoptimization and serious performance degradation
+ // https://github.com/zloirock/core-js/issues/677
+ return V8_VERSION$2 >= 51 || !fails$Y(function () {
+ var array = [];
+ var constructor = array.constructor = {};
+
+ constructor[SPECIES$5] = function () {
+ return {
+ foo: 1
+ };
+ };
+
+ return array[METHOD_NAME](Boolean).foo !== 1;
+ });
+};
+
+var $$4e = _export;
+
+var fails$X = fails$15;
+
+var isArray$5 = isArray$8;
+
+var isObject$s = isObject$C;
+
+var toObject$u = toObject$A;
+
+var lengthOfArrayLike$l = lengthOfArrayLike$q;
+
+var createProperty$6 = createProperty$7;
+
+var arraySpeciesCreate$4 = arraySpeciesCreate$6;
+
+var arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5;
+
+var wellKnownSymbol$u = wellKnownSymbol$G;
+
+var V8_VERSION$1 = engineV8Version;
+
+var IS_CONCAT_SPREADABLE = wellKnownSymbol$u('isConcatSpreadable');
+var MAX_SAFE_INTEGER$2 = 0x1FFFFFFFFFFFFF;
+var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes
+// deoptimization and serious performance degradation
+// https://github.com/zloirock/core-js/issues/679
+
+var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION$1 >= 51 || !fails$X(function () {
+ var array = [];
+ array[IS_CONCAT_SPREADABLE] = false;
+ return array.concat()[0] !== array;
+});
+var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$4('concat');
+
+var isConcatSpreadable = function (O) {
+ if (!isObject$s(O)) return false;
+ var spreadable = O[IS_CONCAT_SPREADABLE];
+ return spreadable !== undefined ? !!spreadable : isArray$5(O);
+};
+
+var FORCED$u = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method
+// https://tc39.es/ecma262/#sec-array.prototype.concat
+// with adding support of @@isConcatSpreadable and @@species
+
+$$4e({
+ target: 'Array',
+ proto: true,
+ forced: FORCED$u
+}, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ concat: function concat(arg) {
+ var O = toObject$u(this);
+ var A = arraySpeciesCreate$4(O, 0);
+ var n = 0;
+ var i, k, length, len, E;
+
+ for (i = -1, length = arguments.length; i < length; i++) {
+ E = i === -1 ? O : arguments[i];
+
+ if (isConcatSpreadable(E)) {
+ len = lengthOfArrayLike$l(E);
+ if (n + len > MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+
+ for (k = 0; k < len; k++, n++) if (k in E) createProperty$6(A, n, E[k]);
+ } else {
+ if (n >= MAX_SAFE_INTEGER$2) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
+ createProperty$6(A, n++, E);
+ }
+ }
+
+ A.length = n;
+ return A;
+ }
+});
+
+var toObject$t = toObject$A;
+
+var toAbsoluteIndex$6 = toAbsoluteIndex$8;
+
+var lengthOfArrayLike$k = lengthOfArrayLike$q;
+
+var min$8 = Math.min; // `Array.prototype.copyWithin` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.copywithin
+// eslint-disable-next-line es/no-array-prototype-copywithin -- safe
+
+var arrayCopyWithin = [].copyWithin || function copyWithin(target
+/* = 0 */
+, start
+/* = 0, end = @length */
+) {
+ var O = toObject$t(this);
+ var len = lengthOfArrayLike$k(O);
+ var to = toAbsoluteIndex$6(target, len);
+ var from = toAbsoluteIndex$6(start, len);
+ var end = arguments.length > 2 ? arguments[2] : undefined;
+ var count = min$8((end === undefined ? len : toAbsoluteIndex$6(end, len)) - from, len - to);
+ var inc = 1;
+
+ if (from < to && to < from + count) {
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+
+ while (count-- > 0) {
+ if (from in O) O[to] = O[from];else delete O[to];
+ to += inc;
+ from += inc;
+ }
+
+ return O;
+};
+
+var $$4d = _export;
+
+var copyWithin = arrayCopyWithin;
+
+var addToUnscopables$f = addToUnscopables$h; // `Array.prototype.copyWithin` method
+// https://tc39.es/ecma262/#sec-array.prototype.copywithin
+
+
+$$4d({
+ target: 'Array',
+ proto: true
+}, {
+ copyWithin: copyWithin
+}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$f('copyWithin');
+
+var fails$W = fails$15;
+
+var arrayMethodIsStrict$9 = function (METHOD_NAME, argument) {
+ var method = [][METHOD_NAME];
+ return !!method && fails$W(function () {
+ // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
+ method.call(null, argument || function () {
+ throw 1;
+ }, 1);
+ });
+};
+
+var $$4c = _export;
+
+var $every$2 = arrayIteration.every;
+
+var arrayMethodIsStrict$8 = arrayMethodIsStrict$9;
+
+var STRICT_METHOD$8 = arrayMethodIsStrict$8('every'); // `Array.prototype.every` method
+// https://tc39.es/ecma262/#sec-array.prototype.every
+
+$$4c({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$8
+}, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ return $every$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var toObject$s = toObject$A;
+
+var toAbsoluteIndex$5 = toAbsoluteIndex$8;
+
+var lengthOfArrayLike$j = lengthOfArrayLike$q; // `Array.prototype.fill` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.fill
+
+
+var arrayFill$1 = function fill(value
+/* , start = 0, end = @length */
+) {
+ var O = toObject$s(this);
+ var length = lengthOfArrayLike$j(O);
+ var argumentsLength = arguments.length;
+ var index = toAbsoluteIndex$5(argumentsLength > 1 ? arguments[1] : undefined, length);
+ var end = argumentsLength > 2 ? arguments[2] : undefined;
+ var endPos = end === undefined ? length : toAbsoluteIndex$5(end, length);
+
+ while (endPos > index) O[index++] = value;
+
+ return O;
+};
+
+var $$4b = _export;
+
+var fill = arrayFill$1;
+
+var addToUnscopables$e = addToUnscopables$h; // `Array.prototype.fill` method
+// https://tc39.es/ecma262/#sec-array.prototype.fill
+
+
+$$4b({
+ target: 'Array',
+ proto: true
+}, {
+ fill: fill
+}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$e('fill');
+
+var $$4a = _export;
+
+var $filter$1 = arrayIteration.filter;
+
+var arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5;
+
+var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$3('filter'); // `Array.prototype.filter` method
+// https://tc39.es/ecma262/#sec-array.prototype.filter
+// with adding support of @@species
+
+$$4a({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$3
+}, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ return $filter$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$49 = _export;
+
+var $find$2 = arrayIteration.find;
+
+var addToUnscopables$d = addToUnscopables$h;
+
+var FIND = 'find';
+var SKIPS_HOLES$1 = true; // Shouldn't skip holes
+
+if (FIND in []) Array(1)[FIND](function () {
+ SKIPS_HOLES$1 = false;
+}); // `Array.prototype.find` method
+// https://tc39.es/ecma262/#sec-array.prototype.find
+
+$$49({
+ target: 'Array',
+ proto: true,
+ forced: SKIPS_HOLES$1
+}, {
+ find: function find(callbackfn
+ /* , that = undefined */
+ ) {
+ return $find$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$d(FIND);
+
+var $$48 = _export;
+
+var $findIndex$1 = arrayIteration.findIndex;
+
+var addToUnscopables$c = addToUnscopables$h;
+
+var FIND_INDEX = 'findIndex';
+var SKIPS_HOLES = true; // Shouldn't skip holes
+
+if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () {
+ SKIPS_HOLES = false;
+}); // `Array.prototype.findIndex` method
+// https://tc39.es/ecma262/#sec-array.prototype.findindex
+
+$$48({
+ target: 'Array',
+ proto: true,
+ forced: SKIPS_HOLES
+}, {
+ findIndex: function findIndex(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$c(FIND_INDEX);
+
+var isArray$4 = isArray$8;
+
+var lengthOfArrayLike$i = lengthOfArrayLike$q;
+
+var bind$o = functionBindContext; // `FlattenIntoArray` abstract operation
+// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
+
+
+var flattenIntoArray$2 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
+ var targetIndex = start;
+ var sourceIndex = 0;
+ var mapFn = mapper ? bind$o(mapper, thisArg, 3) : false;
+ var element, elementLen;
+
+ while (sourceIndex < sourceLen) {
+ if (sourceIndex in source) {
+ element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
+
+ if (depth > 0 && isArray$4(element)) {
+ elementLen = lengthOfArrayLike$i(element);
+ targetIndex = flattenIntoArray$2(target, original, element, elementLen, targetIndex, depth - 1) - 1;
+ } else {
+ if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
+ target[targetIndex] = element;
+ }
+
+ targetIndex++;
+ }
+
+ sourceIndex++;
+ }
+
+ return targetIndex;
+};
+
+var flattenIntoArray_1 = flattenIntoArray$2;
+
+var $$47 = _export;
+
+var flattenIntoArray$1 = flattenIntoArray_1;
+
+var toObject$r = toObject$A;
+
+var lengthOfArrayLike$h = lengthOfArrayLike$q;
+
+var toIntegerOrInfinity$e = toIntegerOrInfinity$i;
+
+var arraySpeciesCreate$3 = arraySpeciesCreate$6; // `Array.prototype.flat` method
+// https://tc39.es/ecma262/#sec-array.prototype.flat
+
+
+$$47({
+ target: 'Array',
+ proto: true
+}, {
+ flat: function flat() {
+ var depthArg = arguments.length ? arguments[0] : undefined;
+ var O = toObject$r(this);
+ var sourceLen = lengthOfArrayLike$h(O);
+ var A = arraySpeciesCreate$3(O, 0);
+ A.length = flattenIntoArray$1(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity$e(depthArg));
+ return A;
+ }
+});
+
+var $$46 = _export;
+
+var flattenIntoArray = flattenIntoArray_1;
+
+var aCallable$M = aCallable$Q;
+
+var toObject$q = toObject$A;
+
+var lengthOfArrayLike$g = lengthOfArrayLike$q;
+
+var arraySpeciesCreate$2 = arraySpeciesCreate$6; // `Array.prototype.flatMap` method
+// https://tc39.es/ecma262/#sec-array.prototype.flatmap
+
+
+$$46({
+ target: 'Array',
+ proto: true
+}, {
+ flatMap: function flatMap(callbackfn
+ /* , thisArg */
+ ) {
+ var O = toObject$q(this);
+ var sourceLen = lengthOfArrayLike$g(O);
+ var A;
+ aCallable$M(callbackfn);
+ A = arraySpeciesCreate$2(O, 0);
+ A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return A;
+ }
+});
+
+var $forEach$2 = arrayIteration.forEach;
+
+var arrayMethodIsStrict$7 = arrayMethodIsStrict$9;
+
+var STRICT_METHOD$7 = arrayMethodIsStrict$7('forEach'); // `Array.prototype.forEach` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.foreach
+
+var arrayForEach = !STRICT_METHOD$7 ? function forEach(callbackfn
+/* , thisArg */
+) {
+ return $forEach$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); // eslint-disable-next-line es/no-array-prototype-foreach -- safe
+} : [].forEach;
+
+var $$45 = _export;
+
+var forEach$2 = arrayForEach; // `Array.prototype.forEach` method
+// https://tc39.es/ecma262/#sec-array.prototype.foreach
+// eslint-disable-next-line es/no-array-prototype-foreach -- safe
+
+
+$$45({
+ target: 'Array',
+ proto: true,
+ forced: [].forEach != forEach$2
+}, {
+ forEach: forEach$2
+});
+
+var anObject$1s = anObject$1C;
+
+var iteratorClose$2 = iteratorClose$4; // call something on iterator step with safe closing on error
+
+
+var callWithSafeIterationClosing$3 = function (iterator, fn, value, ENTRIES) {
+ try {
+ return ENTRIES ? fn(anObject$1s(value)[0], value[1]) : fn(value);
+ } catch (error) {
+ iteratorClose$2(iterator, 'throw', error);
+ }
+};
+
+var bind$n = functionBindContext;
+
+var toObject$p = toObject$A;
+
+var callWithSafeIterationClosing$2 = callWithSafeIterationClosing$3;
+
+var isArrayIteratorMethod$1 = isArrayIteratorMethod$3;
+
+var isConstructor$5 = isConstructor$7;
+
+var lengthOfArrayLike$f = lengthOfArrayLike$q;
+
+var createProperty$5 = createProperty$7;
+
+var getIterator$9 = getIterator$b;
+
+var getIteratorMethod$6 = getIteratorMethod$9; // `Array.from` method implementation
+// https://tc39.es/ecma262/#sec-array.from
+
+
+var arrayFrom$1 = function from(arrayLike
+/* , mapfn = undefined, thisArg = undefined */
+) {
+ var O = toObject$p(arrayLike);
+ var IS_CONSTRUCTOR = isConstructor$5(this);
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var mapping = mapfn !== undefined;
+ if (mapping) mapfn = bind$n(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
+ var iteratorMethod = getIteratorMethod$6(O);
+ var index = 0;
+ var length, result, step, iterator, next, value; // if the target is not iterable or it's an array with the default iterator - use a simple case
+
+ if (iteratorMethod && !(this == Array && isArrayIteratorMethod$1(iteratorMethod))) {
+ iterator = getIterator$9(O, iteratorMethod);
+ next = iterator.next;
+ result = IS_CONSTRUCTOR ? new this() : [];
+
+ for (; !(step = next.call(iterator)).done; index++) {
+ value = mapping ? callWithSafeIterationClosing$2(iterator, mapfn, [step.value, index], true) : step.value;
+ createProperty$5(result, index, value);
+ }
+ } else {
+ length = lengthOfArrayLike$f(O);
+ result = IS_CONSTRUCTOR ? new this(length) : Array(length);
+
+ for (; length > index; index++) {
+ value = mapping ? mapfn(O[index], index) : O[index];
+ createProperty$5(result, index, value);
+ }
+ }
+
+ result.length = index;
+ return result;
+};
+
+var wellKnownSymbol$t = wellKnownSymbol$G;
+
+var ITERATOR$8 = wellKnownSymbol$t('iterator');
+var SAFE_CLOSING = false;
+
+try {
+ var called = 0;
+ var iteratorWithReturn = {
+ next: function () {
+ return {
+ done: !!called++
+ };
+ },
+ 'return': function () {
+ SAFE_CLOSING = true;
+ }
+ };
+
+ iteratorWithReturn[ITERATOR$8] = function () {
+ return this;
+ }; // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
+
+
+ Array.from(iteratorWithReturn, function () {
+ throw 2;
+ });
+} catch (error) {
+ /* empty */
+}
+
+var checkCorrectnessOfIteration$4 = function (exec, SKIP_CLOSING) {
+ if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
+ var ITERATION_SUPPORT = false;
+
+ try {
+ var object = {};
+
+ object[ITERATOR$8] = function () {
+ return {
+ next: function () {
+ return {
+ done: ITERATION_SUPPORT = true
+ };
+ }
+ };
+ };
+
+ exec(object);
+ } catch (error) {
+ /* empty */
+ }
+
+ return ITERATION_SUPPORT;
+};
+
+var $$44 = _export;
+
+var from$5 = arrayFrom$1;
+
+var checkCorrectnessOfIteration$3 = checkCorrectnessOfIteration$4;
+
+var INCORRECT_ITERATION$1 = !checkCorrectnessOfIteration$3(function (iterable) {
+ // eslint-disable-next-line es/no-array-from -- required for testing
+ Array.from(iterable);
+}); // `Array.from` method
+// https://tc39.es/ecma262/#sec-array.from
+
+$$44({
+ target: 'Array',
+ stat: true,
+ forced: INCORRECT_ITERATION$1
+}, {
+ from: from$5
+});
+
+var $$43 = _export;
+
+var $includes$1 = arrayIncludes.includes;
+
+var addToUnscopables$b = addToUnscopables$h; // `Array.prototype.includes` method
+// https://tc39.es/ecma262/#sec-array.prototype.includes
+
+
+$$43({
+ target: 'Array',
+ proto: true
+}, {
+ includes: function includes(el
+ /* , fromIndex = 0 */
+ ) {
+ return $includes$1(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+}); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$b('includes');
+
+/* eslint-disable es/no-array-prototype-indexof -- required for testing */
+
+var $$42 = _export;
+
+var $indexOf$1 = arrayIncludes.indexOf;
+
+var arrayMethodIsStrict$6 = arrayMethodIsStrict$9;
+
+var nativeIndexOf = [].indexOf;
+var NEGATIVE_ZERO$1 = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
+var STRICT_METHOD$6 = arrayMethodIsStrict$6('indexOf'); // `Array.prototype.indexOf` method
+// https://tc39.es/ecma262/#sec-array.prototype.indexof
+
+$$42({
+ target: 'Array',
+ proto: true,
+ forced: NEGATIVE_ZERO$1 || !STRICT_METHOD$6
+}, {
+ indexOf: function indexOf(searchElement
+ /* , fromIndex = 0 */
+ ) {
+ return NEGATIVE_ZERO$1 // convert -0 to +0
+ ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf$1(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$41 = _export;
+
+var isArray$3 = isArray$8; // `Array.isArray` method
+// https://tc39.es/ecma262/#sec-array.isarray
+
+
+$$41({
+ target: 'Array',
+ stat: true
+}, {
+ isArray: isArray$3
+});
+
+var fails$V = fails$15;
+
+var isCallable$j = isCallable$z;
+
+var getPrototypeOf$d = objectGetPrototypeOf$1;
+
+var redefine$i = redefine$l.exports;
+
+var wellKnownSymbol$s = wellKnownSymbol$G;
+
+var ITERATOR$7 = wellKnownSymbol$s('iterator');
+var BUGGY_SAFARI_ITERATORS$1 = false; // `%IteratorPrototype%` object
+// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
+
+var IteratorPrototype$5, PrototypeOfArrayIteratorPrototype, arrayIterator$1;
+/* eslint-disable es/no-array-prototype-keys -- safe */
+
+if ([].keys) {
+ arrayIterator$1 = [].keys(); // Safari 8 has buggy iterators w/o `next`
+
+ if (!('next' in arrayIterator$1)) BUGGY_SAFARI_ITERATORS$1 = true;else {
+ PrototypeOfArrayIteratorPrototype = getPrototypeOf$d(getPrototypeOf$d(arrayIterator$1));
+ if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$5 = PrototypeOfArrayIteratorPrototype;
+ }
+}
+
+var NEW_ITERATOR_PROTOTYPE = IteratorPrototype$5 == undefined || fails$V(function () {
+ var test = {}; // FF44- legacy iterators case
+
+ return IteratorPrototype$5[ITERATOR$7].call(test) !== test;
+});
+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$5 = {}; // `%IteratorPrototype%[@@iterator]()` method
+// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
+
+if (!isCallable$j(IteratorPrototype$5[ITERATOR$7])) {
+ redefine$i(IteratorPrototype$5, ITERATOR$7, function () {
+ return this;
+ });
+}
+
+var iteratorsCore = {
+ IteratorPrototype: IteratorPrototype$5,
+ BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1
+};
+
+var IteratorPrototype$4 = iteratorsCore.IteratorPrototype;
+
+var create$b = objectCreate$1;
+
+var createPropertyDescriptor$3 = createPropertyDescriptor$9;
+
+var setToStringTag$9 = setToStringTag$b;
+
+var Iterators$2 = iterators;
+
+var returnThis$1 = function () {
+ return this;
+};
+
+var createIteratorConstructor$7 = function (IteratorConstructor, NAME, next) {
+ var TO_STRING_TAG = NAME + ' Iterator';
+ IteratorConstructor.prototype = create$b(IteratorPrototype$4, {
+ next: createPropertyDescriptor$3(1, next)
+ });
+ setToStringTag$9(IteratorConstructor, TO_STRING_TAG, false);
+ Iterators$2[TO_STRING_TAG] = returnThis$1;
+ return IteratorConstructor;
+};
+
+var $$40 = _export;
+
+var FunctionName$1 = functionName;
+
+var isCallable$i = isCallable$z;
+
+var createIteratorConstructor$6 = createIteratorConstructor$7;
+
+var getPrototypeOf$c = objectGetPrototypeOf$1;
+
+var setPrototypeOf$6 = objectSetPrototypeOf$1;
+
+var setToStringTag$8 = setToStringTag$b;
+
+var createNonEnumerableProperty$b = createNonEnumerableProperty$h;
+
+var redefine$h = redefine$l.exports;
+
+var wellKnownSymbol$r = wellKnownSymbol$G;
+
+var Iterators$1 = iterators;
+
+var IteratorsCore = iteratorsCore;
+
+var PROPER_FUNCTION_NAME$4 = FunctionName$1.PROPER;
+var CONFIGURABLE_FUNCTION_NAME$1 = FunctionName$1.CONFIGURABLE;
+var IteratorPrototype$3 = IteratorsCore.IteratorPrototype;
+var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+var ITERATOR$6 = wellKnownSymbol$r('iterator');
+var KEYS = 'keys';
+var VALUES = 'values';
+var ENTRIES = 'entries';
+
+var returnThis = function () {
+ return this;
+};
+
+var defineIterator$3 = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
+ createIteratorConstructor$6(IteratorConstructor, NAME, next);
+
+ var getIterationMethod = function (KIND) {
+ if (KIND === DEFAULT && defaultIterator) return defaultIterator;
+ if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
+
+ switch (KIND) {
+ case KEYS:
+ return function keys() {
+ return new IteratorConstructor(this, KIND);
+ };
+
+ case VALUES:
+ return function values() {
+ return new IteratorConstructor(this, KIND);
+ };
+
+ case ENTRIES:
+ return function entries() {
+ return new IteratorConstructor(this, KIND);
+ };
+ }
+
+ return function () {
+ return new IteratorConstructor(this);
+ };
+ };
+
+ var TO_STRING_TAG = NAME + ' Iterator';
+ var INCORRECT_VALUES_NAME = false;
+ var IterablePrototype = Iterable.prototype;
+ var nativeIterator = IterablePrototype[ITERATOR$6] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];
+ var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+ var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
+ var CurrentIteratorPrototype, methods, KEY; // fix native
+
+ if (anyNativeIterator) {
+ CurrentIteratorPrototype = getPrototypeOf$c(anyNativeIterator.call(new Iterable()));
+
+ if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+ if (getPrototypeOf$c(CurrentIteratorPrototype) !== IteratorPrototype$3) {
+ if (setPrototypeOf$6) {
+ setPrototypeOf$6(CurrentIteratorPrototype, IteratorPrototype$3);
+ } else if (!isCallable$i(CurrentIteratorPrototype[ITERATOR$6])) {
+ redefine$h(CurrentIteratorPrototype, ITERATOR$6, returnThis);
+ }
+ } // Set @@toStringTag to native iterators
+
+
+ setToStringTag$8(CurrentIteratorPrototype, TO_STRING_TAG, true);
+ }
+ } // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
+
+
+ if (PROPER_FUNCTION_NAME$4 && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+ if (CONFIGURABLE_FUNCTION_NAME$1) {
+ createNonEnumerableProperty$b(IterablePrototype, 'name', VALUES);
+ } else {
+ INCORRECT_VALUES_NAME = true;
+
+ defaultIterator = function values() {
+ return nativeIterator.call(this);
+ };
+ }
+ } // export additional methods
+
+
+ if (DEFAULT) {
+ methods = {
+ values: getIterationMethod(VALUES),
+ keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+ entries: getIterationMethod(ENTRIES)
+ };
+ if (FORCED) for (KEY in methods) {
+ if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+ redefine$h(IterablePrototype, KEY, methods[KEY]);
+ }
+ } else $$40({
+ target: NAME,
+ proto: true,
+ forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME
+ }, methods);
+ } // define iterator
+
+
+ if (IterablePrototype[ITERATOR$6] !== defaultIterator) {
+ redefine$h(IterablePrototype, ITERATOR$6, defaultIterator, {
+ name: DEFAULT
+ });
+ }
+
+ Iterators$1[NAME] = defaultIterator;
+ return methods;
+};
+
+var toIndexedObject$7 = toIndexedObject$d;
+
+var addToUnscopables$a = addToUnscopables$h;
+
+var Iterators = iterators;
+
+var InternalStateModule$h = internalState;
+
+var defineIterator$2 = defineIterator$3;
+
+var ARRAY_ITERATOR = 'Array Iterator';
+var setInternalState$h = InternalStateModule$h.set;
+var getInternalState$g = InternalStateModule$h.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method
+// https://tc39.es/ecma262/#sec-array.prototype.entries
+// `Array.prototype.keys` method
+// https://tc39.es/ecma262/#sec-array.prototype.keys
+// `Array.prototype.values` method
+// https://tc39.es/ecma262/#sec-array.prototype.values
+// `Array.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
+// `CreateArrayIterator` internal method
+// https://tc39.es/ecma262/#sec-createarrayiterator
+
+var es_array_iterator = defineIterator$2(Array, 'Array', function (iterated, kind) {
+ setInternalState$h(this, {
+ type: ARRAY_ITERATOR,
+ target: toIndexedObject$7(iterated),
+ // target
+ index: 0,
+ // next index
+ kind: kind // kind
+
+ }); // `%ArrayIteratorPrototype%.next` method
+ // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
+}, function () {
+ var state = getInternalState$g(this);
+ var target = state.target;
+ var kind = state.kind;
+ var index = state.index++;
+
+ if (!target || index >= target.length) {
+ state.target = undefined;
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ if (kind == 'keys') return {
+ value: index,
+ done: false
+ };
+ if (kind == 'values') return {
+ value: target[index],
+ done: false
+ };
+ return {
+ value: [index, target[index]],
+ done: false
+ };
+}, 'values'); // argumentsList[@@iterator] is %ArrayProto_values%
+// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
+// https://tc39.es/ecma262/#sec-createmappedargumentsobject
+
+Iterators.Arguments = Iterators.Array; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+addToUnscopables$a('keys');
+addToUnscopables$a('values');
+addToUnscopables$a('entries');
+
+var $$3$ = _export;
+
+var IndexedObject$4 = indexedObject;
+
+var toIndexedObject$6 = toIndexedObject$d;
+
+var arrayMethodIsStrict$5 = arrayMethodIsStrict$9;
+
+var nativeJoin = [].join;
+var ES3_STRINGS = IndexedObject$4 != Object;
+var STRICT_METHOD$5 = arrayMethodIsStrict$5('join', ','); // `Array.prototype.join` method
+// https://tc39.es/ecma262/#sec-array.prototype.join
+
+$$3$({
+ target: 'Array',
+ proto: true,
+ forced: ES3_STRINGS || !STRICT_METHOD$5
+}, {
+ join: function join(separator) {
+ return nativeJoin.call(toIndexedObject$6(this), separator === undefined ? ',' : separator);
+ }
+});
+
+/* eslint-disable es/no-array-prototype-lastindexof -- safe */
+
+var toIndexedObject$5 = toIndexedObject$d;
+
+var toIntegerOrInfinity$d = toIntegerOrInfinity$i;
+
+var lengthOfArrayLike$e = lengthOfArrayLike$q;
+
+var arrayMethodIsStrict$4 = arrayMethodIsStrict$9;
+
+var min$7 = Math.min;
+var $lastIndexOf$1 = [].lastIndexOf;
+var NEGATIVE_ZERO = !!$lastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0;
+var STRICT_METHOD$4 = arrayMethodIsStrict$4('lastIndexOf');
+var FORCED$t = NEGATIVE_ZERO || !STRICT_METHOD$4; // `Array.prototype.lastIndexOf` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+
+var arrayLastIndexOf = FORCED$t ? function lastIndexOf(searchElement
+/* , fromIndex = @[*-1] */
+) {
+ // convert -0 to +0
+ if (NEGATIVE_ZERO) return $lastIndexOf$1.apply(this, arguments) || 0;
+ var O = toIndexedObject$5(this);
+ var length = lengthOfArrayLike$e(O);
+ var index = length - 1;
+ if (arguments.length > 1) index = min$7(index, toIntegerOrInfinity$d(arguments[1]));
+ if (index < 0) index = length + index;
+
+ for (; index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
+
+ return -1;
+} : $lastIndexOf$1;
+
+var $$3_ = _export;
+
+var lastIndexOf = arrayLastIndexOf; // `Array.prototype.lastIndexOf` method
+// https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing
+
+
+$$3_({
+ target: 'Array',
+ proto: true,
+ forced: lastIndexOf !== [].lastIndexOf
+}, {
+ lastIndexOf: lastIndexOf
+});
+
+var $$3Z = _export;
+
+var $map$1 = arrayIteration.map;
+
+var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5;
+
+var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$2('map'); // `Array.prototype.map` method
+// https://tc39.es/ecma262/#sec-array.prototype.map
+// with adding support of @@species
+
+$$3Z({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$2
+}, {
+ map: function map(callbackfn
+ /* , thisArg */
+ ) {
+ return $map$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$3Y = _export;
+
+var fails$U = fails$15;
+
+var isConstructor$4 = isConstructor$7;
+
+var createProperty$4 = createProperty$7;
+
+var ISNT_GENERIC = fails$U(function () {
+ function F() {
+ /* empty */
+ } // eslint-disable-next-line es/no-array-of -- required for testing
+
+
+ return !(Array.of.call(F) instanceof F);
+}); // `Array.of` method
+// https://tc39.es/ecma262/#sec-array.of
+// WebKit Array.of isn't generic
+
+$$3Y({
+ target: 'Array',
+ stat: true,
+ forced: ISNT_GENERIC
+}, {
+ of: function of() {
+ var index = 0;
+ var argumentsLength = arguments.length;
+ var result = new (isConstructor$4(this) ? this : Array)(argumentsLength);
+
+ while (argumentsLength > index) createProperty$4(result, index, arguments[index++]);
+
+ result.length = argumentsLength;
+ return result;
+ }
+});
+
+var aCallable$L = aCallable$Q;
+
+var toObject$o = toObject$A;
+
+var IndexedObject$3 = indexedObject;
+
+var lengthOfArrayLike$d = lengthOfArrayLike$q; // `Array.prototype.{ reduce, reduceRight }` methods implementation
+
+
+var createMethod$6 = function (IS_RIGHT) {
+ return function (that, callbackfn, argumentsLength, memo) {
+ aCallable$L(callbackfn);
+ var O = toObject$o(that);
+ var self = IndexedObject$3(O);
+ var length = lengthOfArrayLike$d(O);
+ var index = IS_RIGHT ? length - 1 : 0;
+ var i = IS_RIGHT ? -1 : 1;
+ if (argumentsLength < 2) while (true) {
+ if (index in self) {
+ memo = self[index];
+ index += i;
+ break;
+ }
+
+ index += i;
+
+ if (IS_RIGHT ? index < 0 : length <= index) {
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+
+ for (; IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
+ memo = callbackfn(memo, self[index], index, O);
+ }
+
+ return memo;
+ };
+};
+
+var arrayReduce = {
+ // `Array.prototype.reduce` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
+ left: createMethod$6(false),
+ // `Array.prototype.reduceRight` method
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
+ right: createMethod$6(true)
+};
+
+var classof$7 = classofRaw$1;
+
+var global$D = global$R;
+
+var engineIsNode = classof$7(global$D.process) == 'process';
+
+var $$3X = _export;
+
+var $reduce$1 = arrayReduce.left;
+
+var arrayMethodIsStrict$3 = arrayMethodIsStrict$9;
+
+var CHROME_VERSION$1 = engineV8Version;
+
+var IS_NODE$5 = engineIsNode;
+
+var STRICT_METHOD$3 = arrayMethodIsStrict$3('reduce'); // Chrome 80-82 has a critical bug
+// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+
+var CHROME_BUG$1 = !IS_NODE$5 && CHROME_VERSION$1 > 79 && CHROME_VERSION$1 < 83; // `Array.prototype.reduce` method
+// https://tc39.es/ecma262/#sec-array.prototype.reduce
+
+$$3X({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$3 || CHROME_BUG$1
+}, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduce$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$3W = _export;
+
+var $reduceRight$1 = arrayReduce.right;
+
+var arrayMethodIsStrict$2 = arrayMethodIsStrict$9;
+
+var CHROME_VERSION = engineV8Version;
+
+var IS_NODE$4 = engineIsNode;
+
+var STRICT_METHOD$2 = arrayMethodIsStrict$2('reduceRight'); // Chrome 80-82 has a critical bug
+// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+
+var CHROME_BUG = !IS_NODE$4 && CHROME_VERSION > 79 && CHROME_VERSION < 83; // `Array.prototype.reduceRight` method
+// https://tc39.es/ecma262/#sec-array.prototype.reduceright
+
+$$3W({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$2 || CHROME_BUG
+}, {
+ reduceRight: function reduceRight(callbackfn
+ /* , initialValue */
+ ) {
+ return $reduceRight$1(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$3V = _export;
+
+var isArray$2 = isArray$8;
+
+var nativeReverse = [].reverse;
+var test$1 = [1, 2]; // `Array.prototype.reverse` method
+// https://tc39.es/ecma262/#sec-array.prototype.reverse
+// fix for Safari 12.0 bug
+// https://bugs.webkit.org/show_bug.cgi?id=188794
+
+$$3V({
+ target: 'Array',
+ proto: true,
+ forced: String(test$1) === String(test$1.reverse())
+}, {
+ reverse: function reverse() {
+ // eslint-disable-next-line no-self-assign -- dirty hack
+ if (isArray$2(this)) this.length = this.length;
+ return nativeReverse.call(this);
+ }
+});
+
+var $$3U = _export;
+
+var isArray$1 = isArray$8;
+
+var isConstructor$3 = isConstructor$7;
+
+var isObject$r = isObject$C;
+
+var toAbsoluteIndex$4 = toAbsoluteIndex$8;
+
+var lengthOfArrayLike$c = lengthOfArrayLike$q;
+
+var toIndexedObject$4 = toIndexedObject$d;
+
+var createProperty$3 = createProperty$7;
+
+var wellKnownSymbol$q = wellKnownSymbol$G;
+
+var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5;
+
+var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('slice');
+var SPECIES$4 = wellKnownSymbol$q('species');
+var nativeSlice = [].slice;
+var max$5 = Math.max; // `Array.prototype.slice` method
+// https://tc39.es/ecma262/#sec-array.prototype.slice
+// fallback for not array-like ES3 strings and DOM objects
+
+$$3U({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT$1
+}, {
+ slice: function slice(start, end) {
+ var O = toIndexedObject$4(this);
+ var length = lengthOfArrayLike$c(O);
+ var k = toAbsoluteIndex$4(start, length);
+ var fin = toAbsoluteIndex$4(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
+
+ var Constructor, result, n;
+
+ if (isArray$1(O)) {
+ Constructor = O.constructor; // cross-realm fallback
+
+ if (isConstructor$3(Constructor) && (Constructor === Array || isArray$1(Constructor.prototype))) {
+ Constructor = undefined;
+ } else if (isObject$r(Constructor)) {
+ Constructor = Constructor[SPECIES$4];
+ if (Constructor === null) Constructor = undefined;
+ }
+
+ if (Constructor === Array || Constructor === undefined) {
+ return nativeSlice.call(O, k, fin);
+ }
+ }
+
+ result = new (Constructor === undefined ? Array : Constructor)(max$5(fin - k, 0));
+
+ for (n = 0; k < fin; k++, n++) if (k in O) createProperty$3(result, n, O[k]);
+
+ result.length = n;
+ return result;
+ }
+});
+
+var $$3T = _export;
+
+var $some$2 = arrayIteration.some;
+
+var arrayMethodIsStrict$1 = arrayMethodIsStrict$9;
+
+var STRICT_METHOD$1 = arrayMethodIsStrict$1('some'); // `Array.prototype.some` method
+// https://tc39.es/ecma262/#sec-array.prototype.some
+
+$$3T({
+ target: 'Array',
+ proto: true,
+ forced: !STRICT_METHOD$1
+}, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ return $some$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+// TODO: use something more complex like timsort?
+var floor$9 = Math.floor;
+
+var mergeSort = function (array, comparefn) {
+ var length = array.length;
+ var middle = floor$9(length / 2);
+ return length < 8 ? insertionSort(array, comparefn) : merge(mergeSort(array.slice(0, middle), comparefn), mergeSort(array.slice(middle), comparefn), comparefn);
+};
+
+var insertionSort = function (array, comparefn) {
+ var length = array.length;
+ var i = 1;
+ var element, j;
+
+ while (i < length) {
+ j = i;
+ element = array[i];
+
+ while (j && comparefn(array[j - 1], element) > 0) {
+ array[j] = array[--j];
+ }
+
+ if (j !== i++) array[j] = element;
+ }
+
+ return array;
+};
+
+var merge = function (left, right, comparefn) {
+ var llength = left.length;
+ var rlength = right.length;
+ var lindex = 0;
+ var rindex = 0;
+ var result = [];
+
+ while (lindex < llength || rindex < rlength) {
+ if (lindex < llength && rindex < rlength) {
+ result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);
+ } else {
+ result.push(lindex < llength ? left[lindex++] : right[rindex++]);
+ }
+ }
+
+ return result;
+};
+
+var arraySort = mergeSort;
+
+var userAgent$6 = engineUserAgent;
+
+var firefox = userAgent$6.match(/firefox\/(\d+)/i);
+var engineFfVersion = !!firefox && +firefox[1];
+
+var UA = engineUserAgent;
+
+var engineIsIeOrEdge = /MSIE|Trident/.test(UA);
+
+var userAgent$5 = engineUserAgent;
+
+var webkit = userAgent$5.match(/AppleWebKit\/(\d+)\./);
+var engineWebkitVersion = !!webkit && +webkit[1];
+
+var $$3S = _export;
+
+var aCallable$K = aCallable$Q;
+
+var toObject$n = toObject$A;
+
+var lengthOfArrayLike$b = lengthOfArrayLike$q;
+
+var toString$q = toString$t;
+
+var fails$T = fails$15;
+
+var internalSort$1 = arraySort;
+
+var arrayMethodIsStrict = arrayMethodIsStrict$9;
+
+var FF$1 = engineFfVersion;
+
+var IE_OR_EDGE$1 = engineIsIeOrEdge;
+
+var V8$1 = engineV8Version;
+
+var WEBKIT$2 = engineWebkitVersion;
+
+var test = [];
+var nativeSort$1 = test.sort; // IE8-
+
+var FAILS_ON_UNDEFINED = fails$T(function () {
+ test.sort(undefined);
+}); // V8 bug
+
+var FAILS_ON_NULL = fails$T(function () {
+ test.sort(null);
+}); // Old WebKit
+
+var STRICT_METHOD = arrayMethodIsStrict('sort');
+var STABLE_SORT$1 = !fails$T(function () {
+ // feature detection can be too slow, so check engines versions
+ if (V8$1) return V8$1 < 70;
+ if (FF$1 && FF$1 > 3) return;
+ if (IE_OR_EDGE$1) return true;
+ if (WEBKIT$2) return WEBKIT$2 < 603;
+ var result = '';
+ var code, chr, value, index; // generate an array with more 512 elements (Chakra and old V8 fails only in this case)
+
+ for (code = 65; code < 76; code++) {
+ chr = String.fromCharCode(code);
+
+ switch (code) {
+ case 66:
+ case 69:
+ case 70:
+ case 72:
+ value = 3;
+ break;
+
+ case 68:
+ case 71:
+ value = 4;
+ break;
+
+ default:
+ value = 2;
+ }
+
+ for (index = 0; index < 47; index++) {
+ test.push({
+ k: chr + index,
+ v: value
+ });
+ }
+ }
+
+ test.sort(function (a, b) {
+ return b.v - a.v;
+ });
+
+ for (index = 0; index < test.length; index++) {
+ chr = test[index].k.charAt(0);
+ if (result.charAt(result.length - 1) !== chr) result += chr;
+ }
+
+ return result !== 'DGBEFHACIJK';
+});
+var FORCED$s = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT$1;
+
+var getSortCompare$1 = function (comparefn) {
+ return function (x, y) {
+ if (y === undefined) return -1;
+ if (x === undefined) return 1;
+ if (comparefn !== undefined) return +comparefn(x, y) || 0;
+ return toString$q(x) > toString$q(y) ? 1 : -1;
+ };
+}; // `Array.prototype.sort` method
+// https://tc39.es/ecma262/#sec-array.prototype.sort
+
+
+$$3S({
+ target: 'Array',
+ proto: true,
+ forced: FORCED$s
+}, {
+ sort: function sort(comparefn) {
+ if (comparefn !== undefined) aCallable$K(comparefn);
+ var array = toObject$n(this);
+ if (STABLE_SORT$1) return comparefn === undefined ? nativeSort$1.call(array) : nativeSort$1.call(array, comparefn);
+ var items = [];
+ var arrayLength = lengthOfArrayLike$b(array);
+ var itemsLength, index;
+
+ for (index = 0; index < arrayLength; index++) {
+ if (index in array) items.push(array[index]);
+ }
+
+ items = internalSort$1(items, getSortCompare$1(comparefn));
+ itemsLength = items.length;
+ index = 0;
+
+ while (index < itemsLength) array[index] = items[index++];
+
+ while (index < arrayLength) delete array[index++];
+
+ return array;
+ }
+});
+
+var getBuiltIn$r = getBuiltIn$y;
+
+var definePropertyModule$6 = objectDefineProperty;
+
+var wellKnownSymbol$p = wellKnownSymbol$G;
+
+var DESCRIPTORS$s = descriptors;
+
+var SPECIES$3 = wellKnownSymbol$p('species');
+
+var setSpecies$7 = function (CONSTRUCTOR_NAME) {
+ var Constructor = getBuiltIn$r(CONSTRUCTOR_NAME);
+ var defineProperty = definePropertyModule$6.f;
+
+ if (DESCRIPTORS$s && Constructor && !Constructor[SPECIES$3]) {
+ defineProperty(Constructor, SPECIES$3, {
+ configurable: true,
+ get: function () {
+ return this;
+ }
+ });
+ }
+};
+
+var setSpecies$6 = setSpecies$7; // `Array[@@species]` getter
+// https://tc39.es/ecma262/#sec-get-array-@@species
+
+
+setSpecies$6('Array');
+
+var $$3R = _export;
+
+var toAbsoluteIndex$3 = toAbsoluteIndex$8;
+
+var toIntegerOrInfinity$c = toIntegerOrInfinity$i;
+
+var lengthOfArrayLike$a = lengthOfArrayLike$q;
+
+var toObject$m = toObject$A;
+
+var arraySpeciesCreate$1 = arraySpeciesCreate$6;
+
+var createProperty$2 = createProperty$7;
+
+var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5;
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
+var max$4 = Math.max;
+var min$6 = Math.min;
+var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;
+var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method
+// https://tc39.es/ecma262/#sec-array.prototype.splice
+// with adding support of @@species
+
+$$3R({
+ target: 'Array',
+ proto: true,
+ forced: !HAS_SPECIES_SUPPORT
+}, {
+ splice: function splice(start, deleteCount
+ /* , ...items */
+ ) {
+ var O = toObject$m(this);
+ var len = lengthOfArrayLike$a(O);
+ var actualStart = toAbsoluteIndex$3(start, len);
+ var argumentsLength = arguments.length;
+ var insertCount, actualDeleteCount, A, k, from, to;
+
+ if (argumentsLength === 0) {
+ insertCount = actualDeleteCount = 0;
+ } else if (argumentsLength === 1) {
+ insertCount = 0;
+ actualDeleteCount = len - actualStart;
+ } else {
+ insertCount = argumentsLength - 2;
+ actualDeleteCount = min$6(max$4(toIntegerOrInfinity$c(deleteCount), 0), len - actualStart);
+ }
+
+ if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {
+ throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
+ }
+
+ A = arraySpeciesCreate$1(O, actualDeleteCount);
+
+ for (k = 0; k < actualDeleteCount; k++) {
+ from = actualStart + k;
+ if (from in O) createProperty$2(A, k, O[from]);
+ }
+
+ A.length = actualDeleteCount;
+
+ if (insertCount < actualDeleteCount) {
+ for (k = actualStart; k < len - actualDeleteCount; k++) {
+ from = k + actualDeleteCount;
+ to = k + insertCount;
+ if (from in O) O[to] = O[from];else delete O[to];
+ }
+
+ for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
+ } else if (insertCount > actualDeleteCount) {
+ for (k = len - actualDeleteCount; k > actualStart; k--) {
+ from = k + actualDeleteCount - 1;
+ to = k + insertCount - 1;
+ if (from in O) O[to] = O[from];else delete O[to];
+ }
+ }
+
+ for (k = 0; k < insertCount; k++) {
+ O[k + actualStart] = arguments[k + 2];
+ }
+
+ O.length = len - actualDeleteCount + insertCount;
+ return A;
+ }
+});
+
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables$9 = addToUnscopables$h; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+
+addToUnscopables$9('flat');
+
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables$8 = addToUnscopables$h; // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+
+
+addToUnscopables$8('flatMap');
+
+// eslint-disable-next-line es/no-typed-arrays -- safe
+var arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';
+
+var redefine$g = redefine$l.exports;
+
+var redefineAll$a = function (target, src, options) {
+ for (var key in src) redefine$g(target, key, src[key], options);
+
+ return target;
+};
+
+var anInstance$b = function (it, Constructor, name) {
+ if (it instanceof Constructor) return it;
+ throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
+};
+
+var toIntegerOrInfinity$b = toIntegerOrInfinity$i;
+
+var toLength$b = toLength$d; // `ToIndex` abstract operation
+// https://tc39.es/ecma262/#sec-toindex
+
+
+var toIndex$2 = function (it) {
+ if (it === undefined) return 0;
+ var number = toIntegerOrInfinity$b(it);
+ var length = toLength$b(number);
+ if (number !== length) throw RangeError('Wrong length or index');
+ return length;
+};
+
+// IEEE754 conversions based on https://github.com/feross/ieee754
+var abs$7 = Math.abs;
+var pow$4 = Math.pow;
+var floor$8 = Math.floor;
+var log$8 = Math.log;
+var LN2$2 = Math.LN2;
+
+var pack = function (number, mantissaLength, bytes) {
+ var buffer = new Array(bytes);
+ var exponentLength = bytes * 8 - mantissaLength - 1;
+ var eMax = (1 << exponentLength) - 1;
+ var eBias = eMax >> 1;
+ var rt = mantissaLength === 23 ? pow$4(2, -24) - pow$4(2, -77) : 0;
+ var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
+ var index = 0;
+ var exponent, mantissa, c;
+ number = abs$7(number); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (number != number || number === Infinity) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ mantissa = number != number ? 1 : 0;
+ exponent = eMax;
+ } else {
+ exponent = floor$8(log$8(number) / LN2$2);
+
+ if (number * (c = pow$4(2, -exponent)) < 1) {
+ exponent--;
+ c *= 2;
+ }
+
+ if (exponent + eBias >= 1) {
+ number += rt / c;
+ } else {
+ number += rt * pow$4(2, 1 - eBias);
+ }
+
+ if (number * c >= 2) {
+ exponent++;
+ c /= 2;
+ }
+
+ if (exponent + eBias >= eMax) {
+ mantissa = 0;
+ exponent = eMax;
+ } else if (exponent + eBias >= 1) {
+ mantissa = (number * c - 1) * pow$4(2, mantissaLength);
+ exponent = exponent + eBias;
+ } else {
+ mantissa = number * pow$4(2, eBias - 1) * pow$4(2, mantissaLength);
+ exponent = 0;
+ }
+ }
+
+ for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
+
+ exponent = exponent << mantissaLength | mantissa;
+ exponentLength += mantissaLength;
+
+ for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
+
+ buffer[--index] |= sign * 128;
+ return buffer;
+};
+
+var unpack = function (buffer, mantissaLength) {
+ var bytes = buffer.length;
+ var exponentLength = bytes * 8 - mantissaLength - 1;
+ var eMax = (1 << exponentLength) - 1;
+ var eBias = eMax >> 1;
+ var nBits = exponentLength - 7;
+ var index = bytes - 1;
+ var sign = buffer[index--];
+ var exponent = sign & 127;
+ var mantissa;
+ sign >>= 7;
+
+ for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
+
+ mantissa = exponent & (1 << -nBits) - 1;
+ exponent >>= -nBits;
+ nBits += mantissaLength;
+
+ for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
+
+ if (exponent === 0) {
+ exponent = 1 - eBias;
+ } else if (exponent === eMax) {
+ return mantissa ? NaN : sign ? -Infinity : Infinity;
+ } else {
+ mantissa = mantissa + pow$4(2, mantissaLength);
+ exponent = exponent - eBias;
+ }
+
+ return (sign ? -1 : 1) * mantissa * pow$4(2, exponent - mantissaLength);
+};
+
+var ieee754 = {
+ pack: pack,
+ unpack: unpack
+};
+
+var global$C = global$R;
+
+var DESCRIPTORS$r = descriptors;
+
+var NATIVE_ARRAY_BUFFER$2 = arrayBufferNative;
+
+var FunctionName = functionName;
+
+var createNonEnumerableProperty$a = createNonEnumerableProperty$h;
+
+var redefineAll$9 = redefineAll$a;
+
+var fails$S = fails$15;
+
+var anInstance$a = anInstance$b;
+
+var toIntegerOrInfinity$a = toIntegerOrInfinity$i;
+
+var toLength$a = toLength$d;
+
+var toIndex$1 = toIndex$2;
+
+var IEEE754 = ieee754;
+
+var getPrototypeOf$b = objectGetPrototypeOf$1;
+
+var setPrototypeOf$5 = objectSetPrototypeOf$1;
+
+var getOwnPropertyNames$5 = objectGetOwnPropertyNames.f;
+
+var defineProperty$d = objectDefineProperty.f;
+
+var arrayFill = arrayFill$1;
+
+var setToStringTag$7 = setToStringTag$b;
+
+var InternalStateModule$g = internalState;
+
+var PROPER_FUNCTION_NAME$3 = FunctionName.PROPER;
+var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
+var getInternalState$f = InternalStateModule$g.get;
+var setInternalState$g = InternalStateModule$g.set;
+var ARRAY_BUFFER$1 = 'ArrayBuffer';
+var DATA_VIEW = 'DataView';
+var PROTOTYPE = 'prototype';
+var WRONG_LENGTH$1 = 'Wrong length';
+var WRONG_INDEX = 'Wrong index';
+var NativeArrayBuffer$1 = global$C[ARRAY_BUFFER$1];
+var $ArrayBuffer = NativeArrayBuffer$1;
+var $DataView = global$C[DATA_VIEW];
+var $DataViewPrototype = $DataView && $DataView[PROTOTYPE];
+var ObjectPrototype$1 = Object.prototype;
+var RangeError$2 = global$C.RangeError;
+var packIEEE754 = IEEE754.pack;
+var unpackIEEE754 = IEEE754.unpack;
+
+var packInt8 = function (number) {
+ return [number & 0xFF];
+};
+
+var packInt16 = function (number) {
+ return [number & 0xFF, number >> 8 & 0xFF];
+};
+
+var packInt32 = function (number) {
+ return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];
+};
+
+var unpackInt32 = function (buffer) {
+ return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
+};
+
+var packFloat32 = function (number) {
+ return packIEEE754(number, 23, 4);
+};
+
+var packFloat64 = function (number) {
+ return packIEEE754(number, 52, 8);
+};
+
+var addGetter$1 = function (Constructor, key) {
+ defineProperty$d(Constructor[PROTOTYPE], key, {
+ get: function () {
+ return getInternalState$f(this)[key];
+ }
+ });
+};
+
+var get$2 = function (view, count, index, isLittleEndian) {
+ var intIndex = toIndex$1(index);
+ var store = getInternalState$f(view);
+ if (intIndex + count > store.byteLength) throw RangeError$2(WRONG_INDEX);
+ var bytes = getInternalState$f(store.buffer).bytes;
+ var start = intIndex + store.byteOffset;
+ var pack = bytes.slice(start, start + count);
+ return isLittleEndian ? pack : pack.reverse();
+};
+
+var set$3 = function (view, count, index, conversion, value, isLittleEndian) {
+ var intIndex = toIndex$1(index);
+ var store = getInternalState$f(view);
+ if (intIndex + count > store.byteLength) throw RangeError$2(WRONG_INDEX);
+ var bytes = getInternalState$f(store.buffer).bytes;
+ var start = intIndex + store.byteOffset;
+ var pack = conversion(+value);
+
+ for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];
+};
+
+if (!NATIVE_ARRAY_BUFFER$2) {
+ $ArrayBuffer = function ArrayBuffer(length) {
+ anInstance$a(this, $ArrayBuffer, ARRAY_BUFFER$1);
+ var byteLength = toIndex$1(length);
+ setInternalState$g(this, {
+ bytes: arrayFill.call(new Array(byteLength), 0),
+ byteLength: byteLength
+ });
+ if (!DESCRIPTORS$r) this.byteLength = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength) {
+ anInstance$a(this, $DataView, DATA_VIEW);
+ anInstance$a(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = getInternalState$f(buffer).byteLength;
+ var offset = toIntegerOrInfinity$a(byteOffset);
+ if (offset < 0 || offset > bufferLength) throw RangeError$2('Wrong offset');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength$a(byteLength);
+ if (offset + byteLength > bufferLength) throw RangeError$2(WRONG_LENGTH$1);
+ setInternalState$g(this, {
+ buffer: buffer,
+ byteLength: byteLength,
+ byteOffset: offset
+ });
+
+ if (!DESCRIPTORS$r) {
+ this.buffer = buffer;
+ this.byteLength = byteLength;
+ this.byteOffset = offset;
+ }
+ };
+
+ if (DESCRIPTORS$r) {
+ addGetter$1($ArrayBuffer, 'byteLength');
+ addGetter$1($DataView, 'buffer');
+ addGetter$1($DataView, 'byteLength');
+ addGetter$1($DataView, 'byteOffset');
+ }
+
+ redefineAll$9($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset) {
+ return get$2(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset) {
+ return get$2(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset
+ /* , littleEndian */
+ ) {
+ var bytes = get$2(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset
+ /* , littleEndian */
+ ) {
+ var bytes = get$2(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackInt32(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));
+ },
+ getUint32: function getUint32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackInt32(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackIEEE754(get$2(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);
+ },
+ getFloat64: function getFloat64(byteOffset
+ /* , littleEndian */
+ ) {
+ return unpackIEEE754(get$2(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);
+ },
+ setInt8: function setInt8(byteOffset, value) {
+ set$3(this, 1, byteOffset, packInt8, value);
+ },
+ setUint8: function setUint8(byteOffset, value) {
+ set$3(this, 1, byteOffset, packInt8, value);
+ },
+ setInt16: function setInt16(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setUint16: function setUint16(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setInt32: function setInt32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setUint32: function setUint32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setFloat32: function setFloat32(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ setFloat64: function setFloat64(byteOffset, value
+ /* , littleEndian */
+ ) {
+ set$3(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);
+ }
+ });
+} else {
+ var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME$3 && NativeArrayBuffer$1.name !== ARRAY_BUFFER$1;
+ /* eslint-disable no-new -- required for testing */
+
+ if (!fails$S(function () {
+ NativeArrayBuffer$1(1);
+ }) || !fails$S(function () {
+ new NativeArrayBuffer$1(-1);
+ }) || fails$S(function () {
+ new NativeArrayBuffer$1();
+ new NativeArrayBuffer$1(1.5);
+ new NativeArrayBuffer$1(NaN);
+ return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
+ })) {
+ /* eslint-enable no-new -- required for testing */
+ $ArrayBuffer = function ArrayBuffer(length) {
+ anInstance$a(this, $ArrayBuffer);
+ return new NativeArrayBuffer$1(toIndex$1(length));
+ };
+
+ var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer$1[PROTOTYPE];
+
+ for (var keys$2 = getOwnPropertyNames$5(NativeArrayBuffer$1), j$1 = 0, key$1; keys$2.length > j$1;) {
+ if (!((key$1 = keys$2[j$1++]) in $ArrayBuffer)) {
+ createNonEnumerableProperty$a($ArrayBuffer, key$1, NativeArrayBuffer$1[key$1]);
+ }
+ }
+
+ ArrayBufferPrototype.constructor = $ArrayBuffer;
+ } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
+ createNonEnumerableProperty$a(NativeArrayBuffer$1, 'name', ARRAY_BUFFER$1);
+ } // WebKit bug - the same parent prototype for typed arrays and data view
+
+
+ if (setPrototypeOf$5 && getPrototypeOf$b($DataViewPrototype) !== ObjectPrototype$1) {
+ setPrototypeOf$5($DataViewPrototype, ObjectPrototype$1);
+ } // iOS Safari 7.x bug
+
+
+ var testView = new $DataView(new $ArrayBuffer(2));
+ var $setInt8 = $DataViewPrototype.setInt8;
+ testView.setInt8(0, 2147483648);
+ testView.setInt8(1, 2147483649);
+ if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll$9($DataViewPrototype, {
+ setInt8: function setInt8(byteOffset, value) {
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value) {
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, {
+ unsafe: true
+ });
+}
+
+setToStringTag$7($ArrayBuffer, ARRAY_BUFFER$1);
+setToStringTag$7($DataView, DATA_VIEW);
+var arrayBuffer = {
+ ArrayBuffer: $ArrayBuffer,
+ DataView: $DataView
+};
+
+var $$3Q = _export;
+
+var global$B = global$R;
+
+var arrayBufferModule = arrayBuffer;
+
+var setSpecies$5 = setSpecies$7;
+
+var ARRAY_BUFFER = 'ArrayBuffer';
+var ArrayBuffer$4 = arrayBufferModule[ARRAY_BUFFER];
+var NativeArrayBuffer = global$B[ARRAY_BUFFER]; // `ArrayBuffer` constructor
+// https://tc39.es/ecma262/#sec-arraybuffer-constructor
+
+$$3Q({
+ global: true,
+ forced: NativeArrayBuffer !== ArrayBuffer$4
+}, {
+ ArrayBuffer: ArrayBuffer$4
+});
+setSpecies$5(ARRAY_BUFFER);
+
+var NATIVE_ARRAY_BUFFER$1 = arrayBufferNative;
+
+var DESCRIPTORS$q = descriptors;
+
+var global$A = global$R;
+
+var isCallable$h = isCallable$z;
+
+var isObject$q = isObject$C;
+
+var hasOwn$c = hasOwnProperty_1;
+
+var classof$6 = classof$b;
+
+var tryToString$1 = tryToString$3;
+
+var createNonEnumerableProperty$9 = createNonEnumerableProperty$h;
+
+var redefine$f = redefine$l.exports;
+
+var defineProperty$c = objectDefineProperty.f;
+
+var getPrototypeOf$a = objectGetPrototypeOf$1;
+
+var setPrototypeOf$4 = objectSetPrototypeOf$1;
+
+var wellKnownSymbol$o = wellKnownSymbol$G;
+
+var uid$1 = uid$5;
+
+var Int8Array$3 = global$A.Int8Array;
+var Int8ArrayPrototype = Int8Array$3 && Int8Array$3.prototype;
+var Uint8ClampedArray = global$A.Uint8ClampedArray;
+var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
+var TypedArray$1 = Int8Array$3 && getPrototypeOf$a(Int8Array$3);
+var TypedArrayPrototype$1 = Int8ArrayPrototype && getPrototypeOf$a(Int8ArrayPrototype);
+var ObjectPrototype = Object.prototype;
+var isPrototypeOf$2 = ObjectPrototype.isPrototypeOf;
+var TO_STRING_TAG$5 = wellKnownSymbol$o('toStringTag');
+var TYPED_ARRAY_TAG$1 = uid$1('TYPED_ARRAY_TAG');
+var TYPED_ARRAY_CONSTRUCTOR$2 = uid$1('TYPED_ARRAY_CONSTRUCTOR'); // Fixing native typed arrays in Opera Presto crashes the browser, see #595
+
+var NATIVE_ARRAY_BUFFER_VIEWS$3 = NATIVE_ARRAY_BUFFER$1 && !!setPrototypeOf$4 && classof$6(global$A.opera) !== 'Opera';
+var TYPED_ARRAY_TAG_REQIRED = false;
+var NAME$1, Constructor, Prototype;
+var TypedArrayConstructorsList = {
+ Int8Array: 1,
+ Uint8Array: 1,
+ Uint8ClampedArray: 1,
+ Int16Array: 2,
+ Uint16Array: 2,
+ Int32Array: 4,
+ Uint32Array: 4,
+ Float32Array: 4,
+ Float64Array: 8
+};
+var BigIntArrayConstructorsList = {
+ BigInt64Array: 8,
+ BigUint64Array: 8
+};
+
+var isView = function isView(it) {
+ if (!isObject$q(it)) return false;
+ var klass = classof$6(it);
+ return klass === 'DataView' || hasOwn$c(TypedArrayConstructorsList, klass) || hasOwn$c(BigIntArrayConstructorsList, klass);
+};
+
+var isTypedArray$1 = function (it) {
+ if (!isObject$q(it)) return false;
+ var klass = classof$6(it);
+ return hasOwn$c(TypedArrayConstructorsList, klass) || hasOwn$c(BigIntArrayConstructorsList, klass);
+};
+
+var aTypedArray$t = function (it) {
+ if (isTypedArray$1(it)) return it;
+ throw TypeError('Target is not a typed array');
+};
+
+var aTypedArrayConstructor$5 = function (C) {
+ if (isCallable$h(C) && (!setPrototypeOf$4 || isPrototypeOf$2.call(TypedArray$1, C))) return C;
+ throw TypeError(tryToString$1(C) + ' is not a typed array constructor');
+};
+
+var exportTypedArrayMethod$u = function (KEY, property, forced) {
+ if (!DESCRIPTORS$q) return;
+ if (forced) for (var ARRAY in TypedArrayConstructorsList) {
+ var TypedArrayConstructor = global$A[ARRAY];
+ if (TypedArrayConstructor && hasOwn$c(TypedArrayConstructor.prototype, KEY)) try {
+ delete TypedArrayConstructor.prototype[KEY];
+ } catch (error) {
+ /* empty */
+ }
+ }
+
+ if (!TypedArrayPrototype$1[KEY] || forced) {
+ redefine$f(TypedArrayPrototype$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$3 && Int8ArrayPrototype[KEY] || property);
+ }
+};
+
+var exportTypedArrayStaticMethod$3 = function (KEY, property, forced) {
+ var ARRAY, TypedArrayConstructor;
+ if (!DESCRIPTORS$q) return;
+
+ if (setPrototypeOf$4) {
+ if (forced) for (ARRAY in TypedArrayConstructorsList) {
+ TypedArrayConstructor = global$A[ARRAY];
+ if (TypedArrayConstructor && hasOwn$c(TypedArrayConstructor, KEY)) try {
+ delete TypedArrayConstructor[KEY];
+ } catch (error) {
+ /* empty */
+ }
+ }
+
+ if (!TypedArray$1[KEY] || forced) {
+ // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
+ try {
+ return redefine$f(TypedArray$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$3 && TypedArray$1[KEY] || property);
+ } catch (error) {
+ /* empty */
+ }
+ } else return;
+ }
+
+ for (ARRAY in TypedArrayConstructorsList) {
+ TypedArrayConstructor = global$A[ARRAY];
+
+ if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
+ redefine$f(TypedArrayConstructor, KEY, property);
+ }
+ }
+};
+
+for (NAME$1 in TypedArrayConstructorsList) {
+ Constructor = global$A[NAME$1];
+ Prototype = Constructor && Constructor.prototype;
+ if (Prototype) createNonEnumerableProperty$9(Prototype, TYPED_ARRAY_CONSTRUCTOR$2, Constructor);else NATIVE_ARRAY_BUFFER_VIEWS$3 = false;
+}
+
+for (NAME$1 in BigIntArrayConstructorsList) {
+ Constructor = global$A[NAME$1];
+ Prototype = Constructor && Constructor.prototype;
+ if (Prototype) createNonEnumerableProperty$9(Prototype, TYPED_ARRAY_CONSTRUCTOR$2, Constructor);
+} // WebKit bug - typed arrays constructors prototype is Object.prototype
+
+
+if (!NATIVE_ARRAY_BUFFER_VIEWS$3 || !isCallable$h(TypedArray$1) || TypedArray$1 === Function.prototype) {
+ // eslint-disable-next-line no-shadow -- safe
+ TypedArray$1 = function TypedArray() {
+ throw TypeError('Incorrect invocation');
+ };
+
+ if (NATIVE_ARRAY_BUFFER_VIEWS$3) for (NAME$1 in TypedArrayConstructorsList) {
+ if (global$A[NAME$1]) setPrototypeOf$4(global$A[NAME$1], TypedArray$1);
+ }
+}
+
+if (!NATIVE_ARRAY_BUFFER_VIEWS$3 || !TypedArrayPrototype$1 || TypedArrayPrototype$1 === ObjectPrototype) {
+ TypedArrayPrototype$1 = TypedArray$1.prototype;
+ if (NATIVE_ARRAY_BUFFER_VIEWS$3) for (NAME$1 in TypedArrayConstructorsList) {
+ if (global$A[NAME$1]) setPrototypeOf$4(global$A[NAME$1].prototype, TypedArrayPrototype$1);
+ }
+} // WebKit bug - one more object in Uint8ClampedArray prototype chain
+
+
+if (NATIVE_ARRAY_BUFFER_VIEWS$3 && getPrototypeOf$a(Uint8ClampedArrayPrototype) !== TypedArrayPrototype$1) {
+ setPrototypeOf$4(Uint8ClampedArrayPrototype, TypedArrayPrototype$1);
+}
+
+if (DESCRIPTORS$q && !hasOwn$c(TypedArrayPrototype$1, TO_STRING_TAG$5)) {
+ TYPED_ARRAY_TAG_REQIRED = true;
+ defineProperty$c(TypedArrayPrototype$1, TO_STRING_TAG$5, {
+ get: function () {
+ return isObject$q(this) ? this[TYPED_ARRAY_TAG$1] : undefined;
+ }
+ });
+
+ for (NAME$1 in TypedArrayConstructorsList) if (global$A[NAME$1]) {
+ createNonEnumerableProperty$9(global$A[NAME$1], TYPED_ARRAY_TAG$1, NAME$1);
+ }
+}
+
+var arrayBufferViewCore = {
+ NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS$3,
+ TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR$2,
+ TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG$1,
+ aTypedArray: aTypedArray$t,
+ aTypedArrayConstructor: aTypedArrayConstructor$5,
+ exportTypedArrayMethod: exportTypedArrayMethod$u,
+ exportTypedArrayStaticMethod: exportTypedArrayStaticMethod$3,
+ isView: isView,
+ isTypedArray: isTypedArray$1,
+ TypedArray: TypedArray$1,
+ TypedArrayPrototype: TypedArrayPrototype$1
+};
+
+var $$3P = _export;
+
+var ArrayBufferViewCore$x = arrayBufferViewCore;
+
+var NATIVE_ARRAY_BUFFER_VIEWS$2 = ArrayBufferViewCore$x.NATIVE_ARRAY_BUFFER_VIEWS; // `ArrayBuffer.isView` method
+// https://tc39.es/ecma262/#sec-arraybuffer.isview
+
+$$3P({
+ target: 'ArrayBuffer',
+ stat: true,
+ forced: !NATIVE_ARRAY_BUFFER_VIEWS$2
+}, {
+ isView: ArrayBufferViewCore$x.isView
+});
+
+var isConstructor$2 = isConstructor$7;
+
+var tryToString = tryToString$3; // `Assert: IsConstructor(argument) is true`
+
+
+var aConstructor$5 = function (argument) {
+ if (isConstructor$2(argument)) return argument;
+ throw TypeError(tryToString(argument) + ' is not a constructor');
+};
+
+var anObject$1r = anObject$1C;
+
+var aConstructor$4 = aConstructor$5;
+
+var wellKnownSymbol$n = wellKnownSymbol$G;
+
+var SPECIES$2 = wellKnownSymbol$n('species'); // `SpeciesConstructor` abstract operation
+// https://tc39.es/ecma262/#sec-speciesconstructor
+
+var speciesConstructor$f = function (O, defaultConstructor) {
+ var C = anObject$1r(O).constructor;
+ var S;
+ return C === undefined || (S = anObject$1r(C)[SPECIES$2]) == undefined ? defaultConstructor : aConstructor$4(S);
+};
+
+var $$3O = _export;
+
+var fails$R = fails$15;
+
+var ArrayBufferModule$2 = arrayBuffer;
+
+var anObject$1q = anObject$1C;
+
+var toAbsoluteIndex$2 = toAbsoluteIndex$8;
+
+var toLength$9 = toLength$d;
+
+var speciesConstructor$e = speciesConstructor$f;
+
+var ArrayBuffer$3 = ArrayBufferModule$2.ArrayBuffer;
+var DataView$2 = ArrayBufferModule$2.DataView;
+var nativeArrayBufferSlice = ArrayBuffer$3.prototype.slice;
+var INCORRECT_SLICE = fails$R(function () {
+ return !new ArrayBuffer$3(2).slice(1, undefined).byteLength;
+}); // `ArrayBuffer.prototype.slice` method
+// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice
+
+$$3O({
+ target: 'ArrayBuffer',
+ proto: true,
+ unsafe: true,
+ forced: INCORRECT_SLICE
+}, {
+ slice: function slice(start, end) {
+ if (nativeArrayBufferSlice !== undefined && end === undefined) {
+ return nativeArrayBufferSlice.call(anObject$1q(this), start); // FF fix
+ }
+
+ var length = anObject$1q(this).byteLength;
+ var first = toAbsoluteIndex$2(start, length);
+ var fin = toAbsoluteIndex$2(end === undefined ? length : end, length);
+ var result = new (speciesConstructor$e(this, ArrayBuffer$3))(toLength$9(fin - first));
+ var viewSource = new DataView$2(this);
+ var viewTarget = new DataView$2(result);
+ var index = 0;
+
+ while (first < fin) {
+ viewTarget.setUint8(index++, viewSource.getUint8(first++));
+ }
+
+ return result;
+ }
+});
+
+var $$3N = _export;
+
+var ArrayBufferModule$1 = arrayBuffer;
+
+var NATIVE_ARRAY_BUFFER = arrayBufferNative; // `DataView` constructor
+// https://tc39.es/ecma262/#sec-dataview-constructor
+
+
+$$3N({
+ global: true,
+ forced: !NATIVE_ARRAY_BUFFER
+}, {
+ DataView: ArrayBufferModule$1.DataView
+});
+
+var $$3M = _export;
+
+var fails$Q = fails$15;
+
+var FORCED$r = fails$Q(function () {
+ return new Date(16e11).getYear() !== 120;
+});
+var getFullYear = Date.prototype.getFullYear; // `Date.prototype.getYear` method
+// https://tc39.es/ecma262/#sec-date.prototype.getyear
+
+$$3M({
+ target: 'Date',
+ proto: true,
+ forced: FORCED$r
+}, {
+ getYear: function getYear() {
+ return getFullYear.call(this) - 1900;
+ }
+});
+
+var $$3L = _export; // `Date.now` method
+// https://tc39.es/ecma262/#sec-date.now
+
+
+$$3L({
+ target: 'Date',
+ stat: true
+}, {
+ now: function now() {
+ return new Date().getTime();
+ }
+});
+
+var $$3K = _export;
+
+var toIntegerOrInfinity$9 = toIntegerOrInfinity$i;
+
+var getTime$2 = Date.prototype.getTime;
+var setFullYear = Date.prototype.setFullYear; // `Date.prototype.setYear` method
+// https://tc39.es/ecma262/#sec-date.prototype.setyear
+
+$$3K({
+ target: 'Date',
+ proto: true
+}, {
+ setYear: function setYear(year) {
+ // validate
+ getTime$2.call(this);
+ var yi = toIntegerOrInfinity$9(year);
+ var yyyy = 0 <= yi && yi <= 99 ? yi + 1900 : yi;
+ return setFullYear.call(this, yyyy);
+ }
+});
+
+var $$3J = _export; // `Date.prototype.toGMTString` method
+// https://tc39.es/ecma262/#sec-date.prototype.togmtstring
+
+
+$$3J({
+ target: 'Date',
+ proto: true
+}, {
+ toGMTString: Date.prototype.toUTCString
+});
+
+var toIntegerOrInfinity$8 = toIntegerOrInfinity$i;
+
+var toString$p = toString$t;
+
+var requireObjectCoercible$g = requireObjectCoercible$j; // `String.prototype.repeat` method implementation
+// https://tc39.es/ecma262/#sec-string.prototype.repeat
+
+
+var stringRepeat = function repeat(count) {
+ var str = toString$p(requireObjectCoercible$g(this));
+ var result = '';
+ var n = toIntegerOrInfinity$8(count);
+ if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
+
+ for (; n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
+
+ return result;
+};
+
+// https://github.com/tc39/proposal-string-pad-start-end
+var toLength$8 = toLength$d;
+
+var toString$o = toString$t;
+
+var repeat$2 = stringRepeat;
+
+var requireObjectCoercible$f = requireObjectCoercible$j;
+
+var ceil$1 = Math.ceil; // `String.prototype.{ padStart, padEnd }` methods implementation
+
+var createMethod$5 = function (IS_END) {
+ return function ($this, maxLength, fillString) {
+ var S = toString$o(requireObjectCoercible$f($this));
+ var intMaxLength = toLength$8(maxLength);
+ var stringLength = S.length;
+ var fillStr = fillString === undefined ? ' ' : toString$o(fillString);
+ var fillLen, stringFiller;
+ if (intMaxLength <= stringLength || fillStr == '') return S;
+ fillLen = intMaxLength - stringLength;
+ stringFiller = repeat$2.call(fillStr, ceil$1(fillLen / fillStr.length));
+ if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
+ return IS_END ? S + stringFiller : stringFiller + S;
+ };
+};
+
+var stringPad = {
+ // `String.prototype.padStart` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padstart
+ start: createMethod$5(false),
+ // `String.prototype.padEnd` method
+ // https://tc39.es/ecma262/#sec-string.prototype.padend
+ end: createMethod$5(true)
+};
+
+var fails$P = fails$15;
+
+var padStart = stringPad.start;
+
+var abs$6 = Math.abs;
+var DatePrototype$2 = Date.prototype;
+var getTime$1 = DatePrototype$2.getTime;
+var nativeDateToISOString = DatePrototype$2.toISOString; // `Date.prototype.toISOString` method implementation
+// https://tc39.es/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit fails here:
+
+var dateToIsoString = fails$P(function () {
+ return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
+}) || !fails$P(function () {
+ nativeDateToISOString.call(new Date(NaN));
+}) ? function toISOString() {
+ if (!isFinite(getTime$1.call(this))) throw RangeError('Invalid time value');
+ var date = this;
+ var year = date.getUTCFullYear();
+ var milliseconds = date.getUTCMilliseconds();
+ var sign = year < 0 ? '-' : year > 9999 ? '+' : '';
+ return sign + padStart(abs$6(year), sign ? 6 : 4, 0) + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + '-' + padStart(date.getUTCDate(), 2, 0) + 'T' + padStart(date.getUTCHours(), 2, 0) + ':' + padStart(date.getUTCMinutes(), 2, 0) + ':' + padStart(date.getUTCSeconds(), 2, 0) + '.' + padStart(milliseconds, 3, 0) + 'Z';
+} : nativeDateToISOString;
+
+var $$3I = _export;
+
+var toISOString = dateToIsoString; // `Date.prototype.toISOString` method
+// https://tc39.es/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit has a broken implementations
+
+
+$$3I({
+ target: 'Date',
+ proto: true,
+ forced: Date.prototype.toISOString !== toISOString
+}, {
+ toISOString: toISOString
+});
+
+var $$3H = _export;
+
+var fails$O = fails$15;
+
+var toObject$l = toObject$A;
+
+var toPrimitive$1 = toPrimitive$3;
+
+var FORCED$q = fails$O(function () {
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({
+ toISOString: function () {
+ return 1;
+ }
+ }) !== 1;
+}); // `Date.prototype.toJSON` method
+// https://tc39.es/ecma262/#sec-date.prototype.tojson
+
+$$3H({
+ target: 'Date',
+ proto: true,
+ forced: FORCED$q
+}, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ toJSON: function toJSON(key) {
+ var O = toObject$l(this);
+ var pv = toPrimitive$1(O, 'number');
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+});
+
+var anObject$1p = anObject$1C;
+
+var ordinaryToPrimitive = ordinaryToPrimitive$2; // `Date.prototype[@@toPrimitive](hint)` method implementation
+// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+
+
+var dateToPrimitive$1 = function (hint) {
+ anObject$1p(this);
+ if (hint === 'string' || hint === 'default') hint = 'string';else if (hint !== 'number') throw TypeError('Incorrect hint');
+ return ordinaryToPrimitive(this, hint);
+};
+
+var redefine$e = redefine$l.exports;
+
+var dateToPrimitive = dateToPrimitive$1;
+
+var wellKnownSymbol$m = wellKnownSymbol$G;
+
+var TO_PRIMITIVE = wellKnownSymbol$m('toPrimitive');
+var DatePrototype$1 = Date.prototype; // `Date.prototype[@@toPrimitive]` method
+// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+
+if (!(TO_PRIMITIVE in DatePrototype$1)) {
+ redefine$e(DatePrototype$1, TO_PRIMITIVE, dateToPrimitive);
+}
+
+var redefine$d = redefine$l.exports;
+
+var DatePrototype = Date.prototype;
+var INVALID_DATE = 'Invalid Date';
+var TO_STRING$1 = 'toString';
+var nativeDateToString = DatePrototype[TO_STRING$1];
+var getTime = DatePrototype.getTime; // `Date.prototype.toString` method
+// https://tc39.es/ecma262/#sec-date.prototype.tostring
+
+if (String(new Date(NaN)) != INVALID_DATE) {
+ redefine$d(DatePrototype, TO_STRING$1, function toString() {
+ var value = getTime.call(this); // eslint-disable-next-line no-self-compare -- NaN check
+
+ return value === value ? nativeDateToString.call(this) : INVALID_DATE;
+ });
+}
+
+var $$3G = _export;
+
+var toString$n = toString$t;
+
+var raw = /[\w*+\-./@]/;
+
+var hex$1 = function (code, length) {
+ var result = code.toString(16);
+
+ while (result.length < length) result = '0' + result;
+
+ return result;
+}; // `escape` method
+// https://tc39.es/ecma262/#sec-escape-string
+
+
+$$3G({
+ global: true
+}, {
+ escape: function escape(string) {
+ var str = toString$n(string);
+ var result = '';
+ var length = str.length;
+ var index = 0;
+ var chr, code;
+
+ while (index < length) {
+ chr = str.charAt(index++);
+
+ if (raw.test(chr)) {
+ result += chr;
+ } else {
+ code = chr.charCodeAt(0);
+
+ if (code < 256) {
+ result += '%' + hex$1(code, 2);
+ } else {
+ result += '%u' + hex$1(code, 4).toUpperCase();
+ }
+ }
+ }
+
+ return result;
+ }
+});
+
+var aCallable$J = aCallable$Q;
+
+var isObject$p = isObject$C;
+
+var slice$2 = [].slice;
+var factories = {};
+
+var construct = function (C, argsLength, args) {
+ if (!(argsLength in factories)) {
+ for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']'; // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only
+
+
+ factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');
+ }
+
+ return factories[argsLength](C, args);
+}; // `Function.prototype.bind` method implementation
+// https://tc39.es/ecma262/#sec-function.prototype.bind
+
+
+var functionBind = Function.bind || function bind(that
+/* , ...args */
+) {
+ var fn = aCallable$J(this);
+ var partArgs = slice$2.call(arguments, 1);
+
+ var boundFunction = function bound() {
+ var args = partArgs.concat(slice$2.call(arguments));
+ return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);
+ };
+
+ if (isObject$p(fn.prototype)) boundFunction.prototype = fn.prototype;
+ return boundFunction;
+};
+
+var $$3F = _export;
+
+var bind$m = functionBind; // `Function.prototype.bind` method
+// https://tc39.es/ecma262/#sec-function.prototype.bind
+
+
+$$3F({
+ target: 'Function',
+ proto: true
+}, {
+ bind: bind$m
+});
+
+var isCallable$g = isCallable$z;
+
+var isObject$o = isObject$C;
+
+var definePropertyModule$5 = objectDefineProperty;
+
+var getPrototypeOf$9 = objectGetPrototypeOf$1;
+
+var wellKnownSymbol$l = wellKnownSymbol$G;
+
+var HAS_INSTANCE = wellKnownSymbol$l('hasInstance');
+var FunctionPrototype$1 = Function.prototype; // `Function.prototype[@@hasInstance]` method
+// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance
+
+if (!(HAS_INSTANCE in FunctionPrototype$1)) {
+ definePropertyModule$5.f(FunctionPrototype$1, HAS_INSTANCE, {
+ value: function (O) {
+ if (!isCallable$g(this) || !isObject$o(O)) return false;
+ if (!isObject$o(this.prototype)) return O instanceof this; // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+
+ while (O = getPrototypeOf$9(O)) if (this.prototype === O) return true;
+
+ return false;
+ }
+ });
+}
+
+var DESCRIPTORS$p = descriptors;
+
+var FUNCTION_NAME_EXISTS = functionName.EXISTS;
+
+var defineProperty$b = objectDefineProperty.f;
+
+var FunctionPrototype = Function.prototype;
+var FunctionPrototypeToString = FunctionPrototype.toString;
+var nameRE = /^\s*function ([^ (]*)/;
+var NAME = 'name'; // Function instances `.name` property
+// https://tc39.es/ecma262/#sec-function-instances-name
+
+if (DESCRIPTORS$p && !FUNCTION_NAME_EXISTS) {
+ defineProperty$b(FunctionPrototype, NAME, {
+ configurable: true,
+ get: function () {
+ try {
+ return FunctionPrototypeToString.call(this).match(nameRE)[1];
+ } catch (error) {
+ return '';
+ }
+ }
+ });
+}
+
+var $$3E = _export;
+
+var global$z = global$R; // `globalThis` object
+// https://tc39.es/ecma262/#sec-globalthis
+
+
+$$3E({
+ global: true
+}, {
+ globalThis: global$z
+});
+
+var $$3D = _export;
+
+var getBuiltIn$q = getBuiltIn$y;
+
+var fails$N = fails$15;
+
+var $stringify = getBuiltIn$q('JSON', 'stringify');
+var re = /[\uD800-\uDFFF]/g;
+var low = /^[\uD800-\uDBFF]$/;
+var hi = /^[\uDC00-\uDFFF]$/;
+
+var fix = function (match, offset, string) {
+ var prev = string.charAt(offset - 1);
+ var next = string.charAt(offset + 1);
+
+ if (low.test(match) && !hi.test(next) || hi.test(match) && !low.test(prev)) {
+ return '\\u' + match.charCodeAt(0).toString(16);
+ }
+
+ return match;
+};
+
+var FORCED$p = fails$N(function () {
+ return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' || $stringify('\uDEAD') !== '"\\udead"';
+});
+
+if ($stringify) {
+ // `JSON.stringify` method
+ // https://tc39.es/ecma262/#sec-json.stringify
+ // https://github.com/tc39/proposal-well-formed-stringify
+ $$3D({
+ target: 'JSON',
+ stat: true,
+ forced: FORCED$p
+ }, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ stringify: function stringify(it, replacer, space) {
+ var result = $stringify.apply(null, arguments);
+ return typeof result == 'string' ? result.replace(re, fix) : result;
+ }
+ });
+}
+
+var global$y = global$R;
+
+var setToStringTag$6 = setToStringTag$b; // JSON[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-json-@@tostringtag
+
+
+setToStringTag$6(global$y.JSON, 'JSON', true);
+
+var internalMetadata = {exports: {}};
+
+var fails$M = fails$15;
+
+var freezing = !fails$M(function () {
+ // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing
+ return Object.isExtensible(Object.preventExtensions({}));
+});
+
+var $$3C = _export;
+
+var hiddenKeys = hiddenKeys$6;
+
+var isObject$n = isObject$C;
+
+var hasOwn$b = hasOwnProperty_1;
+
+var defineProperty$a = objectDefineProperty.f;
+
+var getOwnPropertyNamesModule = objectGetOwnPropertyNames;
+
+var getOwnPropertyNamesExternalModule = objectGetOwnPropertyNamesExternal;
+
+var uid = uid$5;
+
+var FREEZING$4 = freezing;
+
+var REQUIRED = false;
+var METADATA = uid('meta');
+var id$1 = 0; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+var isExtensible$1 = Object.isExtensible || function () {
+ return true;
+};
+
+var setMetadata = function (it) {
+ defineProperty$a(it, METADATA, {
+ value: {
+ objectID: 'O' + id$1++,
+ // object ID
+ weakData: {} // weak collections IDs
+
+ }
+ });
+};
+
+var fastKey$1 = function (it, create) {
+ // return a primitive with prefix
+ if (!isObject$n(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+
+ if (!hasOwn$b(it, METADATA)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible$1(it)) return 'F'; // not necessary to add metadata
+
+ if (!create) return 'E'; // add missing metadata
+
+ setMetadata(it); // return object ID
+ }
+
+ return it[METADATA].objectID;
+};
+
+var getWeakData$1 = function (it, create) {
+ if (!hasOwn$b(it, METADATA)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible$1(it)) return true; // not necessary to add metadata
+
+ if (!create) return false; // add missing metadata
+
+ setMetadata(it); // return the store of weak collections IDs
+ }
+
+ return it[METADATA].weakData;
+}; // add metadata on freeze-family methods calling
+
+
+var onFreeze$3 = function (it) {
+ if (FREEZING$4 && REQUIRED && isExtensible$1(it) && !hasOwn$b(it, METADATA)) setMetadata(it);
+ return it;
+};
+
+var enable = function () {
+ meta.enable = function () {
+ /* empty */
+ };
+
+ REQUIRED = true;
+ var getOwnPropertyNames = getOwnPropertyNamesModule.f;
+ var splice = [].splice;
+ var test = {};
+ test[METADATA] = 1; // prevent exposing of metadata key
+
+ if (getOwnPropertyNames(test).length) {
+ getOwnPropertyNamesModule.f = function (it) {
+ var result = getOwnPropertyNames(it);
+
+ for (var i = 0, length = result.length; i < length; i++) {
+ if (result[i] === METADATA) {
+ splice.call(result, i, 1);
+ break;
+ }
+ }
+
+ return result;
+ };
+
+ $$3C({
+ target: 'Object',
+ stat: true,
+ forced: true
+ }, {
+ getOwnPropertyNames: getOwnPropertyNamesExternalModule.f
+ });
+ }
+};
+
+var meta = internalMetadata.exports = {
+ enable: enable,
+ fastKey: fastKey$1,
+ getWeakData: getWeakData$1,
+ onFreeze: onFreeze$3
+};
+hiddenKeys[METADATA] = true;
+
+var isCallable$f = isCallable$z;
+
+var isObject$m = isObject$C;
+
+var setPrototypeOf$3 = objectSetPrototypeOf$1; // makes subclassing work correct for wrapped built-ins
+
+
+var inheritIfRequired$4 = function ($this, dummy, Wrapper) {
+ var NewTarget, NewTargetPrototype;
+ if ( // it can work only with native `setPrototypeOf`
+ setPrototypeOf$3 && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
+ isCallable$f(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject$m(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf$3($this, NewTargetPrototype);
+ return $this;
+};
+
+var $$3B = _export;
+
+var global$x = global$R;
+
+var isForced$3 = isForced_1;
+
+var redefine$c = redefine$l.exports;
+
+var InternalMetadataModule$1 = internalMetadata.exports;
+
+var iterate$G = iterate$I;
+
+var anInstance$9 = anInstance$b;
+
+var isCallable$e = isCallable$z;
+
+var isObject$l = isObject$C;
+
+var fails$L = fails$15;
+
+var checkCorrectnessOfIteration$2 = checkCorrectnessOfIteration$4;
+
+var setToStringTag$5 = setToStringTag$b;
+
+var inheritIfRequired$3 = inheritIfRequired$4;
+
+var collection$4 = function (CONSTRUCTOR_NAME, wrapper, common) {
+ var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
+ var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
+ var ADDER = IS_MAP ? 'set' : 'add';
+ var NativeConstructor = global$x[CONSTRUCTOR_NAME];
+ var NativePrototype = NativeConstructor && NativeConstructor.prototype;
+ var Constructor = NativeConstructor;
+ var exported = {};
+
+ var fixMethod = function (KEY) {
+ var nativeMethod = NativePrototype[KEY];
+ redefine$c(NativePrototype, KEY, KEY == 'add' ? function add(value) {
+ nativeMethod.call(this, value === 0 ? 0 : value);
+ return this;
+ } : KEY == 'delete' ? function (key) {
+ return IS_WEAK && !isObject$l(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : KEY == 'get' ? function get(key) {
+ return IS_WEAK && !isObject$l(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : KEY == 'has' ? function has(key) {
+ return IS_WEAK && !isObject$l(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
+ } : function set(key, value) {
+ nativeMethod.call(this, key === 0 ? 0 : key, value);
+ return this;
+ });
+ };
+
+ var REPLACE = isForced$3(CONSTRUCTOR_NAME, !isCallable$e(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails$L(function () {
+ new NativeConstructor().entries().next();
+ })));
+
+ if (REPLACE) {
+ // create collection constructor
+ Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
+ InternalMetadataModule$1.enable();
+ } else if (isForced$3(CONSTRUCTOR_NAME, true)) {
+ var instance = new Constructor(); // early implementations not supports chaining
+
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+
+ var THROWS_ON_PRIMITIVES = fails$L(function () {
+ instance.has(1);
+ }); // most early implementations doesn't supports iterables, most modern - not close it correctly
+ // eslint-disable-next-line no-new -- required for testing
+
+ var ACCEPT_ITERABLES = checkCorrectnessOfIteration$2(function (iterable) {
+ new NativeConstructor(iterable);
+ }); // for early implementations -0 and +0 not the same
+
+ var BUGGY_ZERO = !IS_WEAK && fails$L(function () {
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new NativeConstructor();
+ var index = 5;
+
+ while (index--) $instance[ADDER](index, index);
+
+ return !$instance.has(-0);
+ });
+
+ if (!ACCEPT_ITERABLES) {
+ Constructor = wrapper(function (dummy, iterable) {
+ anInstance$9(dummy, Constructor, CONSTRUCTOR_NAME);
+ var that = inheritIfRequired$3(new NativeConstructor(), dummy, Constructor);
+ if (iterable != undefined) iterate$G(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ return that;
+ });
+ Constructor.prototype = NativePrototype;
+ NativePrototype.constructor = Constructor;
+ }
+
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method
+
+ if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;
+ }
+
+ exported[CONSTRUCTOR_NAME] = Constructor;
+ $$3B({
+ global: true,
+ forced: Constructor != NativeConstructor
+ }, exported);
+ setToStringTag$5(Constructor, CONSTRUCTOR_NAME);
+ if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
+ return Constructor;
+};
+
+var defineProperty$9 = objectDefineProperty.f;
+
+var create$a = objectCreate$1;
+
+var redefineAll$8 = redefineAll$a;
+
+var bind$l = functionBindContext;
+
+var anInstance$8 = anInstance$b;
+
+var iterate$F = iterate$I;
+
+var defineIterator$1 = defineIterator$3;
+
+var setSpecies$4 = setSpecies$7;
+
+var DESCRIPTORS$o = descriptors;
+
+var fastKey = internalMetadata.exports.fastKey;
+
+var InternalStateModule$f = internalState;
+
+var setInternalState$f = InternalStateModule$f.set;
+var internalStateGetterFor$1 = InternalStateModule$f.getterFor;
+var collectionStrong$2 = {
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance$8(that, C, CONSTRUCTOR_NAME);
+ setInternalState$f(that, {
+ type: CONSTRUCTOR_NAME,
+ index: create$a(null),
+ first: undefined,
+ last: undefined,
+ size: 0
+ });
+ if (!DESCRIPTORS$o) that.size = 0;
+ if (iterable != undefined) iterate$F(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ });
+ var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME);
+
+ var define = function (that, key, value) {
+ var state = getInternalState(that);
+ var entry = getEntry(that, key);
+ var previous, index; // change existing entry
+
+ if (entry) {
+ entry.value = value; // create new entry
+ } else {
+ state.last = entry = {
+ index: index = fastKey(key, true),
+ key: key,
+ value: value,
+ previous: previous = state.last,
+ next: undefined,
+ removed: false
+ };
+ if (!state.first) state.first = entry;
+ if (previous) previous.next = entry;
+ if (DESCRIPTORS$o) state.size++;else that.size++; // add to index
+
+ if (index !== 'F') state.index[index] = entry;
+ }
+
+ return that;
+ };
+
+ var getEntry = function (that, key) {
+ var state = getInternalState(that); // fast case
+
+ var index = fastKey(key);
+ var entry;
+ if (index !== 'F') return state.index[index]; // frozen object case
+
+ for (entry = state.first; entry; entry = entry.next) {
+ if (entry.key == key) return entry;
+ }
+ };
+
+ redefineAll$8(C.prototype, {
+ // `{ Map, Set }.prototype.clear()` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.clear
+ // https://tc39.es/ecma262/#sec-set.prototype.clear
+ clear: function clear() {
+ var that = this;
+ var state = getInternalState(that);
+ var data = state.index;
+ var entry = state.first;
+
+ while (entry) {
+ entry.removed = true;
+ if (entry.previous) entry.previous = entry.previous.next = undefined;
+ delete data[entry.index];
+ entry = entry.next;
+ }
+
+ state.first = state.last = undefined;
+ if (DESCRIPTORS$o) state.size = 0;else that.size = 0;
+ },
+ // `{ Map, Set }.prototype.delete(key)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.delete
+ // https://tc39.es/ecma262/#sec-set.prototype.delete
+ 'delete': function (key) {
+ var that = this;
+ var state = getInternalState(that);
+ var entry = getEntry(that, key);
+
+ if (entry) {
+ var next = entry.next;
+ var prev = entry.previous;
+ delete state.index[entry.index];
+ entry.removed = true;
+ if (prev) prev.next = next;
+ if (next) next.previous = prev;
+ if (state.first == entry) state.first = next;
+ if (state.last == entry) state.last = prev;
+ if (DESCRIPTORS$o) state.size--;else that.size--;
+ }
+
+ return !!entry;
+ },
+ // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.foreach
+ // https://tc39.es/ecma262/#sec-set.prototype.foreach
+ forEach: function forEach(callbackfn
+ /* , that = undefined */
+ ) {
+ var state = getInternalState(this);
+ var boundFunction = bind$l(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var entry;
+
+ while (entry = entry ? entry.next : state.first) {
+ boundFunction(entry.value, entry.key, this); // revert to the last existing entry
+
+ while (entry && entry.removed) entry = entry.previous;
+ }
+ },
+ // `{ Map, Set}.prototype.has(key)` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.has
+ // https://tc39.es/ecma262/#sec-set.prototype.has
+ has: function has(key) {
+ return !!getEntry(this, key);
+ }
+ });
+ redefineAll$8(C.prototype, IS_MAP ? {
+ // `Map.prototype.get(key)` method
+ // https://tc39.es/ecma262/#sec-map.prototype.get
+ get: function get(key) {
+ var entry = getEntry(this, key);
+ return entry && entry.value;
+ },
+ // `Map.prototype.set(key, value)` method
+ // https://tc39.es/ecma262/#sec-map.prototype.set
+ set: function set(key, value) {
+ return define(this, key === 0 ? 0 : key, value);
+ }
+ } : {
+ // `Set.prototype.add(value)` method
+ // https://tc39.es/ecma262/#sec-set.prototype.add
+ add: function add(value) {
+ return define(this, value = value === 0 ? 0 : value, value);
+ }
+ });
+ if (DESCRIPTORS$o) defineProperty$9(C.prototype, 'size', {
+ get: function () {
+ return getInternalState(this).size;
+ }
+ });
+ return C;
+ },
+ setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {
+ var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
+ var getInternalCollectionState = internalStateGetterFor$1(CONSTRUCTOR_NAME);
+ var getInternalIteratorState = internalStateGetterFor$1(ITERATOR_NAME); // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods
+ // https://tc39.es/ecma262/#sec-map.prototype.entries
+ // https://tc39.es/ecma262/#sec-map.prototype.keys
+ // https://tc39.es/ecma262/#sec-map.prototype.values
+ // https://tc39.es/ecma262/#sec-map.prototype-@@iterator
+ // https://tc39.es/ecma262/#sec-set.prototype.entries
+ // https://tc39.es/ecma262/#sec-set.prototype.keys
+ // https://tc39.es/ecma262/#sec-set.prototype.values
+ // https://tc39.es/ecma262/#sec-set.prototype-@@iterator
+
+ defineIterator$1(C, CONSTRUCTOR_NAME, function (iterated, kind) {
+ setInternalState$f(this, {
+ type: ITERATOR_NAME,
+ target: iterated,
+ state: getInternalCollectionState(iterated),
+ kind: kind,
+ last: undefined
+ });
+ }, function () {
+ var state = getInternalIteratorState(this);
+ var kind = state.kind;
+ var entry = state.last; // revert to the last existing entry
+
+ while (entry && entry.removed) entry = entry.previous; // get next entry
+
+
+ if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
+ // or finish the iteration
+ state.target = undefined;
+ return {
+ value: undefined,
+ done: true
+ };
+ } // return step by kind
+
+
+ if (kind == 'keys') return {
+ value: entry.key,
+ done: false
+ };
+ if (kind == 'values') return {
+ value: entry.value,
+ done: false
+ };
+ return {
+ value: [entry.key, entry.value],
+ done: false
+ };
+ }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // `{ Map, Set }.prototype[@@species]` accessors
+ // https://tc39.es/ecma262/#sec-get-map-@@species
+ // https://tc39.es/ecma262/#sec-get-set-@@species
+
+ setSpecies$4(CONSTRUCTOR_NAME);
+ }
+};
+
+var collection$3 = collection$4;
+
+var collectionStrong$1 = collectionStrong$2; // `Map` constructor
+// https://tc39.es/ecma262/#sec-map-objects
+
+
+var es_map = collection$3('Map', function (init) {
+ return function Map() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+}, collectionStrong$1);
+
+var log$7 = Math.log; // `Math.log1p` method implementation
+// https://tc39.es/ecma262/#sec-math.log1p
+// eslint-disable-next-line es/no-math-log1p -- safe
+
+var mathLog1p = Math.log1p || function log1p(x) {
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log$7(1 + x);
+};
+
+var $$3A = _export;
+
+var log1p$1 = mathLog1p; // eslint-disable-next-line es/no-math-acosh -- required for testing
+
+
+var $acosh = Math.acosh;
+var log$6 = Math.log;
+var sqrt$2 = Math.sqrt;
+var LN2$1 = Math.LN2;
+var FORCED$o = !$acosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
+|| Math.floor($acosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN
+|| $acosh(Infinity) != Infinity; // `Math.acosh` method
+// https://tc39.es/ecma262/#sec-math.acosh
+
+$$3A({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$o
+}, {
+ acosh: function acosh(x) {
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? log$6(x) + LN2$1 : log1p$1(x - 1 + sqrt$2(x - 1) * sqrt$2(x + 1));
+ }
+});
+
+var $$3z = _export; // eslint-disable-next-line es/no-math-asinh -- required for testing
+
+
+var $asinh = Math.asinh;
+var log$5 = Math.log;
+var sqrt$1 = Math.sqrt;
+
+function asinh(x) {
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log$5(x + sqrt$1(x * x + 1));
+} // `Math.asinh` method
+// https://tc39.es/ecma262/#sec-math.asinh
+// Tor Browser bug: Math.asinh(0) -> -0
+
+
+$$3z({
+ target: 'Math',
+ stat: true,
+ forced: !($asinh && 1 / $asinh(0) > 0)
+}, {
+ asinh: asinh
+});
+
+var $$3y = _export; // eslint-disable-next-line es/no-math-atanh -- required for testing
+
+
+var $atanh = Math.atanh;
+var log$4 = Math.log; // `Math.atanh` method
+// https://tc39.es/ecma262/#sec-math.atanh
+// Tor Browser bug: Math.atanh(-0) -> 0
+
+$$3y({
+ target: 'Math',
+ stat: true,
+ forced: !($atanh && 1 / $atanh(-0) < 0)
+}, {
+ atanh: function atanh(x) {
+ return (x = +x) == 0 ? x : log$4((1 + x) / (1 - x)) / 2;
+ }
+});
+
+// `Math.sign` method implementation
+// https://tc39.es/ecma262/#sec-math.sign
+// eslint-disable-next-line es/no-math-sign -- safe
+var mathSign = Math.sign || function sign(x) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+};
+
+var $$3x = _export;
+
+var sign$2 = mathSign;
+
+var abs$5 = Math.abs;
+var pow$3 = Math.pow; // `Math.cbrt` method
+// https://tc39.es/ecma262/#sec-math.cbrt
+
+$$3x({
+ target: 'Math',
+ stat: true
+}, {
+ cbrt: function cbrt(x) {
+ return sign$2(x = +x) * pow$3(abs$5(x), 1 / 3);
+ }
+});
+
+var $$3w = _export;
+
+var floor$7 = Math.floor;
+var log$3 = Math.log;
+var LOG2E = Math.LOG2E; // `Math.clz32` method
+// https://tc39.es/ecma262/#sec-math.clz32
+
+$$3w({
+ target: 'Math',
+ stat: true
+}, {
+ clz32: function clz32(x) {
+ return (x >>>= 0) ? 31 - floor$7(log$3(x + 0.5) * LOG2E) : 32;
+ }
+});
+
+// eslint-disable-next-line es/no-math-expm1 -- safe
+var $expm1 = Math.expm1;
+var exp$2 = Math.exp; // `Math.expm1` method implementation
+// https://tc39.es/ecma262/#sec-math.expm1
+
+var mathExpm1 = !$expm1 // Old FF bug
+|| $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 // Tor Browser bug
+|| $expm1(-2e-17) != -2e-17 ? function expm1(x) {
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp$2(x) - 1;
+} : $expm1;
+
+var $$3v = _export;
+
+var expm1$3 = mathExpm1; // eslint-disable-next-line es/no-math-cosh -- required for testing
+
+
+var $cosh = Math.cosh;
+var abs$4 = Math.abs;
+var E$1 = Math.E; // `Math.cosh` method
+// https://tc39.es/ecma262/#sec-math.cosh
+
+$$3v({
+ target: 'Math',
+ stat: true,
+ forced: !$cosh || $cosh(710) === Infinity
+}, {
+ cosh: function cosh(x) {
+ var t = expm1$3(abs$4(x) - 1) + 1;
+ return (t + 1 / (t * E$1 * E$1)) * (E$1 / 2);
+ }
+});
+
+var $$3u = _export;
+
+var expm1$2 = mathExpm1; // `Math.expm1` method
+// https://tc39.es/ecma262/#sec-math.expm1
+// eslint-disable-next-line es/no-math-expm1 -- required for testing
+
+
+$$3u({
+ target: 'Math',
+ stat: true,
+ forced: expm1$2 != Math.expm1
+}, {
+ expm1: expm1$2
+});
+
+var sign$1 = mathSign;
+
+var abs$3 = Math.abs;
+var pow$2 = Math.pow;
+var EPSILON = pow$2(2, -52);
+var EPSILON32 = pow$2(2, -23);
+var MAX32 = pow$2(2, 127) * (2 - EPSILON32);
+var MIN32 = pow$2(2, -126);
+
+var roundTiesToEven = function (n) {
+ return n + 1 / EPSILON - 1 / EPSILON;
+}; // `Math.fround` method implementation
+// https://tc39.es/ecma262/#sec-math.fround
+// eslint-disable-next-line es/no-math-fround -- safe
+
+
+var mathFround = Math.fround || function fround(x) {
+ var $abs = abs$3(x);
+ var $sign = sign$1(x);
+ var a, result;
+ if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (result > MAX32 || result != result) return $sign * Infinity;
+ return $sign * result;
+};
+
+var $$3t = _export;
+
+var fround$1 = mathFround; // `Math.fround` method
+// https://tc39.es/ecma262/#sec-math.fround
+
+
+$$3t({
+ target: 'Math',
+ stat: true
+}, {
+ fround: fround$1
+});
+
+var $$3s = _export; // eslint-disable-next-line es/no-math-hypot -- required for testing
+
+
+var $hypot = Math.hypot;
+var abs$2 = Math.abs;
+var sqrt = Math.sqrt; // Chrome 77 bug
+// https://bugs.chromium.org/p/v8/issues/detail?id=9546
+
+var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; // `Math.hypot` method
+// https://tc39.es/ecma262/#sec-math.hypot
+
+$$3s({
+ target: 'Math',
+ stat: true,
+ forced: BUGGY
+}, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ hypot: function hypot(value1, value2) {
+ var sum = 0;
+ var i = 0;
+ var aLen = arguments.length;
+ var larg = 0;
+ var arg, div;
+
+ while (i < aLen) {
+ arg = abs$2(arguments[i++]);
+
+ if (larg < arg) {
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if (arg > 0) {
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+
+ return larg === Infinity ? Infinity : larg * sqrt(sum);
+ }
+});
+
+var $$3r = _export;
+
+var fails$K = fails$15; // eslint-disable-next-line es/no-math-imul -- required for testing
+
+
+var $imul = Math.imul;
+var FORCED$n = fails$K(function () {
+ return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2;
+}); // `Math.imul` method
+// https://tc39.es/ecma262/#sec-math.imul
+// some WebKit versions fails with big numbers, some has wrong arity
+
+$$3r({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$n
+}, {
+ imul: function imul(x, y) {
+ var UINT16 = 0xFFFF;
+ var xn = +x;
+ var yn = +y;
+ var xl = UINT16 & xn;
+ var yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+});
+
+var $$3q = _export;
+
+var log$2 = Math.log;
+var LOG10E = Math.LOG10E; // `Math.log10` method
+// https://tc39.es/ecma262/#sec-math.log10
+
+$$3q({
+ target: 'Math',
+ stat: true
+}, {
+ log10: function log10(x) {
+ return log$2(x) * LOG10E;
+ }
+});
+
+var $$3p = _export;
+
+var log1p = mathLog1p; // `Math.log1p` method
+// https://tc39.es/ecma262/#sec-math.log1p
+
+
+$$3p({
+ target: 'Math',
+ stat: true
+}, {
+ log1p: log1p
+});
+
+var $$3o = _export;
+
+var log$1 = Math.log;
+var LN2 = Math.LN2; // `Math.log2` method
+// https://tc39.es/ecma262/#sec-math.log2
+
+$$3o({
+ target: 'Math',
+ stat: true
+}, {
+ log2: function log2(x) {
+ return log$1(x) / LN2;
+ }
+});
+
+var $$3n = _export;
+
+var sign = mathSign; // `Math.sign` method
+// https://tc39.es/ecma262/#sec-math.sign
+
+
+$$3n({
+ target: 'Math',
+ stat: true
+}, {
+ sign: sign
+});
+
+var $$3m = _export;
+
+var fails$J = fails$15;
+
+var expm1$1 = mathExpm1;
+
+var abs$1 = Math.abs;
+var exp$1 = Math.exp;
+var E = Math.E;
+var FORCED$m = fails$J(function () {
+ // eslint-disable-next-line es/no-math-sinh -- required for testing
+ return Math.sinh(-2e-17) != -2e-17;
+}); // `Math.sinh` method
+// https://tc39.es/ecma262/#sec-math.sinh
+// V8 near Chromium 38 has a problem with very small numbers
+
+$$3m({
+ target: 'Math',
+ stat: true,
+ forced: FORCED$m
+}, {
+ sinh: function sinh(x) {
+ return abs$1(x = +x) < 1 ? (expm1$1(x) - expm1$1(-x)) / 2 : (exp$1(x - 1) - exp$1(-x - 1)) * (E / 2);
+ }
+});
+
+var $$3l = _export;
+
+var expm1 = mathExpm1;
+
+var exp = Math.exp; // `Math.tanh` method
+// https://tc39.es/ecma262/#sec-math.tanh
+
+$$3l({
+ target: 'Math',
+ stat: true
+}, {
+ tanh: function tanh(x) {
+ var a = expm1(x = +x);
+ var b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+});
+
+var setToStringTag$4 = setToStringTag$b; // Math[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-math-@@tostringtag
+
+
+setToStringTag$4(Math, 'Math', true);
+
+var $$3k = _export;
+
+var ceil = Math.ceil;
+var floor$6 = Math.floor; // `Math.trunc` method
+// https://tc39.es/ecma262/#sec-math.trunc
+
+$$3k({
+ target: 'Math',
+ stat: true
+}, {
+ trunc: function trunc(it) {
+ return (it > 0 ? floor$6 : ceil)(it);
+ }
+});
+
+var valueOf = 1.0.valueOf; // `thisNumberValue` abstract operation
+// https://tc39.es/ecma262/#sec-thisnumbervalue
+
+var thisNumberValue$3 = function (value) {
+ return valueOf.call(value);
+};
+
+// a string of all valid unicode whitespaces
+var whitespaces$4 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
+
+var requireObjectCoercible$e = requireObjectCoercible$j;
+
+var toString$m = toString$t;
+
+var whitespaces$3 = whitespaces$4;
+
+var whitespace = '[' + whitespaces$3 + ']';
+var ltrim = RegExp('^' + whitespace + whitespace + '*');
+var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
+
+var createMethod$4 = function (TYPE) {
+ return function ($this) {
+ var string = toString$m(requireObjectCoercible$e($this));
+ if (TYPE & 1) string = string.replace(ltrim, '');
+ if (TYPE & 2) string = string.replace(rtrim, '');
+ return string;
+ };
+};
+
+var stringTrim = {
+ // `String.prototype.{ trimLeft, trimStart }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimstart
+ start: createMethod$4(1),
+ // `String.prototype.{ trimRight, trimEnd }` methods
+ // https://tc39.es/ecma262/#sec-string.prototype.trimend
+ end: createMethod$4(2),
+ // `String.prototype.trim` method
+ // https://tc39.es/ecma262/#sec-string.prototype.trim
+ trim: createMethod$4(3)
+};
+
+var DESCRIPTORS$n = descriptors;
+
+var global$w = global$R;
+
+var isForced$2 = isForced_1;
+
+var redefine$b = redefine$l.exports;
+
+var hasOwn$a = hasOwnProperty_1;
+
+var inheritIfRequired$2 = inheritIfRequired$4;
+
+var isSymbol$1 = isSymbol$5;
+
+var toPrimitive = toPrimitive$3;
+
+var fails$I = fails$15;
+
+var getOwnPropertyNames$4 = objectGetOwnPropertyNames.f;
+
+var getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor.f;
+
+var defineProperty$8 = objectDefineProperty.f;
+
+var thisNumberValue$2 = thisNumberValue$3;
+
+var trim$3 = stringTrim.trim;
+
+var NUMBER = 'Number';
+var NativeNumber = global$w[NUMBER];
+var NumberPrototype = NativeNumber.prototype; // `ToNumeric` abstract operation
+// https://tc39.es/ecma262/#sec-tonumeric
+
+var toNumeric = function (value) {
+ var primValue = toPrimitive(value, 'number');
+ return typeof primValue === 'bigint' ? primValue : toNumber(primValue);
+}; // `ToNumber` abstract operation
+// https://tc39.es/ecma262/#sec-tonumber
+
+
+var toNumber = function (argument) {
+ var it = toPrimitive(argument, 'number');
+ var first, third, radix, maxCode, digits, length, index, code;
+ if (isSymbol$1(it)) throw TypeError('Cannot convert a Symbol value to a number');
+
+ if (typeof it == 'string' && it.length > 2) {
+ it = trim$3(it);
+ first = it.charCodeAt(0);
+
+ if (first === 43 || first === 45) {
+ third = it.charCodeAt(2);
+ if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if (first === 48) {
+ switch (it.charCodeAt(1)) {
+ case 66:
+ case 98:
+ radix = 2;
+ maxCode = 49;
+ break;
+ // fast equal of /^0b[01]+$/i
+
+ case 79:
+ case 111:
+ radix = 8;
+ maxCode = 55;
+ break;
+ // fast equal of /^0o[0-7]+$/i
+
+ default:
+ return +it;
+ }
+
+ digits = it.slice(2);
+ length = digits.length;
+
+ for (index = 0; index < length; index++) {
+ code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+
+ if (code < 48 || code > maxCode) return NaN;
+ }
+
+ return parseInt(digits, radix);
+ }
+ }
+
+ return +it;
+}; // `Number` constructor
+// https://tc39.es/ecma262/#sec-number-constructor
+
+
+if (isForced$2(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
+ var NumberWrapper = function Number(value) {
+ var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
+ var dummy = this; // check on 1..constructor(foo) case
+
+ return dummy instanceof NumberWrapper && fails$I(function () {
+ thisNumberValue$2(dummy);
+ }) ? inheritIfRequired$2(Object(n), dummy, NumberWrapper) : n;
+ };
+
+ for (var keys$1 = DESCRIPTORS$n ? getOwnPropertyNames$4(NativeNumber) : ( // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before):
+ 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + // ESNext
+ 'fromString,range').split(','), j = 0, key; keys$1.length > j; j++) {
+ if (hasOwn$a(NativeNumber, key = keys$1[j]) && !hasOwn$a(NumberWrapper, key)) {
+ defineProperty$8(NumberWrapper, key, getOwnPropertyDescriptor$7(NativeNumber, key));
+ }
+ }
+
+ NumberWrapper.prototype = NumberPrototype;
+ NumberPrototype.constructor = NumberWrapper;
+ redefine$b(global$w, NUMBER, NumberWrapper);
+}
+
+var $$3j = _export; // `Number.EPSILON` constant
+// https://tc39.es/ecma262/#sec-number.epsilon
+
+
+$$3j({
+ target: 'Number',
+ stat: true
+}, {
+ EPSILON: Math.pow(2, -52)
+});
+
+var global$v = global$R;
+
+var globalIsFinite = global$v.isFinite; // `Number.isFinite` method
+// https://tc39.es/ecma262/#sec-number.isfinite
+// eslint-disable-next-line es/no-number-isfinite -- safe
+
+var numberIsFinite$2 = Number.isFinite || function isFinite(it) {
+ return typeof it == 'number' && globalIsFinite(it);
+};
+
+var $$3i = _export;
+
+var numberIsFinite$1 = numberIsFinite$2; // `Number.isFinite` method
+// https://tc39.es/ecma262/#sec-number.isfinite
+
+
+$$3i({
+ target: 'Number',
+ stat: true
+}, {
+ isFinite: numberIsFinite$1
+});
+
+var isObject$k = isObject$C;
+
+var floor$5 = Math.floor; // `IsIntegralNumber` abstract operation
+// https://tc39.es/ecma262/#sec-isintegralnumber
+// eslint-disable-next-line es/no-number-isinteger -- safe
+
+var isIntegralNumber$3 = Number.isInteger || function isInteger(it) {
+ return !isObject$k(it) && isFinite(it) && floor$5(it) === it;
+};
+
+var $$3h = _export;
+
+var isIntegralNumber$2 = isIntegralNumber$3; // `Number.isInteger` method
+// https://tc39.es/ecma262/#sec-number.isinteger
+
+
+$$3h({
+ target: 'Number',
+ stat: true
+}, {
+ isInteger: isIntegralNumber$2
+});
+
+var $$3g = _export; // `Number.isNaN` method
+// https://tc39.es/ecma262/#sec-number.isnan
+
+
+$$3g({
+ target: 'Number',
+ stat: true
+}, {
+ isNaN: function isNaN(number) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return number != number;
+ }
+});
+
+var $$3f = _export;
+
+var isIntegralNumber$1 = isIntegralNumber$3;
+
+var abs = Math.abs; // `Number.isSafeInteger` method
+// https://tc39.es/ecma262/#sec-number.issafeinteger
+
+$$3f({
+ target: 'Number',
+ stat: true
+}, {
+ isSafeInteger: function isSafeInteger(number) {
+ return isIntegralNumber$1(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
+ }
+});
+
+var $$3e = _export; // `Number.MAX_SAFE_INTEGER` constant
+// https://tc39.es/ecma262/#sec-number.max_safe_integer
+
+
+$$3e({
+ target: 'Number',
+ stat: true
+}, {
+ MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF
+});
+
+var $$3d = _export; // `Number.MIN_SAFE_INTEGER` constant
+// https://tc39.es/ecma262/#sec-number.min_safe_integer
+
+
+$$3d({
+ target: 'Number',
+ stat: true
+}, {
+ MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF
+});
+
+var global$u = global$R;
+
+var fails$H = fails$15;
+
+var toString$l = toString$t;
+
+var trim$2 = stringTrim.trim;
+
+var whitespaces$2 = whitespaces$4;
+
+var $parseFloat$1 = global$u.parseFloat;
+var Symbol$2 = global$u.Symbol;
+var ITERATOR$5 = Symbol$2 && Symbol$2.iterator;
+var FORCED$l = 1 / $parseFloat$1(whitespaces$2 + '-0') !== -Infinity // MS Edge 18- broken with boxed symbols
+|| ITERATOR$5 && !fails$H(function () {
+ $parseFloat$1(Object(ITERATOR$5));
+}); // `parseFloat` method
+// https://tc39.es/ecma262/#sec-parsefloat-string
+
+var numberParseFloat = FORCED$l ? function parseFloat(string) {
+ var trimmedString = trim$2(toString$l(string));
+ var result = $parseFloat$1(trimmedString);
+ return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
+} : $parseFloat$1;
+
+var $$3c = _export;
+
+var parseFloat$1 = numberParseFloat; // `Number.parseFloat` method
+// https://tc39.es/ecma262/#sec-number.parseFloat
+// eslint-disable-next-line es/no-number-parsefloat -- required for testing
+
+
+$$3c({
+ target: 'Number',
+ stat: true,
+ forced: Number.parseFloat != parseFloat$1
+}, {
+ parseFloat: parseFloat$1
+});
+
+var global$t = global$R;
+
+var fails$G = fails$15;
+
+var toString$k = toString$t;
+
+var trim$1 = stringTrim.trim;
+
+var whitespaces$1 = whitespaces$4;
+
+var $parseInt$1 = global$t.parseInt;
+var Symbol$1 = global$t.Symbol;
+var ITERATOR$4 = Symbol$1 && Symbol$1.iterator;
+var hex = /^[+-]?0x/i;
+var FORCED$k = $parseInt$1(whitespaces$1 + '08') !== 8 || $parseInt$1(whitespaces$1 + '0x16') !== 22 // MS Edge 18- broken with boxed symbols
+|| ITERATOR$4 && !fails$G(function () {
+ $parseInt$1(Object(ITERATOR$4));
+}); // `parseInt` method
+// https://tc39.es/ecma262/#sec-parseint-string-radix
+
+var numberParseInt = FORCED$k ? function parseInt(string, radix) {
+ var S = trim$1(toString$k(string));
+ return $parseInt$1(S, radix >>> 0 || (hex.test(S) ? 16 : 10));
+} : $parseInt$1;
+
+var $$3b = _export;
+
+var parseInt$2 = numberParseInt; // `Number.parseInt` method
+// https://tc39.es/ecma262/#sec-number.parseint
+// eslint-disable-next-line es/no-number-parseint -- required for testing
+
+
+$$3b({
+ target: 'Number',
+ stat: true,
+ forced: Number.parseInt != parseInt$2
+}, {
+ parseInt: parseInt$2
+});
+
+var $$3a = _export;
+
+var toIntegerOrInfinity$7 = toIntegerOrInfinity$i;
+
+var thisNumberValue$1 = thisNumberValue$3;
+
+var repeat$1 = stringRepeat;
+
+var fails$F = fails$15;
+
+var nativeToFixed = 1.0.toFixed;
+var floor$4 = Math.floor;
+
+var pow$1 = function (x, n, acc) {
+ return n === 0 ? acc : n % 2 === 1 ? pow$1(x, n - 1, acc * x) : pow$1(x * x, n / 2, acc);
+};
+
+var log = function (x) {
+ var n = 0;
+ var x2 = x;
+
+ while (x2 >= 4096) {
+ n += 12;
+ x2 /= 4096;
+ }
+
+ while (x2 >= 2) {
+ n += 1;
+ x2 /= 2;
+ }
+
+ return n;
+};
+
+var multiply = function (data, n, c) {
+ var index = -1;
+ var c2 = c;
+
+ while (++index < 6) {
+ c2 += n * data[index];
+ data[index] = c2 % 1e7;
+ c2 = floor$4(c2 / 1e7);
+ }
+};
+
+var divide = function (data, n) {
+ var index = 6;
+ var c = 0;
+
+ while (--index >= 0) {
+ c += data[index];
+ data[index] = floor$4(c / n);
+ c = c % n * 1e7;
+ }
+};
+
+var dataToString = function (data) {
+ var index = 6;
+ var s = '';
+
+ while (--index >= 0) {
+ if (s !== '' || index === 0 || data[index] !== 0) {
+ var t = String(data[index]);
+ s = s === '' ? t : s + repeat$1.call('0', 7 - t.length) + t;
+ }
+ }
+
+ return s;
+};
+
+var FORCED$j = nativeToFixed && (0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || 1000000000000000128.0.toFixed(0) !== '1000000000000000128') || !fails$F(function () {
+ // V8 ~ Android 4.3-
+ nativeToFixed.call({});
+}); // `Number.prototype.toFixed` method
+// https://tc39.es/ecma262/#sec-number.prototype.tofixed
+
+$$3a({
+ target: 'Number',
+ proto: true,
+ forced: FORCED$j
+}, {
+ toFixed: function toFixed(fractionDigits) {
+ var number = thisNumberValue$1(this);
+ var fractDigits = toIntegerOrInfinity$7(fractionDigits);
+ var data = [0, 0, 0, 0, 0, 0];
+ var sign = '';
+ var result = '0';
+ var e, z, j, k;
+ if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (number != number) return 'NaN';
+ if (number <= -1e21 || number >= 1e21) return String(number);
+
+ if (number < 0) {
+ sign = '-';
+ number = -number;
+ }
+
+ if (number > 1e-21) {
+ e = log(number * pow$1(2, 69, 1)) - 69;
+ z = e < 0 ? number * pow$1(2, -e, 1) : number / pow$1(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+
+ if (e > 0) {
+ multiply(data, 0, z);
+ j = fractDigits;
+
+ while (j >= 7) {
+ multiply(data, 1e7, 0);
+ j -= 7;
+ }
+
+ multiply(data, pow$1(10, j, 1), 0);
+ j = e - 1;
+
+ while (j >= 23) {
+ divide(data, 1 << 23);
+ j -= 23;
+ }
+
+ divide(data, 1 << j);
+ multiply(data, 1, 1);
+ divide(data, 2);
+ result = dataToString(data);
+ } else {
+ multiply(data, 0, z);
+ multiply(data, 1 << -e, 0);
+ result = dataToString(data) + repeat$1.call('0', fractDigits);
+ }
+ }
+
+ if (fractDigits > 0) {
+ k = result.length;
+ result = sign + (k <= fractDigits ? '0.' + repeat$1.call('0', fractDigits - k) + result : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
+ } else {
+ result = sign + result;
+ }
+
+ return result;
+ }
+});
+
+var $$39 = _export;
+
+var fails$E = fails$15;
+
+var thisNumberValue = thisNumberValue$3;
+
+var nativeToPrecision = 1.0.toPrecision;
+var FORCED$i = fails$E(function () {
+ // IE7-
+ return nativeToPrecision.call(1, undefined) !== '1';
+}) || !fails$E(function () {
+ // V8 ~ Android 4.3-
+ nativeToPrecision.call({});
+}); // `Number.prototype.toPrecision` method
+// https://tc39.es/ecma262/#sec-number.prototype.toprecision
+
+$$39({
+ target: 'Number',
+ proto: true,
+ forced: FORCED$i
+}, {
+ toPrecision: function toPrecision(precision) {
+ return precision === undefined ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision);
+ }
+});
+
+var DESCRIPTORS$m = descriptors;
+
+var fails$D = fails$15;
+
+var objectKeys$2 = objectKeys$5;
+
+var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;
+
+var propertyIsEnumerableModule = objectPropertyIsEnumerable;
+
+var toObject$k = toObject$A;
+
+var IndexedObject$2 = indexedObject; // eslint-disable-next-line es/no-object-assign -- safe
+
+
+var $assign = Object.assign; // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+
+var defineProperty$7 = Object.defineProperty; // `Object.assign` method
+// https://tc39.es/ecma262/#sec-object.assign
+
+var objectAssign$1 = !$assign || fails$D(function () {
+ // should have correct order of operations (Edge bug)
+ if (DESCRIPTORS$m && $assign({
+ b: 1
+ }, $assign(defineProperty$7({}, 'a', {
+ enumerable: true,
+ get: function () {
+ defineProperty$7(this, 'b', {
+ value: 3,
+ enumerable: false
+ });
+ }
+ }), {
+ b: 2
+ })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug)
+
+ var A = {};
+ var B = {}; // eslint-disable-next-line es/no-symbol -- safe
+
+ var symbol = Symbol();
+ var alphabet = 'abcdefghijklmnopqrst';
+ A[symbol] = 7;
+ alphabet.split('').forEach(function (chr) {
+ B[chr] = chr;
+ });
+ return $assign({}, A)[symbol] != 7 || objectKeys$2($assign({}, B)).join('') != alphabet;
+}) ? function assign(target, source) {
+ // eslint-disable-line no-unused-vars -- required for `.length`
+ var T = toObject$k(target);
+ var argumentsLength = arguments.length;
+ var index = 1;
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+ var propertyIsEnumerable = propertyIsEnumerableModule.f;
+
+ while (argumentsLength > index) {
+ var S = IndexedObject$2(arguments[index++]);
+ var keys = getOwnPropertySymbols ? objectKeys$2(S).concat(getOwnPropertySymbols(S)) : objectKeys$2(S);
+ var length = keys.length;
+ var j = 0;
+ var key;
+
+ while (length > j) {
+ key = keys[j++];
+ if (!DESCRIPTORS$m || propertyIsEnumerable.call(S, key)) T[key] = S[key];
+ }
+ }
+
+ return T;
+} : $assign;
+
+var $$38 = _export;
+
+var assign$4 = objectAssign$1; // `Object.assign` method
+// https://tc39.es/ecma262/#sec-object.assign
+// eslint-disable-next-line es/no-object-assign -- required for testing
+
+
+$$38({
+ target: 'Object',
+ stat: true,
+ forced: Object.assign !== assign$4
+}, {
+ assign: assign$4
+});
+
+var $$37 = _export;
+
+var DESCRIPTORS$l = descriptors;
+
+var create$9 = objectCreate$1; // `Object.create` method
+// https://tc39.es/ecma262/#sec-object.create
+
+
+$$37({
+ target: 'Object',
+ stat: true,
+ sham: !DESCRIPTORS$l
+}, {
+ create: create$9
+});
+
+var global$s = global$R;
+
+var fails$C = fails$15;
+
+var WEBKIT$1 = engineWebkitVersion; // Forced replacement object prototype accessors methods
+
+
+var objectPrototypeAccessorsForced = !fails$C(function () {
+ // This feature detection crashes old WebKit
+ // https://github.com/zloirock/core-js/issues/232
+ if (WEBKIT$1 && WEBKIT$1 < 535) return;
+ var key = Math.random(); // In FF throws only define methods
+ // eslint-disable-next-line no-undef, no-useless-call -- required for testing
+
+ __defineSetter__.call(null, key, function () {
+ /* empty */
+ });
+
+ delete global$s[key];
+});
+
+var $$36 = _export;
+
+var DESCRIPTORS$k = descriptors;
+
+var FORCED$h = objectPrototypeAccessorsForced;
+
+var aCallable$I = aCallable$Q;
+
+var toObject$j = toObject$A;
+
+var definePropertyModule$4 = objectDefineProperty; // `Object.prototype.__defineGetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__
+
+
+if (DESCRIPTORS$k) {
+ $$36({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$h
+ }, {
+ __defineGetter__: function __defineGetter__(P, getter) {
+ definePropertyModule$4.f(toObject$j(this), P, {
+ get: aCallable$I(getter),
+ enumerable: true,
+ configurable: true
+ });
+ }
+ });
+}
+
+var $$35 = _export;
+
+var DESCRIPTORS$j = descriptors;
+
+var defineProperties$2 = objectDefineProperties; // `Object.defineProperties` method
+// https://tc39.es/ecma262/#sec-object.defineproperties
+
+
+$$35({
+ target: 'Object',
+ stat: true,
+ forced: !DESCRIPTORS$j,
+ sham: !DESCRIPTORS$j
+}, {
+ defineProperties: defineProperties$2
+});
+
+var $$34 = _export;
+
+var DESCRIPTORS$i = descriptors;
+
+var objectDefinePropertyModile = objectDefineProperty; // `Object.defineProperty` method
+// https://tc39.es/ecma262/#sec-object.defineproperty
+
+
+$$34({
+ target: 'Object',
+ stat: true,
+ forced: !DESCRIPTORS$i,
+ sham: !DESCRIPTORS$i
+}, {
+ defineProperty: objectDefinePropertyModile.f
+});
+
+var $$33 = _export;
+
+var DESCRIPTORS$h = descriptors;
+
+var FORCED$g = objectPrototypeAccessorsForced;
+
+var aCallable$H = aCallable$Q;
+
+var toObject$i = toObject$A;
+
+var definePropertyModule$3 = objectDefineProperty; // `Object.prototype.__defineSetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__
+
+
+if (DESCRIPTORS$h) {
+ $$33({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$g
+ }, {
+ __defineSetter__: function __defineSetter__(P, setter) {
+ definePropertyModule$3.f(toObject$i(this), P, {
+ set: aCallable$H(setter),
+ enumerable: true,
+ configurable: true
+ });
+ }
+ });
+}
+
+var DESCRIPTORS$g = descriptors;
+
+var objectKeys$1 = objectKeys$5;
+
+var toIndexedObject$3 = toIndexedObject$d;
+
+var propertyIsEnumerable = objectPropertyIsEnumerable.f; // `Object.{ entries, values }` methods implementation
+
+
+var createMethod$3 = function (TO_ENTRIES) {
+ return function (it) {
+ var O = toIndexedObject$3(it);
+ var keys = objectKeys$1(O);
+ var length = keys.length;
+ var i = 0;
+ var result = [];
+ var key;
+
+ while (length > i) {
+ key = keys[i++];
+
+ if (!DESCRIPTORS$g || propertyIsEnumerable.call(O, key)) {
+ result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
+ }
+ }
+
+ return result;
+ };
+};
+
+var objectToArray = {
+ // `Object.entries` method
+ // https://tc39.es/ecma262/#sec-object.entries
+ entries: createMethod$3(true),
+ // `Object.values` method
+ // https://tc39.es/ecma262/#sec-object.values
+ values: createMethod$3(false)
+};
+
+var $$32 = _export;
+
+var $entries = objectToArray.entries; // `Object.entries` method
+// https://tc39.es/ecma262/#sec-object.entries
+
+
+$$32({
+ target: 'Object',
+ stat: true
+}, {
+ entries: function entries(O) {
+ return $entries(O);
+ }
+});
+
+var $$31 = _export;
+
+var FREEZING$3 = freezing;
+
+var fails$B = fails$15;
+
+var isObject$j = isObject$C;
+
+var onFreeze$2 = internalMetadata.exports.onFreeze; // eslint-disable-next-line es/no-object-freeze -- safe
+
+
+var $freeze = Object.freeze;
+var FAILS_ON_PRIMITIVES$9 = fails$B(function () {
+ $freeze(1);
+}); // `Object.freeze` method
+// https://tc39.es/ecma262/#sec-object.freeze
+
+$$31({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$9,
+ sham: !FREEZING$3
+}, {
+ freeze: function freeze(it) {
+ return $freeze && isObject$j(it) ? $freeze(onFreeze$2(it)) : it;
+ }
+});
+
+var $$30 = _export;
+
+var iterate$E = iterate$I;
+
+var createProperty$1 = createProperty$7; // `Object.fromEntries` method
+// https://github.com/tc39/proposal-object-from-entries
+
+
+$$30({
+ target: 'Object',
+ stat: true
+}, {
+ fromEntries: function fromEntries(iterable) {
+ var obj = {};
+ iterate$E(iterable, function (k, v) {
+ createProperty$1(obj, k, v);
+ }, {
+ AS_ENTRIES: true
+ });
+ return obj;
+ }
+});
+
+var $$2$ = _export;
+
+var fails$A = fails$15;
+
+var toIndexedObject$2 = toIndexedObject$d;
+
+var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
+
+var DESCRIPTORS$f = descriptors;
+
+var FAILS_ON_PRIMITIVES$8 = fails$A(function () {
+ nativeGetOwnPropertyDescriptor$1(1);
+});
+var FORCED$f = !DESCRIPTORS$f || FAILS_ON_PRIMITIVES$8; // `Object.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+
+$$2$({
+ target: 'Object',
+ stat: true,
+ forced: FORCED$f,
+ sham: !DESCRIPTORS$f
+}, {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
+ return nativeGetOwnPropertyDescriptor$1(toIndexedObject$2(it), key);
+ }
+});
+
+var $$2_ = _export;
+
+var DESCRIPTORS$e = descriptors;
+
+var ownKeys$1 = ownKeys$3;
+
+var toIndexedObject$1 = toIndexedObject$d;
+
+var getOwnPropertyDescriptorModule$4 = objectGetOwnPropertyDescriptor;
+
+var createProperty = createProperty$7; // `Object.getOwnPropertyDescriptors` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+
+
+$$2_({
+ target: 'Object',
+ stat: true,
+ sham: !DESCRIPTORS$e
+}, {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
+ var O = toIndexedObject$1(object);
+ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$4.f;
+ var keys = ownKeys$1(O);
+ var result = {};
+ var index = 0;
+ var key, descriptor;
+
+ while (keys.length > index) {
+ descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);
+ if (descriptor !== undefined) createProperty(result, key, descriptor);
+ }
+
+ return result;
+ }
+});
+
+var $$2Z = _export;
+
+var fails$z = fails$15;
+
+var getOwnPropertyNames$3 = objectGetOwnPropertyNamesExternal.f; // eslint-disable-next-line es/no-object-getownpropertynames -- required for testing
+
+
+var FAILS_ON_PRIMITIVES$7 = fails$z(function () {
+ return !Object.getOwnPropertyNames(1);
+}); // `Object.getOwnPropertyNames` method
+// https://tc39.es/ecma262/#sec-object.getownpropertynames
+
+$$2Z({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$7
+}, {
+ getOwnPropertyNames: getOwnPropertyNames$3
+});
+
+var $$2Y = _export;
+
+var fails$y = fails$15;
+
+var toObject$h = toObject$A;
+
+var nativeGetPrototypeOf = objectGetPrototypeOf$1;
+
+var CORRECT_PROTOTYPE_GETTER$1 = correctPrototypeGetter;
+
+var FAILS_ON_PRIMITIVES$6 = fails$y(function () {
+ nativeGetPrototypeOf(1);
+}); // `Object.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.getprototypeof
+
+$$2Y({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$6,
+ sham: !CORRECT_PROTOTYPE_GETTER$1
+}, {
+ getPrototypeOf: function getPrototypeOf(it) {
+ return nativeGetPrototypeOf(toObject$h(it));
+ }
+});
+
+var $$2X = _export;
+
+var hasOwn$9 = hasOwnProperty_1; // `Object.hasOwn` method
+// https://github.com/tc39/proposal-accessible-object-hasownproperty
+
+
+$$2X({
+ target: 'Object',
+ stat: true
+}, {
+ hasOwn: hasOwn$9
+});
+
+// `SameValue` abstract operation
+// https://tc39.es/ecma262/#sec-samevalue
+// eslint-disable-next-line es/no-object-is -- safe
+var sameValue$1 = Object.is || function is(x, y) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+};
+
+var $$2W = _export;
+
+var is = sameValue$1; // `Object.is` method
+// https://tc39.es/ecma262/#sec-object.is
+
+
+$$2W({
+ target: 'Object',
+ stat: true
+}, {
+ is: is
+});
+
+var $$2V = _export;
+
+var fails$x = fails$15;
+
+var isObject$i = isObject$C; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+
+var $isExtensible = Object.isExtensible;
+var FAILS_ON_PRIMITIVES$5 = fails$x(function () {
+ $isExtensible(1);
+}); // `Object.isExtensible` method
+// https://tc39.es/ecma262/#sec-object.isextensible
+
+$$2V({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$5
+}, {
+ isExtensible: function isExtensible(it) {
+ return isObject$i(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ }
+});
+
+var $$2U = _export;
+
+var fails$w = fails$15;
+
+var isObject$h = isObject$C; // eslint-disable-next-line es/no-object-isfrozen -- safe
+
+
+var $isFrozen = Object.isFrozen;
+var FAILS_ON_PRIMITIVES$4 = fails$w(function () {
+ $isFrozen(1);
+}); // `Object.isFrozen` method
+// https://tc39.es/ecma262/#sec-object.isfrozen
+
+$$2U({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$4
+}, {
+ isFrozen: function isFrozen(it) {
+ return isObject$h(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ }
+});
+
+var $$2T = _export;
+
+var fails$v = fails$15;
+
+var isObject$g = isObject$C; // eslint-disable-next-line es/no-object-issealed -- safe
+
+
+var $isSealed = Object.isSealed;
+var FAILS_ON_PRIMITIVES$3 = fails$v(function () {
+ $isSealed(1);
+}); // `Object.isSealed` method
+// https://tc39.es/ecma262/#sec-object.issealed
+
+$$2T({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$3
+}, {
+ isSealed: function isSealed(it) {
+ return isObject$g(it) ? $isSealed ? $isSealed(it) : false : true;
+ }
+});
+
+var $$2S = _export;
+
+var toObject$g = toObject$A;
+
+var nativeKeys = objectKeys$5;
+
+var fails$u = fails$15;
+
+var FAILS_ON_PRIMITIVES$2 = fails$u(function () {
+ nativeKeys(1);
+}); // `Object.keys` method
+// https://tc39.es/ecma262/#sec-object.keys
+
+$$2S({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$2
+}, {
+ keys: function keys(it) {
+ return nativeKeys(toObject$g(it));
+ }
+});
+
+var $$2R = _export;
+
+var DESCRIPTORS$d = descriptors;
+
+var FORCED$e = objectPrototypeAccessorsForced;
+
+var toObject$f = toObject$A;
+
+var toPropertyKey$4 = toPropertyKey$9;
+
+var getPrototypeOf$8 = objectGetPrototypeOf$1;
+
+var getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor.f; // `Object.prototype.__lookupGetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__
+
+
+if (DESCRIPTORS$d) {
+ $$2R({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$e
+ }, {
+ __lookupGetter__: function __lookupGetter__(P) {
+ var O = toObject$f(this);
+ var key = toPropertyKey$4(P);
+ var desc;
+
+ do {
+ if (desc = getOwnPropertyDescriptor$6(O, key)) return desc.get;
+ } while (O = getPrototypeOf$8(O));
+ }
+ });
+}
+
+var $$2Q = _export;
+
+var DESCRIPTORS$c = descriptors;
+
+var FORCED$d = objectPrototypeAccessorsForced;
+
+var toObject$e = toObject$A;
+
+var toPropertyKey$3 = toPropertyKey$9;
+
+var getPrototypeOf$7 = objectGetPrototypeOf$1;
+
+var getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor.f; // `Object.prototype.__lookupSetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__
+
+
+if (DESCRIPTORS$c) {
+ $$2Q({
+ target: 'Object',
+ proto: true,
+ forced: FORCED$d
+ }, {
+ __lookupSetter__: function __lookupSetter__(P) {
+ var O = toObject$e(this);
+ var key = toPropertyKey$3(P);
+ var desc;
+
+ do {
+ if (desc = getOwnPropertyDescriptor$5(O, key)) return desc.set;
+ } while (O = getPrototypeOf$7(O));
+ }
+ });
+}
+
+var $$2P = _export;
+
+var isObject$f = isObject$C;
+
+var onFreeze$1 = internalMetadata.exports.onFreeze;
+
+var FREEZING$2 = freezing;
+
+var fails$t = fails$15; // eslint-disable-next-line es/no-object-preventextensions -- safe
+
+
+var $preventExtensions = Object.preventExtensions;
+var FAILS_ON_PRIMITIVES$1 = fails$t(function () {
+ $preventExtensions(1);
+}); // `Object.preventExtensions` method
+// https://tc39.es/ecma262/#sec-object.preventextensions
+
+$$2P({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES$1,
+ sham: !FREEZING$2
+}, {
+ preventExtensions: function preventExtensions(it) {
+ return $preventExtensions && isObject$f(it) ? $preventExtensions(onFreeze$1(it)) : it;
+ }
+});
+
+var $$2O = _export;
+
+var isObject$e = isObject$C;
+
+var onFreeze = internalMetadata.exports.onFreeze;
+
+var FREEZING$1 = freezing;
+
+var fails$s = fails$15; // eslint-disable-next-line es/no-object-seal -- safe
+
+
+var $seal = Object.seal;
+var FAILS_ON_PRIMITIVES = fails$s(function () {
+ $seal(1);
+}); // `Object.seal` method
+// https://tc39.es/ecma262/#sec-object.seal
+
+$$2O({
+ target: 'Object',
+ stat: true,
+ forced: FAILS_ON_PRIMITIVES,
+ sham: !FREEZING$1
+}, {
+ seal: function seal(it) {
+ return $seal && isObject$e(it) ? $seal(onFreeze(it)) : it;
+ }
+});
+
+var $$2N = _export;
+
+var setPrototypeOf$2 = objectSetPrototypeOf$1; // `Object.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.setprototypeof
+
+
+$$2N({
+ target: 'Object',
+ stat: true
+}, {
+ setPrototypeOf: setPrototypeOf$2
+});
+
+var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport;
+
+var classof$5 = classof$b; // `Object.prototype.toString` method implementation
+// https://tc39.es/ecma262/#sec-object.prototype.tostring
+
+
+var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() {
+ return '[object ' + classof$5(this) + ']';
+};
+
+var TO_STRING_TAG_SUPPORT = toStringTagSupport;
+
+var redefine$a = redefine$l.exports;
+
+var toString$j = objectToString; // `Object.prototype.toString` method
+// https://tc39.es/ecma262/#sec-object.prototype.tostring
+
+
+if (!TO_STRING_TAG_SUPPORT) {
+ redefine$a(Object.prototype, 'toString', toString$j, {
+ unsafe: true
+ });
+}
+
+var $$2M = _export;
+
+var $values = objectToArray.values; // `Object.values` method
+// https://tc39.es/ecma262/#sec-object.values
+
+
+$$2M({
+ target: 'Object',
+ stat: true
+}, {
+ values: function values(O) {
+ return $values(O);
+ }
+});
+
+var $$2L = _export;
+
+var $parseFloat = numberParseFloat; // `parseFloat` method
+// https://tc39.es/ecma262/#sec-parsefloat-string
+
+
+$$2L({
+ global: true,
+ forced: parseFloat != $parseFloat
+}, {
+ parseFloat: $parseFloat
+});
+
+var $$2K = _export;
+
+var $parseInt = numberParseInt; // `parseInt` method
+// https://tc39.es/ecma262/#sec-parseint-string-radix
+
+
+$$2K({
+ global: true,
+ forced: parseInt != $parseInt
+}, {
+ parseInt: $parseInt
+});
+
+var global$r = global$R;
+
+var nativePromiseConstructor = global$r.Promise;
+
+var userAgent$4 = engineUserAgent;
+
+var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$4);
+
+var global$q = global$R;
+
+var isCallable$d = isCallable$z;
+
+var fails$r = fails$15;
+
+var bind$k = functionBindContext;
+
+var html = html$2;
+
+var createElement = documentCreateElement$2;
+
+var IS_IOS$1 = engineIsIos;
+
+var IS_NODE$3 = engineIsNode;
+
+var set$2 = global$q.setImmediate;
+var clear = global$q.clearImmediate;
+var process$3 = global$q.process;
+var MessageChannel = global$q.MessageChannel;
+var Dispatch$1 = global$q.Dispatch;
+var counter = 0;
+var queue = {};
+var ONREADYSTATECHANGE = 'onreadystatechange';
+var location$1, defer, channel, port;
+
+try {
+ // Deno throws a ReferenceError on `location` access without `--location` flag
+ location$1 = global$q.location;
+} catch (error) {
+ /* empty */
+}
+
+var run = function (id) {
+ // eslint-disable-next-line no-prototype-builtins -- safe
+ if (queue.hasOwnProperty(id)) {
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+
+var runner = function (id) {
+ return function () {
+ run(id);
+ };
+};
+
+var listener = function (event) {
+ run(event.data);
+};
+
+var post = function (id) {
+ // old engines have not location.origin
+ global$q.postMessage(String(id), location$1.protocol + '//' + location$1.host);
+}; // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+
+
+if (!set$2 || !clear) {
+ set$2 = function setImmediate(fn) {
+ var args = [];
+ var argumentsLength = arguments.length;
+ var i = 1;
+
+ while (argumentsLength > i) args.push(arguments[i++]);
+
+ queue[++counter] = function () {
+ // eslint-disable-next-line no-new-func -- spec requirement
+ (isCallable$d(fn) ? fn : Function(fn)).apply(undefined, args);
+ };
+
+ defer(counter);
+ return counter;
+ };
+
+ clear = function clearImmediate(id) {
+ delete queue[id];
+ }; // Node.js 0.8-
+
+
+ if (IS_NODE$3) {
+ defer = function (id) {
+ process$3.nextTick(runner(id));
+ }; // Sphere (JS game engine) Dispatch API
+
+ } else if (Dispatch$1 && Dispatch$1.now) {
+ defer = function (id) {
+ Dispatch$1.now(runner(id));
+ }; // Browsers with MessageChannel, includes WebWorkers
+ // except iOS - https://github.com/zloirock/core-js/issues/624
+
+ } else if (MessageChannel && !IS_IOS$1) {
+ channel = new MessageChannel();
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = bind$k(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if (global$q.addEventListener && isCallable$d(global$q.postMessage) && !global$q.importScripts && location$1 && location$1.protocol !== 'file:' && !fails$r(post)) {
+ defer = post;
+ global$q.addEventListener('message', listener, false); // IE8-
+ } else if (ONREADYSTATECHANGE in createElement('script')) {
+ defer = function (id) {
+ html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
+ html.removeChild(this);
+ run(id);
+ };
+ }; // Rest old browsers
+
+ } else {
+ defer = function (id) {
+ setTimeout(runner(id), 0);
+ };
+ }
+}
+
+var task$2 = {
+ set: set$2,
+ clear: clear
+};
+
+var userAgent$3 = engineUserAgent;
+
+var global$p = global$R;
+
+var engineIsIosPebble = /ipad|iphone|ipod/i.test(userAgent$3) && global$p.Pebble !== undefined;
+
+var userAgent$2 = engineUserAgent;
+
+var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent$2);
+
+var global$o = global$R;
+
+var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f;
+
+var macrotask = task$2.set;
+
+var IS_IOS = engineIsIos;
+
+var IS_IOS_PEBBLE = engineIsIosPebble;
+
+var IS_WEBOS_WEBKIT = engineIsWebosWebkit;
+
+var IS_NODE$2 = engineIsNode;
+
+var MutationObserver = global$o.MutationObserver || global$o.WebKitMutationObserver;
+var document$2 = global$o.document;
+var process$2 = global$o.process;
+var Promise$4 = global$o.Promise; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
+
+var queueMicrotaskDescriptor = getOwnPropertyDescriptor$4(global$o, 'queueMicrotask');
+var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
+var flush, head, last, notify$1, toggle, node, promise, then; // modern engines have queueMicrotask method
+
+if (!queueMicrotask) {
+ flush = function () {
+ var parent, fn;
+ if (IS_NODE$2 && (parent = process$2.domain)) parent.exit();
+
+ while (head) {
+ fn = head.fn;
+ head = head.next;
+
+ try {
+ fn();
+ } catch (error) {
+ if (head) notify$1();else last = undefined;
+ throw error;
+ }
+ }
+
+ last = undefined;
+ if (parent) parent.enter();
+ }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
+ // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
+
+
+ if (!IS_IOS && !IS_NODE$2 && !IS_WEBOS_WEBKIT && MutationObserver && document$2) {
+ toggle = true;
+ node = document$2.createTextNode('');
+ new MutationObserver(flush).observe(node, {
+ characterData: true
+ });
+
+ notify$1 = function () {
+ node.data = toggle = !toggle;
+ }; // environments with maybe non-completely correct, but existent Promise
+
+ } else if (!IS_IOS_PEBBLE && Promise$4 && Promise$4.resolve) {
+ // Promise.resolve without an argument throws an error in LG WebOS 2
+ promise = Promise$4.resolve(undefined); // workaround of WebKit ~ iOS Safari 10.1 bug
+
+ promise.constructor = Promise$4;
+ then = promise.then;
+
+ notify$1 = function () {
+ then.call(promise, flush);
+ }; // Node.js without promises
+
+ } else if (IS_NODE$2) {
+ notify$1 = function () {
+ process$2.nextTick(flush);
+ }; // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+
+ } else {
+ notify$1 = function () {
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global$o, flush);
+ };
+ }
+}
+
+var microtask$2 = queueMicrotask || function (fn) {
+ var task = {
+ fn: fn,
+ next: undefined
+ };
+ if (last) last.next = task;
+
+ if (!head) {
+ head = task;
+ notify$1();
+ }
+
+ last = task;
+};
+
+var newPromiseCapability$2 = {};
+
+var aCallable$G = aCallable$Q;
+
+var PromiseCapability = function (C) {
+ var resolve, reject;
+ this.promise = new C(function ($$resolve, $$reject) {
+ if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aCallable$G(resolve);
+ this.reject = aCallable$G(reject);
+}; // `NewPromiseCapability` abstract operation
+// https://tc39.es/ecma262/#sec-newpromisecapability
+
+
+newPromiseCapability$2.f = function (C) {
+ return new PromiseCapability(C);
+};
+
+var anObject$1o = anObject$1C;
+
+var isObject$d = isObject$C;
+
+var newPromiseCapability$1 = newPromiseCapability$2;
+
+var promiseResolve$2 = function (C, x) {
+ anObject$1o(C);
+ if (isObject$d(x) && x.constructor === C) return x;
+ var promiseCapability = newPromiseCapability$1.f(C);
+ var resolve = promiseCapability.resolve;
+ resolve(x);
+ return promiseCapability.promise;
+};
+
+var global$n = global$R;
+
+var hostReportErrors$2 = function (a, b) {
+ var console = global$n.console;
+
+ if (console && console.error) {
+ arguments.length === 1 ? console.error(a) : console.error(a, b);
+ }
+};
+
+var perform$4 = function (exec) {
+ try {
+ return {
+ error: false,
+ value: exec()
+ };
+ } catch (error) {
+ return {
+ error: true,
+ value: error
+ };
+ }
+};
+
+var engineIsBrowser = typeof window == 'object';
+
+var $$2J = _export;
+
+var global$m = global$R;
+
+var getBuiltIn$p = getBuiltIn$y;
+
+var NativePromise$1 = nativePromiseConstructor;
+
+var redefine$9 = redefine$l.exports;
+
+var redefineAll$7 = redefineAll$a;
+
+var setPrototypeOf$1 = objectSetPrototypeOf$1;
+
+var setToStringTag$3 = setToStringTag$b;
+
+var setSpecies$3 = setSpecies$7;
+
+var aCallable$F = aCallable$Q;
+
+var isCallable$c = isCallable$z;
+
+var isObject$c = isObject$C;
+
+var anInstance$7 = anInstance$b;
+
+var inspectSource = inspectSource$4;
+
+var iterate$D = iterate$I;
+
+var checkCorrectnessOfIteration$1 = checkCorrectnessOfIteration$4;
+
+var speciesConstructor$d = speciesConstructor$f;
+
+var task$1 = task$2.set;
+
+var microtask$1 = microtask$2;
+
+var promiseResolve$1 = promiseResolve$2;
+
+var hostReportErrors$1 = hostReportErrors$2;
+
+var newPromiseCapabilityModule$3 = newPromiseCapability$2;
+
+var perform$3 = perform$4;
+
+var InternalStateModule$e = internalState;
+
+var isForced$1 = isForced_1;
+
+var wellKnownSymbol$k = wellKnownSymbol$G;
+
+var IS_BROWSER = engineIsBrowser;
+
+var IS_NODE$1 = engineIsNode;
+
+var V8_VERSION = engineV8Version;
+
+var SPECIES$1 = wellKnownSymbol$k('species');
+var PROMISE = 'Promise';
+var getInternalState$e = InternalStateModule$e.get;
+var setInternalState$e = InternalStateModule$e.set;
+var getInternalPromiseState = InternalStateModule$e.getterFor(PROMISE);
+var NativePromisePrototype = NativePromise$1 && NativePromise$1.prototype;
+var PromiseConstructor = NativePromise$1;
+var PromiseConstructorPrototype = NativePromisePrototype;
+var TypeError$1 = global$m.TypeError;
+var document$1 = global$m.document;
+var process$1 = global$m.process;
+var newPromiseCapability = newPromiseCapabilityModule$3.f;
+var newGenericPromiseCapability = newPromiseCapability;
+var DISPATCH_EVENT = !!(document$1 && document$1.createEvent && global$m.dispatchEvent);
+var NATIVE_REJECTION_EVENT = isCallable$c(global$m.PromiseRejectionEvent);
+var UNHANDLED_REJECTION = 'unhandledrejection';
+var REJECTION_HANDLED = 'rejectionhandled';
+var PENDING = 0;
+var FULFILLED = 1;
+var REJECTED = 2;
+var HANDLED = 1;
+var UNHANDLED = 2;
+var SUBCLASSING = false;
+var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
+var FORCED$c = isForced$1(PROMISE, function () {
+ var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);
+ var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor); // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
+ // We can't detect it synchronously, so just check versions
+
+ if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; // We need Promise#finally in the pure version for preventing prototype pollution
+ // deoptimization and performance degradation
+ // https://github.com/zloirock/core-js/issues/679
+
+ if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false; // Detect correctness of subclassing with @@species support
+
+ var promise = new PromiseConstructor(function (resolve) {
+ resolve(1);
+ });
+
+ var FakePromise = function (exec) {
+ exec(function () {
+ /* empty */
+ }, function () {
+ /* empty */
+ });
+ };
+
+ var constructor = promise.constructor = {};
+ constructor[SPECIES$1] = FakePromise;
+ SUBCLASSING = promise.then(function () {
+ /* empty */
+ }) instanceof FakePromise;
+ if (!SUBCLASSING) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+
+ return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;
+});
+var INCORRECT_ITERATION = FORCED$c || !checkCorrectnessOfIteration$1(function (iterable) {
+ PromiseConstructor.all(iterable)['catch'](function () {
+ /* empty */
+ });
+}); // helpers
+
+var isThenable = function (it) {
+ var then;
+ return isObject$c(it) && isCallable$c(then = it.then) ? then : false;
+};
+
+var notify = function (state, isReject) {
+ if (state.notified) return;
+ state.notified = true;
+ var chain = state.reactions;
+ microtask$1(function () {
+ var value = state.value;
+ var ok = state.state == FULFILLED;
+ var index = 0; // variable length - can't use forEach
+
+ while (chain.length > index) {
+ var reaction = chain[index++];
+ var handler = ok ? reaction.ok : reaction.fail;
+ var resolve = reaction.resolve;
+ var reject = reaction.reject;
+ var domain = reaction.domain;
+ var result, then, exited;
+
+ try {
+ if (handler) {
+ if (!ok) {
+ if (state.rejection === UNHANDLED) onHandleUnhandled(state);
+ state.rejection = HANDLED;
+ }
+
+ if (handler === true) result = value;else {
+ if (domain) domain.enter();
+ result = handler(value); // can throw
+
+ if (domain) {
+ domain.exit();
+ exited = true;
+ }
+ }
+
+ if (result === reaction.promise) {
+ reject(TypeError$1('Promise-chain cycle'));
+ } else if (then = isThenable(result)) {
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch (error) {
+ if (domain && !exited) domain.exit();
+ reject(error);
+ }
+ }
+
+ state.reactions = [];
+ state.notified = false;
+ if (isReject && !state.rejection) onUnhandled(state);
+ });
+};
+
+var dispatchEvent$1 = function (name, promise, reason) {
+ var event, handler;
+
+ if (DISPATCH_EVENT) {
+ event = document$1.createEvent('Event');
+ event.promise = promise;
+ event.reason = reason;
+ event.initEvent(name, false, true);
+ global$m.dispatchEvent(event);
+ } else event = {
+ promise: promise,
+ reason: reason
+ };
+
+ if (!NATIVE_REJECTION_EVENT && (handler = global$m['on' + name])) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors$1('Unhandled promise rejection', reason);
+};
+
+var onUnhandled = function (state) {
+ task$1.call(global$m, function () {
+ var promise = state.facade;
+ var value = state.value;
+ var IS_UNHANDLED = isUnhandled(state);
+ var result;
+
+ if (IS_UNHANDLED) {
+ result = perform$3(function () {
+ if (IS_NODE$1) {
+ process$1.emit('unhandledRejection', value, promise);
+ } else dispatchEvent$1(UNHANDLED_REJECTION, promise, value);
+ }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+
+ state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;
+ if (result.error) throw result.value;
+ }
+ });
+};
+
+var isUnhandled = function (state) {
+ return state.rejection !== HANDLED && !state.parent;
+};
+
+var onHandleUnhandled = function (state) {
+ task$1.call(global$m, function () {
+ var promise = state.facade;
+
+ if (IS_NODE$1) {
+ process$1.emit('rejectionHandled', promise);
+ } else dispatchEvent$1(REJECTION_HANDLED, promise, state.value);
+ });
+};
+
+var bind$j = function (fn, state, unwrap) {
+ return function (value) {
+ fn(state, value, unwrap);
+ };
+};
+
+var internalReject = function (state, value, unwrap) {
+ if (state.done) return;
+ state.done = true;
+ if (unwrap) state = unwrap;
+ state.value = value;
+ state.state = REJECTED;
+ notify(state, true);
+};
+
+var internalResolve = function (state, value, unwrap) {
+ if (state.done) return;
+ state.done = true;
+ if (unwrap) state = unwrap;
+
+ try {
+ if (state.facade === value) throw TypeError$1("Promise can't be resolved itself");
+ var then = isThenable(value);
+
+ if (then) {
+ microtask$1(function () {
+ var wrapper = {
+ done: false
+ };
+
+ try {
+ then.call(value, bind$j(internalResolve, wrapper, state), bind$j(internalReject, wrapper, state));
+ } catch (error) {
+ internalReject(wrapper, error, state);
+ }
+ });
+ } else {
+ state.value = value;
+ state.state = FULFILLED;
+ notify(state, false);
+ }
+ } catch (error) {
+ internalReject({
+ done: false
+ }, error, state);
+ }
+}; // constructor polyfill
+
+
+if (FORCED$c) {
+ // 25.4.3.1 Promise(executor)
+ PromiseConstructor = function Promise(executor) {
+ anInstance$7(this, PromiseConstructor, PROMISE);
+ aCallable$F(executor);
+ Internal.call(this);
+ var state = getInternalState$e(this);
+
+ try {
+ executor(bind$j(internalResolve, state), bind$j(internalReject, state));
+ } catch (error) {
+ internalReject(state, error);
+ }
+ };
+
+ PromiseConstructorPrototype = PromiseConstructor.prototype; // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ Internal = function Promise(executor) {
+ setInternalState$e(this, {
+ type: PROMISE,
+ done: false,
+ notified: false,
+ parent: false,
+ reactions: [],
+ rejection: false,
+ state: PENDING,
+ value: undefined
+ });
+ };
+
+ Internal.prototype = redefineAll$7(PromiseConstructorPrototype, {
+ // `Promise.prototype.then` method
+ // https://tc39.es/ecma262/#sec-promise.prototype.then
+ then: function then(onFulfilled, onRejected) {
+ var state = getInternalPromiseState(this);
+ var reaction = newPromiseCapability(speciesConstructor$d(this, PromiseConstructor));
+ reaction.ok = isCallable$c(onFulfilled) ? onFulfilled : true;
+ reaction.fail = isCallable$c(onRejected) && onRejected;
+ reaction.domain = IS_NODE$1 ? process$1.domain : undefined;
+ state.parent = true;
+ state.reactions.push(reaction);
+ if (state.state != PENDING) notify(state, false);
+ return reaction.promise;
+ },
+ // `Promise.prototype.catch` method
+ // https://tc39.es/ecma262/#sec-promise.prototype.catch
+ 'catch': function (onRejected) {
+ return this.then(undefined, onRejected);
+ }
+ });
+
+ OwnPromiseCapability = function () {
+ var promise = new Internal();
+ var state = getInternalState$e(promise);
+ this.promise = promise;
+ this.resolve = bind$j(internalResolve, state);
+ this.reject = bind$j(internalReject, state);
+ };
+
+ newPromiseCapabilityModule$3.f = newPromiseCapability = function (C) {
+ return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
+ };
+
+ if (isCallable$c(NativePromise$1) && NativePromisePrototype !== Object.prototype) {
+ nativeThen = NativePromisePrototype.then;
+
+ if (!SUBCLASSING) {
+ // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
+ redefine$9(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
+ var that = this;
+ return new PromiseConstructor(function (resolve, reject) {
+ nativeThen.call(that, resolve, reject);
+ }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640
+ }, {
+ unsafe: true
+ }); // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
+
+ redefine$9(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], {
+ unsafe: true
+ });
+ } // make `.constructor === Promise` work for native promise-based APIs
+
+
+ try {
+ delete NativePromisePrototype.constructor;
+ } catch (error) {
+ /* empty */
+ } // make `instanceof Promise` work for native promise-based APIs
+
+
+ if (setPrototypeOf$1) {
+ setPrototypeOf$1(NativePromisePrototype, PromiseConstructorPrototype);
+ }
+ }
+}
+
+$$2J({
+ global: true,
+ wrap: true,
+ forced: FORCED$c
+}, {
+ Promise: PromiseConstructor
+});
+setToStringTag$3(PromiseConstructor, PROMISE, false);
+setSpecies$3(PROMISE);
+PromiseWrapper = getBuiltIn$p(PROMISE); // statics
+
+$$2J({
+ target: PROMISE,
+ stat: true,
+ forced: FORCED$c
+}, {
+ // `Promise.reject` method
+ // https://tc39.es/ecma262/#sec-promise.reject
+ reject: function reject(r) {
+ var capability = newPromiseCapability(this);
+ capability.reject.call(undefined, r);
+ return capability.promise;
+ }
+});
+$$2J({
+ target: PROMISE,
+ stat: true,
+ forced: FORCED$c
+}, {
+ // `Promise.resolve` method
+ // https://tc39.es/ecma262/#sec-promise.resolve
+ resolve: function resolve(x) {
+ return promiseResolve$1(this, x);
+ }
+});
+$$2J({
+ target: PROMISE,
+ stat: true,
+ forced: INCORRECT_ITERATION
+}, {
+ // `Promise.all` method
+ // https://tc39.es/ecma262/#sec-promise.all
+ all: function all(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$3(function () {
+ var $promiseResolve = aCallable$F(C.resolve);
+ var values = [];
+ var counter = 0;
+ var remaining = 1;
+ iterate$D(iterable, function (promise) {
+ var index = counter++;
+ var alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ $promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ },
+ // `Promise.race` method
+ // https://tc39.es/ecma262/#sec-promise.race
+ race: function race(iterable) {
+ var C = this;
+ var capability = newPromiseCapability(C);
+ var reject = capability.reject;
+ var result = perform$3(function () {
+ var $promiseResolve = aCallable$F(C.resolve);
+ iterate$D(iterable, function (promise) {
+ $promiseResolve.call(C, promise).then(capability.resolve, reject);
+ });
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+});
+
+var $$2I = _export;
+
+var aCallable$E = aCallable$Q;
+
+var newPromiseCapabilityModule$2 = newPromiseCapability$2;
+
+var perform$2 = perform$4;
+
+var iterate$C = iterate$I; // `Promise.allSettled` method
+// https://tc39.es/ecma262/#sec-promise.allsettled
+
+
+$$2I({
+ target: 'Promise',
+ stat: true
+}, {
+ allSettled: function allSettled(iterable) {
+ var C = this;
+ var capability = newPromiseCapabilityModule$2.f(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$2(function () {
+ var promiseResolve = aCallable$E(C.resolve);
+ var values = [];
+ var counter = 0;
+ var remaining = 1;
+ iterate$C(iterable, function (promise) {
+ var index = counter++;
+ var alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = {
+ status: 'fulfilled',
+ value: value
+ };
+ --remaining || resolve(values);
+ }, function (error) {
+ if (alreadyCalled) return;
+ alreadyCalled = true;
+ values[index] = {
+ status: 'rejected',
+ reason: error
+ };
+ --remaining || resolve(values);
+ });
+ });
+ --remaining || resolve(values);
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+});
+
+var $$2H = _export;
+
+var aCallable$D = aCallable$Q;
+
+var getBuiltIn$o = getBuiltIn$y;
+
+var newPromiseCapabilityModule$1 = newPromiseCapability$2;
+
+var perform$1 = perform$4;
+
+var iterate$B = iterate$I;
+
+var PROMISE_ANY_ERROR = 'No one promise resolved'; // `Promise.any` method
+// https://tc39.es/ecma262/#sec-promise.any
+
+$$2H({
+ target: 'Promise',
+ stat: true
+}, {
+ any: function any(iterable) {
+ var C = this;
+ var capability = newPromiseCapabilityModule$1.f(C);
+ var resolve = capability.resolve;
+ var reject = capability.reject;
+ var result = perform$1(function () {
+ var promiseResolve = aCallable$D(C.resolve);
+ var errors = [];
+ var counter = 0;
+ var remaining = 1;
+ var alreadyResolved = false;
+ iterate$B(iterable, function (promise) {
+ var index = counter++;
+ var alreadyRejected = false;
+ errors.push(undefined);
+ remaining++;
+ promiseResolve.call(C, promise).then(function (value) {
+ if (alreadyRejected || alreadyResolved) return;
+ alreadyResolved = true;
+ resolve(value);
+ }, function (error) {
+ if (alreadyRejected || alreadyResolved) return;
+ alreadyRejected = true;
+ errors[index] = error;
+ --remaining || reject(new (getBuiltIn$o('AggregateError'))(errors, PROMISE_ANY_ERROR));
+ });
+ });
+ --remaining || reject(new (getBuiltIn$o('AggregateError'))(errors, PROMISE_ANY_ERROR));
+ });
+ if (result.error) reject(result.value);
+ return capability.promise;
+ }
+});
+
+var $$2G = _export;
+
+var NativePromise = nativePromiseConstructor;
+
+var fails$q = fails$15;
+
+var getBuiltIn$n = getBuiltIn$y;
+
+var isCallable$b = isCallable$z;
+
+var speciesConstructor$c = speciesConstructor$f;
+
+var promiseResolve = promiseResolve$2;
+
+var redefine$8 = redefine$l.exports; // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
+
+
+var NON_GENERIC = !!NativePromise && fails$q(function () {
+ NativePromise.prototype['finally'].call({
+ then: function () {
+ /* empty */
+ }
+ }, function () {
+ /* empty */
+ });
+}); // `Promise.prototype.finally` method
+// https://tc39.es/ecma262/#sec-promise.prototype.finally
+
+$$2G({
+ target: 'Promise',
+ proto: true,
+ real: true,
+ forced: NON_GENERIC
+}, {
+ 'finally': function (onFinally) {
+ var C = speciesConstructor$c(this, getBuiltIn$n('Promise'));
+ var isFunction = isCallable$b(onFinally);
+ return this.then(isFunction ? function (x) {
+ return promiseResolve(C, onFinally()).then(function () {
+ return x;
+ });
+ } : onFinally, isFunction ? function (e) {
+ return promiseResolve(C, onFinally()).then(function () {
+ throw e;
+ });
+ } : onFinally);
+ }
+}); // makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
+
+if (isCallable$b(NativePromise)) {
+ var method = getBuiltIn$n('Promise').prototype['finally'];
+
+ if (NativePromise.prototype['finally'] !== method) {
+ redefine$8(NativePromise.prototype, 'finally', method, {
+ unsafe: true
+ });
+ }
+}
+
+var $$2F = _export;
+
+var getBuiltIn$m = getBuiltIn$y;
+
+var aCallable$C = aCallable$Q;
+
+var anObject$1n = anObject$1C;
+
+var fails$p = fails$15;
+
+var nativeApply = getBuiltIn$m('Reflect', 'apply');
+var functionApply = Function.apply; // MS Edge argumentsList argument is optional
+
+var OPTIONAL_ARGUMENTS_LIST = !fails$p(function () {
+ nativeApply(function () {
+ /* empty */
+ });
+}); // `Reflect.apply` method
+// https://tc39.es/ecma262/#sec-reflect.apply
+
+$$2F({
+ target: 'Reflect',
+ stat: true,
+ forced: OPTIONAL_ARGUMENTS_LIST
+}, {
+ apply: function apply(target, thisArgument, argumentsList) {
+ aCallable$C(target);
+ anObject$1n(argumentsList);
+ return nativeApply ? nativeApply(target, thisArgument, argumentsList) : functionApply.call(target, thisArgument, argumentsList);
+ }
+});
+
+var $$2E = _export;
+
+var getBuiltIn$l = getBuiltIn$y;
+
+var aConstructor$3 = aConstructor$5;
+
+var anObject$1m = anObject$1C;
+
+var isObject$b = isObject$C;
+
+var create$8 = objectCreate$1;
+
+var bind$i = functionBind;
+
+var fails$o = fails$15;
+
+var nativeConstruct = getBuiltIn$l('Reflect', 'construct'); // `Reflect.construct` method
+// https://tc39.es/ecma262/#sec-reflect.construct
+// MS Edge supports only 2 arguments and argumentsList argument is optional
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+
+var NEW_TARGET_BUG = fails$o(function () {
+ function F() {
+ /* empty */
+ }
+
+ return !(nativeConstruct(function () {
+ /* empty */
+ }, [], F) instanceof F);
+});
+var ARGS_BUG = !fails$o(function () {
+ nativeConstruct(function () {
+ /* empty */
+ });
+});
+var FORCED$b = NEW_TARGET_BUG || ARGS_BUG;
+$$2E({
+ target: 'Reflect',
+ stat: true,
+ forced: FORCED$b,
+ sham: FORCED$b
+}, {
+ construct: function construct(Target, args
+ /* , newTarget */
+ ) {
+ aConstructor$3(Target);
+ anObject$1m(args);
+ var newTarget = arguments.length < 3 ? Target : aConstructor$3(arguments[2]);
+ if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
+
+ if (Target == newTarget) {
+ // w/o altered newTarget, optimization for 0-4 arguments
+ switch (args.length) {
+ case 0:
+ return new Target();
+
+ case 1:
+ return new Target(args[0]);
+
+ case 2:
+ return new Target(args[0], args[1]);
+
+ case 3:
+ return new Target(args[0], args[1], args[2]);
+
+ case 4:
+ return new Target(args[0], args[1], args[2], args[3]);
+ } // w/o altered newTarget, lot of arguments case
+
+
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind$i.apply(Target, $args))();
+ } // with altered newTarget, not support built-in constructors
+
+
+ var proto = newTarget.prototype;
+ var instance = create$8(isObject$b(proto) ? proto : Object.prototype);
+ var result = Function.apply.call(Target, instance, args);
+ return isObject$b(result) ? result : instance;
+ }
+});
+
+var $$2D = _export;
+
+var DESCRIPTORS$b = descriptors;
+
+var anObject$1l = anObject$1C;
+
+var toPropertyKey$2 = toPropertyKey$9;
+
+var definePropertyModule$2 = objectDefineProperty;
+
+var fails$n = fails$15; // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+
+
+var ERROR_INSTEAD_OF_FALSE = fails$n(function () {
+ // eslint-disable-next-line es/no-reflect -- required for testing
+ Reflect.defineProperty(definePropertyModule$2.f({}, 1, {
+ value: 1
+ }), 1, {
+ value: 2
+ });
+}); // `Reflect.defineProperty` method
+// https://tc39.es/ecma262/#sec-reflect.defineproperty
+
+$$2D({
+ target: 'Reflect',
+ stat: true,
+ forced: ERROR_INSTEAD_OF_FALSE,
+ sham: !DESCRIPTORS$b
+}, {
+ defineProperty: function defineProperty(target, propertyKey, attributes) {
+ anObject$1l(target);
+ var key = toPropertyKey$2(propertyKey);
+ anObject$1l(attributes);
+
+ try {
+ definePropertyModule$2.f(target, key, attributes);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+});
+
+var $$2C = _export;
+
+var anObject$1k = anObject$1C;
+
+var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f; // `Reflect.deleteProperty` method
+// https://tc39.es/ecma262/#sec-reflect.deleteproperty
+
+
+$$2C({
+ target: 'Reflect',
+ stat: true
+}, {
+ deleteProperty: function deleteProperty(target, propertyKey) {
+ var descriptor = getOwnPropertyDescriptor$3(anObject$1k(target), propertyKey);
+ return descriptor && !descriptor.configurable ? false : delete target[propertyKey];
+ }
+});
+
+var hasOwn$8 = hasOwnProperty_1;
+
+var isDataDescriptor$2 = function (descriptor) {
+ return descriptor !== undefined && (hasOwn$8(descriptor, 'value') || hasOwn$8(descriptor, 'writable'));
+};
+
+var $$2B = _export;
+
+var isObject$a = isObject$C;
+
+var anObject$1j = anObject$1C;
+
+var isDataDescriptor$1 = isDataDescriptor$2;
+
+var getOwnPropertyDescriptorModule$3 = objectGetOwnPropertyDescriptor;
+
+var getPrototypeOf$6 = objectGetPrototypeOf$1; // `Reflect.get` method
+// https://tc39.es/ecma262/#sec-reflect.get
+
+
+function get$1(target, propertyKey
+/* , receiver */
+) {
+ var receiver = arguments.length < 3 ? target : arguments[2];
+ var descriptor, prototype;
+ if (anObject$1j(target) === receiver) return target[propertyKey];
+ descriptor = getOwnPropertyDescriptorModule$3.f(target, propertyKey);
+ if (descriptor) return isDataDescriptor$1(descriptor) ? descriptor.value : descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
+ if (isObject$a(prototype = getPrototypeOf$6(target))) return get$1(prototype, propertyKey, receiver);
+}
+
+$$2B({
+ target: 'Reflect',
+ stat: true
+}, {
+ get: get$1
+});
+
+var $$2A = _export;
+
+var DESCRIPTORS$a = descriptors;
+
+var anObject$1i = anObject$1C;
+
+var getOwnPropertyDescriptorModule$2 = objectGetOwnPropertyDescriptor; // `Reflect.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor
+
+
+$$2A({
+ target: 'Reflect',
+ stat: true,
+ sham: !DESCRIPTORS$a
+}, {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
+ return getOwnPropertyDescriptorModule$2.f(anObject$1i(target), propertyKey);
+ }
+});
+
+var $$2z = _export;
+
+var anObject$1h = anObject$1C;
+
+var objectGetPrototypeOf = objectGetPrototypeOf$1;
+
+var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; // `Reflect.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-reflect.getprototypeof
+
+
+$$2z({
+ target: 'Reflect',
+ stat: true,
+ sham: !CORRECT_PROTOTYPE_GETTER
+}, {
+ getPrototypeOf: function getPrototypeOf(target) {
+ return objectGetPrototypeOf(anObject$1h(target));
+ }
+});
+
+var $$2y = _export; // `Reflect.has` method
+// https://tc39.es/ecma262/#sec-reflect.has
+
+
+$$2y({
+ target: 'Reflect',
+ stat: true
+}, {
+ has: function has(target, propertyKey) {
+ return propertyKey in target;
+ }
+});
+
+var $$2x = _export;
+
+var anObject$1g = anObject$1C; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+
+var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method
+// https://tc39.es/ecma262/#sec-reflect.isextensible
+
+$$2x({
+ target: 'Reflect',
+ stat: true
+}, {
+ isExtensible: function isExtensible(target) {
+ anObject$1g(target);
+ return objectIsExtensible ? objectIsExtensible(target) : true;
+ }
+});
+
+var $$2w = _export;
+
+var ownKeys = ownKeys$3; // `Reflect.ownKeys` method
+// https://tc39.es/ecma262/#sec-reflect.ownkeys
+
+
+$$2w({
+ target: 'Reflect',
+ stat: true
+}, {
+ ownKeys: ownKeys
+});
+
+var $$2v = _export;
+
+var getBuiltIn$k = getBuiltIn$y;
+
+var anObject$1f = anObject$1C;
+
+var FREEZING = freezing; // `Reflect.preventExtensions` method
+// https://tc39.es/ecma262/#sec-reflect.preventextensions
+
+
+$$2v({
+ target: 'Reflect',
+ stat: true,
+ sham: !FREEZING
+}, {
+ preventExtensions: function preventExtensions(target) {
+ anObject$1f(target);
+
+ try {
+ var objectPreventExtensions = getBuiltIn$k('Object', 'preventExtensions');
+ if (objectPreventExtensions) objectPreventExtensions(target);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+});
+
+var $$2u = _export;
+
+var anObject$1e = anObject$1C;
+
+var isObject$9 = isObject$C;
+
+var isDataDescriptor = isDataDescriptor$2;
+
+var fails$m = fails$15;
+
+var definePropertyModule$1 = objectDefineProperty;
+
+var getOwnPropertyDescriptorModule$1 = objectGetOwnPropertyDescriptor;
+
+var getPrototypeOf$5 = objectGetPrototypeOf$1;
+
+var createPropertyDescriptor$2 = createPropertyDescriptor$9; // `Reflect.set` method
+// https://tc39.es/ecma262/#sec-reflect.set
+
+
+function set$1(target, propertyKey, V
+/* , receiver */
+) {
+ var receiver = arguments.length < 4 ? target : arguments[3];
+ var ownDescriptor = getOwnPropertyDescriptorModule$1.f(anObject$1e(target), propertyKey);
+ var existingDescriptor, prototype, setter;
+
+ if (!ownDescriptor) {
+ if (isObject$9(prototype = getPrototypeOf$5(target))) {
+ return set$1(prototype, propertyKey, V, receiver);
+ }
+
+ ownDescriptor = createPropertyDescriptor$2(0);
+ }
+
+ if (isDataDescriptor(ownDescriptor)) {
+ if (ownDescriptor.writable === false || !isObject$9(receiver)) return false;
+
+ if (existingDescriptor = getOwnPropertyDescriptorModule$1.f(receiver, propertyKey)) {
+ if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
+ existingDescriptor.value = V;
+ definePropertyModule$1.f(receiver, propertyKey, existingDescriptor);
+ } else definePropertyModule$1.f(receiver, propertyKey, createPropertyDescriptor$2(0, V));
+ } else {
+ setter = ownDescriptor.set;
+ if (setter === undefined) return false;
+ setter.call(receiver, V);
+ }
+
+ return true;
+} // MS Edge 17-18 Reflect.set allows setting the property to object
+// with non-writable property on the prototype
+
+
+var MS_EDGE_BUG = fails$m(function () {
+ var Constructor = function () {
+ /* empty */
+ };
+
+ var object = definePropertyModule$1.f(new Constructor(), 'a', {
+ configurable: true
+ }); // eslint-disable-next-line es/no-reflect -- required for testing
+
+ return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
+});
+$$2u({
+ target: 'Reflect',
+ stat: true,
+ forced: MS_EDGE_BUG
+}, {
+ set: set$1
+});
+
+var $$2t = _export;
+
+var anObject$1d = anObject$1C;
+
+var aPossiblePrototype = aPossiblePrototype$2;
+
+var objectSetPrototypeOf = objectSetPrototypeOf$1; // `Reflect.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-reflect.setprototypeof
+
+
+if (objectSetPrototypeOf) $$2t({
+ target: 'Reflect',
+ stat: true
+}, {
+ setPrototypeOf: function setPrototypeOf(target, proto) {
+ anObject$1d(target);
+ aPossiblePrototype(proto);
+
+ try {
+ objectSetPrototypeOf(target, proto);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+});
+
+var $$2s = _export;
+
+var global$l = global$R;
+
+var setToStringTag$2 = setToStringTag$b;
+
+$$2s({
+ global: true
+}, {
+ Reflect: {}
+}); // Reflect[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-reflect-@@tostringtag
+
+setToStringTag$2(global$l.Reflect, 'Reflect', true);
+
+var isObject$8 = isObject$C;
+
+var classof$4 = classofRaw$1;
+
+var wellKnownSymbol$j = wellKnownSymbol$G;
+
+var MATCH$2 = wellKnownSymbol$j('match'); // `IsRegExp` abstract operation
+// https://tc39.es/ecma262/#sec-isregexp
+
+var isRegexp = function (it) {
+ var isRegExp;
+ return isObject$8(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$4(it) == 'RegExp');
+};
+
+var anObject$1c = anObject$1C; // `RegExp.prototype.flags` getter implementation
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+
+
+var regexpFlags$1 = function () {
+ var that = anObject$1c(this);
+ var result = '';
+ if (that.global) result += 'g';
+ if (that.ignoreCase) result += 'i';
+ if (that.multiline) result += 'm';
+ if (that.dotAll) result += 's';
+ if (that.unicode) result += 'u';
+ if (that.sticky) result += 'y';
+ return result;
+};
+
+var regexpStickyHelpers = {};
+
+var fails$l = fails$15;
+
+var global$k = global$R; // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
+
+
+var $RegExp$2 = global$k.RegExp;
+regexpStickyHelpers.UNSUPPORTED_Y = fails$l(function () {
+ var re = $RegExp$2('a', 'y');
+ re.lastIndex = 2;
+ return re.exec('abcd') != null;
+});
+regexpStickyHelpers.BROKEN_CARET = fails$l(function () {
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
+ var re = $RegExp$2('^r', 'gy');
+ re.lastIndex = 2;
+ return re.exec('str') != null;
+});
+
+var fails$k = fails$15;
+
+var global$j = global$R; // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
+
+
+var $RegExp$1 = global$j.RegExp;
+var regexpUnsupportedDotAll = fails$k(function () {
+ var re = $RegExp$1('.', 's');
+ return !(re.dotAll && re.exec('\n') && re.flags === 's');
+});
+
+var fails$j = fails$15;
+
+var global$i = global$R; // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError
+
+
+var $RegExp = global$i.RegExp;
+var regexpUnsupportedNcg = fails$j(function () {
+ var re = $RegExp('(?b)', 'g');
+ return re.exec('b').groups.a !== 'b' || 'b'.replace(re, '$c') !== 'bc';
+});
+
+var DESCRIPTORS$9 = descriptors;
+
+var global$h = global$R;
+
+var isForced = isForced_1;
+
+var inheritIfRequired$1 = inheritIfRequired$4;
+
+var createNonEnumerableProperty$8 = createNonEnumerableProperty$h;
+
+var defineProperty$6 = objectDefineProperty.f;
+
+var getOwnPropertyNames$2 = objectGetOwnPropertyNames.f;
+
+var isRegExp$4 = isRegexp;
+
+var toString$i = toString$t;
+
+var getFlags = regexpFlags$1;
+
+var stickyHelpers$2 = regexpStickyHelpers;
+
+var redefine$7 = redefine$l.exports;
+
+var fails$i = fails$15;
+
+var hasOwn$7 = hasOwnProperty_1;
+
+var enforceInternalState = internalState.enforce;
+
+var setSpecies$2 = setSpecies$7;
+
+var wellKnownSymbol$i = wellKnownSymbol$G;
+
+var UNSUPPORTED_DOT_ALL$2 = regexpUnsupportedDotAll;
+
+var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg;
+
+var MATCH$1 = wellKnownSymbol$i('match');
+var NativeRegExp = global$h.RegExp;
+var RegExpPrototype$6 = NativeRegExp.prototype; // TODO: Use only propper RegExpIdentifierName
+
+var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
+var re1 = /a/g;
+var re2 = /a/g; // "new" should create a new object, old webkit bug
+
+var CORRECT_NEW = new NativeRegExp(re1) !== re1;
+var UNSUPPORTED_Y$3 = stickyHelpers$2.UNSUPPORTED_Y;
+var BASE_FORCED = DESCRIPTORS$9 && (!CORRECT_NEW || UNSUPPORTED_Y$3 || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1 || fails$i(function () {
+ re2[MATCH$1] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match
+
+ return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
+}));
+
+var handleDotAll = function (string) {
+ var length = string.length;
+ var index = 0;
+ var result = '';
+ var brackets = false;
+ var chr;
+
+ for (; index <= length; index++) {
+ chr = string.charAt(index);
+
+ if (chr === '\\') {
+ result += chr + string.charAt(++index);
+ continue;
+ }
+
+ if (!brackets && chr === '.') {
+ result += '[\\s\\S]';
+ } else {
+ if (chr === '[') {
+ brackets = true;
+ } else if (chr === ']') {
+ brackets = false;
+ }
+
+ result += chr;
+ }
+ }
+
+ return result;
+};
+
+var handleNCG = function (string) {
+ var length = string.length;
+ var index = 0;
+ var result = '';
+ var named = [];
+ var names = {};
+ var brackets = false;
+ var ncg = false;
+ var groupid = 0;
+ var groupname = '';
+ var chr;
+
+ for (; index <= length; index++) {
+ chr = string.charAt(index);
+
+ if (chr === '\\') {
+ chr = chr + string.charAt(++index);
+ } else if (chr === ']') {
+ brackets = false;
+ } else if (!brackets) switch (true) {
+ case chr === '[':
+ brackets = true;
+ break;
+
+ case chr === '(':
+ if (IS_NCG.test(string.slice(index + 1))) {
+ index += 2;
+ ncg = true;
+ }
+
+ result += chr;
+ groupid++;
+ continue;
+
+ case chr === '>' && ncg:
+ if (groupname === '' || hasOwn$7(names, groupname)) {
+ throw new SyntaxError('Invalid capture group name');
+ }
+
+ names[groupname] = true;
+ named.push([groupname, groupid]);
+ ncg = false;
+ groupname = '';
+ continue;
+ }
+
+ if (ncg) groupname += chr;else result += chr;
+ }
+
+ return [result, named];
+}; // `RegExp` constructor
+// https://tc39.es/ecma262/#sec-regexp-constructor
+
+
+if (isForced('RegExp', BASE_FORCED)) {
+ var RegExpWrapper = function RegExp(pattern, flags) {
+ var thisIsRegExp = this instanceof RegExpWrapper;
+ var patternIsRegExp = isRegExp$4(pattern);
+ var flagsAreUndefined = flags === undefined;
+ var groups = [];
+ var rawPattern = pattern;
+ var rawFlags, dotAll, sticky, handled, result, state;
+
+ if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {
+ return pattern;
+ }
+
+ if (patternIsRegExp || pattern instanceof RegExpWrapper) {
+ pattern = pattern.source;
+ if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern);
+ }
+
+ pattern = pattern === undefined ? '' : toString$i(pattern);
+ flags = flags === undefined ? '' : toString$i(flags);
+ rawPattern = pattern;
+
+ if (UNSUPPORTED_DOT_ALL$2 && 'dotAll' in re1) {
+ dotAll = !!flags && flags.indexOf('s') > -1;
+ if (dotAll) flags = flags.replace(/s/g, '');
+ }
+
+ rawFlags = flags;
+
+ if (UNSUPPORTED_Y$3 && 'sticky' in re1) {
+ sticky = !!flags && flags.indexOf('y') > -1;
+ if (sticky) flags = flags.replace(/y/g, '');
+ }
+
+ if (UNSUPPORTED_NCG$1) {
+ handled = handleNCG(pattern);
+ pattern = handled[0];
+ groups = handled[1];
+ }
+
+ result = inheritIfRequired$1(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$6, RegExpWrapper);
+
+ if (dotAll || sticky || groups.length) {
+ state = enforceInternalState(result);
+
+ if (dotAll) {
+ state.dotAll = true;
+ state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);
+ }
+
+ if (sticky) state.sticky = true;
+ if (groups.length) state.groups = groups;
+ }
+
+ if (pattern !== rawPattern) try {
+ // fails in old engines, but we have no alternatives for unsupported regex syntax
+ createNonEnumerableProperty$8(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
+ } catch (error) {
+ /* empty */
+ }
+ return result;
+ };
+
+ var proxy = function (key) {
+ key in RegExpWrapper || defineProperty$6(RegExpWrapper, key, {
+ configurable: true,
+ get: function () {
+ return NativeRegExp[key];
+ },
+ set: function (it) {
+ NativeRegExp[key] = it;
+ }
+ });
+ };
+
+ for (var keys = getOwnPropertyNames$2(NativeRegExp), index = 0; keys.length > index;) {
+ proxy(keys[index++]);
+ }
+
+ RegExpPrototype$6.constructor = RegExpWrapper;
+ RegExpWrapper.prototype = RegExpPrototype$6;
+ redefine$7(global$h, 'RegExp', RegExpWrapper);
+} // https://tc39.es/ecma262/#sec-get-regexp-@@species
+
+
+setSpecies$2('RegExp');
+
+var DESCRIPTORS$8 = descriptors;
+
+var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll;
+
+var defineProperty$5 = objectDefineProperty.f;
+
+var getInternalState$d = internalState.get;
+
+var RegExpPrototype$5 = RegExp.prototype; // `RegExp.prototype.dotAll` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
+
+if (DESCRIPTORS$8 && UNSUPPORTED_DOT_ALL$1) {
+ defineProperty$5(RegExpPrototype$5, 'dotAll', {
+ configurable: true,
+ get: function () {
+ if (this === RegExpPrototype$5) return undefined; // We can't use InternalStateModule.getterFor because
+ // we don't add metadata for regexps created by a literal.
+
+ if (this instanceof RegExp) {
+ return !!getInternalState$d(this).dotAll;
+ }
+
+ throw TypeError('Incompatible receiver, RegExp required');
+ }
+ });
+}
+
+/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
+
+/* eslint-disable regexp/no-useless-quantifier -- testing */
+
+var toString$h = toString$t;
+
+var regexpFlags = regexpFlags$1;
+
+var stickyHelpers$1 = regexpStickyHelpers;
+
+var shared$2 = shared$7.exports;
+
+var create$7 = objectCreate$1;
+
+var getInternalState$c = internalState.get;
+
+var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll;
+
+var UNSUPPORTED_NCG = regexpUnsupportedNcg;
+
+var nativeExec = RegExp.prototype.exec;
+var nativeReplace = shared$2('native-string-replace', String.prototype.replace);
+var patchedExec = nativeExec;
+
+var UPDATES_LAST_INDEX_WRONG = function () {
+ var re1 = /a/;
+ var re2 = /b*/g;
+ nativeExec.call(re1, 'a');
+ nativeExec.call(re2, 'a');
+ return re1.lastIndex !== 0 || re2.lastIndex !== 0;
+}();
+
+var UNSUPPORTED_Y$2 = stickyHelpers$1.UNSUPPORTED_Y || stickyHelpers$1.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch.
+
+var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
+var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
+
+if (PATCH) {
+ // eslint-disable-next-line max-statements -- TODO
+ patchedExec = function exec(string) {
+ var re = this;
+ var state = getInternalState$c(re);
+ var str = toString$h(string);
+ var raw = state.raw;
+ var result, reCopy, lastIndex, match, i, object, group;
+
+ if (raw) {
+ raw.lastIndex = re.lastIndex;
+ result = patchedExec.call(raw, str);
+ re.lastIndex = raw.lastIndex;
+ return result;
+ }
+
+ var groups = state.groups;
+ var sticky = UNSUPPORTED_Y$2 && re.sticky;
+ var flags = regexpFlags.call(re);
+ var source = re.source;
+ var charsAdded = 0;
+ var strCopy = str;
+
+ if (sticky) {
+ flags = flags.replace('y', '');
+
+ if (flags.indexOf('g') === -1) {
+ flags += 'g';
+ }
+
+ strCopy = str.slice(re.lastIndex); // Support anchored sticky behavior.
+
+ if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\n')) {
+ source = '(?: ' + source + ')';
+ strCopy = ' ' + strCopy;
+ charsAdded++;
+ } // ^(? + rx + ) is needed, in combination with some str slicing, to
+ // simulate the 'y' flag.
+
+
+ reCopy = new RegExp('^(?:' + source + ')', flags);
+ }
+
+ if (NPCG_INCLUDED) {
+ reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
+ }
+
+ if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
+ match = nativeExec.call(sticky ? reCopy : re, strCopy);
+
+ if (sticky) {
+ if (match) {
+ match.input = match.input.slice(charsAdded);
+ match[0] = match[0].slice(charsAdded);
+ match.index = re.lastIndex;
+ re.lastIndex += match[0].length;
+ } else re.lastIndex = 0;
+ } else if (UPDATES_LAST_INDEX_WRONG && match) {
+ re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
+ }
+
+ if (NPCG_INCLUDED && match && match.length > 1) {
+ // Fix browsers whose `exec` methods don't consistently return `undefined`
+ // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
+ nativeReplace.call(match[0], reCopy, function () {
+ for (i = 1; i < arguments.length - 2; i++) {
+ if (arguments[i] === undefined) match[i] = undefined;
+ }
+ });
+ }
+
+ if (match && groups) {
+ match.groups = object = create$7(null);
+
+ for (i = 0; i < groups.length; i++) {
+ group = groups[i];
+ object[group[0]] = match[group[1]];
+ }
+ }
+
+ return match;
+ };
+}
+
+var regexpExec$3 = patchedExec;
+
+var $$2r = _export;
+
+var exec = regexpExec$3; // `RegExp.prototype.exec` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.exec
+
+
+$$2r({
+ target: 'RegExp',
+ proto: true,
+ forced: /./.exec !== exec
+}, {
+ exec: exec
+});
+
+var DESCRIPTORS$7 = descriptors;
+
+var objectDefinePropertyModule = objectDefineProperty;
+
+var regExpFlags = regexpFlags$1;
+
+var fails$h = fails$15;
+
+var FORCED$a = DESCRIPTORS$7 && fails$h(function () {
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+ return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({
+ dotAll: true,
+ sticky: true
+ }) !== 'sy';
+}); // `RegExp.prototype.flags` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+
+if (FORCED$a) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: regExpFlags
+});
+
+var DESCRIPTORS$6 = descriptors;
+
+var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y;
+
+var defineProperty$4 = objectDefineProperty.f;
+
+var getInternalState$b = internalState.get;
+
+var RegExpPrototype$4 = RegExp.prototype; // `RegExp.prototype.sticky` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
+
+if (DESCRIPTORS$6 && UNSUPPORTED_Y$1) {
+ defineProperty$4(RegExpPrototype$4, 'sticky', {
+ configurable: true,
+ get: function () {
+ if (this === RegExpPrototype$4) return undefined; // We can't use InternalStateModule.getterFor because
+ // we don't add metadata for regexps created by a literal.
+
+ if (this instanceof RegExp) {
+ return !!getInternalState$b(this).sticky;
+ }
+
+ throw TypeError('Incompatible receiver, RegExp required');
+ }
+ });
+}
+
+var $$2q = _export;
+
+var isCallable$a = isCallable$z;
+
+var isObject$7 = isObject$C;
+
+var DELEGATES_TO_EXEC = function () {
+ var execCalled = false;
+ var re = /[ac]/;
+
+ re.exec = function () {
+ execCalled = true;
+ return /./.exec.apply(this, arguments);
+ };
+
+ return re.test('abc') === true && execCalled;
+}();
+
+var nativeTest = /./.test; // `RegExp.prototype.test` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.test
+
+$$2q({
+ target: 'RegExp',
+ proto: true,
+ forced: !DELEGATES_TO_EXEC
+}, {
+ test: function (str) {
+ var exec = this.exec;
+ if (!isCallable$a(exec)) return nativeTest.call(this, str);
+ var result = exec.call(this, str);
+
+ if (result !== null && !isObject$7(result)) {
+ throw new Error('RegExp exec method returned something other than an Object or null');
+ }
+
+ return !!result;
+ }
+});
+
+var PROPER_FUNCTION_NAME$2 = functionName.PROPER;
+
+var redefine$6 = redefine$l.exports;
+
+var anObject$1b = anObject$1C;
+
+var $toString$2 = toString$t;
+
+var fails$g = fails$15;
+
+var flags = regexpFlags$1;
+
+var TO_STRING = 'toString';
+var RegExpPrototype$3 = RegExp.prototype;
+var nativeToString = RegExpPrototype$3[TO_STRING];
+var NOT_GENERIC = fails$g(function () {
+ return nativeToString.call({
+ source: 'a',
+ flags: 'b'
+ }) != '/a/b';
+}); // FF44- RegExp#toString has a wrong name
+
+var INCORRECT_NAME = PROPER_FUNCTION_NAME$2 && nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
+
+if (NOT_GENERIC || INCORRECT_NAME) {
+ redefine$6(RegExp.prototype, TO_STRING, function toString() {
+ var R = anObject$1b(this);
+ var p = $toString$2(R.source);
+ var rf = R.flags;
+ var f = $toString$2(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$3) ? flags.call(R) : rf);
+ return '/' + p + '/' + f;
+ }, {
+ unsafe: true
+ });
+}
+
+var collection$2 = collection$4;
+
+var collectionStrong = collectionStrong$2; // `Set` constructor
+// https://tc39.es/ecma262/#sec-set-objects
+
+
+var es_set = collection$2('Set', function (init) {
+ return function Set() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+}, collectionStrong);
+
+var $$2p = _export;
+
+var requireObjectCoercible$d = requireObjectCoercible$j;
+
+var toIntegerOrInfinity$6 = toIntegerOrInfinity$i;
+
+var toString$g = toString$t;
+
+var fails$f = fails$15;
+
+var FORCED$9 = fails$f(function () {
+ return '𠮷'.at(0) !== '\uD842';
+}); // `String.prototype.at` method
+// https://github.com/tc39/proposal-relative-indexing-method
+
+$$2p({
+ target: 'String',
+ proto: true,
+ forced: FORCED$9
+}, {
+ at: function at(index) {
+ var S = toString$g(requireObjectCoercible$d(this));
+ var len = S.length;
+ var relativeIndex = toIntegerOrInfinity$6(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : S.charAt(k);
+ }
+});
+
+var toIntegerOrInfinity$5 = toIntegerOrInfinity$i;
+
+var toString$f = toString$t;
+
+var requireObjectCoercible$c = requireObjectCoercible$j;
+
+var createMethod$2 = function (CONVERT_TO_STRING) {
+ return function ($this, pos) {
+ var S = toString$f(requireObjectCoercible$c($this));
+ var position = toIntegerOrInfinity$5(pos);
+ var size = S.length;
+ var first, second;
+ if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
+ first = S.charCodeAt(position);
+ return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
+ };
+};
+
+var stringMultibyte = {
+ // `String.prototype.codePointAt` method
+ // https://tc39.es/ecma262/#sec-string.prototype.codepointat
+ codeAt: createMethod$2(false),
+ // `String.prototype.at` method
+ // https://github.com/mathiasbynens/String.prototype.at
+ charAt: createMethod$2(true)
+};
+
+var $$2o = _export;
+
+var codeAt$2 = stringMultibyte.codeAt; // `String.prototype.codePointAt` method
+// https://tc39.es/ecma262/#sec-string.prototype.codepointat
+
+
+$$2o({
+ target: 'String',
+ proto: true
+}, {
+ codePointAt: function codePointAt(pos) {
+ return codeAt$2(this, pos);
+ }
+});
+
+var isRegExp$3 = isRegexp;
+
+var notARegexp = function (it) {
+ if (isRegExp$3(it)) {
+ throw TypeError("The method doesn't accept regular expressions");
+ }
+
+ return it;
+};
+
+var wellKnownSymbol$h = wellKnownSymbol$G;
+
+var MATCH = wellKnownSymbol$h('match');
+
+var correctIsRegexpLogic = function (METHOD_NAME) {
+ var regexp = /./;
+
+ try {
+ '/./'[METHOD_NAME](regexp);
+ } catch (error1) {
+ try {
+ regexp[MATCH] = false;
+ return '/./'[METHOD_NAME](regexp);
+ } catch (error2) {
+ /* empty */
+ }
+ }
+
+ return false;
+};
+
+var $$2n = _export;
+
+var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;
+
+var toLength$7 = toLength$d;
+
+var toString$e = toString$t;
+
+var notARegExp$2 = notARegexp;
+
+var requireObjectCoercible$b = requireObjectCoercible$j;
+
+var correctIsRegExpLogic$2 = correctIsRegexpLogic;
+
+
+var $endsWith = ''.endsWith;
+var min$5 = Math.min;
+var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$2('endsWith'); // https://github.com/zloirock/core-js/pull/702
+
+var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function () {
+ var descriptor = getOwnPropertyDescriptor$2(String.prototype, 'endsWith');
+ return descriptor && !descriptor.writable;
+}(); // `String.prototype.endsWith` method
+// https://tc39.es/ecma262/#sec-string.prototype.endswith
+
+$$2n({
+ target: 'String',
+ proto: true,
+ forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1
+}, {
+ endsWith: function endsWith(searchString
+ /* , endPosition = @length */
+ ) {
+ var that = toString$e(requireObjectCoercible$b(this));
+ notARegExp$2(searchString);
+ var endPosition = arguments.length > 1 ? arguments[1] : undefined;
+ var len = that.length;
+ var end = endPosition === undefined ? len : min$5(toLength$7(endPosition), len);
+ var search = toString$e(searchString);
+ return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
+ }
+});
+
+var $$2m = _export;
+
+var toAbsoluteIndex$1 = toAbsoluteIndex$8;
+
+var fromCharCode$1 = String.fromCharCode; // eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
+
+var $fromCodePoint = String.fromCodePoint; // length should be 1, old FF problem
+
+var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1; // `String.fromCodePoint` method
+// https://tc39.es/ecma262/#sec-string.fromcodepoint
+
+$$2m({
+ target: 'String',
+ stat: true,
+ forced: INCORRECT_LENGTH
+}, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ fromCodePoint: function fromCodePoint(x) {
+ var elements = [];
+ var length = arguments.length;
+ var i = 0;
+ var code;
+
+ while (length > i) {
+ code = +arguments[i++];
+ if (toAbsoluteIndex$1(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
+ elements.push(code < 0x10000 ? fromCharCode$1(code) : fromCharCode$1(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00));
+ }
+
+ return elements.join('');
+ }
+});
+
+var $$2l = _export;
+
+var notARegExp$1 = notARegexp;
+
+var requireObjectCoercible$a = requireObjectCoercible$j;
+
+var toString$d = toString$t;
+
+var correctIsRegExpLogic$1 = correctIsRegexpLogic; // `String.prototype.includes` method
+// https://tc39.es/ecma262/#sec-string.prototype.includes
+
+
+$$2l({
+ target: 'String',
+ proto: true,
+ forced: !correctIsRegExpLogic$1('includes')
+}, {
+ includes: function includes(searchString
+ /* , position = 0 */
+ ) {
+ return !!~toString$d(requireObjectCoercible$a(this)).indexOf(toString$d(notARegExp$1(searchString)), arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var charAt$3 = stringMultibyte.charAt;
+
+var toString$c = toString$t;
+
+var InternalStateModule$d = internalState;
+
+var defineIterator = defineIterator$3;
+
+var STRING_ITERATOR$1 = 'String Iterator';
+var setInternalState$d = InternalStateModule$d.set;
+var getInternalState$a = InternalStateModule$d.getterFor(STRING_ITERATOR$1); // `String.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-string.prototype-@@iterator
+
+defineIterator(String, 'String', function (iterated) {
+ setInternalState$d(this, {
+ type: STRING_ITERATOR$1,
+ string: toString$c(iterated),
+ index: 0
+ }); // `%StringIteratorPrototype%.next` method
+ // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
+}, function next() {
+ var state = getInternalState$a(this);
+ var string = state.string;
+ var index = state.index;
+ var point;
+ if (index >= string.length) return {
+ value: undefined,
+ done: true
+ };
+ point = charAt$3(string, index);
+ state.index += point.length;
+ return {
+ value: point,
+ done: false
+ };
+});
+
+var redefine$5 = redefine$l.exports;
+
+var regexpExec$2 = regexpExec$3;
+
+var fails$e = fails$15;
+
+var wellKnownSymbol$g = wellKnownSymbol$G;
+
+var createNonEnumerableProperty$7 = createNonEnumerableProperty$h;
+
+var SPECIES = wellKnownSymbol$g('species');
+var RegExpPrototype$2 = RegExp.prototype;
+
+var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
+ var SYMBOL = wellKnownSymbol$g(KEY);
+ var DELEGATES_TO_SYMBOL = !fails$e(function () {
+ // String methods call symbol-named RegEp methods
+ var O = {};
+
+ O[SYMBOL] = function () {
+ return 7;
+ };
+
+ return ''[KEY](O) != 7;
+ });
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$e(function () {
+ // Symbol-named RegExp methods call .exec
+ var execCalled = false;
+ var re = /a/;
+
+ if (KEY === 'split') {
+ // We can't use real regex here since it causes deoptimization
+ // and serious performance degradation in V8
+ // https://github.com/zloirock/core-js/issues/306
+ re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates
+ // a new one. We need to return the patched regex when creating the new one.
+
+ re.constructor = {};
+
+ re.constructor[SPECIES] = function () {
+ return re;
+ };
+
+ re.flags = '';
+ re[SYMBOL] = /./[SYMBOL];
+ }
+
+ re.exec = function () {
+ execCalled = true;
+ return null;
+ };
+
+ re[SYMBOL]('');
+ return !execCalled;
+ });
+
+ if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED) {
+ var nativeRegExpMethod = /./[SYMBOL];
+ var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
+ var $exec = regexp.exec;
+
+ if ($exec === regexpExec$2 || $exec === RegExpPrototype$2.exec) {
+ if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
+ // The native String method already delegates to @@method (this
+ // polyfilled function), leasing to infinite recursion.
+ // We avoid it by directly calling the native @@method method.
+ return {
+ done: true,
+ value: nativeRegExpMethod.call(regexp, str, arg2)
+ };
+ }
+
+ return {
+ done: true,
+ value: nativeMethod.call(str, regexp, arg2)
+ };
+ }
+
+ return {
+ done: false
+ };
+ });
+ redefine$5(String.prototype, KEY, methods[0]);
+ redefine$5(RegExpPrototype$2, SYMBOL, methods[1]);
+ }
+
+ if (SHAM) createNonEnumerableProperty$7(RegExpPrototype$2[SYMBOL], 'sham', true);
+};
+
+var charAt$2 = stringMultibyte.charAt; // `AdvanceStringIndex` abstract operation
+// https://tc39.es/ecma262/#sec-advancestringindex
+
+
+var advanceStringIndex$4 = function (S, index, unicode) {
+ return index + (unicode ? charAt$2(S, index).length : 1);
+};
+
+var anObject$1a = anObject$1C;
+
+var isCallable$9 = isCallable$z;
+
+var classof$3 = classofRaw$1;
+
+var regexpExec$1 = regexpExec$3; // `RegExpExec` abstract operation
+// https://tc39.es/ecma262/#sec-regexpexec
+
+
+var regexpExecAbstract = function (R, S) {
+ var exec = R.exec;
+
+ if (isCallable$9(exec)) {
+ var result = exec.call(R, S);
+ if (result !== null) anObject$1a(result);
+ return result;
+ }
+
+ if (classof$3(R) === 'RegExp') return regexpExec$1.call(R, S);
+ throw TypeError('RegExp#exec called on incompatible receiver');
+};
+
+var fixRegExpWellKnownSymbolLogic$3 = fixRegexpWellKnownSymbolLogic;
+
+var anObject$19 = anObject$1C;
+
+var toLength$6 = toLength$d;
+
+var toString$b = toString$t;
+
+var requireObjectCoercible$9 = requireObjectCoercible$j;
+
+var getMethod$d = getMethod$h;
+
+var advanceStringIndex$3 = advanceStringIndex$4;
+
+var regExpExec$3 = regexpExecAbstract; // @@match logic
+
+
+fixRegExpWellKnownSymbolLogic$3('match', function (MATCH, nativeMatch, maybeCallNative) {
+ return [// `String.prototype.match` method
+ // https://tc39.es/ecma262/#sec-string.prototype.match
+ function match(regexp) {
+ var O = requireObjectCoercible$9(this);
+ var matcher = regexp == undefined ? undefined : getMethod$d(regexp, MATCH);
+ return matcher ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString$b(O));
+ }, // `RegExp.prototype[@@match]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
+ function (string) {
+ var rx = anObject$19(this);
+ var S = toString$b(string);
+ var res = maybeCallNative(nativeMatch, rx, S);
+ if (res.done) return res.value;
+ if (!rx.global) return regExpExec$3(rx, S);
+ var fullUnicode = rx.unicode;
+ rx.lastIndex = 0;
+ var A = [];
+ var n = 0;
+ var result;
+
+ while ((result = regExpExec$3(rx, S)) !== null) {
+ var matchStr = toString$b(result[0]);
+ A[n] = matchStr;
+ if (matchStr === '') rx.lastIndex = advanceStringIndex$3(S, toLength$6(rx.lastIndex), fullUnicode);
+ n++;
+ }
+
+ return n === 0 ? null : A;
+ }];
+});
+
+/* eslint-disable es/no-string-prototype-matchall -- safe */
+
+var $$2k = _export;
+
+var createIteratorConstructor$5 = createIteratorConstructor$7;
+
+var requireObjectCoercible$8 = requireObjectCoercible$j;
+
+var toLength$5 = toLength$d;
+
+var toString$a = toString$t;
+
+var anObject$18 = anObject$1C;
+
+var classof$2 = classofRaw$1;
+
+var isRegExp$2 = isRegexp;
+
+var getRegExpFlags$1 = regexpFlags$1;
+
+var getMethod$c = getMethod$h;
+
+var redefine$4 = redefine$l.exports;
+
+var fails$d = fails$15;
+
+var wellKnownSymbol$f = wellKnownSymbol$G;
+
+var speciesConstructor$b = speciesConstructor$f;
+
+var advanceStringIndex$2 = advanceStringIndex$4;
+
+var regExpExec$2 = regexpExecAbstract;
+
+var InternalStateModule$c = internalState;
+
+var IS_PURE$D = isPure;
+
+var MATCH_ALL = wellKnownSymbol$f('matchAll');
+var REGEXP_STRING = 'RegExp String';
+var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
+var setInternalState$c = InternalStateModule$c.set;
+var getInternalState$9 = InternalStateModule$c.getterFor(REGEXP_STRING_ITERATOR);
+var RegExpPrototype$1 = RegExp.prototype;
+var nativeMatchAll = ''.matchAll;
+var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails$d(function () {
+ 'a'.matchAll(/./);
+}); // eslint-disable-next-line max-len -- ignore
+
+var $RegExpStringIterator = createIteratorConstructor$5(function RegExpStringIterator(regexp, string, global, fullUnicode) {
+ setInternalState$c(this, {
+ type: REGEXP_STRING_ITERATOR,
+ regexp: regexp,
+ string: string,
+ global: global,
+ unicode: fullUnicode,
+ done: false
+ });
+}, REGEXP_STRING, function next() {
+ var state = getInternalState$9(this);
+ if (state.done) return {
+ value: undefined,
+ done: true
+ };
+ var R = state.regexp;
+ var S = state.string;
+ var match = regExpExec$2(R, S);
+ if (match === null) return {
+ value: undefined,
+ done: state.done = true
+ };
+
+ if (state.global) {
+ if (toString$a(match[0]) === '') R.lastIndex = advanceStringIndex$2(S, toLength$5(R.lastIndex), state.unicode);
+ return {
+ value: match,
+ done: false
+ };
+ }
+
+ state.done = true;
+ return {
+ value: match,
+ done: false
+ };
+});
+
+var $matchAll = function (string) {
+ var R = anObject$18(this);
+ var S = toString$a(string);
+ var C, flagsValue, flags, matcher, global, fullUnicode;
+ C = speciesConstructor$b(R, RegExp);
+ flagsValue = R.flags;
+
+ if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$1)) {
+ flagsValue = getRegExpFlags$1.call(R);
+ }
+
+ flags = flagsValue === undefined ? '' : toString$a(flagsValue);
+ matcher = new C(C === RegExp ? R.source : R, flags);
+ global = !!~flags.indexOf('g');
+ fullUnicode = !!~flags.indexOf('u');
+ matcher.lastIndex = toLength$5(R.lastIndex);
+ return new $RegExpStringIterator(matcher, S, global, fullUnicode);
+}; // `String.prototype.matchAll` method
+// https://tc39.es/ecma262/#sec-string.prototype.matchall
+
+
+$$2k({
+ target: 'String',
+ proto: true,
+ forced: WORKS_WITH_NON_GLOBAL_REGEX
+}, {
+ matchAll: function matchAll(regexp) {
+ var O = requireObjectCoercible$8(this);
+ var flags, S, matcher, rx;
+
+ if (regexp != null) {
+ if (isRegExp$2(regexp)) {
+ flags = toString$a(requireObjectCoercible$8('flags' in RegExpPrototype$1 ? regexp.flags : getRegExpFlags$1.call(regexp)));
+ if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
+ }
+
+ if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+ matcher = getMethod$c(regexp, MATCH_ALL);
+ if (matcher === undefined && IS_PURE$D && classof$2(regexp) == 'RegExp') matcher = $matchAll;
+ if (matcher) return matcher.call(regexp, O);
+ } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
+
+ S = toString$a(O);
+ rx = new RegExp(regexp, 'g');
+ return rx[MATCH_ALL](S);
+ }
+});
+MATCH_ALL in RegExpPrototype$1 || redefine$4(RegExpPrototype$1, MATCH_ALL, $matchAll);
+
+// https://github.com/zloirock/core-js/issues/280
+var userAgent$1 = engineUserAgent;
+
+var stringPadWebkitBug = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(userAgent$1);
+
+var $$2j = _export;
+
+var $padEnd = stringPad.end;
+
+var WEBKIT_BUG$1 = stringPadWebkitBug; // `String.prototype.padEnd` method
+// https://tc39.es/ecma262/#sec-string.prototype.padend
+
+
+$$2j({
+ target: 'String',
+ proto: true,
+ forced: WEBKIT_BUG$1
+}, {
+ padEnd: function padEnd(maxLength
+ /* , fillString = ' ' */
+ ) {
+ return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$2i = _export;
+
+var $padStart = stringPad.start;
+
+var WEBKIT_BUG = stringPadWebkitBug; // `String.prototype.padStart` method
+// https://tc39.es/ecma262/#sec-string.prototype.padstart
+
+
+$$2i({
+ target: 'String',
+ proto: true,
+ forced: WEBKIT_BUG
+}, {
+ padStart: function padStart(maxLength
+ /* , fillString = ' ' */
+ ) {
+ return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+var $$2h = _export;
+
+var toIndexedObject = toIndexedObject$d;
+
+var toObject$d = toObject$A;
+
+var toString$9 = toString$t;
+
+var lengthOfArrayLike$9 = lengthOfArrayLike$q;
+
+var ArrayPrototype = Array.prototype;
+var push$3 = ArrayPrototype.push;
+var join = ArrayPrototype.join; // `String.raw` method
+// https://tc39.es/ecma262/#sec-string.raw
+
+$$2h({
+ target: 'String',
+ stat: true
+}, {
+ raw: function raw(template) {
+ var rawTemplate = toIndexedObject(toObject$d(template).raw);
+ var literalSegments = lengthOfArrayLike$9(rawTemplate);
+ var argumentsLength = arguments.length;
+ var elements = [];
+ var i = 0;
+
+ while (literalSegments > i) {
+ push$3.call(elements, toString$9(rawTemplate[i++]));
+ if (i === literalSegments) return join.call(elements, '');
+ if (i < argumentsLength) push$3.call(elements, toString$9(arguments[i]));
+ }
+ }
+});
+
+var $$2g = _export;
+
+var repeat = stringRepeat; // `String.prototype.repeat` method
+// https://tc39.es/ecma262/#sec-string.prototype.repeat
+
+
+$$2g({
+ target: 'String',
+ proto: true
+}, {
+ repeat: repeat
+});
+
+var toObject$c = toObject$A;
+
+var floor$3 = Math.floor;
+var replace$1 = ''.replace;
+var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
+var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; // `GetSubstitution` abstract operation
+// https://tc39.es/ecma262/#sec-getsubstitution
+
+var getSubstitution$2 = function (matched, str, position, captures, namedCaptures, replacement) {
+ var tailPos = position + matched.length;
+ var m = captures.length;
+ var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
+
+ if (namedCaptures !== undefined) {
+ namedCaptures = toObject$c(namedCaptures);
+ symbols = SUBSTITUTION_SYMBOLS;
+ }
+
+ return replace$1.call(replacement, symbols, function (match, ch) {
+ var capture;
+
+ switch (ch.charAt(0)) {
+ case '$':
+ return '$';
+
+ case '&':
+ return matched;
+
+ case '`':
+ return str.slice(0, position);
+
+ case "'":
+ return str.slice(tailPos);
+
+ case '<':
+ capture = namedCaptures[ch.slice(1, -1)];
+ break;
+
+ default:
+ // \d\d?
+ var n = +ch;
+ if (n === 0) return match;
+
+ if (n > m) {
+ var f = floor$3(n / 10);
+ if (f === 0) return match;
+ if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
+ return match;
+ }
+
+ capture = captures[n - 1];
+ }
+
+ return capture === undefined ? '' : capture;
+ });
+};
+
+var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic;
+
+var fails$c = fails$15;
+
+var anObject$17 = anObject$1C;
+
+var isCallable$8 = isCallable$z;
+
+var toIntegerOrInfinity$4 = toIntegerOrInfinity$i;
+
+var toLength$4 = toLength$d;
+
+var toString$8 = toString$t;
+
+var requireObjectCoercible$7 = requireObjectCoercible$j;
+
+var advanceStringIndex$1 = advanceStringIndex$4;
+
+var getMethod$b = getMethod$h;
+
+var getSubstitution$1 = getSubstitution$2;
+
+var regExpExec$1 = regexpExecAbstract;
+
+var wellKnownSymbol$e = wellKnownSymbol$G;
+
+var REPLACE$1 = wellKnownSymbol$e('replace');
+var max$3 = Math.max;
+var min$4 = Math.min;
+
+var maybeToString = function (it) {
+ return it === undefined ? it : String(it);
+}; // IE <= 11 replaces $0 with the whole match, as if it was $&
+// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
+
+
+var REPLACE_KEEPS_$0 = function () {
+ // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
+ return 'a'.replace(/./, '$0') === '$0';
+}(); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
+
+
+var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () {
+ if (/./[REPLACE$1]) {
+ return /./[REPLACE$1]('a', '$0') === '';
+ }
+
+ return false;
+}();
+
+var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$c(function () {
+ var re = /./;
+
+ re.exec = function () {
+ var result = [];
+ result.groups = {
+ a: '7'
+ };
+ return result;
+ }; // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
+
+
+ return ''.replace(re, '$') !== '7';
+}); // @@replace logic
+
+fixRegExpWellKnownSymbolLogic$2('replace', function (_, nativeReplace, maybeCallNative) {
+ var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
+ return [// `String.prototype.replace` method
+ // https://tc39.es/ecma262/#sec-string.prototype.replace
+ function replace(searchValue, replaceValue) {
+ var O = requireObjectCoercible$7(this);
+ var replacer = searchValue == undefined ? undefined : getMethod$b(searchValue, REPLACE$1);
+ return replacer ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(toString$8(O), searchValue, replaceValue);
+ }, // `RegExp.prototype[@@replace]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
+ function (string, replaceValue) {
+ var rx = anObject$17(this);
+ var S = toString$8(string);
+
+ if (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 && replaceValue.indexOf('$<') === -1) {
+ var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
+ if (res.done) return res.value;
+ }
+
+ var functionalReplace = isCallable$8(replaceValue);
+ if (!functionalReplace) replaceValue = toString$8(replaceValue);
+ var global = rx.global;
+
+ if (global) {
+ var fullUnicode = rx.unicode;
+ rx.lastIndex = 0;
+ }
+
+ var results = [];
+
+ while (true) {
+ var result = regExpExec$1(rx, S);
+ if (result === null) break;
+ results.push(result);
+ if (!global) break;
+ var matchStr = toString$8(result[0]);
+ if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$4(rx.lastIndex), fullUnicode);
+ }
+
+ var accumulatedResult = '';
+ var nextSourcePosition = 0;
+
+ for (var i = 0; i < results.length; i++) {
+ result = results[i];
+ var matched = toString$8(result[0]);
+ var position = max$3(min$4(toIntegerOrInfinity$4(result.index), S.length), 0);
+ var captures = []; // NOTE: This is equivalent to
+ // captures = result.slice(1).map(maybeToString)
+ // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
+ // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
+ // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
+
+ for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
+
+ var namedCaptures = result.groups;
+
+ if (functionalReplace) {
+ var replacerArgs = [matched].concat(captures, position, S);
+ if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
+ var replacement = toString$8(replaceValue.apply(undefined, replacerArgs));
+ } else {
+ replacement = getSubstitution$1(matched, S, position, captures, namedCaptures, replaceValue);
+ }
+
+ if (position >= nextSourcePosition) {
+ accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
+ nextSourcePosition = position + matched.length;
+ }
+ }
+
+ return accumulatedResult + S.slice(nextSourcePosition);
+ }];
+}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
+
+var $$2f = _export;
+
+var requireObjectCoercible$6 = requireObjectCoercible$j;
+
+var isCallable$7 = isCallable$z;
+
+var isRegExp$1 = isRegexp;
+
+var toString$7 = toString$t;
+
+var getMethod$a = getMethod$h;
+
+var getRegExpFlags = regexpFlags$1;
+
+var getSubstitution = getSubstitution$2;
+
+var wellKnownSymbol$d = wellKnownSymbol$G;
+
+var REPLACE = wellKnownSymbol$d('replace');
+var RegExpPrototype = RegExp.prototype;
+var max$2 = Math.max;
+
+var stringIndexOf = function (string, searchValue, fromIndex) {
+ if (fromIndex > string.length) return -1;
+ if (searchValue === '') return fromIndex;
+ return string.indexOf(searchValue, fromIndex);
+}; // `String.prototype.replaceAll` method
+// https://tc39.es/ecma262/#sec-string.prototype.replaceall
+
+
+$$2f({
+ target: 'String',
+ proto: true
+}, {
+ replaceAll: function replaceAll(searchValue, replaceValue) {
+ var O = requireObjectCoercible$6(this);
+ var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;
+ var position = 0;
+ var endOfLastMatch = 0;
+ var result = '';
+
+ if (searchValue != null) {
+ IS_REG_EXP = isRegExp$1(searchValue);
+
+ if (IS_REG_EXP) {
+ flags = toString$7(requireObjectCoercible$6('flags' in RegExpPrototype ? searchValue.flags : getRegExpFlags.call(searchValue)));
+ if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
+ }
+
+ replacer = getMethod$a(searchValue, REPLACE);
+
+ if (replacer) {
+ return replacer.call(searchValue, O, replaceValue);
+ }
+ }
+
+ string = toString$7(O);
+ searchString = toString$7(searchValue);
+ functionalReplace = isCallable$7(replaceValue);
+ if (!functionalReplace) replaceValue = toString$7(replaceValue);
+ searchLength = searchString.length;
+ advanceBy = max$2(1, searchLength);
+ position = stringIndexOf(string, searchString, 0);
+
+ while (position !== -1) {
+ if (functionalReplace) {
+ replacement = toString$7(replaceValue(searchString, position, string));
+ } else {
+ replacement = getSubstitution(searchString, string, position, [], undefined, replaceValue);
+ }
+
+ result += string.slice(endOfLastMatch, position) + replacement;
+ endOfLastMatch = position + searchLength;
+ position = stringIndexOf(string, searchString, position + advanceBy);
+ }
+
+ if (endOfLastMatch < string.length) {
+ result += string.slice(endOfLastMatch);
+ }
+
+ return result;
+ }
+});
+
+var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic;
+
+var anObject$16 = anObject$1C;
+
+var requireObjectCoercible$5 = requireObjectCoercible$j;
+
+var sameValue = sameValue$1;
+
+var toString$6 = toString$t;
+
+var getMethod$9 = getMethod$h;
+
+var regExpExec = regexpExecAbstract; // @@search logic
+
+
+fixRegExpWellKnownSymbolLogic$1('search', function (SEARCH, nativeSearch, maybeCallNative) {
+ return [// `String.prototype.search` method
+ // https://tc39.es/ecma262/#sec-string.prototype.search
+ function search(regexp) {
+ var O = requireObjectCoercible$5(this);
+ var searcher = regexp == undefined ? undefined : getMethod$9(regexp, SEARCH);
+ return searcher ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString$6(O));
+ }, // `RegExp.prototype[@@search]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
+ function (string) {
+ var rx = anObject$16(this);
+ var S = toString$6(string);
+ var res = maybeCallNative(nativeSearch, rx, S);
+ if (res.done) return res.value;
+ var previousLastIndex = rx.lastIndex;
+ if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
+ var result = regExpExec(rx, S);
+ if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
+ return result === null ? -1 : result.index;
+ }];
+});
+
+var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
+
+var isRegExp = isRegexp;
+
+var anObject$15 = anObject$1C;
+
+var requireObjectCoercible$4 = requireObjectCoercible$j;
+
+var speciesConstructor$a = speciesConstructor$f;
+
+var advanceStringIndex = advanceStringIndex$4;
+
+var toLength$3 = toLength$d;
+
+var toString$5 = toString$t;
+
+var getMethod$8 = getMethod$h;
+
+var callRegExpExec = regexpExecAbstract;
+
+var regexpExec = regexpExec$3;
+
+var stickyHelpers = regexpStickyHelpers;
+
+var fails$b = fails$15;
+
+var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
+var arrayPush = [].push;
+var min$3 = Math.min;
+var MAX_UINT32 = 0xFFFFFFFF; // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
+// Weex JS has frozen built-in prototypes, so use try / catch wrapper
+
+var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$b(function () {
+ // eslint-disable-next-line regexp/no-empty-group -- required for testing
+ var re = /(?:)/;
+ var originalExec = re.exec;
+
+ re.exec = function () {
+ return originalExec.apply(this, arguments);
+ };
+
+ var result = 'ab'.split(re);
+ return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
+}); // @@split logic
+
+fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {
+ var internalSplit;
+
+ if ('abbc'.split(/(b)*/)[1] == 'c' || // eslint-disable-next-line regexp/no-empty-group -- required for testing
+ 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
+ '.'.split(/()()/).length > 1 || ''.split(/.?/).length) {
+ // based on es5-shim implementation, need to rework it
+ internalSplit = function (separator, limit) {
+ var string = toString$5(requireObjectCoercible$4(this));
+ var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+ if (lim === 0) return [];
+ if (separator === undefined) return [string]; // If `separator` is not a regex, use native split
+
+ if (!isRegExp(separator)) {
+ return nativeSplit.call(string, separator, lim);
+ }
+
+ var output = [];
+ var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : '');
+ var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy
+
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
+ var match, lastIndex, lastLength;
+
+ while (match = regexpExec.call(separatorCopy, string)) {
+ lastIndex = separatorCopy.lastIndex;
+
+ if (lastIndex > lastLastIndex) {
+ output.push(string.slice(lastLastIndex, match.index));
+ if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
+ lastLength = match[0].length;
+ lastLastIndex = lastIndex;
+ if (output.length >= lim) break;
+ }
+
+ if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
+ }
+
+ if (lastLastIndex === string.length) {
+ if (lastLength || !separatorCopy.test('')) output.push('');
+ } else output.push(string.slice(lastLastIndex));
+
+ return output.length > lim ? output.slice(0, lim) : output;
+ }; // Chakra, V8
+
+ } else if ('0'.split(undefined, 0).length) {
+ internalSplit = function (separator, limit) {
+ return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
+ };
+ } else internalSplit = nativeSplit;
+
+ return [// `String.prototype.split` method
+ // https://tc39.es/ecma262/#sec-string.prototype.split
+ function split(separator, limit) {
+ var O = requireObjectCoercible$4(this);
+ var splitter = separator == undefined ? undefined : getMethod$8(separator, SPLIT);
+ return splitter ? splitter.call(separator, O, limit) : internalSplit.call(toString$5(O), separator, limit);
+ }, // `RegExp.prototype[@@split]` method
+ // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
+ //
+ // NOTE: This cannot be properly polyfilled in engines that don't support
+ // the 'y' flag.
+ function (string, limit) {
+ var rx = anObject$15(this);
+ var S = toString$5(string);
+ var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
+ if (res.done) return res.value;
+ var C = speciesConstructor$a(rx, RegExp);
+ var unicodeMatching = rx.unicode;
+ var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (UNSUPPORTED_Y ? 'g' : 'y'); // ^(? + rx + ) is needed, in combination with some S slicing, to
+ // simulate the 'y' flag.
+
+ var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
+ var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+ if (lim === 0) return [];
+ if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
+ var p = 0;
+ var q = 0;
+ var A = [];
+
+ while (q < S.length) {
+ splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
+ var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);
+ var e;
+
+ if (z === null || (e = min$3(toLength$3(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p) {
+ q = advanceStringIndex(S, q, unicodeMatching);
+ } else {
+ A.push(S.slice(p, q));
+ if (A.length === lim) return A;
+
+ for (var i = 1; i <= z.length - 1; i++) {
+ A.push(z[i]);
+ if (A.length === lim) return A;
+ }
+
+ q = p = e;
+ }
+ }
+
+ A.push(S.slice(p));
+ return A;
+ }];
+}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
+
+var $$2e = _export;
+
+var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
+
+var toLength$2 = toLength$d;
+
+var toString$4 = toString$t;
+
+var notARegExp = notARegexp;
+
+var requireObjectCoercible$3 = requireObjectCoercible$j;
+
+var correctIsRegExpLogic = correctIsRegexpLogic;
+
+
+var $startsWith = ''.startsWith;
+var min$2 = Math.min;
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); // https://github.com/zloirock/core-js/pull/702
+
+var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () {
+ var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'startsWith');
+ return descriptor && !descriptor.writable;
+}(); // `String.prototype.startsWith` method
+// https://tc39.es/ecma262/#sec-string.prototype.startswith
+
+$$2e({
+ target: 'String',
+ proto: true,
+ forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC
+}, {
+ startsWith: function startsWith(searchString
+ /* , position = 0 */
+ ) {
+ var that = toString$4(requireObjectCoercible$3(this));
+ notARegExp(searchString);
+ var index = toLength$2(min$2(arguments.length > 1 ? arguments[1] : undefined, that.length));
+ var search = toString$4(searchString);
+ return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
+ }
+});
+
+var $$2d = _export;
+
+var requireObjectCoercible$2 = requireObjectCoercible$j;
+
+var toIntegerOrInfinity$3 = toIntegerOrInfinity$i;
+
+var toString$3 = toString$t;
+
+var slice$1 = ''.slice;
+var max$1 = Math.max;
+var min$1 = Math.min; // eslint-disable-next-line unicorn/prefer-string-slice -- required for testing
+
+var FORCED$8 = !''.substr || 'ab'.substr(-1) !== 'b'; // `String.prototype.substr` method
+// https://tc39.es/ecma262/#sec-string.prototype.substr
+
+$$2d({
+ target: 'String',
+ proto: true,
+ forced: FORCED$8
+}, {
+ substr: function substr(start, length) {
+ var that = toString$3(requireObjectCoercible$2(this));
+ var size = that.length;
+ var intStart = toIntegerOrInfinity$3(start);
+ var intLength, intEnd;
+ if (intStart === Infinity) intStart = 0;
+ if (intStart < 0) intStart = max$1(size + intStart, 0);
+ intLength = length === undefined ? size : toIntegerOrInfinity$3(length);
+ if (intLength <= 0 || intLength === Infinity) return '';
+ intEnd = min$1(intStart + intLength, size);
+ return intStart >= intEnd ? '' : slice$1.call(that, intStart, intEnd);
+ }
+});
+
+var PROPER_FUNCTION_NAME$1 = functionName.PROPER;
+
+var fails$a = fails$15;
+
+var whitespaces = whitespaces$4;
+
+var non = '\u200B\u0085\u180E'; // check that a method works with the correct list
+// of whitespaces and has a correct name
+
+var stringTrimForced = function (METHOD_NAME) {
+ return fails$a(function () {
+ return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || PROPER_FUNCTION_NAME$1 && whitespaces[METHOD_NAME].name !== METHOD_NAME;
+ });
+};
+
+var $$2c = _export;
+
+var $trim = stringTrim.trim;
+
+var forcedStringTrimMethod$2 = stringTrimForced; // `String.prototype.trim` method
+// https://tc39.es/ecma262/#sec-string.prototype.trim
+
+
+$$2c({
+ target: 'String',
+ proto: true,
+ forced: forcedStringTrimMethod$2('trim')
+}, {
+ trim: function trim() {
+ return $trim(this);
+ }
+});
+
+var $$2b = _export;
+
+var $trimEnd = stringTrim.end;
+
+var forcedStringTrimMethod$1 = stringTrimForced;
+
+var FORCED$7 = forcedStringTrimMethod$1('trimEnd');
+var trimEnd = FORCED$7 ? function trimEnd() {
+ return $trimEnd(this); // eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+} : ''.trimEnd; // `String.prototype.{ trimEnd, trimRight }` methods
+// https://tc39.es/ecma262/#sec-string.prototype.trimend
+// https://tc39.es/ecma262/#String.prototype.trimright
+
+$$2b({
+ target: 'String',
+ proto: true,
+ name: 'trimEnd',
+ forced: FORCED$7
+}, {
+ trimEnd: trimEnd,
+ trimRight: trimEnd
+});
+
+var $$2a = _export;
+
+var $trimStart = stringTrim.start;
+
+var forcedStringTrimMethod = stringTrimForced;
+
+var FORCED$6 = forcedStringTrimMethod('trimStart');
+var trimStart = FORCED$6 ? function trimStart() {
+ return $trimStart(this); // eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+} : ''.trimStart; // `String.prototype.{ trimStart, trimLeft }` methods
+// https://tc39.es/ecma262/#sec-string.prototype.trimstart
+// https://tc39.es/ecma262/#String.prototype.trimleft
+
+$$2a({
+ target: 'String',
+ proto: true,
+ name: 'trimStart',
+ forced: FORCED$6
+}, {
+ trimStart: trimStart,
+ trimLeft: trimStart
+});
+
+var requireObjectCoercible$1 = requireObjectCoercible$j;
+
+var toString$2 = toString$t;
+
+var quot = /"/g; // `CreateHTML` abstract operation
+// https://tc39.es/ecma262/#sec-createhtml
+
+var createHtml = function (string, tag, attribute, value) {
+ var S = toString$2(requireObjectCoercible$1(string));
+ var p1 = '<' + tag;
+ if (attribute !== '') p1 += ' ' + attribute + '="' + toString$2(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+};
+
+var fails$9 = fails$15; // check the existence of a method, lowercase
+// of a tag and escaping quotes in arguments
+
+
+var stringHtmlForced = function (METHOD_NAME) {
+ return fails$9(function () {
+ var test = ''[METHOD_NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ });
+};
+
+var $$29 = _export;
+
+var createHTML$c = createHtml;
+
+var forcedStringHTMLMethod$c = stringHtmlForced; // `String.prototype.anchor` method
+// https://tc39.es/ecma262/#sec-string.prototype.anchor
+
+
+$$29({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$c('anchor')
+}, {
+ anchor: function anchor(name) {
+ return createHTML$c(this, 'a', 'name', name);
+ }
+});
+
+var $$28 = _export;
+
+var createHTML$b = createHtml;
+
+var forcedStringHTMLMethod$b = stringHtmlForced; // `String.prototype.big` method
+// https://tc39.es/ecma262/#sec-string.prototype.big
+
+
+$$28({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$b('big')
+}, {
+ big: function big() {
+ return createHTML$b(this, 'big', '', '');
+ }
+});
+
+var $$27 = _export;
+
+var createHTML$a = createHtml;
+
+var forcedStringHTMLMethod$a = stringHtmlForced; // `String.prototype.blink` method
+// https://tc39.es/ecma262/#sec-string.prototype.blink
+
+
+$$27({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$a('blink')
+}, {
+ blink: function blink() {
+ return createHTML$a(this, 'blink', '', '');
+ }
+});
+
+var $$26 = _export;
+
+var createHTML$9 = createHtml;
+
+var forcedStringHTMLMethod$9 = stringHtmlForced; // `String.prototype.bold` method
+// https://tc39.es/ecma262/#sec-string.prototype.bold
+
+
+$$26({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$9('bold')
+}, {
+ bold: function bold() {
+ return createHTML$9(this, 'b', '', '');
+ }
+});
+
+var $$25 = _export;
+
+var createHTML$8 = createHtml;
+
+var forcedStringHTMLMethod$8 = stringHtmlForced; // `String.prototype.fixed` method
+// https://tc39.es/ecma262/#sec-string.prototype.fixed
+
+
+$$25({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$8('fixed')
+}, {
+ fixed: function fixed() {
+ return createHTML$8(this, 'tt', '', '');
+ }
+});
+
+var $$24 = _export;
+
+var createHTML$7 = createHtml;
+
+var forcedStringHTMLMethod$7 = stringHtmlForced; // `String.prototype.fontcolor` method
+// https://tc39.es/ecma262/#sec-string.prototype.fontcolor
+
+
+$$24({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$7('fontcolor')
+}, {
+ fontcolor: function fontcolor(color) {
+ return createHTML$7(this, 'font', 'color', color);
+ }
+});
+
+var $$23 = _export;
+
+var createHTML$6 = createHtml;
+
+var forcedStringHTMLMethod$6 = stringHtmlForced; // `String.prototype.fontsize` method
+// https://tc39.es/ecma262/#sec-string.prototype.fontsize
+
+
+$$23({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$6('fontsize')
+}, {
+ fontsize: function fontsize(size) {
+ return createHTML$6(this, 'font', 'size', size);
+ }
+});
+
+var $$22 = _export;
+
+var createHTML$5 = createHtml;
+
+var forcedStringHTMLMethod$5 = stringHtmlForced; // `String.prototype.italics` method
+// https://tc39.es/ecma262/#sec-string.prototype.italics
+
+
+$$22({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$5('italics')
+}, {
+ italics: function italics() {
+ return createHTML$5(this, 'i', '', '');
+ }
+});
+
+var $$21 = _export;
+
+var createHTML$4 = createHtml;
+
+var forcedStringHTMLMethod$4 = stringHtmlForced; // `String.prototype.link` method
+// https://tc39.es/ecma262/#sec-string.prototype.link
+
+
+$$21({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$4('link')
+}, {
+ link: function link(url) {
+ return createHTML$4(this, 'a', 'href', url);
+ }
+});
+
+var $$20 = _export;
+
+var createHTML$3 = createHtml;
+
+var forcedStringHTMLMethod$3 = stringHtmlForced; // `String.prototype.small` method
+// https://tc39.es/ecma262/#sec-string.prototype.small
+
+
+$$20({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$3('small')
+}, {
+ small: function small() {
+ return createHTML$3(this, 'small', '', '');
+ }
+});
+
+var $$1$ = _export;
+
+var createHTML$2 = createHtml;
+
+var forcedStringHTMLMethod$2 = stringHtmlForced; // `String.prototype.strike` method
+// https://tc39.es/ecma262/#sec-string.prototype.strike
+
+
+$$1$({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$2('strike')
+}, {
+ strike: function strike() {
+ return createHTML$2(this, 'strike', '', '');
+ }
+});
+
+var $$1_ = _export;
+
+var createHTML$1 = createHtml;
+
+var forcedStringHTMLMethod$1 = stringHtmlForced; // `String.prototype.sub` method
+// https://tc39.es/ecma262/#sec-string.prototype.sub
+
+
+$$1_({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod$1('sub')
+}, {
+ sub: function sub() {
+ return createHTML$1(this, 'sub', '', '');
+ }
+});
+
+var $$1Z = _export;
+
+var createHTML = createHtml;
+
+var forcedStringHTMLMethod = stringHtmlForced; // `String.prototype.sup` method
+// https://tc39.es/ecma262/#sec-string.prototype.sup
+
+
+$$1Z({
+ target: 'String',
+ proto: true,
+ forced: forcedStringHTMLMethod('sup')
+}, {
+ sup: function sup() {
+ return createHTML(this, 'sup', '', '');
+ }
+});
+
+var typedArrayConstructor = {exports: {}};
+
+/* eslint-disable no-new -- required for testing */
+
+var global$g = global$R;
+
+var fails$8 = fails$15;
+
+var checkCorrectnessOfIteration = checkCorrectnessOfIteration$4;
+
+var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+
+var ArrayBuffer$2 = global$g.ArrayBuffer;
+var Int8Array$2 = global$g.Int8Array;
+var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails$8(function () {
+ Int8Array$2(1);
+}) || !fails$8(function () {
+ new Int8Array$2(-1);
+}) || !checkCorrectnessOfIteration(function (iterable) {
+ new Int8Array$2();
+ new Int8Array$2(null);
+ new Int8Array$2(1.5);
+ new Int8Array$2(iterable);
+}, true) || fails$8(function () {
+ // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill
+ return new Int8Array$2(new ArrayBuffer$2(2), 1, undefined).length !== 1;
+});
+
+var toIntegerOrInfinity$2 = toIntegerOrInfinity$i;
+
+var toPositiveInteger$5 = function (it) {
+ var result = toIntegerOrInfinity$2(it);
+ if (result < 0) throw RangeError("The argument can't be less than 0");
+ return result;
+};
+
+var toPositiveInteger$4 = toPositiveInteger$5;
+
+var toOffset$2 = function (it, BYTES) {
+ var offset = toPositiveInteger$4(it);
+ if (offset % BYTES) throw RangeError('Wrong offset');
+ return offset;
+};
+
+var aConstructor$2 = aConstructor$5;
+
+var toObject$b = toObject$A;
+
+var lengthOfArrayLike$8 = lengthOfArrayLike$q;
+
+var getIterator$8 = getIterator$b;
+
+var getIteratorMethod$5 = getIteratorMethod$9;
+
+var isArrayIteratorMethod = isArrayIteratorMethod$3;
+
+var bind$h = functionBindContext;
+
+var aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor;
+
+var typedArrayFrom$2 = function from(source
+/* , mapfn, thisArg */
+) {
+ var C = aConstructor$2(this);
+ var O = toObject$b(source);
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var mapping = mapfn !== undefined;
+ var iteratorMethod = getIteratorMethod$5(O);
+ var i, length, result, step, iterator, next;
+
+ if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {
+ iterator = getIterator$8(O, iteratorMethod);
+ next = iterator.next;
+ O = [];
+
+ while (!(step = next.call(iterator)).done) {
+ O.push(step.value);
+ }
+ }
+
+ if (mapping && argumentsLength > 2) {
+ mapfn = bind$h(mapfn, arguments[2], 2);
+ }
+
+ length = lengthOfArrayLike$8(O);
+ result = new (aTypedArrayConstructor$4(C))(length);
+
+ for (i = 0; length > i; i++) {
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+
+ return result;
+};
+
+var $$1Y = _export;
+
+var global$f = global$R;
+
+var DESCRIPTORS$5 = descriptors;
+
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$3 = typedArrayConstructorsRequireWrappers;
+
+var ArrayBufferViewCore$w = arrayBufferViewCore;
+
+var ArrayBufferModule = arrayBuffer;
+
+var anInstance$6 = anInstance$b;
+
+var createPropertyDescriptor$1 = createPropertyDescriptor$9;
+
+var createNonEnumerableProperty$6 = createNonEnumerableProperty$h;
+
+var isIntegralNumber = isIntegralNumber$3;
+
+var toLength$1 = toLength$d;
+
+var toIndex = toIndex$2;
+
+var toOffset$1 = toOffset$2;
+
+var toPropertyKey$1 = toPropertyKey$9;
+
+var hasOwn$6 = hasOwnProperty_1;
+
+var classof$1 = classof$b;
+
+var isObject$6 = isObject$C;
+
+var isSymbol = isSymbol$5;
+
+var create$6 = objectCreate$1;
+
+var setPrototypeOf = objectSetPrototypeOf$1;
+
+var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f;
+
+var typedArrayFrom$1 = typedArrayFrom$2;
+
+var forEach$1 = arrayIteration.forEach;
+
+var setSpecies$1 = setSpecies$7;
+
+var definePropertyModule = objectDefineProperty;
+
+var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor;
+
+var InternalStateModule$b = internalState;
+
+var inheritIfRequired = inheritIfRequired$4;
+
+var getInternalState$8 = InternalStateModule$b.get;
+var setInternalState$b = InternalStateModule$b.set;
+var nativeDefineProperty = definePropertyModule.f;
+var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+var round = Math.round;
+var RangeError$1 = global$f.RangeError;
+var ArrayBuffer$1 = ArrayBufferModule.ArrayBuffer;
+var DataView$1 = ArrayBufferModule.DataView;
+var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore$w.NATIVE_ARRAY_BUFFER_VIEWS;
+var TYPED_ARRAY_CONSTRUCTOR$1 = ArrayBufferViewCore$w.TYPED_ARRAY_CONSTRUCTOR;
+var TYPED_ARRAY_TAG = ArrayBufferViewCore$w.TYPED_ARRAY_TAG;
+var TypedArray = ArrayBufferViewCore$w.TypedArray;
+var TypedArrayPrototype = ArrayBufferViewCore$w.TypedArrayPrototype;
+var aTypedArrayConstructor$3 = ArrayBufferViewCore$w.aTypedArrayConstructor;
+var isTypedArray = ArrayBufferViewCore$w.isTypedArray;
+var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
+var WRONG_LENGTH = 'Wrong length';
+
+var fromList = function (C, list) {
+ var index = 0;
+ var length = list.length;
+ var result = new (aTypedArrayConstructor$3(C))(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+};
+
+var addGetter = function (it, key) {
+ nativeDefineProperty(it, key, {
+ get: function () {
+ return getInternalState$8(this)[key];
+ }
+ });
+};
+
+var isArrayBuffer = function (it) {
+ var klass;
+ return it instanceof ArrayBuffer$1 || (klass = classof$1(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';
+};
+
+var isTypedArrayIndex = function (target, key) {
+ return isTypedArray(target) && !isSymbol(key) && key in target && isIntegralNumber(+key) && key >= 0;
+};
+
+var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
+ key = toPropertyKey$1(key);
+ return isTypedArrayIndex(target, key) ? createPropertyDescriptor$1(2, target[key]) : nativeGetOwnPropertyDescriptor(target, key);
+};
+
+var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
+ key = toPropertyKey$1(key);
+
+ if (isTypedArrayIndex(target, key) && isObject$6(descriptor) && hasOwn$6(descriptor, 'value') && !hasOwn$6(descriptor, 'get') && !hasOwn$6(descriptor, 'set') // TODO: add validation descriptor w/o calling accessors
+ && !descriptor.configurable && (!hasOwn$6(descriptor, 'writable') || descriptor.writable) && (!hasOwn$6(descriptor, 'enumerable') || descriptor.enumerable)) {
+ target[key] = descriptor.value;
+ return target;
+ }
+
+ return nativeDefineProperty(target, key, descriptor);
+};
+
+if (DESCRIPTORS$5) {
+ if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+ getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
+ definePropertyModule.f = wrappedDefineProperty;
+ addGetter(TypedArrayPrototype, 'buffer');
+ addGetter(TypedArrayPrototype, 'byteOffset');
+ addGetter(TypedArrayPrototype, 'byteLength');
+ addGetter(TypedArrayPrototype, 'length');
+ }
+
+ $$1Y({
+ target: 'Object',
+ stat: true,
+ forced: !NATIVE_ARRAY_BUFFER_VIEWS
+ }, {
+ getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
+ defineProperty: wrappedDefineProperty
+ });
+
+ typedArrayConstructor.exports = function (TYPE, wrapper, CLAMPED) {
+ var BYTES = TYPE.match(/\d+$/)[0] / 8;
+ var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
+ var GETTER = 'get' + TYPE;
+ var SETTER = 'set' + TYPE;
+ var NativeTypedArrayConstructor = global$f[CONSTRUCTOR_NAME];
+ var TypedArrayConstructor = NativeTypedArrayConstructor;
+ var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
+ var exported = {};
+
+ var getter = function (that, index) {
+ var data = getInternalState$8(that);
+ return data.view[GETTER](index * BYTES + data.byteOffset, true);
+ };
+
+ var setter = function (that, index, value) {
+ var data = getInternalState$8(that);
+ if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
+ data.view[SETTER](index * BYTES + data.byteOffset, value, true);
+ };
+
+ var addElement = function (that, index) {
+ nativeDefineProperty(that, index, {
+ get: function () {
+ return getter(this, index);
+ },
+ set: function (value) {
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+
+ if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+ TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
+ anInstance$6(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
+ var index = 0;
+ var byteOffset = 0;
+ var buffer, byteLength, length;
+
+ if (!isObject$6(data)) {
+ length = toIndex(data);
+ byteLength = length * BYTES;
+ buffer = new ArrayBuffer$1(byteLength);
+ } else if (isArrayBuffer(data)) {
+ buffer = data;
+ byteOffset = toOffset$1(offset, BYTES);
+ var $len = data.byteLength;
+
+ if ($length === undefined) {
+ if ($len % BYTES) throw RangeError$1(WRONG_LENGTH);
+ byteLength = $len - byteOffset;
+ if (byteLength < 0) throw RangeError$1(WRONG_LENGTH);
+ } else {
+ byteLength = toLength$1($length) * BYTES;
+ if (byteLength + byteOffset > $len) throw RangeError$1(WRONG_LENGTH);
+ }
+
+ length = byteLength / BYTES;
+ } else if (isTypedArray(data)) {
+ return fromList(TypedArrayConstructor, data);
+ } else {
+ return typedArrayFrom$1.call(TypedArrayConstructor, data);
+ }
+
+ setInternalState$b(that, {
+ buffer: buffer,
+ byteOffset: byteOffset,
+ byteLength: byteLength,
+ length: length,
+ view: new DataView$1(buffer)
+ });
+
+ while (index < length) addElement(that, index++);
+ });
+ if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+ TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create$6(TypedArrayPrototype);
+ } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$3) {
+ TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
+ anInstance$6(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);
+ return inheritIfRequired(function () {
+ if (!isObject$6(data)) return new NativeTypedArrayConstructor(toIndex(data));
+ if (isArrayBuffer(data)) return $length !== undefined ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES), $length) : typedArrayOffset !== undefined ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES)) : new NativeTypedArrayConstructor(data);
+ if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);
+ return typedArrayFrom$1.call(TypedArrayConstructor, data);
+ }(), dummy, TypedArrayConstructor);
+ });
+ if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+ forEach$1(getOwnPropertyNames$1(NativeTypedArrayConstructor), function (key) {
+ if (!(key in TypedArrayConstructor)) {
+ createNonEnumerableProperty$6(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
+ }
+ });
+ TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
+ }
+
+ if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
+ }
+
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR$1, TypedArrayConstructor);
+
+ if (TYPED_ARRAY_TAG) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
+ }
+
+ exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
+ $$1Y({
+ global: true,
+ forced: TypedArrayConstructor != NativeTypedArrayConstructor,
+ sham: !NATIVE_ARRAY_BUFFER_VIEWS
+ }, exported);
+
+ if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
+ createNonEnumerableProperty$6(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
+ }
+
+ if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
+ createNonEnumerableProperty$6(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
+ }
+
+ setSpecies$1(CONSTRUCTOR_NAME);
+ };
+} else typedArrayConstructor.exports = function () {
+ /* empty */
+};
+
+var createTypedArrayConstructor$8 = typedArrayConstructor.exports; // `Float32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$8('Float32', function (init) {
+ return function Float32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$7 = typedArrayConstructor.exports; // `Float64Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$7('Float64', function (init) {
+ return function Float64Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$6 = typedArrayConstructor.exports; // `Int8Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$6('Int8', function (init) {
+ return function Int8Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$5 = typedArrayConstructor.exports; // `Int16Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$5('Int16', function (init) {
+ return function Int16Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$4 = typedArrayConstructor.exports; // `Int32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$4('Int32', function (init) {
+ return function Int32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$3 = typedArrayConstructor.exports; // `Uint8Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$3('Uint8', function (init) {
+ return function Uint8Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor$2 = typedArrayConstructor.exports; // `Uint8ClampedArray` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$2('Uint8', function (init) {
+ return function Uint8ClampedArray(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+}, true);
+
+var createTypedArrayConstructor$1 = typedArrayConstructor.exports; // `Uint16Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor$1('Uint16', function (init) {
+ return function Uint16Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var createTypedArrayConstructor = typedArrayConstructor.exports; // `Uint32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+
+
+createTypedArrayConstructor('Uint32', function (init) {
+ return function Uint32Array(data, byteOffset, length) {
+ return init(this, data, byteOffset, length);
+ };
+});
+
+var ArrayBufferViewCore$v = arrayBufferViewCore;
+
+var lengthOfArrayLike$7 = lengthOfArrayLike$q;
+
+var toIntegerOrInfinity$1 = toIntegerOrInfinity$i;
+
+var aTypedArray$s = ArrayBufferViewCore$v.aTypedArray;
+var exportTypedArrayMethod$t = ArrayBufferViewCore$v.exportTypedArrayMethod; // `%TypedArray%.prototype.at` method
+// https://github.com/tc39/proposal-relative-indexing-method
+
+exportTypedArrayMethod$t('at', function at(index) {
+ var O = aTypedArray$s(this);
+ var len = lengthOfArrayLike$7(O);
+ var relativeIndex = toIntegerOrInfinity$1(index);
+ var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+ return k < 0 || k >= len ? undefined : O[k];
+});
+
+var ArrayBufferViewCore$u = arrayBufferViewCore;
+
+var $copyWithin = arrayCopyWithin;
+
+var aTypedArray$r = ArrayBufferViewCore$u.aTypedArray;
+var exportTypedArrayMethod$s = ArrayBufferViewCore$u.exportTypedArrayMethod; // `%TypedArray%.prototype.copyWithin` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin
+
+exportTypedArrayMethod$s('copyWithin', function copyWithin(target, start
+/* , end */
+) {
+ return $copyWithin.call(aTypedArray$r(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+});
+
+var ArrayBufferViewCore$t = arrayBufferViewCore;
+
+var $every$1 = arrayIteration.every;
+
+var aTypedArray$q = ArrayBufferViewCore$t.aTypedArray;
+var exportTypedArrayMethod$r = ArrayBufferViewCore$t.exportTypedArrayMethod; // `%TypedArray%.prototype.every` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every
+
+exportTypedArrayMethod$r('every', function every(callbackfn
+/* , thisArg */
+) {
+ return $every$1(aTypedArray$q(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$s = arrayBufferViewCore;
+
+var $fill = arrayFill$1;
+
+var aTypedArray$p = ArrayBufferViewCore$s.aTypedArray;
+var exportTypedArrayMethod$q = ArrayBufferViewCore$s.exportTypedArrayMethod; // `%TypedArray%.prototype.fill` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill
+// eslint-disable-next-line no-unused-vars -- required for `.length`
+
+exportTypedArrayMethod$q('fill', function fill(value
+/* , start, end */
+) {
+ return $fill.apply(aTypedArray$p(this), arguments);
+});
+
+var arrayFromConstructorAndList$3 = function (Constructor, list) {
+ var index = 0;
+ var length = list.length;
+ var result = new Constructor(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+};
+
+var ArrayBufferViewCore$r = arrayBufferViewCore;
+
+var speciesConstructor$9 = speciesConstructor$f;
+
+var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore$r.TYPED_ARRAY_CONSTRUCTOR;
+var aTypedArrayConstructor$2 = ArrayBufferViewCore$r.aTypedArrayConstructor; // a part of `TypedArraySpeciesCreate` abstract operation
+// https://tc39.es/ecma262/#typedarray-species-create
+
+var typedArraySpeciesConstructor$5 = function (originalArray) {
+ return aTypedArrayConstructor$2(speciesConstructor$9(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));
+};
+
+var arrayFromConstructorAndList$2 = arrayFromConstructorAndList$3;
+
+var typedArraySpeciesConstructor$4 = typedArraySpeciesConstructor$5;
+
+var typedArrayFromSpeciesAndList = function (instance, list) {
+ return arrayFromConstructorAndList$2(typedArraySpeciesConstructor$4(instance), list);
+};
+
+var ArrayBufferViewCore$q = arrayBufferViewCore;
+
+var $filter = arrayIteration.filter;
+
+var fromSpeciesAndList$3 = typedArrayFromSpeciesAndList;
+
+var aTypedArray$o = ArrayBufferViewCore$q.aTypedArray;
+var exportTypedArrayMethod$p = ArrayBufferViewCore$q.exportTypedArrayMethod; // `%TypedArray%.prototype.filter` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter
+
+exportTypedArrayMethod$p('filter', function filter(callbackfn
+/* , thisArg */
+) {
+ var list = $filter(aTypedArray$o(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$3(this, list);
+});
+
+var ArrayBufferViewCore$p = arrayBufferViewCore;
+
+var $find$1 = arrayIteration.find;
+
+var aTypedArray$n = ArrayBufferViewCore$p.aTypedArray;
+var exportTypedArrayMethod$o = ArrayBufferViewCore$p.exportTypedArrayMethod; // `%TypedArray%.prototype.find` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find
+
+exportTypedArrayMethod$o('find', function find(predicate
+/* , thisArg */
+) {
+ return $find$1(aTypedArray$n(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$o = arrayBufferViewCore;
+
+var $findIndex = arrayIteration.findIndex;
+
+var aTypedArray$m = ArrayBufferViewCore$o.aTypedArray;
+var exportTypedArrayMethod$n = ArrayBufferViewCore$o.exportTypedArrayMethod; // `%TypedArray%.prototype.findIndex` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex
+
+exportTypedArrayMethod$n('findIndex', function findIndex(predicate
+/* , thisArg */
+) {
+ return $findIndex(aTypedArray$m(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$n = arrayBufferViewCore;
+
+var $forEach$1 = arrayIteration.forEach;
+
+var aTypedArray$l = ArrayBufferViewCore$n.aTypedArray;
+var exportTypedArrayMethod$m = ArrayBufferViewCore$n.exportTypedArrayMethod; // `%TypedArray%.prototype.forEach` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach
+
+exportTypedArrayMethod$m('forEach', function forEach(callbackfn
+/* , thisArg */
+) {
+ $forEach$1(aTypedArray$l(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$2 = typedArrayConstructorsRequireWrappers;
+
+var exportTypedArrayStaticMethod$2 = arrayBufferViewCore.exportTypedArrayStaticMethod;
+
+var typedArrayFrom = typedArrayFrom$2; // `%TypedArray%.from` method
+// https://tc39.es/ecma262/#sec-%typedarray%.from
+
+
+exportTypedArrayStaticMethod$2('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$2);
+
+var ArrayBufferViewCore$m = arrayBufferViewCore;
+
+var $includes = arrayIncludes.includes;
+
+var aTypedArray$k = ArrayBufferViewCore$m.aTypedArray;
+var exportTypedArrayMethod$l = ArrayBufferViewCore$m.exportTypedArrayMethod; // `%TypedArray%.prototype.includes` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes
+
+exportTypedArrayMethod$l('includes', function includes(searchElement
+/* , fromIndex */
+) {
+ return $includes(aTypedArray$k(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$l = arrayBufferViewCore;
+
+var $indexOf = arrayIncludes.indexOf;
+
+var aTypedArray$j = ArrayBufferViewCore$l.aTypedArray;
+var exportTypedArrayMethod$k = ArrayBufferViewCore$l.exportTypedArrayMethod; // `%TypedArray%.prototype.indexOf` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof
+
+exportTypedArrayMethod$k('indexOf', function indexOf(searchElement
+/* , fromIndex */
+) {
+ return $indexOf(aTypedArray$j(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var global$e = global$R;
+
+var PROPER_FUNCTION_NAME = functionName.PROPER;
+
+var ArrayBufferViewCore$k = arrayBufferViewCore;
+
+var ArrayIterators = es_array_iterator;
+
+var wellKnownSymbol$c = wellKnownSymbol$G;
+
+var ITERATOR$3 = wellKnownSymbol$c('iterator');
+var Uint8Array$1 = global$e.Uint8Array;
+var arrayValues = ArrayIterators.values;
+var arrayKeys = ArrayIterators.keys;
+var arrayEntries = ArrayIterators.entries;
+var aTypedArray$i = ArrayBufferViewCore$k.aTypedArray;
+var exportTypedArrayMethod$j = ArrayBufferViewCore$k.exportTypedArrayMethod;
+var nativeTypedArrayIterator = Uint8Array$1 && Uint8Array$1.prototype[ITERATOR$3];
+var PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';
+
+var typedArrayValues = function values() {
+ return arrayValues.call(aTypedArray$i(this));
+}; // `%TypedArray%.prototype.entries` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries
+
+
+exportTypedArrayMethod$j('entries', function entries() {
+ return arrayEntries.call(aTypedArray$i(this));
+}); // `%TypedArray%.prototype.keys` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys
+
+exportTypedArrayMethod$j('keys', function keys() {
+ return arrayKeys.call(aTypedArray$i(this));
+}); // `%TypedArray%.prototype.values` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
+
+exportTypedArrayMethod$j('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME); // `%TypedArray%.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
+
+exportTypedArrayMethod$j(ITERATOR$3, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
+
+var ArrayBufferViewCore$j = arrayBufferViewCore;
+
+var aTypedArray$h = ArrayBufferViewCore$j.aTypedArray;
+var exportTypedArrayMethod$i = ArrayBufferViewCore$j.exportTypedArrayMethod;
+var $join = [].join; // `%TypedArray%.prototype.join` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join
+// eslint-disable-next-line no-unused-vars -- required for `.length`
+
+exportTypedArrayMethod$i('join', function join(separator) {
+ return $join.apply(aTypedArray$h(this), arguments);
+});
+
+var ArrayBufferViewCore$i = arrayBufferViewCore;
+
+var $lastIndexOf = arrayLastIndexOf;
+
+var aTypedArray$g = ArrayBufferViewCore$i.aTypedArray;
+var exportTypedArrayMethod$h = ArrayBufferViewCore$i.exportTypedArrayMethod; // `%TypedArray%.prototype.lastIndexOf` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof
+// eslint-disable-next-line no-unused-vars -- required for `.length`
+
+exportTypedArrayMethod$h('lastIndexOf', function lastIndexOf(searchElement
+/* , fromIndex */
+) {
+ return $lastIndexOf.apply(aTypedArray$g(this), arguments);
+});
+
+var ArrayBufferViewCore$h = arrayBufferViewCore;
+
+var $map = arrayIteration.map;
+
+var typedArraySpeciesConstructor$3 = typedArraySpeciesConstructor$5;
+
+var aTypedArray$f = ArrayBufferViewCore$h.aTypedArray;
+var exportTypedArrayMethod$g = ArrayBufferViewCore$h.exportTypedArrayMethod; // `%TypedArray%.prototype.map` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
+
+exportTypedArrayMethod$g('map', function map(mapfn
+/* , thisArg */
+) {
+ return $map(aTypedArray$f(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
+ return new (typedArraySpeciesConstructor$3(O))(length);
+ });
+});
+
+var ArrayBufferViewCore$g = arrayBufferViewCore;
+
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1 = typedArrayConstructorsRequireWrappers;
+
+var aTypedArrayConstructor$1 = ArrayBufferViewCore$g.aTypedArrayConstructor;
+var exportTypedArrayStaticMethod$1 = ArrayBufferViewCore$g.exportTypedArrayStaticMethod; // `%TypedArray%.of` method
+// https://tc39.es/ecma262/#sec-%typedarray%.of
+
+exportTypedArrayStaticMethod$1('of', function of() {
+ var index = 0;
+ var length = arguments.length;
+ var result = new (aTypedArrayConstructor$1(this))(length);
+
+ while (length > index) result[index] = arguments[index++];
+
+ return result;
+}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1);
+
+var ArrayBufferViewCore$f = arrayBufferViewCore;
+
+var $reduce = arrayReduce.left;
+
+var aTypedArray$e = ArrayBufferViewCore$f.aTypedArray;
+var exportTypedArrayMethod$f = ArrayBufferViewCore$f.exportTypedArrayMethod; // `%TypedArray%.prototype.reduce` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce
+
+exportTypedArrayMethod$f('reduce', function reduce(callbackfn
+/* , initialValue */
+) {
+ return $reduce(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$e = arrayBufferViewCore;
+
+var $reduceRight = arrayReduce.right;
+
+var aTypedArray$d = ArrayBufferViewCore$e.aTypedArray;
+var exportTypedArrayMethod$e = ArrayBufferViewCore$e.exportTypedArrayMethod; // `%TypedArray%.prototype.reduceRicht` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright
+
+exportTypedArrayMethod$e('reduceRight', function reduceRight(callbackfn
+/* , initialValue */
+) {
+ return $reduceRight(aTypedArray$d(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$d = arrayBufferViewCore;
+
+var aTypedArray$c = ArrayBufferViewCore$d.aTypedArray;
+var exportTypedArrayMethod$d = ArrayBufferViewCore$d.exportTypedArrayMethod;
+var floor$2 = Math.floor; // `%TypedArray%.prototype.reverse` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse
+
+exportTypedArrayMethod$d('reverse', function reverse() {
+ var that = this;
+ var length = aTypedArray$c(that).length;
+ var middle = floor$2(length / 2);
+ var index = 0;
+ var value;
+
+ while (index < middle) {
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ }
+
+ return that;
+});
+
+var ArrayBufferViewCore$c = arrayBufferViewCore;
+
+var lengthOfArrayLike$6 = lengthOfArrayLike$q;
+
+var toOffset = toOffset$2;
+
+var toObject$a = toObject$A;
+
+var fails$7 = fails$15;
+
+var aTypedArray$b = ArrayBufferViewCore$c.aTypedArray;
+var exportTypedArrayMethod$c = ArrayBufferViewCore$c.exportTypedArrayMethod;
+var FORCED$5 = fails$7(function () {
+ // eslint-disable-next-line es/no-typed-arrays -- required for testing
+ new Int8Array(1).set({});
+}); // `%TypedArray%.prototype.set` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set
+
+exportTypedArrayMethod$c('set', function set(arrayLike
+/* , offset */
+) {
+ aTypedArray$b(this);
+ var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
+ var length = this.length;
+ var src = toObject$a(arrayLike);
+ var len = lengthOfArrayLike$6(src);
+ var index = 0;
+ if (len + offset > length) throw RangeError('Wrong length');
+
+ while (index < len) this[offset + index] = src[index++];
+}, FORCED$5);
+
+var ArrayBufferViewCore$b = arrayBufferViewCore;
+
+var typedArraySpeciesConstructor$2 = typedArraySpeciesConstructor$5;
+
+var fails$6 = fails$15;
+
+var aTypedArray$a = ArrayBufferViewCore$b.aTypedArray;
+var exportTypedArrayMethod$b = ArrayBufferViewCore$b.exportTypedArrayMethod;
+var $slice$1 = [].slice;
+var FORCED$4 = fails$6(function () {
+ // eslint-disable-next-line es/no-typed-arrays -- required for testing
+ new Int8Array(1).slice();
+}); // `%TypedArray%.prototype.slice` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
+
+exportTypedArrayMethod$b('slice', function slice(start, end) {
+ var list = $slice$1.call(aTypedArray$a(this), start, end);
+ var C = typedArraySpeciesConstructor$2(this);
+ var index = 0;
+ var length = list.length;
+ var result = new C(length);
+
+ while (length > index) result[index] = list[index++];
+
+ return result;
+}, FORCED$4);
+
+var ArrayBufferViewCore$a = arrayBufferViewCore;
+
+var $some$1 = arrayIteration.some;
+
+var aTypedArray$9 = ArrayBufferViewCore$a.aTypedArray;
+var exportTypedArrayMethod$a = ArrayBufferViewCore$a.exportTypedArrayMethod; // `%TypedArray%.prototype.some` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some
+
+exportTypedArrayMethod$a('some', function some(callbackfn
+/* , thisArg */
+) {
+ return $some$1(aTypedArray$9(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$9 = arrayBufferViewCore;
+
+var global$d = global$R;
+
+var fails$5 = fails$15;
+
+var aCallable$B = aCallable$Q;
+
+var lengthOfArrayLike$5 = lengthOfArrayLike$q;
+
+var internalSort = arraySort;
+
+var FF = engineFfVersion;
+
+var IE_OR_EDGE = engineIsIeOrEdge;
+
+var V8 = engineV8Version;
+
+var WEBKIT = engineWebkitVersion;
+
+var aTypedArray$8 = ArrayBufferViewCore$9.aTypedArray;
+var exportTypedArrayMethod$9 = ArrayBufferViewCore$9.exportTypedArrayMethod;
+var Uint16Array = global$d.Uint16Array;
+var nativeSort = Uint16Array && Uint16Array.prototype.sort; // WebKit
+
+var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !fails$5(function () {
+ var array = new Uint16Array(2);
+ array.sort(null);
+ array.sort({});
+});
+var STABLE_SORT = !!nativeSort && !fails$5(function () {
+ // feature detection can be too slow, so check engines versions
+ if (V8) return V8 < 74;
+ if (FF) return FF < 67;
+ if (IE_OR_EDGE) return true;
+ if (WEBKIT) return WEBKIT < 602;
+ var array = new Uint16Array(516);
+ var expected = Array(516);
+ var index, mod;
+
+ for (index = 0; index < 516; index++) {
+ mod = index % 4;
+ array[index] = 515 - index;
+ expected[index] = index - 2 * mod + 3;
+ }
+
+ array.sort(function (a, b) {
+ return (a / 4 | 0) - (b / 4 | 0);
+ });
+
+ for (index = 0; index < 516; index++) {
+ if (array[index] !== expected[index]) return true;
+ }
+});
+
+var getSortCompare = function (comparefn) {
+ return function (x, y) {
+ if (comparefn !== undefined) return +comparefn(x, y) || 0; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (y !== y) return -1; // eslint-disable-next-line no-self-compare -- NaN check
+
+ if (x !== x) return 1;
+ if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;
+ return x > y;
+ };
+}; // `%TypedArray%.prototype.sort` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
+
+
+exportTypedArrayMethod$9('sort', function sort(comparefn) {
+ var array = this;
+ if (comparefn !== undefined) aCallable$B(comparefn);
+ if (STABLE_SORT) return nativeSort.call(array, comparefn);
+ aTypedArray$8(array);
+ var arrayLength = lengthOfArrayLike$5(array);
+ var items = Array(arrayLength);
+ var index;
+
+ for (index = 0; index < arrayLength; index++) {
+ items[index] = array[index];
+ }
+
+ items = internalSort(array, getSortCompare(comparefn));
+
+ for (index = 0; index < arrayLength; index++) {
+ array[index] = items[index];
+ }
+
+ return array;
+}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);
+
+var ArrayBufferViewCore$8 = arrayBufferViewCore;
+
+var toLength = toLength$d;
+
+var toAbsoluteIndex = toAbsoluteIndex$8;
+
+var typedArraySpeciesConstructor$1 = typedArraySpeciesConstructor$5;
+
+var aTypedArray$7 = ArrayBufferViewCore$8.aTypedArray;
+var exportTypedArrayMethod$8 = ArrayBufferViewCore$8.exportTypedArrayMethod; // `%TypedArray%.prototype.subarray` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray
+
+exportTypedArrayMethod$8('subarray', function subarray(begin, end) {
+ var O = aTypedArray$7(this);
+ var length = O.length;
+ var beginIndex = toAbsoluteIndex(begin, length);
+ var C = typedArraySpeciesConstructor$1(O);
+ return new C(O.buffer, O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex));
+});
+
+var global$c = global$R;
+
+var ArrayBufferViewCore$7 = arrayBufferViewCore;
+
+var fails$4 = fails$15;
+
+var Int8Array$1 = global$c.Int8Array;
+var aTypedArray$6 = ArrayBufferViewCore$7.aTypedArray;
+var exportTypedArrayMethod$7 = ArrayBufferViewCore$7.exportTypedArrayMethod;
+var $toLocaleString = [].toLocaleString;
+var $slice = [].slice; // iOS Safari 6.x fails here
+
+var TO_LOCALE_STRING_BUG = !!Int8Array$1 && fails$4(function () {
+ $toLocaleString.call(new Int8Array$1(1));
+});
+var FORCED$3 = fails$4(function () {
+ return [1, 2].toLocaleString() != new Int8Array$1([1, 2]).toLocaleString();
+}) || !fails$4(function () {
+ Int8Array$1.prototype.toLocaleString.call([1, 2]);
+}); // `%TypedArray%.prototype.toLocaleString` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring
+
+exportTypedArrayMethod$7('toLocaleString', function toLocaleString() {
+ return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray$6(this)) : aTypedArray$6(this), arguments);
+}, FORCED$3);
+
+var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod;
+
+var fails$3 = fails$15;
+
+var global$b = global$R;
+
+var Uint8Array = global$b.Uint8Array;
+var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};
+var arrayToString = [].toString;
+var arrayJoin = [].join;
+
+if (fails$3(function () {
+ arrayToString.call({});
+})) {
+ arrayToString = function toString() {
+ return arrayJoin.call(this);
+ };
+}
+
+var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; // `%TypedArray%.prototype.toString` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring
+
+exportTypedArrayMethod$6('toString', arrayToString, IS_NOT_ARRAY_METHOD);
+
+var $$1X = _export;
+
+var toString$1 = toString$t;
+
+var fromCharCode = String.fromCharCode;
+var hex2 = /^[\da-f]{2}$/i;
+var hex4 = /^[\da-f]{4}$/i; // `unescape` method
+// https://tc39.es/ecma262/#sec-unescape-string
+
+$$1X({
+ global: true
+}, {
+ unescape: function unescape(string) {
+ var str = toString$1(string);
+ var result = '';
+ var length = str.length;
+ var index = 0;
+ var chr, slice;
+
+ while (index < length) {
+ chr = str.charAt(index++);
+
+ if (chr === '%') {
+ if (str.charAt(index) === 'u') {
+ slice = str.slice(index + 1, index + 5);
+
+ if (hex4.test(slice)) {
+ result += fromCharCode(parseInt(slice, 16));
+ index += 5;
+ continue;
+ }
+ } else {
+ slice = str.slice(index, index + 2);
+
+ if (hex2.test(slice)) {
+ result += fromCharCode(parseInt(slice, 16));
+ index += 2;
+ continue;
+ }
+ }
+ }
+
+ result += chr;
+ }
+
+ return result;
+ }
+});
+
+var es_weakMap = {exports: {}};
+
+var redefineAll$6 = redefineAll$a;
+
+var getWeakData = internalMetadata.exports.getWeakData;
+
+var anObject$14 = anObject$1C;
+
+var isObject$5 = isObject$C;
+
+var anInstance$5 = anInstance$b;
+
+var iterate$A = iterate$I;
+
+var ArrayIterationModule = arrayIteration;
+
+var hasOwn$5 = hasOwnProperty_1;
+
+var InternalStateModule$a = internalState;
+
+var setInternalState$a = InternalStateModule$a.set;
+var internalStateGetterFor = InternalStateModule$a.getterFor;
+var find$2 = ArrayIterationModule.find;
+var findIndex = ArrayIterationModule.findIndex;
+var id = 0; // fallback for uncaught frozen keys
+
+var uncaughtFrozenStore = function (store) {
+ return store.frozen || (store.frozen = new UncaughtFrozenStore());
+};
+
+var UncaughtFrozenStore = function () {
+ this.entries = [];
+};
+
+var findUncaughtFrozen = function (store, key) {
+ return find$2(store.entries, function (it) {
+ return it[0] === key;
+ });
+};
+
+UncaughtFrozenStore.prototype = {
+ get: function (key) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) return entry[1];
+ },
+ has: function (key) {
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function (key, value) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) entry[1] = value;else this.entries.push([key, value]);
+ },
+ 'delete': function (key) {
+ var index = findIndex(this.entries, function (it) {
+ return it[0] === key;
+ });
+ if (~index) this.entries.splice(index, 1);
+ return !!~index;
+ }
+};
+var collectionWeak$2 = {
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance$5(that, C, CONSTRUCTOR_NAME);
+ setInternalState$a(that, {
+ type: CONSTRUCTOR_NAME,
+ id: id++,
+ frozen: undefined
+ });
+ if (iterable != undefined) iterate$A(iterable, that[ADDER], {
+ that: that,
+ AS_ENTRIES: IS_MAP
+ });
+ });
+ var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
+
+ var define = function (that, key, value) {
+ var state = getInternalState(that);
+ var data = getWeakData(anObject$14(key), true);
+ if (data === true) uncaughtFrozenStore(state).set(key, value);else data[state.id] = value;
+ return that;
+ };
+
+ redefineAll$6(C.prototype, {
+ // `{ WeakMap, WeakSet }.prototype.delete(key)` methods
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.delete
+ // https://tc39.es/ecma262/#sec-weakset.prototype.delete
+ 'delete': function (key) {
+ var state = getInternalState(this);
+ if (!isObject$5(key)) return false;
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state)['delete'](key);
+ return data && hasOwn$5(data, state.id) && delete data[state.id];
+ },
+ // `{ WeakMap, WeakSet }.prototype.has(key)` methods
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.has
+ // https://tc39.es/ecma262/#sec-weakset.prototype.has
+ has: function has(key) {
+ var state = getInternalState(this);
+ if (!isObject$5(key)) return false;
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state).has(key);
+ return data && hasOwn$5(data, state.id);
+ }
+ });
+ redefineAll$6(C.prototype, IS_MAP ? {
+ // `WeakMap.prototype.get(key)` method
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.get
+ get: function get(key) {
+ var state = getInternalState(this);
+
+ if (isObject$5(key)) {
+ var data = getWeakData(key);
+ if (data === true) return uncaughtFrozenStore(state).get(key);
+ return data ? data[state.id] : undefined;
+ }
+ },
+ // `WeakMap.prototype.set(key, value)` method
+ // https://tc39.es/ecma262/#sec-weakmap.prototype.set
+ set: function set(key, value) {
+ return define(this, key, value);
+ }
+ } : {
+ // `WeakSet.prototype.add(value)` method
+ // https://tc39.es/ecma262/#sec-weakset.prototype.add
+ add: function add(value) {
+ return define(this, value, true);
+ }
+ });
+ return C;
+ }
+};
+
+var global$a = global$R;
+
+var redefineAll$5 = redefineAll$a;
+
+var InternalMetadataModule = internalMetadata.exports;
+
+var collection$1 = collection$4;
+
+var collectionWeak$1 = collectionWeak$2;
+
+var isObject$4 = isObject$C;
+
+var enforceIternalState = internalState.enforce;
+
+var NATIVE_WEAK_MAP = nativeWeakMap;
+
+var IS_IE11 = !global$a.ActiveXObject && 'ActiveXObject' in global$a; // eslint-disable-next-line es/no-object-isextensible -- safe
+
+var isExtensible = Object.isExtensible;
+var InternalWeakMap;
+
+var wrapper = function (init) {
+ return function WeakMap() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+}; // `WeakMap` constructor
+// https://tc39.es/ecma262/#sec-weakmap-constructor
+
+
+var $WeakMap = es_weakMap.exports = collection$1('WeakMap', wrapper, collectionWeak$1); // IE11 WeakMap frozen keys fix
+// We can't use feature detection because it crash some old IE builds
+// https://github.com/zloirock/core-js/issues/485
+
+if (NATIVE_WEAK_MAP && IS_IE11) {
+ InternalWeakMap = collectionWeak$1.getConstructor(wrapper, 'WeakMap', true);
+ InternalMetadataModule.enable();
+ var WeakMapPrototype = $WeakMap.prototype;
+ var nativeDelete = WeakMapPrototype['delete'];
+ var nativeHas = WeakMapPrototype.has;
+ var nativeGet = WeakMapPrototype.get;
+ var nativeSet = WeakMapPrototype.set;
+ redefineAll$5(WeakMapPrototype, {
+ 'delete': function (key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeDelete.call(this, key) || state.frozen['delete'](key);
+ }
+
+ return nativeDelete.call(this, key);
+ },
+ has: function has(key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeHas.call(this, key) || state.frozen.has(key);
+ }
+
+ return nativeHas.call(this, key);
+ },
+ get: function get(key) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);
+ }
+
+ return nativeGet.call(this, key);
+ },
+ set: function set(key, value) {
+ if (isObject$4(key) && !isExtensible(key)) {
+ var state = enforceIternalState(this);
+ if (!state.frozen) state.frozen = new InternalWeakMap();
+ nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);
+ } else nativeSet.call(this, key, value);
+
+ return this;
+ }
+ });
+}
+
+var collection = collection$4;
+
+var collectionWeak = collectionWeak$2; // `WeakSet` constructor
+// https://tc39.es/ecma262/#sec-weakset-constructor
+
+
+collection('WeakSet', function (init) {
+ return function WeakSet() {
+ return init(this, arguments.length ? arguments[0] : undefined);
+ };
+}, collectionWeak);
+
+var global$9 = global$R;
+
+var shared$1 = sharedStore;
+
+var isCallable$6 = isCallable$z;
+
+var getPrototypeOf$4 = objectGetPrototypeOf$1;
+
+var redefine$3 = redefine$l.exports;
+
+var wellKnownSymbol$b = wellKnownSymbol$G;
+
+var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';
+var ASYNC_ITERATOR$3 = wellKnownSymbol$b('asyncIterator');
+var AsyncIterator = global$9.AsyncIterator;
+var PassedAsyncIteratorPrototype = shared$1.AsyncIteratorPrototype;
+var AsyncIteratorPrototype$4, prototype;
+
+if (PassedAsyncIteratorPrototype) {
+ AsyncIteratorPrototype$4 = PassedAsyncIteratorPrototype;
+} else if (isCallable$6(AsyncIterator)) {
+ AsyncIteratorPrototype$4 = AsyncIterator.prototype;
+} else if (shared$1[USE_FUNCTION_CONSTRUCTOR] || global$9[USE_FUNCTION_CONSTRUCTOR]) {
+ try {
+ // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax
+ prototype = getPrototypeOf$4(getPrototypeOf$4(getPrototypeOf$4(Function('return async function*(){}()')())));
+ if (getPrototypeOf$4(prototype) === Object.prototype) AsyncIteratorPrototype$4 = prototype;
+ } catch (error) {
+ /* empty */
+ }
+}
+
+if (!AsyncIteratorPrototype$4) AsyncIteratorPrototype$4 = {};
+
+if (!isCallable$6(AsyncIteratorPrototype$4[ASYNC_ITERATOR$3])) {
+ redefine$3(AsyncIteratorPrototype$4, ASYNC_ITERATOR$3, function () {
+ return this;
+ });
+}
+
+var asyncIteratorPrototype = AsyncIteratorPrototype$4;
+
+var anObject$13 = anObject$1C;
+
+var create$5 = objectCreate$1;
+
+var getMethod$7 = getMethod$h;
+
+var redefineAll$4 = redefineAll$a;
+
+var InternalStateModule$9 = internalState;
+
+var getBuiltIn$j = getBuiltIn$y;
+
+var AsyncIteratorPrototype$3 = asyncIteratorPrototype;
+
+var Promise$3 = getBuiltIn$j('Promise');
+var setInternalState$9 = InternalStateModule$9.set;
+var getInternalState$7 = InternalStateModule$9.get;
+
+var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
+ var done = result.done;
+ Promise$3.resolve(result.value).then(function (value) {
+ resolve({
+ done: done,
+ value: value
+ });
+ }, reject);
+};
+
+var AsyncFromSyncIterator$3 = function AsyncIterator(iterator) {
+ setInternalState$9(this, {
+ iterator: anObject$13(iterator),
+ next: iterator.next
+ });
+};
+
+AsyncFromSyncIterator$3.prototype = redefineAll$4(create$5(AsyncIteratorPrototype$3), {
+ next: function next(arg) {
+ var state = getInternalState$7(this);
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var result = anObject$13(state.next.apply(state.iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ },
+ 'return': function (arg) {
+ var iterator = getInternalState$7(this).iterator;
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var $return = getMethod$7(iterator, 'return');
+ if ($return === undefined) return resolve({
+ done: true,
+ value: arg
+ });
+ var result = anObject$13($return.apply(iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ },
+ 'throw': function (arg) {
+ var iterator = getInternalState$7(this).iterator;
+ var hasArg = !!arguments.length;
+ return new Promise$3(function (resolve, reject) {
+ var $throw = getMethod$7(iterator, 'throw');
+ if ($throw === undefined) return reject(arg);
+ var result = anObject$13($throw.apply(iterator, hasArg ? [arg] : []));
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
+ });
+ }
+});
+var asyncFromSyncIterator = AsyncFromSyncIterator$3;
+
+var AsyncFromSyncIterator$2 = asyncFromSyncIterator;
+
+var anObject$12 = anObject$1C;
+
+var getIterator$7 = getIterator$b;
+
+var getMethod$6 = getMethod$h;
+
+var wellKnownSymbol$a = wellKnownSymbol$G;
+
+var ASYNC_ITERATOR$2 = wellKnownSymbol$a('asyncIterator');
+
+var getAsyncIterator$3 = function (it, usingIterator) {
+ var method = arguments.length < 2 ? getMethod$6(it, ASYNC_ITERATOR$2) : usingIterator;
+ return method ? anObject$12(method.call(it)) : new AsyncFromSyncIterator$2(getIterator$7(it));
+};
+
+var global$8 = global$R;
+
+var entryVirtual = function (CONSTRUCTOR) {
+ return global$8[CONSTRUCTOR].prototype;
+};
+
+// https://github.com/tc39/proposal-array-from-async
+
+var aCallable$A = aCallable$Q;
+
+var anObject$11 = anObject$1C;
+
+var getBuiltIn$i = getBuiltIn$y;
+
+var getMethod$5 = getMethod$h;
+
+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
+
+var createMethod$1 = function (TYPE) {
+ var IS_TO_ARRAY = TYPE == 0;
+ var IS_FOR_EACH = TYPE == 1;
+ var IS_EVERY = TYPE == 2;
+ var IS_SOME = TYPE == 3;
+ return function (iterator, fn, target) {
+ anObject$11(iterator);
+ var Promise = getBuiltIn$i('Promise');
+ var next = aCallable$A(iterator.next);
+ var index = 0;
+ var MAPPING = fn !== undefined;
+ if (MAPPING || !IS_TO_ARRAY) aCallable$A(fn);
+ return new Promise(function (resolve, reject) {
+ var closeIteration = function (method, argument) {
+ try {
+ var returnMethod = getMethod$5(iterator, 'return');
+
+ if (returnMethod) {
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
+ method(argument);
+ }, function (error) {
+ reject(error);
+ });
+ }
+ } catch (error2) {
+ return reject(error2);
+ }
+
+ method(argument);
+ };
+
+ var onError = function (error) {
+ closeIteration(reject, error);
+ };
+
+ var loop = function () {
+ try {
+ if (IS_TO_ARRAY && index > MAX_SAFE_INTEGER && MAPPING) {
+ throw TypeError('The allowed number of iterations has been exceeded');
+ }
+
+ Promise.resolve(anObject$11(next.call(iterator))).then(function (step) {
+ try {
+ if (anObject$11(step).done) {
+ if (IS_TO_ARRAY) {
+ target.length = index;
+ resolve(target);
+ } else resolve(IS_SOME ? false : IS_EVERY || undefined);
+ } else {
+ var value = step.value;
+
+ if (MAPPING) {
+ Promise.resolve(IS_TO_ARRAY ? fn(value, index) : fn(value)).then(function (result) {
+ if (IS_FOR_EACH) {
+ loop();
+ } else if (IS_EVERY) {
+ result ? loop() : closeIteration(resolve, false);
+ } else if (IS_TO_ARRAY) {
+ target[index++] = result;
+ loop();
+ } else {
+ result ? closeIteration(resolve, IS_SOME || value) : loop();
+ }
+ }, onError);
+ } else {
+ target[index++] = value;
+ loop();
+ }
+ }
+ } catch (error) {
+ onError(error);
+ }
+ }, onError);
+ } catch (error2) {
+ onError(error2);
+ }
+ };
+
+ loop();
+ });
+ };
+};
+
+var asyncIteratorIteration = {
+ toArray: createMethod$1(0),
+ forEach: createMethod$1(1),
+ every: createMethod$1(2),
+ some: createMethod$1(3),
+ find: createMethod$1(4)
+};
+
+var bind$g = functionBindContext;
+
+var toObject$9 = toObject$A;
+
+var isConstructor$1 = isConstructor$7;
+
+var getAsyncIterator$2 = getAsyncIterator$3;
+
+var getIterator$6 = getIterator$b;
+
+var getIteratorMethod$4 = getIteratorMethod$9;
+
+var getMethod$4 = getMethod$h;
+
+var getVirtual = entryVirtual;
+
+var getBuiltIn$h = getBuiltIn$y;
+
+var wellKnownSymbol$9 = wellKnownSymbol$G;
+
+var AsyncFromSyncIterator$1 = asyncFromSyncIterator;
+
+var toArray = asyncIteratorIteration.toArray;
+
+var ASYNC_ITERATOR$1 = wellKnownSymbol$9('asyncIterator');
+var arrayIterator = getVirtual('Array').values; // `Array.fromAsync` method implementation
+// https://github.com/tc39/proposal-array-from-async
+
+var arrayFromAsync$1 = function fromAsync(asyncItems
+/* , mapfn = undefined, thisArg = undefined */
+) {
+ var C = this;
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+ return new (getBuiltIn$h('Promise'))(function (resolve) {
+ var O = toObject$9(asyncItems);
+ if (mapfn !== undefined) mapfn = bind$g(mapfn, thisArg, 2);
+ var usingAsyncIterator = getMethod$4(O, ASYNC_ITERATOR$1);
+ var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod$4(O) || arrayIterator;
+ var A = isConstructor$1(C) ? new C() : [];
+ var iterator = usingAsyncIterator ? getAsyncIterator$2(O, usingAsyncIterator) : new AsyncFromSyncIterator$1(getIterator$6(O, usingSyncIterator));
+ resolve(toArray(iterator, mapfn, A));
+ });
+};
+
+var $$1W = _export;
+
+var fromAsync = arrayFromAsync$1; // `Array.fromAsync` method
+// https://github.com/tc39/proposal-array-from-async
+
+
+$$1W({
+ target: 'Array',
+ stat: true
+}, {
+ fromAsync: fromAsync
+});
+
+var $$1V = _export;
+
+var $filterReject$3 = arrayIteration.filterReject;
+
+var addToUnscopables$7 = addToUnscopables$h; // `Array.prototype.filterOut` method
+// https://github.com/tc39/proposal-array-filtering
+
+
+$$1V({
+ target: 'Array',
+ proto: true
+}, {
+ filterOut: function filterOut(callbackfn
+ /* , thisArg */
+ ) {
+ return $filterReject$3(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+addToUnscopables$7('filterOut');
+
+var $$1U = _export;
+
+var $filterReject$2 = arrayIteration.filterReject;
+
+var addToUnscopables$6 = addToUnscopables$h; // `Array.prototype.filterReject` method
+// https://github.com/tc39/proposal-array-filtering
+
+
+$$1U({
+ target: 'Array',
+ proto: true
+}, {
+ filterReject: function filterReject(callbackfn
+ /* , thisArg */
+ ) {
+ return $filterReject$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+addToUnscopables$6('filterReject');
+
+var bind$f = functionBindContext;
+
+var IndexedObject$1 = indexedObject;
+
+var toObject$8 = toObject$A;
+
+var lengthOfArrayLike$4 = lengthOfArrayLike$q; // `Array.prototype.{ findLast, findLastIndex }` methods implementation
+
+
+var createMethod = function (TYPE) {
+ var IS_FIND_LAST_INDEX = TYPE == 1;
+ return function ($this, callbackfn, that) {
+ var O = toObject$8($this);
+ var self = IndexedObject$1(O);
+ var boundFunction = bind$f(callbackfn, that, 3);
+ var index = lengthOfArrayLike$4(self);
+ var value, result;
+
+ while (index-- > 0) {
+ value = self[index];
+ result = boundFunction(value, index, O);
+ if (result) switch (TYPE) {
+ case 0:
+ return value;
+ // findLast
+
+ case 1:
+ return index;
+ // findLastIndex
+ }
+ }
+
+ return IS_FIND_LAST_INDEX ? -1 : undefined;
+ };
+};
+
+var arrayIterationFromLast = {
+ // `Array.prototype.findLast` method
+ // https://github.com/tc39/proposal-array-find-from-last
+ findLast: createMethod(0),
+ // `Array.prototype.findLastIndex` method
+ // https://github.com/tc39/proposal-array-find-from-last
+ findLastIndex: createMethod(1)
+};
+
+var $$1T = _export;
+
+var $findLast$1 = arrayIterationFromLast.findLast;
+
+var addToUnscopables$5 = addToUnscopables$h; // `Array.prototype.findLast` method
+// https://github.com/tc39/proposal-array-find-from-last
+
+
+$$1T({
+ target: 'Array',
+ proto: true
+}, {
+ findLast: function findLast(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findLast$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+addToUnscopables$5('findLast');
+
+var $$1S = _export;
+
+var $findLastIndex$1 = arrayIterationFromLast.findLastIndex;
+
+var addToUnscopables$4 = addToUnscopables$h; // `Array.prototype.findLastIndex` method
+// https://github.com/tc39/proposal-array-find-from-last
+
+
+$$1S({
+ target: 'Array',
+ proto: true
+}, {
+ findLastIndex: function findLastIndex(callbackfn
+ /* , that = undefined */
+ ) {
+ return $findLastIndex$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+addToUnscopables$4('findLastIndex');
+
+var bind$e = functionBindContext;
+
+var IndexedObject = indexedObject;
+
+var toObject$7 = toObject$A;
+
+var toPropertyKey = toPropertyKey$9;
+
+var lengthOfArrayLike$3 = lengthOfArrayLike$q;
+
+var objectCreate = objectCreate$1;
+
+var arrayFromConstructorAndList$1 = arrayFromConstructorAndList$3;
+
+var push$2 = [].push;
+
+var arrayGroupBy = function ($this, callbackfn, that, specificConstructor) {
+ var O = toObject$7($this);
+ var self = IndexedObject(O);
+ var boundFunction = bind$e(callbackfn, that, 3);
+ var target = objectCreate(null);
+ var length = lengthOfArrayLike$3(self);
+ var index = 0;
+ var Constructor, key, value;
+
+ for (; length > index; index++) {
+ value = self[index];
+ key = toPropertyKey(boundFunction(value, index, O)); // in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys
+ // but since it's a `null` prototype object, we can safely use `in`
+
+ if (key in target) push$2.call(target[key], value);else target[key] = [value];
+ }
+
+ if (specificConstructor) {
+ Constructor = specificConstructor(O);
+
+ if (Constructor !== Array) {
+ for (key in target) target[key] = arrayFromConstructorAndList$1(Constructor, target[key]);
+ }
+ }
+
+ return target;
+};
+
+var $$1R = _export;
+
+var $groupBy$1 = arrayGroupBy;
+
+var arraySpeciesConstructor = arraySpeciesConstructor$2;
+
+var addToUnscopables$3 = addToUnscopables$h; // `Array.prototype.groupBy` method
+// https://github.com/tc39/proposal-array-grouping
+
+
+$$1R({
+ target: 'Array',
+ proto: true
+}, {
+ groupBy: function groupBy(callbackfn
+ /* , thisArg */
+ ) {
+ var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+ return $groupBy$1(this, callbackfn, thisArg, arraySpeciesConstructor);
+ }
+});
+addToUnscopables$3('groupBy');
+
+var $$1Q = _export;
+
+var isArray = isArray$8; // eslint-disable-next-line es/no-object-isfrozen -- safe
+
+
+var isFrozen = Object.isFrozen;
+
+var isFrozenStringArray = function (array, allowUndefined) {
+ if (!isFrozen || !isArray(array) || !isFrozen(array)) return false;
+ var index = 0;
+ var length = array.length;
+ var element;
+
+ while (index < length) {
+ element = array[index++];
+
+ if (!(typeof element === 'string' || allowUndefined && typeof element === 'undefined')) {
+ return false;
+ }
+ }
+
+ return length !== 0;
+}; // `Array.isTemplateObject` method
+// https://github.com/tc39/proposal-array-is-template-object
+
+
+$$1Q({
+ target: 'Array',
+ stat: true
+}, {
+ isTemplateObject: function isTemplateObject(value) {
+ if (!isFrozenStringArray(value, true)) return false;
+ var raw = value.raw;
+ if (raw.length !== value.length || !isFrozenStringArray(raw, false)) return false;
+ return true;
+ }
+});
+
+var DESCRIPTORS$4 = descriptors;
+
+var addToUnscopables$2 = addToUnscopables$h;
+
+var toObject$6 = toObject$A;
+
+var lengthOfArrayLike$2 = lengthOfArrayLike$q;
+
+var defineProperty$3 = objectDefineProperty.f; // `Array.prototype.lastIndex` getter
+// https://github.com/keithamus/proposal-array-last
+
+
+if (DESCRIPTORS$4 && !('lastIndex' in [])) {
+ defineProperty$3(Array.prototype, 'lastIndex', {
+ configurable: true,
+ get: function lastIndex() {
+ var O = toObject$6(this);
+ var len = lengthOfArrayLike$2(O);
+ return len == 0 ? 0 : len - 1;
+ }
+ });
+ addToUnscopables$2('lastIndex');
+}
+
+var DESCRIPTORS$3 = descriptors;
+
+var addToUnscopables$1 = addToUnscopables$h;
+
+var toObject$5 = toObject$A;
+
+var lengthOfArrayLike$1 = lengthOfArrayLike$q;
+
+var defineProperty$2 = objectDefineProperty.f; // `Array.prototype.lastIndex` accessor
+// https://github.com/keithamus/proposal-array-last
+
+
+if (DESCRIPTORS$3 && !('lastItem' in [])) {
+ defineProperty$2(Array.prototype, 'lastItem', {
+ configurable: true,
+ get: function lastItem() {
+ var O = toObject$5(this);
+ var len = lengthOfArrayLike$1(O);
+ return len == 0 ? undefined : O[len - 1];
+ },
+ set: function lastItem(value) {
+ var O = toObject$5(this);
+ var len = lengthOfArrayLike$1(O);
+ return O[len == 0 ? 0 : len - 1] = value;
+ }
+ });
+ addToUnscopables$1('lastItem');
+}
+
+var aCallable$z = aCallable$Q;
+
+var lengthOfArrayLike = lengthOfArrayLike$q;
+
+var toObject$4 = toObject$A;
+
+var getBuiltIn$g = getBuiltIn$y;
+
+var arraySpeciesCreate = arraySpeciesCreate$6;
+
+var push$1 = [].push; // `Array.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+
+var arrayUniqueBy$1 = function uniqueBy(resolver) {
+ var that = toObject$4(this);
+ var length = lengthOfArrayLike(that);
+ var result = arraySpeciesCreate(that, 0);
+ var Map = getBuiltIn$g('Map');
+ var map = new Map();
+ var resolverFunction, index, item, key;
+ if (resolver != null) resolverFunction = aCallable$z(resolver);else resolverFunction = function (value) {
+ return value;
+ };
+
+ for (index = 0; index < length; index++) {
+ item = that[index];
+ key = resolverFunction(item);
+ if (!map.has(key)) map.set(key, item);
+ }
+
+ map.forEach(function (value) {
+ push$1.call(result, value);
+ });
+ return result;
+};
+
+var $$1P = _export;
+
+var addToUnscopables = addToUnscopables$h;
+
+var uniqueBy = arrayUniqueBy$1; // `Array.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+
+
+$$1P({
+ target: 'Array',
+ proto: true
+}, {
+ uniqueBy: uniqueBy
+});
+addToUnscopables('uniqueBy');
+
+var $$1O = _export;
+
+var anInstance$4 = anInstance$b;
+
+var createNonEnumerableProperty$5 = createNonEnumerableProperty$h;
+
+var hasOwn$4 = hasOwnProperty_1;
+
+var wellKnownSymbol$8 = wellKnownSymbol$G;
+
+var AsyncIteratorPrototype$2 = asyncIteratorPrototype;
+
+var IS_PURE$C = isPure;
+
+var TO_STRING_TAG$4 = wellKnownSymbol$8('toStringTag');
+
+var AsyncIteratorConstructor = function AsyncIterator() {
+ anInstance$4(this, AsyncIteratorConstructor);
+};
+
+AsyncIteratorConstructor.prototype = AsyncIteratorPrototype$2;
+
+if (!hasOwn$4(AsyncIteratorPrototype$2, TO_STRING_TAG$4)) {
+ createNonEnumerableProperty$5(AsyncIteratorPrototype$2, TO_STRING_TAG$4, 'AsyncIterator');
+}
+
+if (!hasOwn$4(AsyncIteratorPrototype$2, 'constructor') || AsyncIteratorPrototype$2.constructor === Object) {
+ createNonEnumerableProperty$5(AsyncIteratorPrototype$2, 'constructor', AsyncIteratorConstructor);
+}
+
+$$1O({
+ global: true,
+ forced: IS_PURE$C
+}, {
+ AsyncIterator: AsyncIteratorConstructor
+});
+
+var aCallable$y = aCallable$Q;
+
+var anObject$10 = anObject$1C;
+
+var create$4 = objectCreate$1;
+
+var createNonEnumerableProperty$4 = createNonEnumerableProperty$h;
+
+var redefineAll$3 = redefineAll$a;
+
+var wellKnownSymbol$7 = wellKnownSymbol$G;
+
+var InternalStateModule$8 = internalState;
+
+var getBuiltIn$f = getBuiltIn$y;
+
+var getMethod$3 = getMethod$h;
+
+var AsyncIteratorPrototype$1 = asyncIteratorPrototype;
+
+var Promise$2 = getBuiltIn$f('Promise');
+var setInternalState$8 = InternalStateModule$8.set;
+var getInternalState$6 = InternalStateModule$8.get;
+var TO_STRING_TAG$3 = wellKnownSymbol$7('toStringTag');
+
+var asyncIteratorCreateProxy = function (nextHandler, IS_ITERATOR) {
+ var AsyncIteratorProxy = function AsyncIterator(state) {
+ state.next = aCallable$y(state.iterator.next);
+ state.done = false;
+ state.ignoreArgument = !IS_ITERATOR;
+ setInternalState$8(this, state);
+ };
+
+ AsyncIteratorProxy.prototype = redefineAll$3(create$4(AsyncIteratorPrototype$1), {
+ next: function next(arg) {
+ var that = this;
+ var hasArgument = !!arguments.length;
+ return new Promise$2(function (resolve) {
+ var state = getInternalState$6(that);
+ var args = hasArgument ? [state.ignoreArgument ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
+ state.ignoreArgument = false;
+ resolve(state.done ? {
+ done: true,
+ value: undefined
+ } : anObject$10(nextHandler.call(state, Promise$2, args)));
+ });
+ },
+ 'return': function (value) {
+ var that = this;
+ return new Promise$2(function (resolve, reject) {
+ var state = getInternalState$6(that);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$return = getMethod$3(iterator, 'return');
+ if ($$return === undefined) return resolve({
+ done: true,
+ value: value
+ });
+ Promise$2.resolve($$return.call(iterator, value)).then(function (result) {
+ anObject$10(result);
+ resolve({
+ done: true,
+ value: value
+ });
+ }, reject);
+ });
+ },
+ 'throw': function (value) {
+ var that = this;
+ return new Promise$2(function (resolve, reject) {
+ var state = getInternalState$6(that);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$throw = getMethod$3(iterator, 'throw');
+ if ($$throw === undefined) return reject(value);
+ resolve($$throw.call(iterator, value));
+ });
+ }
+ });
+
+ if (!IS_ITERATOR) {
+ createNonEnumerableProperty$4(AsyncIteratorProxy.prototype, TO_STRING_TAG$3, 'Generator');
+ }
+
+ return AsyncIteratorProxy;
+};
+
+var $$1N = _export;
+
+var anObject$$ = anObject$1C;
+
+var createAsyncIteratorProxy$6 = asyncIteratorCreateProxy;
+
+var AsyncIteratorProxy$6 = createAsyncIteratorProxy$6(function (Promise, args) {
+ var state = this;
+ var iterator = state.iterator;
+ return Promise.resolve(anObject$$(state.next.apply(iterator, args))).then(function (step) {
+ if (anObject$$(step).done) {
+ state.done = true;
+ return {
+ done: true,
+ value: undefined
+ };
+ }
+
+ return {
+ done: false,
+ value: [state.index++, step.value]
+ };
+ });
+});
+$$1N({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ asIndexedPairs: function asIndexedPairs() {
+ return new AsyncIteratorProxy$6({
+ iterator: anObject$$(this),
+ index: 0
+ });
+ }
+});
+
+var $$1M = _export;
+
+var anObject$_ = anObject$1C;
+
+var toPositiveInteger$3 = toPositiveInteger$5;
+
+var createAsyncIteratorProxy$5 = asyncIteratorCreateProxy;
+
+var AsyncIteratorProxy$5 = createAsyncIteratorProxy$5(function (Promise, args) {
+ var state = this;
+ return new Promise(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise.resolve(anObject$_(state.next.apply(state.iterator, state.remaining ? [] : args))).then(function (step) {
+ try {
+ if (anObject$_(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else if (state.remaining) {
+ state.remaining--;
+ loop();
+ } else resolve({
+ done: false,
+ value: step.value
+ });
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+});
+$$1M({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ drop: function drop(limit) {
+ return new AsyncIteratorProxy$5({
+ iterator: anObject$_(this),
+ remaining: toPositiveInteger$3(limit)
+ });
+ }
+});
+
+var $$1L = _export;
+
+var $every = asyncIteratorIteration.every;
+
+$$1L({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ every: function every(fn) {
+ return $every(this, fn);
+ }
+});
+
+var $$1K = _export;
+
+var aCallable$x = aCallable$Q;
+
+var anObject$Z = anObject$1C;
+
+var createAsyncIteratorProxy$4 = asyncIteratorCreateProxy;
+
+var AsyncIteratorProxy$4 = createAsyncIteratorProxy$4(function (Promise, args) {
+ var state = this;
+ var filterer = state.filterer;
+ return new Promise(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise.resolve(anObject$Z(state.next.apply(state.iterator, args))).then(function (step) {
+ try {
+ if (anObject$Z(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else {
+ var value = step.value;
+ Promise.resolve(filterer(value)).then(function (selected) {
+ selected ? resolve({
+ done: false,
+ value: value
+ }) : loop();
+ }, reject);
+ }
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+});
+$$1K({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ filter: function filter(filterer) {
+ return new AsyncIteratorProxy$4({
+ iterator: anObject$Z(this),
+ filterer: aCallable$x(filterer)
+ });
+ }
+});
+
+var $$1J = _export;
+
+var $find = asyncIteratorIteration.find;
+
+$$1J({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ find: function find(fn) {
+ return $find(this, fn);
+ }
+});
+
+var $$1I = _export;
+
+var aCallable$w = aCallable$Q;
+
+var anObject$Y = anObject$1C;
+
+var createAsyncIteratorProxy$3 = asyncIteratorCreateProxy;
+
+var getAsyncIterator$1 = getAsyncIterator$3;
+
+var AsyncIteratorProxy$3 = createAsyncIteratorProxy$3(function (Promise) {
+ var state = this;
+ var mapper = state.mapper;
+ var innerIterator;
+ return new Promise(function (resolve, reject) {
+ var outerLoop = function () {
+ try {
+ Promise.resolve(anObject$Y(state.next.call(state.iterator))).then(function (step) {
+ try {
+ if (anObject$Y(step).done) {
+ state.done = true;
+ resolve({
+ done: true,
+ value: undefined
+ });
+ } else {
+ Promise.resolve(mapper(step.value)).then(function (mapped) {
+ try {
+ state.innerIterator = innerIterator = getAsyncIterator$1(mapped);
+ state.innerNext = aCallable$w(innerIterator.next);
+ return innerLoop();
+ } catch (error2) {
+ reject(error2);
+ }
+ }, reject);
+ }
+ } catch (error1) {
+ reject(error1);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ var innerLoop = function () {
+ if (innerIterator = state.innerIterator) {
+ try {
+ Promise.resolve(anObject$Y(state.innerNext.call(innerIterator))).then(function (result) {
+ try {
+ if (anObject$Y(result).done) {
+ state.innerIterator = state.innerNext = null;
+ outerLoop();
+ } else resolve({
+ done: false,
+ value: result.value
+ });
+ } catch (error1) {
+ reject(error1);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ } else outerLoop();
+ };
+
+ innerLoop();
+ });
+});
+$$1I({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ flatMap: function flatMap(mapper) {
+ return new AsyncIteratorProxy$3({
+ iterator: anObject$Y(this),
+ mapper: aCallable$w(mapper),
+ innerIterator: null,
+ innerNext: null
+ });
+ }
+});
+
+var $$1H = _export;
+
+var $forEach = asyncIteratorIteration.forEach;
+
+$$1H({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ forEach: function forEach(fn) {
+ return $forEach(this, fn);
+ }
+});
+
+// https://github.com/tc39/proposal-iterator-helpers
+var $$1G = _export;
+
+var anObject$X = anObject$1C;
+
+var toObject$3 = toObject$A;
+
+var AsyncIteratorPrototype = asyncIteratorPrototype;
+
+var createAsyncIteratorProxy$2 = asyncIteratorCreateProxy;
+
+var getAsyncIterator = getAsyncIterator$3;
+
+var getIterator$5 = getIterator$b;
+
+var getIteratorMethod$3 = getIteratorMethod$9;
+
+var getMethod$2 = getMethod$h;
+
+var wellKnownSymbol$6 = wellKnownSymbol$G;
+
+var AsyncFromSyncIterator = asyncFromSyncIterator;
+
+var ASYNC_ITERATOR = wellKnownSymbol$6('asyncIterator');
+var isPrototypeOf$1 = {}.isPrototypeOf;
+var AsyncIteratorProxy$2 = createAsyncIteratorProxy$2(function (Promise, args) {
+ return anObject$X(this.next.apply(this.iterator, args));
+}, true);
+$$1G({
+ target: 'AsyncIterator',
+ stat: true
+}, {
+ from: function from(O) {
+ var object = toObject$3(O);
+ var usingIterator = getMethod$2(object, ASYNC_ITERATOR);
+ var iterator;
+
+ if (usingIterator) {
+ iterator = getAsyncIterator(object, usingIterator);
+ if (isPrototypeOf$1.call(AsyncIteratorPrototype, iterator)) return iterator;
+ }
+
+ if (iterator === undefined) {
+ usingIterator = getIteratorMethod$3(object);
+ if (usingIterator) return new AsyncFromSyncIterator(getIterator$5(object, usingIterator));
+ }
+
+ return new AsyncIteratorProxy$2({
+ iterator: iterator !== undefined ? iterator : object
+ });
+ }
+});
+
+var $$1F = _export;
+
+var aCallable$v = aCallable$Q;
+
+var anObject$W = anObject$1C;
+
+var createAsyncIteratorProxy$1 = asyncIteratorCreateProxy;
+
+var AsyncIteratorProxy$1 = createAsyncIteratorProxy$1(function (Promise, args) {
+ var state = this;
+ var mapper = state.mapper;
+ return Promise.resolve(anObject$W(state.next.apply(state.iterator, args))).then(function (step) {
+ if (anObject$W(step).done) {
+ state.done = true;
+ return {
+ done: true,
+ value: undefined
+ };
+ }
+
+ return Promise.resolve(mapper(step.value)).then(function (value) {
+ return {
+ done: false,
+ value: value
+ };
+ });
+ });
+});
+$$1F({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ map: function map(mapper) {
+ return new AsyncIteratorProxy$1({
+ iterator: anObject$W(this),
+ mapper: aCallable$v(mapper)
+ });
+ }
+});
+
+var $$1E = _export;
+
+var aCallable$u = aCallable$Q;
+
+var anObject$V = anObject$1C;
+
+var getBuiltIn$e = getBuiltIn$y;
+
+var Promise$1 = getBuiltIn$e('Promise');
+$$1E({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ reduce: function reduce(reducer
+ /* , initialValue */
+ ) {
+ var iterator = anObject$V(this);
+ var next = aCallable$u(iterator.next);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$u(reducer);
+ return new Promise$1(function (resolve, reject) {
+ var loop = function () {
+ try {
+ Promise$1.resolve(anObject$V(next.call(iterator))).then(function (step) {
+ try {
+ if (anObject$V(step).done) {
+ noInitial ? reject(TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator);
+ } else {
+ var value = step.value;
+
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ loop();
+ } else {
+ Promise$1.resolve(reducer(accumulator, value)).then(function (result) {
+ accumulator = result;
+ loop();
+ }, reject);
+ }
+ }
+ } catch (err) {
+ reject(err);
+ }
+ }, reject);
+ } catch (error) {
+ reject(error);
+ }
+ };
+
+ loop();
+ });
+ }
+});
+
+var $$1D = _export;
+
+var $some = asyncIteratorIteration.some;
+
+$$1D({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ some: function some(fn) {
+ return $some(this, fn);
+ }
+});
+
+var $$1C = _export;
+
+var anObject$U = anObject$1C;
+
+var toPositiveInteger$2 = toPositiveInteger$5;
+
+var createAsyncIteratorProxy = asyncIteratorCreateProxy;
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
+ var iterator = this.iterator;
+ var returnMethod, result;
+
+ if (!this.remaining--) {
+ result = {
+ done: true,
+ value: undefined
+ };
+ this.done = true;
+ returnMethod = iterator['return'];
+
+ if (returnMethod !== undefined) {
+ return Promise.resolve(returnMethod.call(iterator)).then(function () {
+ return result;
+ });
+ }
+
+ return result;
+ }
+
+ return this.next.apply(iterator, args);
+});
+$$1C({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ take: function take(limit) {
+ return new AsyncIteratorProxy({
+ iterator: anObject$U(this),
+ remaining: toPositiveInteger$2(limit)
+ });
+ }
+});
+
+var $$1B = _export;
+
+var $toArray = asyncIteratorIteration.toArray;
+
+$$1B({
+ target: 'AsyncIterator',
+ proto: true,
+ real: true
+}, {
+ toArray: function toArray() {
+ return $toArray(this, undefined, []);
+ }
+});
+
+var InternalStateModule$7 = internalState;
+
+var createIteratorConstructor$4 = createIteratorConstructor$7;
+
+var isObject$3 = isObject$C;
+
+var defineProperties$1 = objectDefineProperties;
+
+var DESCRIPTORS$2 = descriptors;
+
+var INCORRECT_RANGE = 'Incorrect Number.range arguments';
+var NUMERIC_RANGE_ITERATOR = 'NumericRangeIterator';
+var setInternalState$7 = InternalStateModule$7.set;
+var getInternalState$5 = InternalStateModule$7.getterFor(NUMERIC_RANGE_ITERATOR);
+var $RangeIterator = createIteratorConstructor$4(function NumericRangeIterator(start, end, option, type, zero, one) {
+ if (typeof start != type || end !== Infinity && end !== -Infinity && typeof end != type) {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (start === Infinity || start === -Infinity) {
+ throw new RangeError(INCORRECT_RANGE);
+ }
+
+ var ifIncrease = end > start;
+ var inclusiveEnd = false;
+ var step;
+
+ if (option === undefined) {
+ step = undefined;
+ } else if (isObject$3(option)) {
+ step = option.step;
+ inclusiveEnd = !!option.inclusive;
+ } else if (typeof option == type) {
+ step = option;
+ } else {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (step == null) {
+ step = ifIncrease ? one : -one;
+ }
+
+ if (typeof step != type) {
+ throw new TypeError(INCORRECT_RANGE);
+ }
+
+ if (step === Infinity || step === -Infinity || step === zero && start !== end) {
+ throw new RangeError(INCORRECT_RANGE);
+ } // eslint-disable-next-line no-self-compare -- NaN check
+
+
+ var hitsEnd = start != start || end != end || step != step || end > start !== step > zero;
+ setInternalState$7(this, {
+ type: NUMERIC_RANGE_ITERATOR,
+ start: start,
+ end: end,
+ step: step,
+ inclusiveEnd: inclusiveEnd,
+ hitsEnd: hitsEnd,
+ currentCount: zero,
+ zero: zero
+ });
+
+ if (!DESCRIPTORS$2) {
+ this.start = start;
+ this.end = end;
+ this.step = step;
+ this.inclusive = inclusiveEnd;
+ }
+}, NUMERIC_RANGE_ITERATOR, function next() {
+ var state = getInternalState$5(this);
+ if (state.hitsEnd) return {
+ value: undefined,
+ done: true
+ };
+ var start = state.start;
+ var end = state.end;
+ var step = state.step;
+ var currentYieldingValue = start + step * state.currentCount++;
+ if (currentYieldingValue === end) state.hitsEnd = true;
+ var inclusiveEnd = state.inclusiveEnd;
+ var endCondition;
+
+ if (end > start) {
+ endCondition = inclusiveEnd ? currentYieldingValue > end : currentYieldingValue >= end;
+ } else {
+ endCondition = inclusiveEnd ? end > currentYieldingValue : end >= currentYieldingValue;
+ }
+
+ if (endCondition) {
+ return {
+ value: undefined,
+ done: state.hitsEnd = true
+ };
+ }
+
+ return {
+ value: currentYieldingValue,
+ done: false
+ };
+});
+
+var getter = function (fn) {
+ return {
+ get: fn,
+ set: function () {
+ /* empty */
+ },
+ configurable: true,
+ enumerable: false
+ };
+};
+
+if (DESCRIPTORS$2) {
+ defineProperties$1($RangeIterator.prototype, {
+ start: getter(function () {
+ return getInternalState$5(this).start;
+ }),
+ end: getter(function () {
+ return getInternalState$5(this).end;
+ }),
+ inclusive: getter(function () {
+ return getInternalState$5(this).inclusiveEnd;
+ }),
+ step: getter(function () {
+ return getInternalState$5(this).step;
+ })
+ });
+}
+
+var numericRangeIterator = $RangeIterator;
+
+/* eslint-disable es/no-bigint -- safe */
+
+var $$1A = _export;
+
+var NumericRangeIterator$1 = numericRangeIterator; // `BigInt.range` method
+// https://github.com/tc39/proposal-Number.range
+
+
+if (typeof BigInt == 'function') {
+ $$1A({
+ target: 'BigInt',
+ stat: true
+ }, {
+ range: function range(start, end, option) {
+ return new NumericRangeIterator$1(start, end, option, 'bigint', BigInt(0), BigInt(1));
+ }
+ });
+}
+
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+var Map$2 = es_map;
+
+var WeakMap$1 = es_weakMap.exports;
+
+var create$3 = objectCreate$1;
+
+var isObject$2 = isObject$C;
+
+var Node = function () {
+ // keys
+ this.object = null;
+ this.symbol = null; // child nodes
+
+ this.primitives = null;
+ this.objectsByIndex = create$3(null);
+};
+
+Node.prototype.get = function (key, initializer) {
+ return this[key] || (this[key] = initializer());
+};
+
+Node.prototype.next = function (i, it, IS_OBJECT) {
+ var store = IS_OBJECT ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new WeakMap$1()) : this.primitives || (this.primitives = new Map$2());
+ var entry = store.get(it);
+ if (!entry) store.set(it, entry = new Node());
+ return entry;
+};
+
+var root$1 = new Node();
+
+var compositeKey = function () {
+ var active = root$1;
+ var length = arguments.length;
+ var i, it; // for prevent leaking, start from objects
+
+ for (i = 0; i < length; i++) {
+ if (isObject$2(it = arguments[i])) active = active.next(i, it, true);
+ }
+
+ if (this === Object && active === root$1) throw TypeError('Composite keys must contain a non-primitive component');
+
+ for (i = 0; i < length; i++) {
+ if (!isObject$2(it = arguments[i])) active = active.next(i, it, false);
+ }
+
+ return active;
+};
+
+var $$1z = _export;
+
+var getCompositeKeyNode$1 = compositeKey;
+
+var getBuiltIn$d = getBuiltIn$y;
+
+var create$2 = objectCreate$1;
+
+var initializer = function () {
+ var freeze = getBuiltIn$d('Object', 'freeze');
+ return freeze ? freeze(create$2(null)) : create$2(null);
+}; // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+
+
+$$1z({
+ global: true
+}, {
+ compositeKey: function compositeKey() {
+ return getCompositeKeyNode$1.apply(Object, arguments).get('object', initializer);
+ }
+});
+
+var $$1y = _export;
+
+var getCompositeKeyNode = compositeKey;
+
+var getBuiltIn$c = getBuiltIn$y; // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+
+
+$$1y({
+ global: true
+}, {
+ compositeSymbol: function compositeSymbol() {
+ if (arguments.length === 1 && typeof arguments[0] === 'string') return getBuiltIn$c('Symbol')['for'](arguments[0]);
+ return getCompositeKeyNode.apply(null, arguments).get('symbol', getBuiltIn$c('Symbol'));
+ }
+});
+
+var $$1x = _export;
+
+var global$7 = global$R;
+
+var anInstance$3 = anInstance$b;
+
+var isCallable$5 = isCallable$z;
+
+var createNonEnumerableProperty$3 = createNonEnumerableProperty$h;
+
+var fails$2 = fails$15;
+
+var hasOwn$3 = hasOwnProperty_1;
+
+var wellKnownSymbol$5 = wellKnownSymbol$G;
+
+var IteratorPrototype$2 = iteratorsCore.IteratorPrototype;
+
+var TO_STRING_TAG$2 = wellKnownSymbol$5('toStringTag');
+var NativeIterator = global$7.Iterator; // FF56- have non-standard global helper `Iterator`
+
+var FORCED$2 = !isCallable$5(NativeIterator) || NativeIterator.prototype !== IteratorPrototype$2 // FF44- non-standard `Iterator` passes previous tests
+|| !fails$2(function () {
+ NativeIterator({});
+});
+
+var IteratorConstructor = function Iterator() {
+ anInstance$3(this, IteratorConstructor);
+};
+
+if (!hasOwn$3(IteratorPrototype$2, TO_STRING_TAG$2)) {
+ createNonEnumerableProperty$3(IteratorPrototype$2, TO_STRING_TAG$2, 'Iterator');
+}
+
+if (FORCED$2 || !hasOwn$3(IteratorPrototype$2, 'constructor') || IteratorPrototype$2.constructor === Object) {
+ createNonEnumerableProperty$3(IteratorPrototype$2, 'constructor', IteratorConstructor);
+}
+
+IteratorConstructor.prototype = IteratorPrototype$2;
+$$1x({
+ global: true,
+ forced: FORCED$2
+}, {
+ Iterator: IteratorConstructor
+});
+
+var aCallable$t = aCallable$Q;
+
+var anObject$T = anObject$1C;
+
+var create$1 = objectCreate$1;
+
+var createNonEnumerableProperty$2 = createNonEnumerableProperty$h;
+
+var redefineAll$2 = redefineAll$a;
+
+var wellKnownSymbol$4 = wellKnownSymbol$G;
+
+var InternalStateModule$6 = internalState;
+
+var getMethod$1 = getMethod$h;
+
+var IteratorPrototype$1 = iteratorsCore.IteratorPrototype;
+
+var setInternalState$6 = InternalStateModule$6.set;
+var getInternalState$4 = InternalStateModule$6.get;
+var TO_STRING_TAG$1 = wellKnownSymbol$4('toStringTag');
+
+var iteratorCreateProxy = function (nextHandler, IS_ITERATOR) {
+ var IteratorProxy = function Iterator(state) {
+ state.next = aCallable$t(state.iterator.next);
+ state.done = false;
+ state.ignoreArg = !IS_ITERATOR;
+ setInternalState$6(this, state);
+ };
+
+ IteratorProxy.prototype = redefineAll$2(create$1(IteratorPrototype$1), {
+ next: function next(arg) {
+ var state = getInternalState$4(this);
+ var args = arguments.length ? [state.ignoreArg ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
+ state.ignoreArg = false;
+ var result = state.done ? undefined : nextHandler.call(state, args);
+ return {
+ done: state.done,
+ value: result
+ };
+ },
+ 'return': function (value) {
+ var state = getInternalState$4(this);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$return = getMethod$1(iterator, 'return');
+ return {
+ done: true,
+ value: $$return ? anObject$T($$return.call(iterator, value)).value : value
+ };
+ },
+ 'throw': function (value) {
+ var state = getInternalState$4(this);
+ var iterator = state.iterator;
+ state.done = true;
+ var $$throw = getMethod$1(iterator, 'throw');
+ if ($$throw) return $$throw.call(iterator, value);
+ throw value;
+ }
+ });
+
+ if (!IS_ITERATOR) {
+ createNonEnumerableProperty$2(IteratorProxy.prototype, TO_STRING_TAG$1, 'Generator');
+ }
+
+ return IteratorProxy;
+};
+
+var $$1w = _export;
+
+var anObject$S = anObject$1C;
+
+var createIteratorProxy$6 = iteratorCreateProxy;
+
+var IteratorProxy$6 = createIteratorProxy$6(function (args) {
+ var result = anObject$S(this.next.apply(this.iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return [this.index++, result.value];
+});
+$$1w({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ asIndexedPairs: function asIndexedPairs() {
+ return new IteratorProxy$6({
+ iterator: anObject$S(this),
+ index: 0
+ });
+ }
+});
+
+var $$1v = _export;
+
+var anObject$R = anObject$1C;
+
+var toPositiveInteger$1 = toPositiveInteger$5;
+
+var createIteratorProxy$5 = iteratorCreateProxy;
+
+var IteratorProxy$5 = createIteratorProxy$5(function (args) {
+ var iterator = this.iterator;
+ var next = this.next;
+ var result, done;
+
+ while (this.remaining) {
+ this.remaining--;
+ result = anObject$R(next.call(iterator));
+ done = this.done = !!result.done;
+ if (done) return;
+ }
+
+ result = anObject$R(next.apply(iterator, args));
+ done = this.done = !!result.done;
+ if (!done) return result.value;
+});
+$$1v({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ drop: function drop(limit) {
+ return new IteratorProxy$5({
+ iterator: anObject$R(this),
+ remaining: toPositiveInteger$1(limit)
+ });
+ }
+});
+
+var $$1u = _export;
+
+var iterate$z = iterate$I;
+
+var aCallable$s = aCallable$Q;
+
+var anObject$Q = anObject$1C;
+
+$$1u({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ every: function every(fn) {
+ anObject$Q(this);
+ aCallable$s(fn);
+ return !iterate$z(this, function (value, stop) {
+ if (!fn(value)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$1t = _export;
+
+var aCallable$r = aCallable$Q;
+
+var anObject$P = anObject$1C;
+
+var createIteratorProxy$4 = iteratorCreateProxy;
+
+var callWithSafeIterationClosing$1 = callWithSafeIterationClosing$3;
+
+var IteratorProxy$4 = createIteratorProxy$4(function (args) {
+ var iterator = this.iterator;
+ var filterer = this.filterer;
+ var next = this.next;
+ var result, done, value;
+
+ while (true) {
+ result = anObject$P(next.apply(iterator, args));
+ done = this.done = !!result.done;
+ if (done) return;
+ value = result.value;
+ if (callWithSafeIterationClosing$1(iterator, filterer, value)) return value;
+ }
+});
+$$1t({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ filter: function filter(filterer) {
+ return new IteratorProxy$4({
+ iterator: anObject$P(this),
+ filterer: aCallable$r(filterer)
+ });
+ }
+});
+
+var $$1s = _export;
+
+var iterate$y = iterate$I;
+
+var aCallable$q = aCallable$Q;
+
+var anObject$O = anObject$1C;
+
+$$1s({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ find: function find(fn) {
+ anObject$O(this);
+ aCallable$q(fn);
+ return iterate$y(this, function (value, stop) {
+ if (fn(value)) return stop(value);
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+});
+
+var $$1r = _export;
+
+var aCallable$p = aCallable$Q;
+
+var anObject$N = anObject$1C;
+
+var getIteratorMethod$2 = getIteratorMethod$9;
+
+var createIteratorProxy$3 = iteratorCreateProxy;
+
+var iteratorClose$1 = iteratorClose$4;
+
+var IteratorProxy$3 = createIteratorProxy$3(function () {
+ var iterator = this.iterator;
+ var mapper = this.mapper;
+ var result, mapped, iteratorMethod, innerIterator;
+
+ while (true) {
+ try {
+ if (innerIterator = this.innerIterator) {
+ result = anObject$N(this.innerNext.call(innerIterator));
+ if (!result.done) return result.value;
+ this.innerIterator = this.innerNext = null;
+ }
+
+ result = anObject$N(this.next.call(iterator));
+ if (this.done = !!result.done) return;
+ mapped = mapper(result.value);
+ iteratorMethod = getIteratorMethod$2(mapped);
+
+ if (!iteratorMethod) {
+ throw TypeError('.flatMap callback should return an iterable object');
+ }
+
+ this.innerIterator = innerIterator = anObject$N(iteratorMethod.call(mapped));
+ this.innerNext = aCallable$p(innerIterator.next);
+ } catch (error) {
+ iteratorClose$1(iterator, 'throw', error);
+ }
+ }
+});
+$$1r({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ flatMap: function flatMap(mapper) {
+ return new IteratorProxy$3({
+ iterator: anObject$N(this),
+ mapper: aCallable$p(mapper),
+ innerIterator: null,
+ innerNext: null
+ });
+ }
+});
+
+var $$1q = _export;
+
+var iterate$x = iterate$I;
+
+var anObject$M = anObject$1C;
+
+$$1q({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ forEach: function forEach(fn) {
+ iterate$x(anObject$M(this), fn, {
+ IS_ITERATOR: true
+ });
+ }
+});
+
+// https://github.com/tc39/proposal-iterator-helpers
+var $$1p = _export;
+
+var anObject$L = anObject$1C;
+
+var toObject$2 = toObject$A;
+
+var IteratorPrototype = iteratorsCore.IteratorPrototype;
+
+var createIteratorProxy$2 = iteratorCreateProxy;
+
+var getIterator$4 = getIterator$b;
+
+var getIteratorMethod$1 = getIteratorMethod$9;
+
+var isPrototypeOf = {}.isPrototypeOf;
+var IteratorProxy$2 = createIteratorProxy$2(function (args) {
+ var result = anObject$L(this.next.apply(this.iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return result.value;
+}, true);
+$$1p({
+ target: 'Iterator',
+ stat: true
+}, {
+ from: function from(O) {
+ var object = toObject$2(O);
+ var usingIterator = getIteratorMethod$1(object);
+ var iterator;
+
+ if (usingIterator) {
+ iterator = getIterator$4(object, usingIterator);
+ if (isPrototypeOf.call(IteratorPrototype, iterator)) return iterator;
+ } else {
+ iterator = object;
+ }
+
+ return new IteratorProxy$2({
+ iterator: iterator
+ });
+ }
+});
+
+var $$1o = _export;
+
+var aCallable$o = aCallable$Q;
+
+var anObject$K = anObject$1C;
+
+var createIteratorProxy$1 = iteratorCreateProxy;
+
+var callWithSafeIterationClosing = callWithSafeIterationClosing$3;
+
+var IteratorProxy$1 = createIteratorProxy$1(function (args) {
+ var iterator = this.iterator;
+ var result = anObject$K(this.next.apply(iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value);
+});
+$$1o({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ map: function map(mapper) {
+ return new IteratorProxy$1({
+ iterator: anObject$K(this),
+ mapper: aCallable$o(mapper)
+ });
+ }
+});
+
+var $$1n = _export;
+
+var iterate$w = iterate$I;
+
+var aCallable$n = aCallable$Q;
+
+var anObject$J = anObject$1C;
+
+$$1n({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ reduce: function reduce(reducer
+ /* , initialValue */
+ ) {
+ anObject$J(this);
+ aCallable$n(reducer);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ iterate$w(this, function (value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = reducer(accumulator, value);
+ }
+ }, {
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty iterator with no initial value');
+ return accumulator;
+ }
+});
+
+var $$1m = _export;
+
+var iterate$v = iterate$I;
+
+var aCallable$m = aCallable$Q;
+
+var anObject$I = anObject$1C;
+
+$$1m({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ some: function some(fn) {
+ anObject$I(this);
+ aCallable$m(fn);
+ return iterate$v(this, function (value, stop) {
+ if (fn(value)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$1l = _export;
+
+var anObject$H = anObject$1C;
+
+var toPositiveInteger = toPositiveInteger$5;
+
+var createIteratorProxy = iteratorCreateProxy;
+
+var iteratorClose = iteratorClose$4;
+
+var IteratorProxy = createIteratorProxy(function (args) {
+ var iterator = this.iterator;
+
+ if (!this.remaining--) {
+ this.done = true;
+ return iteratorClose(iterator, 'normal', undefined);
+ }
+
+ var result = anObject$H(this.next.apply(iterator, args));
+ var done = this.done = !!result.done;
+ if (!done) return result.value;
+});
+$$1l({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ take: function take(limit) {
+ return new IteratorProxy({
+ iterator: anObject$H(this),
+ remaining: toPositiveInteger(limit)
+ });
+ }
+});
+
+var $$1k = _export;
+
+var iterate$u = iterate$I;
+
+var anObject$G = anObject$1C;
+
+var push = [].push;
+$$1k({
+ target: 'Iterator',
+ proto: true,
+ real: true
+}, {
+ toArray: function toArray() {
+ var result = [];
+ iterate$u(anObject$G(this), push, {
+ that: result,
+ IS_ITERATOR: true
+ });
+ return result;
+ }
+});
+
+var aCallable$l = aCallable$Q;
+
+var anObject$F = anObject$1C; // https://github.com/tc39/collection-methods
+
+
+var collectionDeleteAll$4 = function () {
+ var collection = anObject$F(this);
+ var remover = aCallable$l(collection['delete']);
+ var allDeleted = true;
+ var wasDeleted;
+
+ for (var k = 0, len = arguments.length; k < len; k++) {
+ wasDeleted = remover.call(collection, arguments[k]);
+ allDeleted = allDeleted && wasDeleted;
+ }
+
+ return !!allDeleted;
+};
+
+var $$1j = _export;
+
+var IS_PURE$B = isPure;
+
+var collectionDeleteAll$3 = collectionDeleteAll$4; // `Map.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1j({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$B
+}, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$3.apply(this, arguments);
+ }
+});
+
+var anObject$E = anObject$1C; // `Map.prototype.emplace` method
+// https://github.com/thumbsupep/proposal-upsert
+
+
+var mapEmplace = function emplace(key, handler) {
+ var map = anObject$E(this);
+ var value = map.has(key) && 'update' in handler ? handler.update(map.get(key), key, map) : handler.insert(key, map);
+ map.set(key, value);
+ return value;
+};
+
+var $$1i = _export;
+
+var IS_PURE$A = isPure;
+
+var $emplace$1 = mapEmplace; // `Map.prototype.emplace` method
+// https://github.com/thumbsupep/proposal-upsert
+
+
+$$1i({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$A
+}, {
+ emplace: $emplace$1
+});
+
+var getMapIterator$a = function (it) {
+ // eslint-disable-next-line es/no-map -- safe
+ return Map.prototype.entries.call(it);
+};
+
+var $$1h = _export;
+
+var IS_PURE$z = isPure;
+
+var anObject$D = anObject$1C;
+
+var bind$d = functionBindContext;
+
+var getMapIterator$9 = getMapIterator$a;
+
+var iterate$t = iterate$I; // `Map.prototype.every` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1h({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$z
+}, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$D(this);
+ var iterator = getMapIterator$9(map);
+ var boundFunction = bind$d(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return !iterate$t(iterator, function (key, value, stop) {
+ if (!boundFunction(value, key, map)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$1g = _export;
+
+var IS_PURE$y = isPure;
+
+var getBuiltIn$b = getBuiltIn$y;
+
+var aCallable$k = aCallable$Q;
+
+var anObject$C = anObject$1C;
+
+var bind$c = functionBindContext;
+
+var speciesConstructor$8 = speciesConstructor$f;
+
+var getMapIterator$8 = getMapIterator$a;
+
+var iterate$s = iterate$I; // `Map.prototype.filter` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1g({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$y
+}, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$C(this);
+ var iterator = getMapIterator$8(map);
+ var boundFunction = bind$c(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$8(map, getBuiltIn$b('Map')))();
+ var setter = aCallable$k(newMap.set);
+ iterate$s(iterator, function (key, value) {
+ if (boundFunction(value, key, map)) setter.call(newMap, key, value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+});
+
+var $$1f = _export;
+
+var IS_PURE$x = isPure;
+
+var anObject$B = anObject$1C;
+
+var bind$b = functionBindContext;
+
+var getMapIterator$7 = getMapIterator$a;
+
+var iterate$r = iterate$I; // `Map.prototype.find` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1f({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$x
+}, {
+ find: function find(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$B(this);
+ var iterator = getMapIterator$7(map);
+ var boundFunction = bind$b(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$r(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop(value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+});
+
+var $$1e = _export;
+
+var IS_PURE$w = isPure;
+
+var anObject$A = anObject$1C;
+
+var bind$a = functionBindContext;
+
+var getMapIterator$6 = getMapIterator$a;
+
+var iterate$q = iterate$I; // `Map.prototype.findKey` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1e({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$w
+}, {
+ findKey: function findKey(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$A(this);
+ var iterator = getMapIterator$6(map);
+ var boundFunction = bind$a(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$q(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop(key);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+});
+
+var aCallable$j = aCallable$Q;
+
+var aConstructor$1 = aConstructor$5;
+
+var bind$9 = functionBindContext;
+
+var iterate$p = iterate$I;
+
+var collectionFrom = function from(source
+/* , mapFn, thisArg */
+) {
+ var length = arguments.length;
+ var mapFn = length > 1 ? arguments[1] : undefined;
+ var mapping, array, n, boundFunction;
+ aConstructor$1(this);
+ mapping = mapFn !== undefined;
+ if (mapping) aCallable$j(mapFn);
+ if (source == undefined) return new this();
+ array = [];
+
+ if (mapping) {
+ n = 0;
+ boundFunction = bind$9(mapFn, length > 2 ? arguments[2] : undefined, 2);
+ iterate$p(source, function (nextItem) {
+ array.push(boundFunction(nextItem, n++));
+ });
+ } else {
+ iterate$p(source, array.push, {
+ that: array
+ });
+ }
+
+ return new this(array);
+};
+
+var $$1d = _export;
+
+var from$4 = collectionFrom; // `Map.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
+
+
+$$1d({
+ target: 'Map',
+ stat: true
+}, {
+ from: from$4
+});
+
+var $$1c = _export;
+
+var aCallable$i = aCallable$Q;
+
+var getIterator$3 = getIterator$b;
+
+var iterate$o = iterate$I; // `Map.groupBy` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1c({
+ target: 'Map',
+ stat: true
+}, {
+ groupBy: function groupBy(iterable, keyDerivative) {
+ aCallable$i(keyDerivative);
+ var iterator = getIterator$3(iterable);
+ var newMap = new this();
+ var has = aCallable$i(newMap.has);
+ var get = aCallable$i(newMap.get);
+ var set = aCallable$i(newMap.set);
+ iterate$o(iterator, function (element) {
+ var derivedKey = keyDerivative(element);
+ if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]);else get.call(newMap, derivedKey).push(element);
+ }, {
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+});
+
+// `SameValueZero` abstract operation
+// https://tc39.es/ecma262/#sec-samevaluezero
+var sameValueZero$1 = function (x, y) {
+ // eslint-disable-next-line no-self-compare -- NaN check
+ return x === y || x != x && y != y;
+};
+
+var $$1b = _export;
+
+var IS_PURE$v = isPure;
+
+var anObject$z = anObject$1C;
+
+var getMapIterator$5 = getMapIterator$a;
+
+var sameValueZero = sameValueZero$1;
+
+var iterate$n = iterate$I; // `Map.prototype.includes` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1b({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$v
+}, {
+ includes: function includes(searchElement) {
+ return iterate$n(getMapIterator$5(anObject$z(this)), function (key, value, stop) {
+ if (sameValueZero(value, searchElement)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$1a = _export;
+
+var iterate$m = iterate$I;
+
+var aCallable$h = aCallable$Q; // `Map.keyBy` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$1a({
+ target: 'Map',
+ stat: true
+}, {
+ keyBy: function keyBy(iterable, keyDerivative) {
+ var newMap = new this();
+ aCallable$h(keyDerivative);
+ var setter = aCallable$h(newMap.set);
+ iterate$m(iterable, function (element) {
+ setter.call(newMap, keyDerivative(element), element);
+ });
+ return newMap;
+ }
+});
+
+var $$19 = _export;
+
+var IS_PURE$u = isPure;
+
+var anObject$y = anObject$1C;
+
+var getMapIterator$4 = getMapIterator$a;
+
+var iterate$l = iterate$I; // `Map.prototype.keyOf` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$19({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$u
+}, {
+ keyOf: function keyOf(searchElement) {
+ return iterate$l(getMapIterator$4(anObject$y(this)), function (key, value, stop) {
+ if (value === searchElement) return stop(key);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+});
+
+var $$18 = _export;
+
+var IS_PURE$t = isPure;
+
+var getBuiltIn$a = getBuiltIn$y;
+
+var aCallable$g = aCallable$Q;
+
+var anObject$x = anObject$1C;
+
+var bind$8 = functionBindContext;
+
+var speciesConstructor$7 = speciesConstructor$f;
+
+var getMapIterator$3 = getMapIterator$a;
+
+var iterate$k = iterate$I; // `Map.prototype.mapKeys` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$18({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$t
+}, {
+ mapKeys: function mapKeys(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$x(this);
+ var iterator = getMapIterator$3(map);
+ var boundFunction = bind$8(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$7(map, getBuiltIn$a('Map')))();
+ var setter = aCallable$g(newMap.set);
+ iterate$k(iterator, function (key, value) {
+ setter.call(newMap, boundFunction(value, key, map), value);
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+});
+
+var $$17 = _export;
+
+var IS_PURE$s = isPure;
+
+var getBuiltIn$9 = getBuiltIn$y;
+
+var aCallable$f = aCallable$Q;
+
+var anObject$w = anObject$1C;
+
+var bind$7 = functionBindContext;
+
+var speciesConstructor$6 = speciesConstructor$f;
+
+var getMapIterator$2 = getMapIterator$a;
+
+var iterate$j = iterate$I; // `Map.prototype.mapValues` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$17({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$s
+}, {
+ mapValues: function mapValues(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$w(this);
+ var iterator = getMapIterator$2(map);
+ var boundFunction = bind$7(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newMap = new (speciesConstructor$6(map, getBuiltIn$9('Map')))();
+ var setter = aCallable$f(newMap.set);
+ iterate$j(iterator, function (key, value) {
+ setter.call(newMap, key, boundFunction(value, key, map));
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ return newMap;
+ }
+});
+
+var $$16 = _export;
+
+var IS_PURE$r = isPure;
+
+var aCallable$e = aCallable$Q;
+
+var anObject$v = anObject$1C;
+
+var iterate$i = iterate$I; // `Map.prototype.merge` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$16({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$r
+}, {
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+ merge: function merge(iterable
+ /* ...iterbles */
+ ) {
+ var map = anObject$v(this);
+ var setter = aCallable$e(map.set);
+ var argumentsLength = arguments.length;
+ var i = 0;
+
+ while (i < argumentsLength) {
+ iterate$i(arguments[i++], setter, {
+ that: map,
+ AS_ENTRIES: true
+ });
+ }
+
+ return map;
+ }
+});
+
+var collectionOf = function of() {
+ var length = arguments.length;
+ var A = new Array(length);
+
+ while (length--) A[length] = arguments[length];
+
+ return new this(A);
+};
+
+var $$15 = _export;
+
+var of$3 = collectionOf; // `Map.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
+
+
+$$15({
+ target: 'Map',
+ stat: true
+}, {
+ of: of$3
+});
+
+var $$14 = _export;
+
+var IS_PURE$q = isPure;
+
+var anObject$u = anObject$1C;
+
+var aCallable$d = aCallable$Q;
+
+var getMapIterator$1 = getMapIterator$a;
+
+var iterate$h = iterate$I; // `Map.prototype.reduce` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$14({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$q
+}, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ var map = anObject$u(this);
+ var iterator = getMapIterator$1(map);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$d(callbackfn);
+ iterate$h(iterator, function (key, value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = callbackfn(accumulator, value, key, map);
+ }
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty map with no initial value');
+ return accumulator;
+ }
+});
+
+var $$13 = _export;
+
+var IS_PURE$p = isPure;
+
+var anObject$t = anObject$1C;
+
+var bind$6 = functionBindContext;
+
+var getMapIterator = getMapIterator$a;
+
+var iterate$g = iterate$I; // `Set.prototype.some` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$13({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$p
+}, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ var map = anObject$t(this);
+ var iterator = getMapIterator(map);
+ var boundFunction = bind$6(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$g(iterator, function (key, value, stop) {
+ if (boundFunction(value, key, map)) return stop();
+ }, {
+ AS_ENTRIES: true,
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$12 = _export;
+
+var IS_PURE$o = isPure;
+
+var anObject$s = anObject$1C;
+
+var aCallable$c = aCallable$Q; // `Set.prototype.update` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$12({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$o
+}, {
+ update: function update(key, callback
+ /* , thunk */
+ ) {
+ var map = anObject$s(this);
+ var length = arguments.length;
+ aCallable$c(callback);
+ var isPresentInMap = map.has(key);
+
+ if (!isPresentInMap && length < 3) {
+ throw TypeError('Updating absent value');
+ }
+
+ var value = isPresentInMap ? map.get(key) : aCallable$c(length > 2 ? arguments[2] : undefined)(key, map);
+ map.set(key, callback(value, key, map));
+ return map;
+ }
+});
+
+var isCallable$4 = isCallable$z;
+
+var anObject$r = anObject$1C; // `Map.prototype.upsert` method
+// https://github.com/thumbsupep/proposal-upsert
+
+
+var mapUpsert = function upsert(key, updateFn
+/* , insertFn */
+) {
+ var map = anObject$r(this);
+ var insertFn = arguments.length > 2 ? arguments[2] : undefined;
+ var value;
+
+ if (!isCallable$4(updateFn) && !isCallable$4(insertFn)) {
+ throw TypeError('At least one callback required');
+ }
+
+ if (map.has(key)) {
+ value = map.get(key);
+
+ if (isCallable$4(updateFn)) {
+ value = updateFn(value);
+ map.set(key, value);
+ }
+ } else if (isCallable$4(insertFn)) {
+ value = insertFn();
+ map.set(key, value);
+ }
+
+ return value;
+};
+
+var $$11 = _export;
+
+var IS_PURE$n = isPure;
+
+var $upsert$2 = mapUpsert; // `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)
+// https://github.com/thumbsupep/proposal-upsert
+
+
+$$11({
+ target: 'Map',
+ proto: true,
+ real: true,
+ name: 'upsert',
+ forced: IS_PURE$n
+}, {
+ updateOrInsert: $upsert$2
+});
+
+var $$10 = _export;
+
+var IS_PURE$m = isPure;
+
+var $upsert$1 = mapUpsert; // `Map.prototype.upsert` method (replaced by `Map.prototype.emplace`)
+// https://github.com/thumbsupep/proposal-upsert
+
+
+$$10({
+ target: 'Map',
+ proto: true,
+ real: true,
+ forced: IS_PURE$m
+}, {
+ upsert: $upsert$1
+});
+
+var $$$ = _export;
+
+var min = Math.min;
+var max = Math.max; // `Math.clamp` method
+// https://rwaldron.github.io/proposal-math-extensions/
+
+$$$({
+ target: 'Math',
+ stat: true
+}, {
+ clamp: function clamp(x, lower, upper) {
+ return min(upper, max(lower, x));
+ }
+});
+
+var $$_ = _export; // `Math.DEG_PER_RAD` constant
+// https://rwaldron.github.io/proposal-math-extensions/
+
+
+$$_({
+ target: 'Math',
+ stat: true
+}, {
+ DEG_PER_RAD: Math.PI / 180
+});
+
+var $$Z = _export;
+
+var RAD_PER_DEG = 180 / Math.PI; // `Math.degrees` method
+// https://rwaldron.github.io/proposal-math-extensions/
+
+$$Z({
+ target: 'Math',
+ stat: true
+}, {
+ degrees: function degrees(radians) {
+ return radians * RAD_PER_DEG;
+ }
+});
+
+// `Math.scale` method implementation
+// https://rwaldron.github.io/proposal-math-extensions/
+var mathScale = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
+ if (arguments.length === 0
+ /* eslint-disable no-self-compare -- NaN check */
+ || x != x || inLow != inLow || inHigh != inHigh || outLow != outLow || outHigh != outHigh
+ /* eslint-enable no-self-compare -- NaN check */
+ ) return NaN;
+ if (x === Infinity || x === -Infinity) return x;
+ return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
+};
+
+var $$Y = _export;
+
+var scale$1 = mathScale;
+
+var fround = mathFround; // `Math.fscale` method
+// https://rwaldron.github.io/proposal-math-extensions/
+
+
+$$Y({
+ target: 'Math',
+ stat: true
+}, {
+ fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
+ return fround(scale$1(x, inLow, inHigh, outLow, outHigh));
+ }
+});
+
+var $$X = _export; // `Math.iaddh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+
+
+$$X({
+ target: 'Math',
+ stat: true
+}, {
+ iaddh: function iaddh(x0, x1, y0, y1) {
+ var $x0 = x0 >>> 0;
+ var $x1 = x1 >>> 0;
+ var $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+});
+
+var $$W = _export; // `Math.imulh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+
+
+$$W({
+ target: 'Math',
+ stat: true
+}, {
+ imulh: function imulh(u, v) {
+ var UINT16 = 0xFFFF;
+ var $u = +u;
+ var $v = +v;
+ var u0 = $u & UINT16;
+ var v0 = $v & UINT16;
+ var u1 = $u >> 16;
+ var v1 = $v >> 16;
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+});
+
+var $$V = _export; // `Math.isubh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+
+
+$$V({
+ target: 'Math',
+ stat: true
+}, {
+ isubh: function isubh(x0, x1, y0, y1) {
+ var $x0 = x0 >>> 0;
+ var $x1 = x1 >>> 0;
+ var $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+});
+
+var $$U = _export; // `Math.RAD_PER_DEG` constant
+// https://rwaldron.github.io/proposal-math-extensions/
+
+
+$$U({
+ target: 'Math',
+ stat: true
+}, {
+ RAD_PER_DEG: 180 / Math.PI
+});
+
+var $$T = _export;
+
+var DEG_PER_RAD = Math.PI / 180; // `Math.radians` method
+// https://rwaldron.github.io/proposal-math-extensions/
+
+$$T({
+ target: 'Math',
+ stat: true
+}, {
+ radians: function radians(degrees) {
+ return degrees * DEG_PER_RAD;
+ }
+});
+
+var $$S = _export;
+
+var scale = mathScale; // `Math.scale` method
+// https://rwaldron.github.io/proposal-math-extensions/
+
+
+$$S({
+ target: 'Math',
+ stat: true
+}, {
+ scale: scale
+});
+
+var $$R = _export;
+
+var anObject$q = anObject$1C;
+
+var numberIsFinite = numberIsFinite$2;
+
+var createIteratorConstructor$3 = createIteratorConstructor$7;
+
+var InternalStateModule$5 = internalState;
+
+var SEEDED_RANDOM = 'Seeded Random';
+var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
+var setInternalState$5 = InternalStateModule$5.set;
+var getInternalState$3 = InternalStateModule$5.getterFor(SEEDED_RANDOM_GENERATOR);
+var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';
+var $SeededRandomGenerator = createIteratorConstructor$3(function SeededRandomGenerator(seed) {
+ setInternalState$5(this, {
+ type: SEEDED_RANDOM_GENERATOR,
+ seed: seed % 2147483647
+ });
+}, SEEDED_RANDOM, function next() {
+ var state = getInternalState$3(this);
+ var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647;
+ return {
+ value: (seed & 1073741823) / 1073741823,
+ done: false
+ };
+}); // `Math.seededPRNG` method
+// https://github.com/tc39/proposal-seeded-random
+// based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html
+
+$$R({
+ target: 'Math',
+ stat: true,
+ forced: true
+}, {
+ seededPRNG: function seededPRNG(it) {
+ var seed = anObject$q(it).seed;
+ if (!numberIsFinite(seed)) throw TypeError(SEED_TYPE_ERROR);
+ return new $SeededRandomGenerator(seed);
+ }
+});
+
+var $$Q = _export; // `Math.signbit` method
+// https://github.com/tc39/proposal-Math.signbit
+
+
+$$Q({
+ target: 'Math',
+ stat: true
+}, {
+ signbit: function signbit(x) {
+ return (x = +x) == x && x == 0 ? 1 / x == -Infinity : x < 0;
+ }
+});
+
+var $$P = _export; // `Math.umulh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+
+
+$$P({
+ target: 'Math',
+ stat: true
+}, {
+ umulh: function umulh(u, v) {
+ var UINT16 = 0xFFFF;
+ var $u = +u;
+ var $v = +v;
+ var u0 = $u & UINT16;
+ var v0 = $v & UINT16;
+ var u1 = $u >>> 16;
+ var v1 = $v >>> 16;
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+});
+
+var $$O = _export;
+
+var toIntegerOrInfinity = toIntegerOrInfinity$i;
+
+var parseInt$1 = numberParseInt;
+
+var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation';
+var INVALID_RADIX = 'Invalid radix';
+var valid = /^[\da-z]+$/; // `Number.fromString` method
+// https://github.com/tc39/proposal-number-fromstring
+
+$$O({
+ target: 'Number',
+ stat: true
+}, {
+ fromString: function fromString(string, radix) {
+ var sign = 1;
+ var R, mathNum;
+ if (typeof string != 'string') throw TypeError(INVALID_NUMBER_REPRESENTATION);
+ if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+
+ if (string.charAt(0) == '-') {
+ sign = -1;
+ string = string.slice(1);
+ if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+ }
+
+ R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
+ if (R < 2 || R > 36) throw RangeError(INVALID_RADIX);
+
+ if (!valid.test(string) || (mathNum = parseInt$1(string, R)).toString(R) !== string) {
+ throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
+ }
+
+ return sign * mathNum;
+ }
+});
+
+var $$N = _export;
+
+var NumericRangeIterator = numericRangeIterator; // `Number.range` method
+// https://github.com/tc39/proposal-Number.range
+
+
+$$N({
+ target: 'Number',
+ stat: true
+}, {
+ range: function range(start, end, option) {
+ return new NumericRangeIterator(start, end, option, 'number', 0, 1);
+ }
+});
+
+var InternalStateModule$4 = internalState;
+
+var createIteratorConstructor$2 = createIteratorConstructor$7;
+
+var hasOwn$2 = hasOwnProperty_1;
+
+var objectKeys = objectKeys$5;
+
+var toObject$1 = toObject$A;
+
+var OBJECT_ITERATOR = 'Object Iterator';
+var setInternalState$4 = InternalStateModule$4.set;
+var getInternalState$2 = InternalStateModule$4.getterFor(OBJECT_ITERATOR);
+var objectIterator = createIteratorConstructor$2(function ObjectIterator(source, mode) {
+ var object = toObject$1(source);
+ setInternalState$4(this, {
+ type: OBJECT_ITERATOR,
+ mode: mode,
+ object: object,
+ keys: objectKeys(object),
+ index: 0
+ });
+}, 'Object', function next() {
+ var state = getInternalState$2(this);
+ var keys = state.keys;
+
+ while (true) {
+ if (keys === null || state.index >= keys.length) {
+ state.object = state.keys = null;
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ var key = keys[state.index++];
+ var object = state.object;
+ if (!hasOwn$2(object, key)) continue;
+
+ switch (state.mode) {
+ case 'keys':
+ return {
+ value: key,
+ done: false
+ };
+
+ case 'values':
+ return {
+ value: object[key],
+ done: false
+ };
+ }
+ /* entries */
+
+
+ return {
+ value: [key, object[key]],
+ done: false
+ };
+ }
+});
+
+var $$M = _export;
+
+var ObjectIterator$2 = objectIterator; // `Object.iterateEntries` method
+// https://github.com/tc39/proposal-object-iteration
+
+
+$$M({
+ target: 'Object',
+ stat: true
+}, {
+ iterateEntries: function iterateEntries(object) {
+ return new ObjectIterator$2(object, 'entries');
+ }
+});
+
+var $$L = _export;
+
+var ObjectIterator$1 = objectIterator; // `Object.iterateKeys` method
+// https://github.com/tc39/proposal-object-iteration
+
+
+$$L({
+ target: 'Object',
+ stat: true
+}, {
+ iterateKeys: function iterateKeys(object) {
+ return new ObjectIterator$1(object, 'keys');
+ }
+});
+
+var $$K = _export;
+
+var ObjectIterator = objectIterator; // `Object.iterateValues` method
+// https://github.com/tc39/proposal-object-iteration
+
+
+$$K({
+ target: 'Object',
+ stat: true
+}, {
+ iterateValues: function iterateValues(object) {
+ return new ObjectIterator(object, 'values');
+ }
+});
+
+var $$J = _export;
+
+var DESCRIPTORS$1 = descriptors;
+
+var setSpecies = setSpecies$7;
+
+var aCallable$b = aCallable$Q;
+
+var isCallable$3 = isCallable$z;
+
+var isConstructor = isConstructor$7;
+
+var anObject$p = anObject$1C;
+
+var isObject$1 = isObject$C;
+
+var anInstance$2 = anInstance$b;
+
+var defineProperty$1 = objectDefineProperty.f;
+
+var redefine$2 = redefine$l.exports;
+
+var redefineAll$1 = redefineAll$a;
+
+var getIterator$2 = getIterator$b;
+
+var getMethod = getMethod$h;
+
+var iterate$f = iterate$I;
+
+var hostReportErrors = hostReportErrors$2;
+
+var wellKnownSymbol$3 = wellKnownSymbol$G;
+
+var InternalStateModule$3 = internalState;
+
+var OBSERVABLE = wellKnownSymbol$3('observable');
+var getInternalState$1 = InternalStateModule$3.get;
+var setInternalState$3 = InternalStateModule$3.set;
+
+var cleanupSubscription = function (subscriptionState) {
+ var cleanup = subscriptionState.cleanup;
+
+ if (cleanup) {
+ subscriptionState.cleanup = undefined;
+
+ try {
+ cleanup();
+ } catch (error) {
+ hostReportErrors(error);
+ }
+ }
+};
+
+var subscriptionClosed = function (subscriptionState) {
+ return subscriptionState.observer === undefined;
+};
+
+var close = function (subscriptionState) {
+ var subscription = subscriptionState.facade;
+
+ if (!DESCRIPTORS$1) {
+ subscription.closed = true;
+ var subscriptionObserver = subscriptionState.subscriptionObserver;
+ if (subscriptionObserver) subscriptionObserver.closed = true;
+ }
+
+ subscriptionState.observer = undefined;
+};
+
+var Subscription = function (observer, subscriber) {
+ var subscriptionState = setInternalState$3(this, {
+ cleanup: undefined,
+ observer: anObject$p(observer),
+ subscriptionObserver: undefined
+ });
+ var start;
+ if (!DESCRIPTORS$1) this.closed = false;
+
+ try {
+ if (start = getMethod(observer, 'start')) start.call(observer, this);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+
+ if (subscriptionClosed(subscriptionState)) return;
+ var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(this);
+
+ try {
+ var cleanup = subscriber(subscriptionObserver);
+ var subscription = cleanup;
+ if (cleanup != null) subscriptionState.cleanup = isCallable$3(cleanup.unsubscribe) ? function () {
+ subscription.unsubscribe();
+ } : aCallable$b(cleanup);
+ } catch (error) {
+ subscriptionObserver.error(error);
+ return;
+ }
+
+ if (subscriptionClosed(subscriptionState)) cleanupSubscription(subscriptionState);
+};
+
+Subscription.prototype = redefineAll$1({}, {
+ unsubscribe: function unsubscribe() {
+ var subscriptionState = getInternalState$1(this);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ close(subscriptionState);
+ cleanupSubscription(subscriptionState);
+ }
+ }
+});
+if (DESCRIPTORS$1) defineProperty$1(Subscription.prototype, 'closed', {
+ configurable: true,
+ get: function () {
+ return subscriptionClosed(getInternalState$1(this));
+ }
+});
+
+var SubscriptionObserver = function (subscription) {
+ setInternalState$3(this, {
+ subscription: subscription
+ });
+ if (!DESCRIPTORS$1) this.closed = false;
+};
+
+SubscriptionObserver.prototype = redefineAll$1({}, {
+ next: function next(value) {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+
+ try {
+ var nextMethod = getMethod(observer, 'next');
+ if (nextMethod) nextMethod.call(observer, value);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+ }
+ },
+ error: function error(value) {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+ close(subscriptionState);
+
+ try {
+ var errorMethod = getMethod(observer, 'error');
+ if (errorMethod) errorMethod.call(observer, value);else hostReportErrors(value);
+ } catch (err) {
+ hostReportErrors(err);
+ }
+
+ cleanupSubscription(subscriptionState);
+ }
+ },
+ complete: function complete() {
+ var subscriptionState = getInternalState$1(getInternalState$1(this).subscription);
+
+ if (!subscriptionClosed(subscriptionState)) {
+ var observer = subscriptionState.observer;
+ close(subscriptionState);
+
+ try {
+ var completeMethod = getMethod(observer, 'complete');
+ if (completeMethod) completeMethod.call(observer);
+ } catch (error) {
+ hostReportErrors(error);
+ }
+
+ cleanupSubscription(subscriptionState);
+ }
+ }
+});
+if (DESCRIPTORS$1) defineProperty$1(SubscriptionObserver.prototype, 'closed', {
+ configurable: true,
+ get: function () {
+ return subscriptionClosed(getInternalState$1(getInternalState$1(this).subscription));
+ }
+});
+
+var $Observable = function Observable(subscriber) {
+ anInstance$2(this, $Observable, 'Observable');
+ setInternalState$3(this, {
+ subscriber: aCallable$b(subscriber)
+ });
+};
+
+redefineAll$1($Observable.prototype, {
+ subscribe: function subscribe(observer) {
+ var length = arguments.length;
+ return new Subscription(isCallable$3(observer) ? {
+ next: observer,
+ error: length > 1 ? arguments[1] : undefined,
+ complete: length > 2 ? arguments[2] : undefined
+ } : isObject$1(observer) ? observer : {}, getInternalState$1(this).subscriber);
+ }
+});
+redefineAll$1($Observable, {
+ from: function from(x) {
+ var C = isConstructor(this) ? this : $Observable;
+ var observableMethod = getMethod(anObject$p(x), OBSERVABLE);
+
+ if (observableMethod) {
+ var observable = anObject$p(observableMethod.call(x));
+ return observable.constructor === C ? observable : new C(function (observer) {
+ return observable.subscribe(observer);
+ });
+ }
+
+ var iterator = getIterator$2(x);
+ return new C(function (observer) {
+ iterate$f(iterator, function (it, stop) {
+ observer.next(it);
+ if (observer.closed) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ });
+ observer.complete();
+ });
+ },
+ of: function of() {
+ var C = isConstructor(this) ? this : $Observable;
+ var length = arguments.length;
+ var items = new Array(length);
+ var index = 0;
+
+ while (index < length) items[index] = arguments[index++];
+
+ return new C(function (observer) {
+ for (var i = 0; i < length; i++) {
+ observer.next(items[i]);
+ if (observer.closed) return;
+ }
+
+ observer.complete();
+ });
+ }
+});
+redefine$2($Observable.prototype, OBSERVABLE, function () {
+ return this;
+});
+$$J({
+ global: true
+}, {
+ Observable: $Observable
+});
+setSpecies('Observable');
+
+var $$I = _export;
+
+var newPromiseCapabilityModule = newPromiseCapability$2;
+
+var perform = perform$4; // `Promise.try` method
+// https://github.com/tc39/proposal-promise-try
+
+
+$$I({
+ target: 'Promise',
+ stat: true
+}, {
+ 'try': function (callbackfn) {
+ var promiseCapability = newPromiseCapabilityModule.f(this);
+ var result = perform(callbackfn);
+ (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
+ return promiseCapability.promise;
+ }
+});
+
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+var Map$1 = es_map;
+
+var WeakMap = es_weakMap.exports;
+
+var shared = shared$7.exports;
+
+var metadata = shared('metadata');
+var store$1 = metadata.store || (metadata.store = new WeakMap());
+
+var getOrCreateMetadataMap$1 = function (target, targetKey, create) {
+ var targetMetadata = store$1.get(target);
+
+ if (!targetMetadata) {
+ if (!create) return;
+ store$1.set(target, targetMetadata = new Map$1());
+ }
+
+ var keyMetadata = targetMetadata.get(targetKey);
+
+ if (!keyMetadata) {
+ if (!create) return;
+ targetMetadata.set(targetKey, keyMetadata = new Map$1());
+ }
+
+ return keyMetadata;
+};
+
+var ordinaryHasOwnMetadata$3 = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap$1(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+};
+
+var ordinaryGetOwnMetadata$2 = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap$1(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+};
+
+var ordinaryDefineOwnMetadata$2 = function (MetadataKey, MetadataValue, O, P) {
+ getOrCreateMetadataMap$1(O, P, true).set(MetadataKey, MetadataValue);
+};
+
+var ordinaryOwnMetadataKeys$2 = function (target, targetKey) {
+ var metadataMap = getOrCreateMetadataMap$1(target, targetKey, false);
+ var keys = [];
+ if (metadataMap) metadataMap.forEach(function (_, key) {
+ keys.push(key);
+ });
+ return keys;
+};
+
+var toMetadataKey$9 = function (it) {
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+};
+
+var reflectMetadata = {
+ store: store$1,
+ getMap: getOrCreateMetadataMap$1,
+ has: ordinaryHasOwnMetadata$3,
+ get: ordinaryGetOwnMetadata$2,
+ set: ordinaryDefineOwnMetadata$2,
+ keys: ordinaryOwnMetadataKeys$2,
+ toKey: toMetadataKey$9
+};
+
+var $$H = _export;
+
+var ReflectMetadataModule$8 = reflectMetadata;
+
+var anObject$o = anObject$1C;
+
+var toMetadataKey$8 = ReflectMetadataModule$8.toKey;
+var ordinaryDefineOwnMetadata$1 = ReflectMetadataModule$8.set; // `Reflect.defineMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$H({
+ target: 'Reflect',
+ stat: true
+}, {
+ defineMetadata: function defineMetadata(metadataKey, metadataValue, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 4 ? undefined : toMetadataKey$8(arguments[3]);
+ ordinaryDefineOwnMetadata$1(metadataKey, metadataValue, anObject$o(target), targetKey);
+ }
+});
+
+var $$G = _export;
+
+var ReflectMetadataModule$7 = reflectMetadata;
+
+var anObject$n = anObject$1C;
+
+var toMetadataKey$7 = ReflectMetadataModule$7.toKey;
+var getOrCreateMetadataMap = ReflectMetadataModule$7.getMap;
+var store = ReflectMetadataModule$7.store; // `Reflect.deleteMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$G({
+ target: 'Reflect',
+ stat: true
+}, {
+ deleteMetadata: function deleteMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$7(arguments[2]);
+ var metadataMap = getOrCreateMetadataMap(anObject$n(target), targetKey, false);
+ if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
+ if (metadataMap.size) return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+ }
+});
+
+var $$F = _export;
+
+var ReflectMetadataModule$6 = reflectMetadata;
+
+var anObject$m = anObject$1C;
+
+var getPrototypeOf$3 = objectGetPrototypeOf$1;
+
+var ordinaryHasOwnMetadata$2 = ReflectMetadataModule$6.has;
+var ordinaryGetOwnMetadata$1 = ReflectMetadataModule$6.get;
+var toMetadataKey$6 = ReflectMetadataModule$6.toKey;
+
+var ordinaryGetMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata$2(MetadataKey, O, P);
+ if (hasOwn) return ordinaryGetOwnMetadata$1(MetadataKey, O, P);
+ var parent = getPrototypeOf$3(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+}; // `Reflect.getMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+
+$$F({
+ target: 'Reflect',
+ stat: true
+}, {
+ getMetadata: function getMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$6(arguments[2]);
+ return ordinaryGetMetadata(metadataKey, anObject$m(target), targetKey);
+ }
+});
+
+var $$E = _export; // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+
+
+var Set$1 = es_set;
+
+var ReflectMetadataModule$5 = reflectMetadata;
+
+var anObject$l = anObject$1C;
+
+var getPrototypeOf$2 = objectGetPrototypeOf$1;
+
+var iterate$e = iterate$I;
+
+var ordinaryOwnMetadataKeys$1 = ReflectMetadataModule$5.keys;
+var toMetadataKey$5 = ReflectMetadataModule$5.toKey;
+
+var from$3 = function (iter) {
+ var result = [];
+ iterate$e(iter, result.push, {
+ that: result
+ });
+ return result;
+};
+
+var ordinaryMetadataKeys = function (O, P) {
+ var oKeys = ordinaryOwnMetadataKeys$1(O, P);
+ var parent = getPrototypeOf$2(O);
+ if (parent === null) return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from$3(new Set$1(oKeys.concat(pKeys))) : pKeys : oKeys;
+}; // `Reflect.getMetadataKeys` method
+// https://github.com/rbuckton/reflect-metadata
+
+
+$$E({
+ target: 'Reflect',
+ stat: true
+}, {
+ getMetadataKeys: function getMetadataKeys(target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 2 ? undefined : toMetadataKey$5(arguments[1]);
+ return ordinaryMetadataKeys(anObject$l(target), targetKey);
+ }
+});
+
+var $$D = _export;
+
+var ReflectMetadataModule$4 = reflectMetadata;
+
+var anObject$k = anObject$1C;
+
+var ordinaryGetOwnMetadata = ReflectMetadataModule$4.get;
+var toMetadataKey$4 = ReflectMetadataModule$4.toKey; // `Reflect.getOwnMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$D({
+ target: 'Reflect',
+ stat: true
+}, {
+ getOwnMetadata: function getOwnMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$4(arguments[2]);
+ return ordinaryGetOwnMetadata(metadataKey, anObject$k(target), targetKey);
+ }
+});
+
+var $$C = _export;
+
+var ReflectMetadataModule$3 = reflectMetadata;
+
+var anObject$j = anObject$1C;
+
+var ordinaryOwnMetadataKeys = ReflectMetadataModule$3.keys;
+var toMetadataKey$3 = ReflectMetadataModule$3.toKey; // `Reflect.getOwnMetadataKeys` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$C({
+ target: 'Reflect',
+ stat: true
+}, {
+ getOwnMetadataKeys: function getOwnMetadataKeys(target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 2 ? undefined : toMetadataKey$3(arguments[1]);
+ return ordinaryOwnMetadataKeys(anObject$j(target), targetKey);
+ }
+});
+
+var $$B = _export;
+
+var ReflectMetadataModule$2 = reflectMetadata;
+
+var anObject$i = anObject$1C;
+
+var getPrototypeOf$1 = objectGetPrototypeOf$1;
+
+var ordinaryHasOwnMetadata$1 = ReflectMetadataModule$2.has;
+var toMetadataKey$2 = ReflectMetadataModule$2.toKey;
+
+var ordinaryHasMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata$1(MetadataKey, O, P);
+ if (hasOwn) return true;
+ var parent = getPrototypeOf$1(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+}; // `Reflect.hasMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+
+$$B({
+ target: 'Reflect',
+ stat: true
+}, {
+ hasMetadata: function hasMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$2(arguments[2]);
+ return ordinaryHasMetadata(metadataKey, anObject$i(target), targetKey);
+ }
+});
+
+var $$A = _export;
+
+var ReflectMetadataModule$1 = reflectMetadata;
+
+var anObject$h = anObject$1C;
+
+var ordinaryHasOwnMetadata = ReflectMetadataModule$1.has;
+var toMetadataKey$1 = ReflectMetadataModule$1.toKey; // `Reflect.hasOwnMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$A({
+ target: 'Reflect',
+ stat: true
+}, {
+ hasOwnMetadata: function hasOwnMetadata(metadataKey, target
+ /* , targetKey */
+ ) {
+ var targetKey = arguments.length < 3 ? undefined : toMetadataKey$1(arguments[2]);
+ return ordinaryHasOwnMetadata(metadataKey, anObject$h(target), targetKey);
+ }
+});
+
+var $$z = _export;
+
+var ReflectMetadataModule = reflectMetadata;
+
+var anObject$g = anObject$1C;
+
+var toMetadataKey = ReflectMetadataModule.toKey;
+var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method
+// https://github.com/rbuckton/reflect-metadata
+
+$$z({
+ target: 'Reflect',
+ stat: true
+}, {
+ metadata: function metadata(metadataKey, metadataValue) {
+ return function decorator(target, key) {
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject$g(target), toMetadataKey(key));
+ };
+ }
+});
+
+var aCallable$a = aCallable$Q;
+
+var anObject$f = anObject$1C; // https://github.com/tc39/collection-methods
+
+
+var collectionAddAll$2 = function () {
+ var set = anObject$f(this);
+ var adder = aCallable$a(set.add);
+
+ for (var k = 0, len = arguments.length; k < len; k++) {
+ adder.call(set, arguments[k]);
+ }
+
+ return set;
+};
+
+var $$y = _export;
+
+var IS_PURE$l = isPure;
+
+var collectionAddAll$1 = collectionAddAll$2; // `Set.prototype.addAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$y({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$l
+}, {
+ addAll: function addAll() {
+ return collectionAddAll$1.apply(this, arguments);
+ }
+});
+
+var $$x = _export;
+
+var IS_PURE$k = isPure;
+
+var collectionDeleteAll$2 = collectionDeleteAll$4; // `Set.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$x({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$k
+}, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$2.apply(this, arguments);
+ }
+});
+
+var $$w = _export;
+
+var IS_PURE$j = isPure;
+
+var getBuiltIn$8 = getBuiltIn$y;
+
+var aCallable$9 = aCallable$Q;
+
+var anObject$e = anObject$1C;
+
+var speciesConstructor$5 = speciesConstructor$f;
+
+var iterate$d = iterate$I; // `Set.prototype.difference` method
+// https://github.com/tc39/proposal-set-methods
+
+
+$$w({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$j
+}, {
+ difference: function difference(iterable) {
+ var set = anObject$e(this);
+ var newSet = new (speciesConstructor$5(set, getBuiltIn$8('Set')))(set);
+ var remover = aCallable$9(newSet['delete']);
+ iterate$d(iterable, function (value) {
+ remover.call(newSet, value);
+ });
+ return newSet;
+ }
+});
+
+var getSetIterator$7 = function (it) {
+ // eslint-disable-next-line es/no-set -- safe
+ return Set.prototype.values.call(it);
+};
+
+var $$v = _export;
+
+var IS_PURE$i = isPure;
+
+var anObject$d = anObject$1C;
+
+var bind$5 = functionBindContext;
+
+var getSetIterator$6 = getSetIterator$7;
+
+var iterate$c = iterate$I; // `Set.prototype.every` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$v({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$i
+}, {
+ every: function every(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$d(this);
+ var iterator = getSetIterator$6(set);
+ var boundFunction = bind$5(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return !iterate$c(iterator, function (value, stop) {
+ if (!boundFunction(value, value, set)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$u = _export;
+
+var IS_PURE$h = isPure;
+
+var getBuiltIn$7 = getBuiltIn$y;
+
+var aCallable$8 = aCallable$Q;
+
+var anObject$c = anObject$1C;
+
+var bind$4 = functionBindContext;
+
+var speciesConstructor$4 = speciesConstructor$f;
+
+var getSetIterator$5 = getSetIterator$7;
+
+var iterate$b = iterate$I; // `Set.prototype.filter` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$u({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$h
+}, {
+ filter: function filter(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$c(this);
+ var iterator = getSetIterator$5(set);
+ var boundFunction = bind$4(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newSet = new (speciesConstructor$4(set, getBuiltIn$7('Set')))();
+ var adder = aCallable$8(newSet.add);
+ iterate$b(iterator, function (value) {
+ if (boundFunction(value, value, set)) adder.call(newSet, value);
+ }, {
+ IS_ITERATOR: true
+ });
+ return newSet;
+ }
+});
+
+var $$t = _export;
+
+var IS_PURE$g = isPure;
+
+var anObject$b = anObject$1C;
+
+var bind$3 = functionBindContext;
+
+var getSetIterator$4 = getSetIterator$7;
+
+var iterate$a = iterate$I; // `Set.prototype.find` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$t({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$g
+}, {
+ find: function find(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$b(this);
+ var iterator = getSetIterator$4(set);
+ var boundFunction = bind$3(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$a(iterator, function (value, stop) {
+ if (boundFunction(value, value, set)) return stop(value);
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).result;
+ }
+});
+
+var $$s = _export;
+
+var from$2 = collectionFrom; // `Set.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
+
+
+$$s({
+ target: 'Set',
+ stat: true
+}, {
+ from: from$2
+});
+
+var $$r = _export;
+
+var IS_PURE$f = isPure;
+
+var getBuiltIn$6 = getBuiltIn$y;
+
+var aCallable$7 = aCallable$Q;
+
+var anObject$a = anObject$1C;
+
+var speciesConstructor$3 = speciesConstructor$f;
+
+var iterate$9 = iterate$I; // `Set.prototype.intersection` method
+// https://github.com/tc39/proposal-set-methods
+
+
+$$r({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$f
+}, {
+ intersection: function intersection(iterable) {
+ var set = anObject$a(this);
+ var newSet = new (speciesConstructor$3(set, getBuiltIn$6('Set')))();
+ var hasCheck = aCallable$7(set.has);
+ var adder = aCallable$7(newSet.add);
+ iterate$9(iterable, function (value) {
+ if (hasCheck.call(set, value)) adder.call(newSet, value);
+ });
+ return newSet;
+ }
+});
+
+var $$q = _export;
+
+var IS_PURE$e = isPure;
+
+var aCallable$6 = aCallable$Q;
+
+var anObject$9 = anObject$1C;
+
+var iterate$8 = iterate$I; // `Set.prototype.isDisjointFrom` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom
+
+
+$$q({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$e
+}, {
+ isDisjointFrom: function isDisjointFrom(iterable) {
+ var set = anObject$9(this);
+ var hasCheck = aCallable$6(set.has);
+ return !iterate$8(iterable, function (value, stop) {
+ if (hasCheck.call(set, value) === true) return stop();
+ }, {
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$p = _export;
+
+var IS_PURE$d = isPure;
+
+var getBuiltIn$5 = getBuiltIn$y;
+
+var aCallable$5 = aCallable$Q;
+
+var isCallable$2 = isCallable$z;
+
+var anObject$8 = anObject$1C;
+
+var getIterator$1 = getIterator$b;
+
+var iterate$7 = iterate$I; // `Set.prototype.isSubsetOf` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf
+
+
+$$p({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$d
+}, {
+ isSubsetOf: function isSubsetOf(iterable) {
+ var iterator = getIterator$1(this);
+ var otherSet = anObject$8(iterable);
+ var hasCheck = otherSet.has;
+
+ if (!isCallable$2(hasCheck)) {
+ otherSet = new (getBuiltIn$5('Set'))(iterable);
+ hasCheck = aCallable$5(otherSet.has);
+ }
+
+ return !iterate$7(iterator, function (value, stop) {
+ if (hasCheck.call(otherSet, value) === false) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$o = _export;
+
+var IS_PURE$c = isPure;
+
+var aCallable$4 = aCallable$Q;
+
+var anObject$7 = anObject$1C;
+
+var iterate$6 = iterate$I; // `Set.prototype.isSupersetOf` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf
+
+
+$$o({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$c
+}, {
+ isSupersetOf: function isSupersetOf(iterable) {
+ var set = anObject$7(this);
+ var hasCheck = aCallable$4(set.has);
+ return !iterate$6(iterable, function (value, stop) {
+ if (hasCheck.call(set, value) === false) return stop();
+ }, {
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$n = _export;
+
+var IS_PURE$b = isPure;
+
+var anObject$6 = anObject$1C;
+
+var getSetIterator$3 = getSetIterator$7;
+
+var iterate$5 = iterate$I; // `Set.prototype.join` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$n({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$b
+}, {
+ join: function join(separator) {
+ var set = anObject$6(this);
+ var iterator = getSetIterator$3(set);
+ var sep = separator === undefined ? ',' : String(separator);
+ var result = [];
+ iterate$5(iterator, result.push, {
+ that: result,
+ IS_ITERATOR: true
+ });
+ return result.join(sep);
+ }
+});
+
+var $$m = _export;
+
+var IS_PURE$a = isPure;
+
+var getBuiltIn$4 = getBuiltIn$y;
+
+var aCallable$3 = aCallable$Q;
+
+var anObject$5 = anObject$1C;
+
+var bind$2 = functionBindContext;
+
+var speciesConstructor$2 = speciesConstructor$f;
+
+var getSetIterator$2 = getSetIterator$7;
+
+var iterate$4 = iterate$I; // `Set.prototype.map` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$m({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$a
+}, {
+ map: function map(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$5(this);
+ var iterator = getSetIterator$2(set);
+ var boundFunction = bind$2(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var newSet = new (speciesConstructor$2(set, getBuiltIn$4('Set')))();
+ var adder = aCallable$3(newSet.add);
+ iterate$4(iterator, function (value) {
+ adder.call(newSet, boundFunction(value, value, set));
+ }, {
+ IS_ITERATOR: true
+ });
+ return newSet;
+ }
+});
+
+var $$l = _export;
+
+var of$2 = collectionOf; // `Set.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
+
+
+$$l({
+ target: 'Set',
+ stat: true
+}, {
+ of: of$2
+});
+
+var $$k = _export;
+
+var IS_PURE$9 = isPure;
+
+var aCallable$2 = aCallable$Q;
+
+var anObject$4 = anObject$1C;
+
+var getSetIterator$1 = getSetIterator$7;
+
+var iterate$3 = iterate$I; // `Set.prototype.reduce` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$k({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$9
+}, {
+ reduce: function reduce(callbackfn
+ /* , initialValue */
+ ) {
+ var set = anObject$4(this);
+ var iterator = getSetIterator$1(set);
+ var noInitial = arguments.length < 2;
+ var accumulator = noInitial ? undefined : arguments[1];
+ aCallable$2(callbackfn);
+ iterate$3(iterator, function (value) {
+ if (noInitial) {
+ noInitial = false;
+ accumulator = value;
+ } else {
+ accumulator = callbackfn(accumulator, value, value, set);
+ }
+ }, {
+ IS_ITERATOR: true
+ });
+ if (noInitial) throw TypeError('Reduce of empty set with no initial value');
+ return accumulator;
+ }
+});
+
+var $$j = _export;
+
+var IS_PURE$8 = isPure;
+
+var anObject$3 = anObject$1C;
+
+var bind$1 = functionBindContext;
+
+var getSetIterator = getSetIterator$7;
+
+var iterate$2 = iterate$I; // `Set.prototype.some` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$j({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$8
+}, {
+ some: function some(callbackfn
+ /* , thisArg */
+ ) {
+ var set = anObject$3(this);
+ var iterator = getSetIterator(set);
+ var boundFunction = bind$1(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ return iterate$2(iterator, function (value, stop) {
+ if (boundFunction(value, value, set)) return stop();
+ }, {
+ IS_ITERATOR: true,
+ INTERRUPTED: true
+ }).stopped;
+ }
+});
+
+var $$i = _export;
+
+var IS_PURE$7 = isPure;
+
+var getBuiltIn$3 = getBuiltIn$y;
+
+var aCallable$1 = aCallable$Q;
+
+var anObject$2 = anObject$1C;
+
+var speciesConstructor$1 = speciesConstructor$f;
+
+var iterate$1 = iterate$I; // `Set.prototype.symmetricDifference` method
+// https://github.com/tc39/proposal-set-methods
+
+
+$$i({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$7
+}, {
+ symmetricDifference: function symmetricDifference(iterable) {
+ var set = anObject$2(this);
+ var newSet = new (speciesConstructor$1(set, getBuiltIn$3('Set')))(set);
+ var remover = aCallable$1(newSet['delete']);
+ var adder = aCallable$1(newSet.add);
+ iterate$1(iterable, function (value) {
+ remover.call(newSet, value) || adder.call(newSet, value);
+ });
+ return newSet;
+ }
+});
+
+var $$h = _export;
+
+var IS_PURE$6 = isPure;
+
+var getBuiltIn$2 = getBuiltIn$y;
+
+var aCallable = aCallable$Q;
+
+var anObject$1 = anObject$1C;
+
+var speciesConstructor = speciesConstructor$f;
+
+var iterate = iterate$I; // `Set.prototype.union` method
+// https://github.com/tc39/proposal-set-methods
+
+
+$$h({
+ target: 'Set',
+ proto: true,
+ real: true,
+ forced: IS_PURE$6
+}, {
+ union: function union(iterable) {
+ var set = anObject$1(this);
+ var newSet = new (speciesConstructor(set, getBuiltIn$2('Set')))(set);
+ iterate(iterable, aCallable(newSet.add), {
+ that: newSet
+ });
+ return newSet;
+ }
+});
+
+var $$g = _export;
+
+var charAt$1 = stringMultibyte.charAt;
+
+var fails$1 = fails$15;
+
+var FORCED$1 = fails$1(function () {
+ return '𠮷'.at(0) !== '𠮷';
+}); // `String.prototype.at` method
+// https://github.com/mathiasbynens/String.prototype.at
+
+$$g({
+ target: 'String',
+ proto: true,
+ forced: FORCED$1
+}, {
+ at: function at(pos) {
+ return charAt$1(this, pos);
+ }
+});
+
+var $$f = _export;
+
+var createIteratorConstructor$1 = createIteratorConstructor$7;
+
+var requireObjectCoercible = requireObjectCoercible$j;
+
+var toString = toString$t;
+
+var InternalStateModule$2 = internalState;
+
+var StringMultibyteModule = stringMultibyte;
+
+var codeAt$1 = StringMultibyteModule.codeAt;
+var charAt = StringMultibyteModule.charAt;
+var STRING_ITERATOR = 'String Iterator';
+var setInternalState$2 = InternalStateModule$2.set;
+var getInternalState = InternalStateModule$2.getterFor(STRING_ITERATOR); // TODO: unify with String#@@iterator
+
+var $StringIterator = createIteratorConstructor$1(function StringIterator(string) {
+ setInternalState$2(this, {
+ type: STRING_ITERATOR,
+ string: string,
+ index: 0
+ });
+}, 'String', function next() {
+ var state = getInternalState(this);
+ var string = state.string;
+ var index = state.index;
+ var point;
+ if (index >= string.length) return {
+ value: undefined,
+ done: true
+ };
+ point = charAt(string, index);
+ state.index += point.length;
+ return {
+ value: {
+ codePoint: codeAt$1(point, 0),
+ position: index
+ },
+ done: false
+ };
+}); // `String.prototype.codePoints` method
+// https://github.com/tc39/proposal-string-prototype-codepoints
+
+$$f({
+ target: 'String',
+ proto: true
+}, {
+ codePoints: function codePoints() {
+ return new $StringIterator(toString(requireObjectCoercible(this)));
+ }
+});
+
+var defineWellKnownSymbol$6 = defineWellKnownSymbol$l; // `Symbol.asyncDispose` well-known symbol
+// https://github.com/tc39/proposal-using-statement
+
+
+defineWellKnownSymbol$6('asyncDispose');
+
+var defineWellKnownSymbol$5 = defineWellKnownSymbol$l; // `Symbol.dispose` well-known symbol
+// https://github.com/tc39/proposal-using-statement
+
+
+defineWellKnownSymbol$5('dispose');
+
+var defineWellKnownSymbol$4 = defineWellKnownSymbol$l; // `Symbol.matcher` well-known symbol
+// https://github.com/tc39/proposal-pattern-matching
+
+
+defineWellKnownSymbol$4('matcher');
+
+var defineWellKnownSymbol$3 = defineWellKnownSymbol$l; // `Symbol.metadata` well-known symbol
+// https://github.com/tc39/proposal-decorators
+
+
+defineWellKnownSymbol$3('metadata');
+
+var defineWellKnownSymbol$2 = defineWellKnownSymbol$l; // `Symbol.observable` well-known symbol
+// https://github.com/tc39/proposal-observable
+
+
+defineWellKnownSymbol$2('observable');
+
+// TODO: remove from `core-js@4`
+var defineWellKnownSymbol$1 = defineWellKnownSymbol$l; // `Symbol.patternMatch` well-known symbol
+// https://github.com/tc39/proposal-pattern-matching
+
+
+defineWellKnownSymbol$1('patternMatch');
+
+// TODO: remove from `core-js@4`
+var defineWellKnownSymbol = defineWellKnownSymbol$l;
+
+defineWellKnownSymbol('replaceAll');
+
+var getBuiltIn$1 = getBuiltIn$y;
+
+var aConstructor = aConstructor$5;
+
+var arrayFromAsync = arrayFromAsync$1;
+
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = typedArrayConstructorsRequireWrappers;
+
+var ArrayBufferViewCore$6 = arrayBufferViewCore;
+
+var arrayFromConstructorAndList = arrayFromConstructorAndList$3;
+
+var aTypedArrayConstructor = ArrayBufferViewCore$6.aTypedArrayConstructor;
+var exportTypedArrayStaticMethod = ArrayBufferViewCore$6.exportTypedArrayStaticMethod; // `%TypedArray%.fromAsync` method
+// https://github.com/tc39/proposal-array-from-async
+// eslint-disable-next-line -- required for .length
+
+exportTypedArrayStaticMethod('fromAsync', function fromAsync(asyncItems
+/* , mapfn = undefined, thisArg = undefined */
+) {
+ var C = this;
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+ var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+ return new (getBuiltIn$1('Promise'))(function (resolve) {
+ aConstructor(C);
+ resolve(arrayFromAsync(asyncItems, mapfn, thisArg));
+ }).then(function (list) {
+ return arrayFromConstructorAndList(aTypedArrayConstructor(C), list);
+ });
+}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
+
+var ArrayBufferViewCore$5 = arrayBufferViewCore;
+
+var $filterReject$1 = arrayIteration.filterReject;
+
+var fromSpeciesAndList$2 = typedArrayFromSpeciesAndList;
+
+var aTypedArray$5 = ArrayBufferViewCore$5.aTypedArray;
+var exportTypedArrayMethod$5 = ArrayBufferViewCore$5.exportTypedArrayMethod; // `%TypedArray%.prototype.filterOut` method
+// https://github.com/tc39/proposal-array-filtering
+
+exportTypedArrayMethod$5('filterOut', function filterOut(callbackfn
+/* , thisArg */
+) {
+ var list = $filterReject$1(aTypedArray$5(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$2(this, list);
+});
+
+var ArrayBufferViewCore$4 = arrayBufferViewCore;
+
+var $filterReject = arrayIteration.filterReject;
+
+var fromSpeciesAndList$1 = typedArrayFromSpeciesAndList;
+
+var aTypedArray$4 = ArrayBufferViewCore$4.aTypedArray;
+var exportTypedArrayMethod$4 = ArrayBufferViewCore$4.exportTypedArrayMethod; // `%TypedArray%.prototype.filterReject` method
+// https://github.com/tc39/proposal-array-filtering
+
+exportTypedArrayMethod$4('filterReject', function filterReject(callbackfn
+/* , thisArg */
+) {
+ var list = $filterReject(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ return fromSpeciesAndList$1(this, list);
+});
+
+var ArrayBufferViewCore$3 = arrayBufferViewCore;
+
+var $findLast = arrayIterationFromLast.findLast;
+
+var aTypedArray$3 = ArrayBufferViewCore$3.aTypedArray;
+var exportTypedArrayMethod$3 = ArrayBufferViewCore$3.exportTypedArrayMethod; // `%TypedArray%.prototype.findLast` method
+// https://github.com/tc39/proposal-array-find-from-last
+
+exportTypedArrayMethod$3('findLast', function findLast(predicate
+/* , thisArg */
+) {
+ return $findLast(aTypedArray$3(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$2 = arrayBufferViewCore;
+
+var $findLastIndex = arrayIterationFromLast.findLastIndex;
+
+var aTypedArray$2 = ArrayBufferViewCore$2.aTypedArray;
+var exportTypedArrayMethod$2 = ArrayBufferViewCore$2.exportTypedArrayMethod; // `%TypedArray%.prototype.findLastIndex` method
+// https://github.com/tc39/proposal-array-find-from-last
+
+exportTypedArrayMethod$2('findLastIndex', function findLastIndex(predicate
+/* , thisArg */
+) {
+ return $findLastIndex(aTypedArray$2(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
+
+var ArrayBufferViewCore$1 = arrayBufferViewCore;
+
+var $groupBy = arrayGroupBy;
+
+var typedArraySpeciesConstructor = typedArraySpeciesConstructor$5;
+
+var aTypedArray$1 = ArrayBufferViewCore$1.aTypedArray;
+var exportTypedArrayMethod$1 = ArrayBufferViewCore$1.exportTypedArrayMethod; // `%TypedArray%.prototype.groupBy` method
+// https://github.com/tc39/proposal-array-grouping
+
+exportTypedArrayMethod$1('groupBy', function groupBy(callbackfn
+/* , thisArg */
+) {
+ var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+ return $groupBy(aTypedArray$1(this), callbackfn, thisArg, typedArraySpeciesConstructor);
+});
+
+var ArrayBufferViewCore = arrayBufferViewCore;
+
+var arrayUniqueBy = arrayUniqueBy$1;
+
+var fromSpeciesAndList = typedArrayFromSpeciesAndList;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; // `%TypedArray%.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+
+exportTypedArrayMethod('uniqueBy', function uniqueBy(resolver) {
+ return fromSpeciesAndList(this, arrayUniqueBy.call(aTypedArray(this), resolver));
+});
+
+var $$e = _export;
+
+var IS_PURE$5 = isPure;
+
+var collectionDeleteAll$1 = collectionDeleteAll$4; // `WeakMap.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$e({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$5
+}, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll$1.apply(this, arguments);
+ }
+});
+
+var $$d = _export;
+
+var from$1 = collectionFrom; // `WeakMap.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
+
+
+$$d({
+ target: 'WeakMap',
+ stat: true
+}, {
+ from: from$1
+});
+
+var $$c = _export;
+
+var of$1 = collectionOf; // `WeakMap.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
+
+
+$$c({
+ target: 'WeakMap',
+ stat: true
+}, {
+ of: of$1
+});
+
+var $$b = _export;
+
+var IS_PURE$4 = isPure;
+
+var $emplace = mapEmplace; // `WeakMap.prototype.emplace` method
+// https://github.com/tc39/proposal-upsert
+
+
+$$b({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$4
+}, {
+ emplace: $emplace
+});
+
+var $$a = _export;
+
+var IS_PURE$3 = isPure;
+
+var $upsert = mapUpsert; // `WeakMap.prototype.upsert` method (replaced by `WeakMap.prototype.emplace`)
+// https://github.com/tc39/proposal-upsert
+
+
+$$a({
+ target: 'WeakMap',
+ proto: true,
+ real: true,
+ forced: IS_PURE$3
+}, {
+ upsert: $upsert
+});
+
+var $$9 = _export;
+
+var IS_PURE$2 = isPure;
+
+var collectionAddAll = collectionAddAll$2; // `WeakSet.prototype.addAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$9({
+ target: 'WeakSet',
+ proto: true,
+ real: true,
+ forced: IS_PURE$2
+}, {
+ addAll: function addAll() {
+ return collectionAddAll.apply(this, arguments);
+ }
+});
+
+var $$8 = _export;
+
+var IS_PURE$1 = isPure;
+
+var collectionDeleteAll = collectionDeleteAll$4; // `WeakSet.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+
+
+$$8({
+ target: 'WeakSet',
+ proto: true,
+ real: true,
+ forced: IS_PURE$1
+}, {
+ deleteAll: function deleteAll() {
+ return collectionDeleteAll.apply(this, arguments);
+ }
+});
+
+var $$7 = _export;
+
+var from = collectionFrom; // `WeakSet.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
+
+
+$$7({
+ target: 'WeakSet',
+ stat: true
+}, {
+ from: from
+});
+
+var $$6 = _export;
+
+var of = collectionOf; // `WeakSet.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
+
+
+$$6({
+ target: 'WeakSet',
+ stat: true
+}, {
+ of: of
+});
+
+// iterable DOM collections
+// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
+var domIterables = {
+ CSSRuleList: 0,
+ CSSStyleDeclaration: 0,
+ CSSValueList: 0,
+ ClientRectList: 0,
+ DOMRectList: 0,
+ DOMStringList: 0,
+ DOMTokenList: 1,
+ DataTransferItemList: 0,
+ FileList: 0,
+ HTMLAllCollection: 0,
+ HTMLCollection: 0,
+ HTMLFormElement: 0,
+ HTMLSelectElement: 0,
+ MediaList: 0,
+ MimeTypeArray: 0,
+ NamedNodeMap: 0,
+ NodeList: 1,
+ PaintRequestList: 0,
+ Plugin: 0,
+ PluginArray: 0,
+ SVGLengthList: 0,
+ SVGNumberList: 0,
+ SVGPathSegList: 0,
+ SVGPointList: 0,
+ SVGStringList: 0,
+ SVGTransformList: 0,
+ SourceBufferList: 0,
+ StyleSheetList: 0,
+ TextTrackCueList: 0,
+ TextTrackList: 0,
+ TouchList: 0
+};
+
+// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
+var documentCreateElement = documentCreateElement$2;
+
+var classList$1 = documentCreateElement('span').classList;
+var DOMTokenListPrototype$2 = classList$1 && classList$1.constructor && classList$1.constructor.prototype;
+var domTokenListPrototype = DOMTokenListPrototype$2 === Object.prototype ? undefined : DOMTokenListPrototype$2;
+
+var global$6 = global$R;
+
+var DOMIterables$1 = domIterables;
+
+var DOMTokenListPrototype$1 = domTokenListPrototype;
+
+var forEach = arrayForEach;
+
+var createNonEnumerableProperty$1 = createNonEnumerableProperty$h;
+
+var handlePrototype$1 = function (CollectionPrototype) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
+ createNonEnumerableProperty$1(CollectionPrototype, 'forEach', forEach);
+ } catch (error) {
+ CollectionPrototype.forEach = forEach;
+ }
+};
+
+for (var COLLECTION_NAME$1 in DOMIterables$1) {
+ if (DOMIterables$1[COLLECTION_NAME$1]) {
+ handlePrototype$1(global$6[COLLECTION_NAME$1] && global$6[COLLECTION_NAME$1].prototype);
+ }
+}
+
+handlePrototype$1(DOMTokenListPrototype$1);
+
+var global$5 = global$R;
+
+var DOMIterables = domIterables;
+
+var DOMTokenListPrototype = domTokenListPrototype;
+
+var ArrayIteratorMethods = es_array_iterator;
+
+var createNonEnumerableProperty = createNonEnumerableProperty$h;
+
+var wellKnownSymbol$2 = wellKnownSymbol$G;
+
+var ITERATOR$2 = wellKnownSymbol$2('iterator');
+var TO_STRING_TAG = wellKnownSymbol$2('toStringTag');
+var ArrayValues = ArrayIteratorMethods.values;
+
+var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
+ if (CollectionPrototype) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype[ITERATOR$2] !== ArrayValues) try {
+ createNonEnumerableProperty(CollectionPrototype, ITERATOR$2, ArrayValues);
+ } catch (error) {
+ CollectionPrototype[ITERATOR$2] = ArrayValues;
+ }
+
+ if (!CollectionPrototype[TO_STRING_TAG]) {
+ createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
+ }
+
+ if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
+ // some Chrome versions have non-configurable methods on DOMTokenList
+ if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
+ createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
+ } catch (error) {
+ CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
+ }
+ }
+ }
+};
+
+for (var COLLECTION_NAME in DOMIterables) {
+ handlePrototype(global$5[COLLECTION_NAME] && global$5[COLLECTION_NAME].prototype, COLLECTION_NAME);
+}
+
+handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
+
+var $$5 = _export;
+
+var global$4 = global$R;
+
+var task = task$2;
+
+var FORCED = !global$4.setImmediate || !global$4.clearImmediate; // http://w3c.github.io/setImmediate/
+
+$$5({
+ global: true,
+ bind: true,
+ enumerable: true,
+ forced: FORCED
+}, {
+ // `setImmediate` method
+ // http://w3c.github.io/setImmediate/#si-setImmediate
+ setImmediate: task.set,
+ // `clearImmediate` method
+ // http://w3c.github.io/setImmediate/#si-clearImmediate
+ clearImmediate: task.clear
+});
+
+var $$4 = _export;
+
+var global$3 = global$R;
+
+var microtask = microtask$2;
+
+var IS_NODE = engineIsNode;
+
+var process = global$3.process; // `queueMicrotask` method
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
+
+$$4({
+ global: true,
+ enumerable: true,
+ noTargetGet: true
+}, {
+ queueMicrotask: function queueMicrotask(fn) {
+ var domain = IS_NODE && process.domain;
+ microtask(domain ? domain.bind(fn) : fn);
+ }
+});
+
+var $$3 = _export;
+
+var global$2 = global$R;
+
+var isCallable$1 = isCallable$z;
+
+var userAgent = engineUserAgent;
+
+var slice = [].slice;
+var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
+
+var wrap = function (scheduler) {
+ return function (handler, timeout
+ /* , ...arguments */
+ ) {
+ var boundArgs = arguments.length > 2;
+ var args = boundArgs ? slice.call(arguments, 2) : undefined;
+ return scheduler(boundArgs ? function () {
+ // eslint-disable-next-line no-new-func -- spec requirement
+ (isCallable$1(handler) ? handler : Function(handler)).apply(this, args);
+ } : handler, timeout);
+ };
+}; // ie9- setTimeout & setInterval additional parameters fix
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
+
+
+$$3({
+ global: true,
+ bind: true,
+ forced: MSIE
+}, {
+ // `setTimeout` method
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
+ setTimeout: wrap(global$2.setTimeout),
+ // `setInterval` method
+ // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
+ setInterval: wrap(global$2.setInterval)
+});
+
+var fails = fails$15;
+
+var wellKnownSymbol$1 = wellKnownSymbol$G;
+
+var IS_PURE = isPure;
+
+var ITERATOR$1 = wellKnownSymbol$1('iterator');
+var nativeUrl = !fails(function () {
+ var url = new URL('b?a=1&b=2&c=3', 'http://a');
+ var searchParams = url.searchParams;
+ var result = '';
+ url.pathname = 'c%20d';
+ searchParams.forEach(function (value, key) {
+ searchParams['delete']('b');
+ result += key + value;
+ });
+ return IS_PURE && !url.toJSON || !searchParams.sort || url.href !== 'http://a/c%20d?a=1&c=3' || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR$1] // throws in Edge
+ || new URL('https://a@b').username !== 'a' || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' // not punycoded in Edge
+ || new URL('http://тест').host !== 'xn--e1aybc' // not escaped in Chrome 62-
+ || new URL('http://a#б').hash !== '#%D0%B1' // fails in Chrome 66-
+ || result !== 'a1c3' // throws in Safari
+ || new URL('http://x', undefined).host !== 'x';
+});
+
+var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
+
+var base = 36;
+var tMin = 1;
+var tMax = 26;
+var skew = 38;
+var damp = 700;
+var initialBias = 72;
+var initialN = 128; // 0x80
+
+var delimiter = '-'; // '\x2D'
+
+var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars
+
+var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
+
+var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';
+var baseMinusTMin = base - tMin;
+var floor$1 = Math.floor;
+var stringFromCharCode = String.fromCharCode;
+/**
+ * Creates an array containing the numeric code points of each Unicode
+ * character in the string. While JavaScript uses UCS-2 internally,
+ * this function will convert a pair of surrogate halves (each of which
+ * UCS-2 exposes as separate characters) into a single code point,
+ * matching UTF-16.
+ */
+
+var ucs2decode = function (string) {
+ var output = [];
+ var counter = 0;
+ var length = string.length;
+
+ while (counter < length) {
+ var value = string.charCodeAt(counter++);
+
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+ // It's a high surrogate, and there is a next character.
+ var extra = string.charCodeAt(counter++);
+
+ if ((extra & 0xFC00) == 0xDC00) {
+ // Low surrogate.
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+ } else {
+ // It's an unmatched surrogate; only append this code unit, in case the
+ // next code unit is the high surrogate of a surrogate pair.
+ output.push(value);
+ counter--;
+ }
+ } else {
+ output.push(value);
+ }
+ }
+
+ return output;
+};
+/**
+ * Converts a digit/integer into a basic code point.
+ */
+
+
+var digitToBasic = function (digit) {
+ // 0..25 map to ASCII a..z or A..Z
+ // 26..35 map to ASCII 0..9
+ return digit + 22 + 75 * (digit < 26);
+};
+/**
+ * Bias adaptation function as per section 3.4 of RFC 3492.
+ * https://tools.ietf.org/html/rfc3492#section-3.4
+ */
+
+
+var adapt = function (delta, numPoints, firstTime) {
+ var k = 0;
+ delta = firstTime ? floor$1(delta / damp) : delta >> 1;
+ delta += floor$1(delta / numPoints);
+
+ for (; delta > baseMinusTMin * tMax >> 1; k += base) {
+ delta = floor$1(delta / baseMinusTMin);
+ }
+
+ return floor$1(k + (baseMinusTMin + 1) * delta / (delta + skew));
+};
+/**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ */
+// eslint-disable-next-line max-statements -- TODO
+
+
+var encode = function (input) {
+ var output = []; // Convert the input in UCS-2 to an array of Unicode code points.
+
+ input = ucs2decode(input); // Cache the length.
+
+ var inputLength = input.length; // Initialize the state.
+
+ var n = initialN;
+ var delta = 0;
+ var bias = initialBias;
+ var i, currentValue; // Handle the basic code points.
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue < 0x80) {
+ output.push(stringFromCharCode(currentValue));
+ }
+ }
+
+ var basicLength = output.length; // number of basic code points.
+
+ var handledCPCount = basicLength; // number of code points that have been handled;
+ // Finish the basic string with a delimiter unless it's empty.
+
+ if (basicLength) {
+ output.push(delimiter);
+ } // Main encoding loop:
+
+
+ while (handledCPCount < inputLength) {
+ // All non-basic code points < n have been handled already. Find the next larger one:
+ var m = maxInt;
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue >= n && currentValue < m) {
+ m = currentValue;
+ }
+ } // Increase `delta` enough to advance the decoder's state to , but guard against overflow.
+
+
+ var handledCPCountPlusOne = handledCPCount + 1;
+
+ if (m - n > floor$1((maxInt - delta) / handledCPCountPlusOne)) {
+ throw RangeError(OVERFLOW_ERROR);
+ }
+
+ delta += (m - n) * handledCPCountPlusOne;
+ n = m;
+
+ for (i = 0; i < input.length; i++) {
+ currentValue = input[i];
+
+ if (currentValue < n && ++delta > maxInt) {
+ throw RangeError(OVERFLOW_ERROR);
+ }
+
+ if (currentValue == n) {
+ // Represent delta as a generalized variable-length integer.
+ var q = delta;
+
+ for (var k = base;; k += base) {
+ var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+ if (q < t) break;
+ var qMinusT = q - t;
+ var baseMinusT = base - t;
+ output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
+ q = floor$1(qMinusT / baseMinusT);
+ }
+
+ output.push(stringFromCharCode(digitToBasic(q)));
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
+ delta = 0;
+ ++handledCPCount;
+ }
+ }
+
+ ++delta;
+ ++n;
+ }
+
+ return output.join('');
+};
+
+var stringPunycodeToAscii = function (input) {
+ var encoded = [];
+ var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.');
+ var i, label;
+
+ for (i = 0; i < labels.length; i++) {
+ label = labels[i];
+ encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);
+ }
+
+ return encoded.join('.');
+};
+
+var $$2 = _export;
+
+var getBuiltIn = getBuiltIn$y;
+
+var USE_NATIVE_URL$1 = nativeUrl;
+
+var redefine$1 = redefine$l.exports;
+
+var redefineAll = redefineAll$a;
+
+var setToStringTag$1 = setToStringTag$b;
+
+var createIteratorConstructor = createIteratorConstructor$7;
+
+var InternalStateModule$1 = internalState;
+
+var anInstance$1 = anInstance$b;
+
+var isCallable = isCallable$z;
+
+var hasOwn$1 = hasOwnProperty_1;
+
+var bind = functionBindContext;
+
+var classof = classof$b;
+
+var anObject = anObject$1C;
+
+var isObject = isObject$C;
+
+var $toString$1 = toString$t;
+
+var create = objectCreate$1;
+
+var createPropertyDescriptor = createPropertyDescriptor$9;
+
+var getIterator = getIterator$b;
+
+var getIteratorMethod = getIteratorMethod$9;
+
+var wellKnownSymbol = wellKnownSymbol$G;
+
+var nativeFetch = getBuiltIn('fetch');
+var NativeRequest = getBuiltIn('Request');
+var RequestPrototype = NativeRequest && NativeRequest.prototype;
+var Headers = getBuiltIn('Headers');
+var ITERATOR = wellKnownSymbol('iterator');
+var URL_SEARCH_PARAMS = 'URLSearchParams';
+var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
+var setInternalState$1 = InternalStateModule$1.set;
+var getInternalParamsState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS);
+var getInternalIteratorState = InternalStateModule$1.getterFor(URL_SEARCH_PARAMS_ITERATOR);
+var plus = /\+/g;
+var sequences = Array(4);
+
+var percentSequence = function (bytes) {
+ return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
+};
+
+var percentDecode = function (sequence) {
+ try {
+ return decodeURIComponent(sequence);
+ } catch (error) {
+ return sequence;
+ }
+};
+
+var deserialize = function (it) {
+ var result = it.replace(plus, ' ');
+ var bytes = 4;
+
+ try {
+ return decodeURIComponent(result);
+ } catch (error) {
+ while (bytes) {
+ result = result.replace(percentSequence(bytes--), percentDecode);
+ }
+
+ return result;
+ }
+};
+
+var find$1 = /[!'()~]|%20/g;
+var replace = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+'
+};
+
+var replacer = function (match) {
+ return replace[match];
+};
+
+var serialize = function (it) {
+ return encodeURIComponent(it).replace(find$1, replacer);
+};
+
+var parseSearchParams = function (result, query) {
+ if (query) {
+ var attributes = query.split('&');
+ var index = 0;
+ var attribute, entry;
+
+ while (index < attributes.length) {
+ attribute = attributes[index++];
+
+ if (attribute.length) {
+ entry = attribute.split('=');
+ result.push({
+ key: deserialize(entry.shift()),
+ value: deserialize(entry.join('='))
+ });
+ }
+ }
+ }
+};
+
+var updateSearchParams = function (query) {
+ this.entries.length = 0;
+ parseSearchParams(this.entries, query);
+};
+
+var validateArgumentsLength = function (passed, required) {
+ if (passed < required) throw TypeError('Not enough arguments');
+};
+
+var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
+ setInternalState$1(this, {
+ type: URL_SEARCH_PARAMS_ITERATOR,
+ iterator: getIterator(getInternalParamsState(params).entries),
+ kind: kind
+ });
+}, 'Iterator', function next() {
+ var state = getInternalIteratorState(this);
+ var kind = state.kind;
+ var step = state.iterator.next();
+ var entry = step.value;
+
+ if (!step.done) {
+ step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];
+ }
+
+ return step;
+}); // `URLSearchParams` constructor
+// https://url.spec.whatwg.org/#interface-urlsearchparams
+
+var URLSearchParamsConstructor = function URLSearchParams() {
+ anInstance$1(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+ var init = arguments.length > 0 ? arguments[0] : undefined;
+ var that = this;
+ var entries = [];
+ var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;
+ setInternalState$1(that, {
+ type: URL_SEARCH_PARAMS,
+ entries: entries,
+ updateURL: function () {
+ /* empty */
+ },
+ updateSearchParams: updateSearchParams
+ });
+
+ if (init !== undefined) {
+ if (isObject(init)) {
+ iteratorMethod = getIteratorMethod(init);
+
+ if (iteratorMethod) {
+ iterator = getIterator(init, iteratorMethod);
+ next = iterator.next;
+
+ while (!(step = next.call(iterator)).done) {
+ entryIterator = getIterator(anObject(step.value));
+ entryNext = entryIterator.next;
+ if ((first = entryNext.call(entryIterator)).done || (second = entryNext.call(entryIterator)).done || !entryNext.call(entryIterator).done) throw TypeError('Expected sequence with length 2');
+ entries.push({
+ key: $toString$1(first.value),
+ value: $toString$1(second.value)
+ });
+ }
+ } else for (key in init) if (hasOwn$1(init, key)) entries.push({
+ key: key,
+ value: $toString$1(init[key])
+ });
+ } else {
+ parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString$1(init));
+ }
+ }
+};
+
+var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
+redefineAll(URLSearchParamsPrototype, {
+ // `URLSearchParams.prototype.append` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-append
+ append: function append(name, value) {
+ validateArgumentsLength(arguments.length, 2);
+ var state = getInternalParamsState(this);
+ state.entries.push({
+ key: $toString$1(name),
+ value: $toString$1(value)
+ });
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.delete` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
+ 'delete': function (name) {
+ validateArgumentsLength(arguments.length, 1);
+ var state = getInternalParamsState(this);
+ var entries = state.entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ while (index < entries.length) {
+ if (entries[index].key === key) entries.splice(index, 1);else index++;
+ }
+
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.get` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-get
+ get: function get(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ for (; index < entries.length; index++) {
+ if (entries[index].key === key) return entries[index].value;
+ }
+
+ return null;
+ },
+ // `URLSearchParams.prototype.getAll` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
+ getAll: function getAll(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var result = [];
+ var index = 0;
+
+ for (; index < entries.length; index++) {
+ if (entries[index].key === key) result.push(entries[index].value);
+ }
+
+ return result;
+ },
+ // `URLSearchParams.prototype.has` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-has
+ has: function has(name) {
+ validateArgumentsLength(arguments.length, 1);
+ var entries = getInternalParamsState(this).entries;
+ var key = $toString$1(name);
+ var index = 0;
+
+ while (index < entries.length) {
+ if (entries[index++].key === key) return true;
+ }
+
+ return false;
+ },
+ // `URLSearchParams.prototype.set` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-set
+ set: function set(name, value) {
+ validateArgumentsLength(arguments.length, 1);
+ var state = getInternalParamsState(this);
+ var entries = state.entries;
+ var found = false;
+ var key = $toString$1(name);
+ var val = $toString$1(value);
+ var index = 0;
+ var entry;
+
+ for (; index < entries.length; index++) {
+ entry = entries[index];
+
+ if (entry.key === key) {
+ if (found) entries.splice(index--, 1);else {
+ found = true;
+ entry.value = val;
+ }
+ }
+ }
+
+ if (!found) entries.push({
+ key: key,
+ value: val
+ });
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.sort` method
+ // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
+ sort: function sort() {
+ var state = getInternalParamsState(this);
+ var entries = state.entries; // Array#sort is not stable in some engines
+
+ var slice = entries.slice();
+ var entry, entriesIndex, sliceIndex;
+ entries.length = 0;
+
+ for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {
+ entry = slice[sliceIndex];
+
+ for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {
+ if (entries[entriesIndex].key > entry.key) {
+ entries.splice(entriesIndex, 0, entry);
+ break;
+ }
+ }
+
+ if (entriesIndex === sliceIndex) entries.push(entry);
+ }
+
+ state.updateURL();
+ },
+ // `URLSearchParams.prototype.forEach` method
+ forEach: function forEach(callback
+ /* , thisArg */
+ ) {
+ var entries = getInternalParamsState(this).entries;
+ var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var index = 0;
+ var entry;
+
+ while (index < entries.length) {
+ entry = entries[index++];
+ boundFunction(entry.value, entry.key, this);
+ }
+ },
+ // `URLSearchParams.prototype.keys` method
+ keys: function keys() {
+ return new URLSearchParamsIterator(this, 'keys');
+ },
+ // `URLSearchParams.prototype.values` method
+ values: function values() {
+ return new URLSearchParamsIterator(this, 'values');
+ },
+ // `URLSearchParams.prototype.entries` method
+ entries: function entries() {
+ return new URLSearchParamsIterator(this, 'entries');
+ }
+}, {
+ enumerable: true
+}); // `URLSearchParams.prototype[@@iterator]` method
+
+redefine$1(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, {
+ name: 'entries'
+}); // `URLSearchParams.prototype.toString` method
+// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
+
+redefine$1(URLSearchParamsPrototype, 'toString', function toString() {
+ var entries = getInternalParamsState(this).entries;
+ var result = [];
+ var index = 0;
+ var entry;
+
+ while (index < entries.length) {
+ entry = entries[index++];
+ result.push(serialize(entry.key) + '=' + serialize(entry.value));
+ }
+
+ return result.join('&');
+}, {
+ enumerable: true
+});
+setToStringTag$1(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+$$2({
+ global: true,
+ forced: !USE_NATIVE_URL$1
+}, {
+ URLSearchParams: URLSearchParamsConstructor
+}); // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`
+
+if (!USE_NATIVE_URL$1 && isCallable(Headers)) {
+ var wrapRequestOptions = function (init) {
+ if (isObject(init)) {
+ var body = init.body;
+ var headers;
+
+ if (classof(body) === URL_SEARCH_PARAMS) {
+ headers = init.headers ? new Headers(init.headers) : new Headers();
+
+ if (!headers.has('content-type')) {
+ headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+ }
+
+ return create(init, {
+ body: createPropertyDescriptor(0, String(body)),
+ headers: createPropertyDescriptor(0, headers)
+ });
+ }
+ }
+
+ return init;
+ };
+
+ if (isCallable(nativeFetch)) {
+ $$2({
+ global: true,
+ enumerable: true,
+ forced: true
+ }, {
+ fetch: function fetch(input
+ /* , init */
+ ) {
+ return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+ }
+ });
+ }
+
+ if (isCallable(NativeRequest)) {
+ var RequestConstructor = function Request(input
+ /* , init */
+ ) {
+ anInstance$1(this, RequestConstructor, 'Request');
+ return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+ };
+
+ RequestPrototype.constructor = RequestConstructor;
+ RequestConstructor.prototype = RequestPrototype;
+ $$2({
+ global: true,
+ forced: true
+ }, {
+ Request: RequestConstructor
+ });
+ }
+}
+
+var web_urlSearchParams = {
+ URLSearchParams: URLSearchParamsConstructor,
+ getState: getInternalParamsState
+};
+
+var $$1 = _export;
+
+var DESCRIPTORS = descriptors;
+
+var USE_NATIVE_URL = nativeUrl;
+
+var global$1 = global$R;
+
+var defineProperties = objectDefineProperties;
+
+var redefine = redefine$l.exports;
+
+var anInstance = anInstance$b;
+
+var hasOwn = hasOwnProperty_1;
+
+var assign$3 = objectAssign$1;
+
+var arrayFrom = arrayFrom$1;
+
+var codeAt = stringMultibyte.codeAt;
+
+var toASCII = stringPunycodeToAscii;
+
+var $toString = toString$t;
+
+var setToStringTag = setToStringTag$b;
+
+var URLSearchParamsModule = web_urlSearchParams;
+
+var InternalStateModule = internalState;
+
+var NativeURL = global$1.URL;
+var URLSearchParams$1 = URLSearchParamsModule.URLSearchParams;
+var getInternalSearchParamsState = URLSearchParamsModule.getState;
+var setInternalState = InternalStateModule.set;
+var getInternalURLState = InternalStateModule.getterFor('URL');
+var floor = Math.floor;
+var pow = Math.pow;
+var INVALID_AUTHORITY = 'Invalid authority';
+var INVALID_SCHEME = 'Invalid scheme';
+var INVALID_HOST = 'Invalid host';
+var INVALID_PORT = 'Invalid port';
+var ALPHA = /[a-z]/i; // eslint-disable-next-line regexp/no-obscure-range -- safe
+
+var ALPHANUMERIC = /[\d+-.a-z]/i;
+var DIGIT = /\d/;
+var HEX_START = /^0x/i;
+var OCT = /^[0-7]+$/;
+var DEC = /^\d+$/;
+var HEX = /^[\da-f]+$/i;
+/* eslint-disable regexp/no-control-character -- safe */
+
+var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/;
+var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/;
+var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g;
+var TAB_AND_NEW_LINE = /[\t\n\r]/g;
+/* eslint-enable regexp/no-control-character -- safe */
+
+var EOF;
+
+var parseHost = function (url, input) {
+ var result, codePoints, index;
+
+ if (input.charAt(0) == '[') {
+ if (input.charAt(input.length - 1) != ']') return INVALID_HOST;
+ result = parseIPv6(input.slice(1, -1));
+ if (!result) return INVALID_HOST;
+ url.host = result; // opaque host
+ } else if (!isSpecial(url)) {
+ if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;
+ result = '';
+ codePoints = arrayFrom(input);
+
+ for (index = 0; index < codePoints.length; index++) {
+ result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);
+ }
+
+ url.host = result;
+ } else {
+ input = toASCII(input);
+ if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;
+ result = parseIPv4(input);
+ if (result === null) return INVALID_HOST;
+ url.host = result;
+ }
+};
+
+var parseIPv4 = function (input) {
+ var parts = input.split('.');
+ var partsLength, numbers, index, part, radix, number, ipv4;
+
+ if (parts.length && parts[parts.length - 1] == '') {
+ parts.pop();
+ }
+
+ partsLength = parts.length;
+ if (partsLength > 4) return input;
+ numbers = [];
+
+ for (index = 0; index < partsLength; index++) {
+ part = parts[index];
+ if (part == '') return input;
+ radix = 10;
+
+ if (part.length > 1 && part.charAt(0) == '0') {
+ radix = HEX_START.test(part) ? 16 : 8;
+ part = part.slice(radix == 8 ? 1 : 2);
+ }
+
+ if (part === '') {
+ number = 0;
+ } else {
+ if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;
+ number = parseInt(part, radix);
+ }
+
+ numbers.push(number);
+ }
+
+ for (index = 0; index < partsLength; index++) {
+ number = numbers[index];
+
+ if (index == partsLength - 1) {
+ if (number >= pow(256, 5 - partsLength)) return null;
+ } else if (number > 255) return null;
+ }
+
+ ipv4 = numbers.pop();
+
+ for (index = 0; index < numbers.length; index++) {
+ ipv4 += numbers[index] * pow(256, 3 - index);
+ }
+
+ return ipv4;
+}; // eslint-disable-next-line max-statements -- TODO
+
+
+var parseIPv6 = function (input) {
+ var address = [0, 0, 0, 0, 0, 0, 0, 0];
+ var pieceIndex = 0;
+ var compress = null;
+ var pointer = 0;
+ var value, length, numbersSeen, ipv4Piece, number, swaps, swap;
+
+ var chr = function () {
+ return input.charAt(pointer);
+ };
+
+ if (chr() == ':') {
+ if (input.charAt(1) != ':') return;
+ pointer += 2;
+ pieceIndex++;
+ compress = pieceIndex;
+ }
+
+ while (chr()) {
+ if (pieceIndex == 8) return;
+
+ if (chr() == ':') {
+ if (compress !== null) return;
+ pointer++;
+ pieceIndex++;
+ compress = pieceIndex;
+ continue;
+ }
+
+ value = length = 0;
+
+ while (length < 4 && HEX.test(chr())) {
+ value = value * 16 + parseInt(chr(), 16);
+ pointer++;
+ length++;
+ }
+
+ if (chr() == '.') {
+ if (length == 0) return;
+ pointer -= length;
+ if (pieceIndex > 6) return;
+ numbersSeen = 0;
+
+ while (chr()) {
+ ipv4Piece = null;
+
+ if (numbersSeen > 0) {
+ if (chr() == '.' && numbersSeen < 4) pointer++;else return;
+ }
+
+ if (!DIGIT.test(chr())) return;
+
+ while (DIGIT.test(chr())) {
+ number = parseInt(chr(), 10);
+ if (ipv4Piece === null) ipv4Piece = number;else if (ipv4Piece == 0) return;else ipv4Piece = ipv4Piece * 10 + number;
+ if (ipv4Piece > 255) return;
+ pointer++;
+ }
+
+ address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
+ numbersSeen++;
+ if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
+ }
+
+ if (numbersSeen != 4) return;
+ break;
+ } else if (chr() == ':') {
+ pointer++;
+ if (!chr()) return;
+ } else if (chr()) return;
+
+ address[pieceIndex++] = value;
+ }
+
+ if (compress !== null) {
+ swaps = pieceIndex - compress;
+ pieceIndex = 7;
+
+ while (pieceIndex != 0 && swaps > 0) {
+ swap = address[pieceIndex];
+ address[pieceIndex--] = address[compress + swaps - 1];
+ address[compress + --swaps] = swap;
+ }
+ } else if (pieceIndex != 8) return;
+
+ return address;
+};
+
+var findLongestZeroSequence = function (ipv6) {
+ var maxIndex = null;
+ var maxLength = 1;
+ var currStart = null;
+ var currLength = 0;
+ var index = 0;
+
+ for (; index < 8; index++) {
+ if (ipv6[index] !== 0) {
+ if (currLength > maxLength) {
+ maxIndex = currStart;
+ maxLength = currLength;
+ }
+
+ currStart = null;
+ currLength = 0;
+ } else {
+ if (currStart === null) currStart = index;
+ ++currLength;
+ }
+ }
+
+ if (currLength > maxLength) {
+ maxIndex = currStart;
+ maxLength = currLength;
+ }
+
+ return maxIndex;
+};
+
+var serializeHost = function (host) {
+ var result, index, compress, ignore0; // ipv4
+
+ if (typeof host == 'number') {
+ result = [];
+
+ for (index = 0; index < 4; index++) {
+ result.unshift(host % 256);
+ host = floor(host / 256);
+ }
+
+ return result.join('.'); // ipv6
+ } else if (typeof host == 'object') {
+ result = '';
+ compress = findLongestZeroSequence(host);
+
+ for (index = 0; index < 8; index++) {
+ if (ignore0 && host[index] === 0) continue;
+ if (ignore0) ignore0 = false;
+
+ if (compress === index) {
+ result += index ? ':' : '::';
+ ignore0 = true;
+ } else {
+ result += host[index].toString(16);
+ if (index < 7) result += ':';
+ }
+ }
+
+ return '[' + result + ']';
+ }
+
+ return host;
+};
+
+var C0ControlPercentEncodeSet = {};
+var fragmentPercentEncodeSet = assign$3({}, C0ControlPercentEncodeSet, {
+ ' ': 1,
+ '"': 1,
+ '<': 1,
+ '>': 1,
+ '`': 1
+});
+var pathPercentEncodeSet = assign$3({}, fragmentPercentEncodeSet, {
+ '#': 1,
+ '?': 1,
+ '{': 1,
+ '}': 1
+});
+var userinfoPercentEncodeSet = assign$3({}, pathPercentEncodeSet, {
+ '/': 1,
+ ':': 1,
+ ';': 1,
+ '=': 1,
+ '@': 1,
+ '[': 1,
+ '\\': 1,
+ ']': 1,
+ '^': 1,
+ '|': 1
+});
+
+var percentEncode = function (chr, set) {
+ var code = codeAt(chr, 0);
+ return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);
+};
+
+var specialSchemes = {
+ ftp: 21,
+ file: null,
+ http: 80,
+ https: 443,
+ ws: 80,
+ wss: 443
+};
+
+var isSpecial = function (url) {
+ return hasOwn(specialSchemes, url.scheme);
+};
+
+var includesCredentials = function (url) {
+ return url.username != '' || url.password != '';
+};
+
+var cannotHaveUsernamePasswordPort = function (url) {
+ return !url.host || url.cannotBeABaseURL || url.scheme == 'file';
+};
+
+var isWindowsDriveLetter = function (string, normalized) {
+ var second;
+ return string.length == 2 && ALPHA.test(string.charAt(0)) && ((second = string.charAt(1)) == ':' || !normalized && second == '|');
+};
+
+var startsWithWindowsDriveLetter = function (string) {
+ var third;
+ return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (string.length == 2 || (third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#');
+};
+
+var shortenURLsPath = function (url) {
+ var path = url.path;
+ var pathSize = path.length;
+
+ if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {
+ path.pop();
+ }
+};
+
+var isSingleDot = function (segment) {
+ return segment === '.' || segment.toLowerCase() === '%2e';
+};
+
+var isDoubleDot = function (segment) {
+ segment = segment.toLowerCase();
+ return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';
+}; // States:
+
+
+var SCHEME_START = {};
+var SCHEME = {};
+var NO_SCHEME = {};
+var SPECIAL_RELATIVE_OR_AUTHORITY = {};
+var PATH_OR_AUTHORITY = {};
+var RELATIVE = {};
+var RELATIVE_SLASH = {};
+var SPECIAL_AUTHORITY_SLASHES = {};
+var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
+var AUTHORITY = {};
+var HOST = {};
+var HOSTNAME = {};
+var PORT = {};
+var FILE = {};
+var FILE_SLASH = {};
+var FILE_HOST = {};
+var PATH_START = {};
+var PATH = {};
+var CANNOT_BE_A_BASE_URL_PATH = {};
+var QUERY = {};
+var FRAGMENT = {}; // eslint-disable-next-line max-statements -- TODO
+
+var parseURL = function (url, input, stateOverride, base) {
+ var state = stateOverride || SCHEME_START;
+ var pointer = 0;
+ var buffer = '';
+ var seenAt = false;
+ var seenBracket = false;
+ var seenPasswordToken = false;
+ var codePoints, chr, bufferCodePoints, failure;
+
+ if (!stateOverride) {
+ url.scheme = '';
+ url.username = '';
+ url.password = '';
+ url.host = null;
+ url.port = null;
+ url.path = [];
+ url.query = null;
+ url.fragment = null;
+ url.cannotBeABaseURL = false;
+ input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');
+ }
+
+ input = input.replace(TAB_AND_NEW_LINE, '');
+ codePoints = arrayFrom(input);
+
+ while (pointer <= codePoints.length) {
+ chr = codePoints[pointer];
+
+ switch (state) {
+ case SCHEME_START:
+ if (chr && ALPHA.test(chr)) {
+ buffer += chr.toLowerCase();
+ state = SCHEME;
+ } else if (!stateOverride) {
+ state = NO_SCHEME;
+ continue;
+ } else return INVALID_SCHEME;
+
+ break;
+
+ case SCHEME:
+ if (chr && (ALPHANUMERIC.test(chr) || chr == '+' || chr == '-' || chr == '.')) {
+ buffer += chr.toLowerCase();
+ } else if (chr == ':') {
+ if (stateOverride && (isSpecial(url) != hasOwn(specialSchemes, buffer) || buffer == 'file' && (includesCredentials(url) || url.port !== null) || url.scheme == 'file' && !url.host)) return;
+ url.scheme = buffer;
+
+ if (stateOverride) {
+ if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;
+ return;
+ }
+
+ buffer = '';
+
+ if (url.scheme == 'file') {
+ state = FILE;
+ } else if (isSpecial(url) && base && base.scheme == url.scheme) {
+ state = SPECIAL_RELATIVE_OR_AUTHORITY;
+ } else if (isSpecial(url)) {
+ state = SPECIAL_AUTHORITY_SLASHES;
+ } else if (codePoints[pointer + 1] == '/') {
+ state = PATH_OR_AUTHORITY;
+ pointer++;
+ } else {
+ url.cannotBeABaseURL = true;
+ url.path.push('');
+ state = CANNOT_BE_A_BASE_URL_PATH;
+ }
+ } else if (!stateOverride) {
+ buffer = '';
+ state = NO_SCHEME;
+ pointer = 0;
+ continue;
+ } else return INVALID_SCHEME;
+
+ break;
+
+ case NO_SCHEME:
+ if (!base || base.cannotBeABaseURL && chr != '#') return INVALID_SCHEME;
+
+ if (base.cannotBeABaseURL && chr == '#') {
+ url.scheme = base.scheme;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ url.cannotBeABaseURL = true;
+ state = FRAGMENT;
+ break;
+ }
+
+ state = base.scheme == 'file' ? FILE : RELATIVE;
+ continue;
+
+ case SPECIAL_RELATIVE_OR_AUTHORITY:
+ if (chr == '/' && codePoints[pointer + 1] == '/') {
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ pointer++;
+ } else {
+ state = RELATIVE;
+ continue;
+ }
+
+ break;
+
+ case PATH_OR_AUTHORITY:
+ if (chr == '/') {
+ state = AUTHORITY;
+ break;
+ } else {
+ state = PATH;
+ continue;
+ }
+
+ case RELATIVE:
+ url.scheme = base.scheme;
+
+ if (chr == EOF) {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = base.query;
+ } else if (chr == '/' || chr == '\\' && isSpecial(url)) {
+ state = RELATIVE_SLASH;
+ } else if (chr == '?') {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ state = FRAGMENT;
+ } else {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ url.path = base.path.slice();
+ url.path.pop();
+ state = PATH;
+ continue;
+ }
+
+ break;
+
+ case RELATIVE_SLASH:
+ if (isSpecial(url) && (chr == '/' || chr == '\\')) {
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ } else if (chr == '/') {
+ state = AUTHORITY;
+ } else {
+ url.username = base.username;
+ url.password = base.password;
+ url.host = base.host;
+ url.port = base.port;
+ state = PATH;
+ continue;
+ }
+
+ break;
+
+ case SPECIAL_AUTHORITY_SLASHES:
+ state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+ if (chr != '/' || buffer.charAt(pointer + 1) != '/') continue;
+ pointer++;
+ break;
+
+ case SPECIAL_AUTHORITY_IGNORE_SLASHES:
+ if (chr != '/' && chr != '\\') {
+ state = AUTHORITY;
+ continue;
+ }
+
+ break;
+
+ case AUTHORITY:
+ if (chr == '@') {
+ if (seenAt) buffer = '%40' + buffer;
+ seenAt = true;
+ bufferCodePoints = arrayFrom(buffer);
+
+ for (var i = 0; i < bufferCodePoints.length; i++) {
+ var codePoint = bufferCodePoints[i];
+
+ if (codePoint == ':' && !seenPasswordToken) {
+ seenPasswordToken = true;
+ continue;
+ }
+
+ var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
+ if (seenPasswordToken) url.password += encodedCodePoints;else url.username += encodedCodePoints;
+ }
+
+ buffer = '';
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url)) {
+ if (seenAt && buffer == '') return INVALID_AUTHORITY;
+ pointer -= arrayFrom(buffer).length + 1;
+ buffer = '';
+ state = HOST;
+ } else buffer += chr;
+
+ break;
+
+ case HOST:
+ case HOSTNAME:
+ if (stateOverride && url.scheme == 'file') {
+ state = FILE_HOST;
+ continue;
+ } else if (chr == ':' && !seenBracket) {
+ if (buffer == '') return INVALID_HOST;
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ buffer = '';
+ state = PORT;
+ if (stateOverride == HOSTNAME) return;
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url)) {
+ if (isSpecial(url) && buffer == '') return INVALID_HOST;
+ if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ buffer = '';
+ state = PATH_START;
+ if (stateOverride) return;
+ continue;
+ } else {
+ if (chr == '[') seenBracket = true;else if (chr == ']') seenBracket = false;
+ buffer += chr;
+ }
+
+ break;
+
+ case PORT:
+ if (DIGIT.test(chr)) {
+ buffer += chr;
+ } else if (chr == EOF || chr == '/' || chr == '?' || chr == '#' || chr == '\\' && isSpecial(url) || stateOverride) {
+ if (buffer != '') {
+ var port = parseInt(buffer, 10);
+ if (port > 0xFFFF) return INVALID_PORT;
+ url.port = isSpecial(url) && port === specialSchemes[url.scheme] ? null : port;
+ buffer = '';
+ }
+
+ if (stateOverride) return;
+ state = PATH_START;
+ continue;
+ } else return INVALID_PORT;
+
+ break;
+
+ case FILE:
+ url.scheme = 'file';
+ if (chr == '/' || chr == '\\') state = FILE_SLASH;else if (base && base.scheme == 'file') {
+ if (chr == EOF) {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = base.query;
+ } else if (chr == '?') {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.host = base.host;
+ url.path = base.path.slice();
+ url.query = base.query;
+ url.fragment = '';
+ state = FRAGMENT;
+ } else {
+ if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+ url.host = base.host;
+ url.path = base.path.slice();
+ shortenURLsPath(url);
+ }
+
+ state = PATH;
+ continue;
+ }
+ } else {
+ state = PATH;
+ continue;
+ }
+ break;
+
+ case FILE_SLASH:
+ if (chr == '/' || chr == '\\') {
+ state = FILE_HOST;
+ break;
+ }
+
+ if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
+ if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);else url.host = base.host;
+ }
+
+ state = PATH;
+ continue;
+
+ case FILE_HOST:
+ if (chr == EOF || chr == '/' || chr == '\\' || chr == '?' || chr == '#') {
+ if (!stateOverride && isWindowsDriveLetter(buffer)) {
+ state = PATH;
+ } else if (buffer == '') {
+ url.host = '';
+ if (stateOverride) return;
+ state = PATH_START;
+ } else {
+ failure = parseHost(url, buffer);
+ if (failure) return failure;
+ if (url.host == 'localhost') url.host = '';
+ if (stateOverride) return;
+ buffer = '';
+ state = PATH_START;
+ }
+
+ continue;
+ } else buffer += chr;
+
+ break;
+
+ case PATH_START:
+ if (isSpecial(url)) {
+ state = PATH;
+ if (chr != '/' && chr != '\\') continue;
+ } else if (!stateOverride && chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (!stateOverride && chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ state = PATH;
+ if (chr != '/') continue;
+ }
+
+ break;
+
+ case PATH:
+ if (chr == EOF || chr == '/' || chr == '\\' && isSpecial(url) || !stateOverride && (chr == '?' || chr == '#')) {
+ if (isDoubleDot(buffer)) {
+ shortenURLsPath(url);
+
+ if (chr != '/' && !(chr == '\\' && isSpecial(url))) {
+ url.path.push('');
+ }
+ } else if (isSingleDot(buffer)) {
+ if (chr != '/' && !(chr == '\\' && isSpecial(url))) {
+ url.path.push('');
+ }
+ } else {
+ if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
+ if (url.host) url.host = '';
+ buffer = buffer.charAt(0) + ':'; // normalize windows drive letter
+ }
+
+ url.path.push(buffer);
+ }
+
+ buffer = '';
+
+ if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {
+ while (url.path.length > 1 && url.path[0] === '') {
+ url.path.shift();
+ }
+ }
+
+ if (chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ }
+ } else {
+ buffer += percentEncode(chr, pathPercentEncodeSet);
+ }
+
+ break;
+
+ case CANNOT_BE_A_BASE_URL_PATH:
+ if (chr == '?') {
+ url.query = '';
+ state = QUERY;
+ } else if (chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);
+ }
+
+ break;
+
+ case QUERY:
+ if (!stateOverride && chr == '#') {
+ url.fragment = '';
+ state = FRAGMENT;
+ } else if (chr != EOF) {
+ if (chr == "'" && isSpecial(url)) url.query += '%27';else if (chr == '#') url.query += '%23';else url.query += percentEncode(chr, C0ControlPercentEncodeSet);
+ }
+
+ break;
+
+ case FRAGMENT:
+ if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
+ break;
+ }
+
+ pointer++;
+ }
+}; // `URL` constructor
+// https://url.spec.whatwg.org/#url-class
+
+
+var URLConstructor = function URL(url
+/* , base */
+) {
+ var that = anInstance(this, URLConstructor, 'URL');
+ var base = arguments.length > 1 ? arguments[1] : undefined;
+ var urlString = $toString(url);
+ var state = setInternalState(that, {
+ type: 'URL'
+ });
+ var baseState, failure;
+
+ if (base !== undefined) {
+ if (base instanceof URLConstructor) baseState = getInternalURLState(base);else {
+ failure = parseURL(baseState = {}, $toString(base));
+ if (failure) throw TypeError(failure);
+ }
+ }
+
+ failure = parseURL(state, urlString, null, baseState);
+ if (failure) throw TypeError(failure);
+ var searchParams = state.searchParams = new URLSearchParams$1();
+ var searchParamsState = getInternalSearchParamsState(searchParams);
+ searchParamsState.updateSearchParams(state.query);
+
+ searchParamsState.updateURL = function () {
+ state.query = String(searchParams) || null;
+ };
+
+ if (!DESCRIPTORS) {
+ that.href = serializeURL.call(that);
+ that.origin = getOrigin.call(that);
+ that.protocol = getProtocol.call(that);
+ that.username = getUsername.call(that);
+ that.password = getPassword.call(that);
+ that.host = getHost.call(that);
+ that.hostname = getHostname.call(that);
+ that.port = getPort.call(that);
+ that.pathname = getPathname.call(that);
+ that.search = getSearch.call(that);
+ that.searchParams = getSearchParams.call(that);
+ that.hash = getHash.call(that);
+ }
+};
+
+var URLPrototype = URLConstructor.prototype;
+
+var serializeURL = function () {
+ var url = getInternalURLState(this);
+ var scheme = url.scheme;
+ var username = url.username;
+ var password = url.password;
+ var host = url.host;
+ var port = url.port;
+ var path = url.path;
+ var query = url.query;
+ var fragment = url.fragment;
+ var output = scheme + ':';
+
+ if (host !== null) {
+ output += '//';
+
+ if (includesCredentials(url)) {
+ output += username + (password ? ':' + password : '') + '@';
+ }
+
+ output += serializeHost(host);
+ if (port !== null) output += ':' + port;
+ } else if (scheme == 'file') output += '//';
+
+ output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+ if (query !== null) output += '?' + query;
+ if (fragment !== null) output += '#' + fragment;
+ return output;
+};
+
+var getOrigin = function () {
+ var url = getInternalURLState(this);
+ var scheme = url.scheme;
+ var port = url.port;
+ if (scheme == 'blob') try {
+ return new URLConstructor(scheme.path[0]).origin;
+ } catch (error) {
+ return 'null';
+ }
+ if (scheme == 'file' || !isSpecial(url)) return 'null';
+ return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');
+};
+
+var getProtocol = function () {
+ return getInternalURLState(this).scheme + ':';
+};
+
+var getUsername = function () {
+ return getInternalURLState(this).username;
+};
+
+var getPassword = function () {
+ return getInternalURLState(this).password;
+};
+
+var getHost = function () {
+ var url = getInternalURLState(this);
+ var host = url.host;
+ var port = url.port;
+ return host === null ? '' : port === null ? serializeHost(host) : serializeHost(host) + ':' + port;
+};
+
+var getHostname = function () {
+ var host = getInternalURLState(this).host;
+ return host === null ? '' : serializeHost(host);
+};
+
+var getPort = function () {
+ var port = getInternalURLState(this).port;
+ return port === null ? '' : String(port);
+};
+
+var getPathname = function () {
+ var url = getInternalURLState(this);
+ var path = url.path;
+ return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
+};
+
+var getSearch = function () {
+ var query = getInternalURLState(this).query;
+ return query ? '?' + query : '';
+};
+
+var getSearchParams = function () {
+ return getInternalURLState(this).searchParams;
+};
+
+var getHash = function () {
+ var fragment = getInternalURLState(this).fragment;
+ return fragment ? '#' + fragment : '';
+};
+
+var accessorDescriptor = function (getter, setter) {
+ return {
+ get: getter,
+ set: setter,
+ configurable: true,
+ enumerable: true
+ };
+};
+
+if (DESCRIPTORS) {
+ defineProperties(URLPrototype, {
+ // `URL.prototype.href` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-href
+ href: accessorDescriptor(serializeURL, function (href) {
+ var url = getInternalURLState(this);
+ var urlString = $toString(href);
+ var failure = parseURL(url, urlString);
+ if (failure) throw TypeError(failure);
+ getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+ }),
+ // `URL.prototype.origin` getter
+ // https://url.spec.whatwg.org/#dom-url-origin
+ origin: accessorDescriptor(getOrigin),
+ // `URL.prototype.protocol` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-protocol
+ protocol: accessorDescriptor(getProtocol, function (protocol) {
+ var url = getInternalURLState(this);
+ parseURL(url, $toString(protocol) + ':', SCHEME_START);
+ }),
+ // `URL.prototype.username` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-username
+ username: accessorDescriptor(getUsername, function (username) {
+ var url = getInternalURLState(this);
+ var codePoints = arrayFrom($toString(username));
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ url.username = '';
+
+ for (var i = 0; i < codePoints.length; i++) {
+ url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+ }
+ }),
+ // `URL.prototype.password` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-password
+ password: accessorDescriptor(getPassword, function (password) {
+ var url = getInternalURLState(this);
+ var codePoints = arrayFrom($toString(password));
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ url.password = '';
+
+ for (var i = 0; i < codePoints.length; i++) {
+ url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+ }
+ }),
+ // `URL.prototype.host` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-host
+ host: accessorDescriptor(getHost, function (host) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ parseURL(url, $toString(host), HOST);
+ }),
+ // `URL.prototype.hostname` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-hostname
+ hostname: accessorDescriptor(getHostname, function (hostname) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ parseURL(url, $toString(hostname), HOSTNAME);
+ }),
+ // `URL.prototype.port` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-port
+ port: accessorDescriptor(getPort, function (port) {
+ var url = getInternalURLState(this);
+ if (cannotHaveUsernamePasswordPort(url)) return;
+ port = $toString(port);
+ if (port == '') url.port = null;else parseURL(url, port, PORT);
+ }),
+ // `URL.prototype.pathname` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-pathname
+ pathname: accessorDescriptor(getPathname, function (pathname) {
+ var url = getInternalURLState(this);
+ if (url.cannotBeABaseURL) return;
+ url.path = [];
+ parseURL(url, $toString(pathname), PATH_START);
+ }),
+ // `URL.prototype.search` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-search
+ search: accessorDescriptor(getSearch, function (search) {
+ var url = getInternalURLState(this);
+ search = $toString(search);
+
+ if (search == '') {
+ url.query = null;
+ } else {
+ if ('?' == search.charAt(0)) search = search.slice(1);
+ url.query = '';
+ parseURL(url, search, QUERY);
+ }
+
+ getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
+ }),
+ // `URL.prototype.searchParams` getter
+ // https://url.spec.whatwg.org/#dom-url-searchparams
+ searchParams: accessorDescriptor(getSearchParams),
+ // `URL.prototype.hash` accessors pair
+ // https://url.spec.whatwg.org/#dom-url-hash
+ hash: accessorDescriptor(getHash, function (hash) {
+ var url = getInternalURLState(this);
+ hash = $toString(hash);
+
+ if (hash == '') {
+ url.fragment = null;
+ return;
+ }
+
+ if ('#' == hash.charAt(0)) hash = hash.slice(1);
+ url.fragment = '';
+ parseURL(url, hash, FRAGMENT);
+ })
+ });
+} // `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+
+
+redefine(URLPrototype, 'toJSON', function toJSON() {
+ return serializeURL.call(this);
+}, {
+ enumerable: true
+}); // `URL.prototype.toString` method
+// https://url.spec.whatwg.org/#URL-stringification-behavior
+
+redefine(URLPrototype, 'toString', function toString() {
+ return serializeURL.call(this);
+}, {
+ enumerable: true
+});
+
+if (NativeURL) {
+ var nativeCreateObjectURL = NativeURL.createObjectURL;
+ var nativeRevokeObjectURL = NativeURL.revokeObjectURL; // `URL.createObjectURL` method
+ // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {
+ return nativeCreateObjectURL.apply(NativeURL, arguments);
+ }); // `URL.revokeObjectURL` method
+ // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
+ // eslint-disable-next-line no-unused-vars -- required for `.length`
+
+ if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {
+ return nativeRevokeObjectURL.apply(NativeURL, arguments);
+ });
+}
+
+setToStringTag(URLConstructor, 'URL');
+$$1({
+ global: true,
+ forced: !USE_NATIVE_URL,
+ sham: !DESCRIPTORS
+}, {
+ URL: URLConstructor
+});
+
+var $ = _export; // `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+
+
+$({
+ target: 'URL',
+ proto: true,
+ enumerable: true
+}, {
+ toJSON: function toJSON() {
+ return URL.prototype.toString.call(this);
+ }
+});
+
+var propTypes = {exports: {}};
+
+var reactIs$1 = {exports: {}};
+
+var reactIs_development = {};
+
+/** @license React v16.13.1
+ * react-is.development.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+{
+ (function () {
+ // nor polyfill, then a plain number is used for performance.
+
+ var hasSymbol = typeof Symbol === 'function' && Symbol.for;
+ var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
+ var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
+ var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
+ var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
+ var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
+ var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
+ var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
+ // (unstable) APIs that have been removed. Can we remove the symbols?
+
+ var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
+ var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
+ var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
+ var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
+ var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
+ var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
+ var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
+ var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
+ var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
+ var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
+ var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
+
+ function isValidElementType(type) {
+ return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
+ type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
+ }
+
+ function typeOf(object) {
+ if (typeof object === 'object' && object !== null) {
+ var $$typeof = object.$$typeof;
+
+ switch ($$typeof) {
+ case REACT_ELEMENT_TYPE:
+ var type = object.type;
+
+ switch (type) {
+ case REACT_ASYNC_MODE_TYPE:
+ case REACT_CONCURRENT_MODE_TYPE:
+ case REACT_FRAGMENT_TYPE:
+ case REACT_PROFILER_TYPE:
+ case REACT_STRICT_MODE_TYPE:
+ case REACT_SUSPENSE_TYPE:
+ return type;
+
+ default:
+ var $$typeofType = type && type.$$typeof;
+
+ switch ($$typeofType) {
+ case REACT_CONTEXT_TYPE:
+ case REACT_FORWARD_REF_TYPE:
+ case REACT_LAZY_TYPE:
+ case REACT_MEMO_TYPE:
+ case REACT_PROVIDER_TYPE:
+ return $$typeofType;
+
+ default:
+ return $$typeof;
+ }
+
+ }
+
+ case REACT_PORTAL_TYPE:
+ return $$typeof;
+ }
+ }
+
+ return undefined;
+ } // AsyncMode is deprecated along with isAsyncMode
+
+
+ var AsyncMode = REACT_ASYNC_MODE_TYPE;
+ var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
+ var ContextConsumer = REACT_CONTEXT_TYPE;
+ var ContextProvider = REACT_PROVIDER_TYPE;
+ var Element = REACT_ELEMENT_TYPE;
+ var ForwardRef = REACT_FORWARD_REF_TYPE;
+ var Fragment = REACT_FRAGMENT_TYPE;
+ var Lazy = REACT_LAZY_TYPE;
+ var Memo = REACT_MEMO_TYPE;
+ var Portal = REACT_PORTAL_TYPE;
+ var Profiler = REACT_PROFILER_TYPE;
+ var StrictMode = REACT_STRICT_MODE_TYPE;
+ var Suspense = REACT_SUSPENSE_TYPE;
+ var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
+
+ function isAsyncMode(object) {
+ {
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
+ hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
+
+ console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
+ }
+ }
+ return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
+ }
+
+ function isConcurrentMode(object) {
+ return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
+ }
+
+ function isContextConsumer(object) {
+ return typeOf(object) === REACT_CONTEXT_TYPE;
+ }
+
+ function isContextProvider(object) {
+ return typeOf(object) === REACT_PROVIDER_TYPE;
+ }
+
+ function isElement(object) {
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
+ }
+
+ function isForwardRef(object) {
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
+ }
+
+ function isFragment(object) {
+ return typeOf(object) === REACT_FRAGMENT_TYPE;
+ }
+
+ function isLazy(object) {
+ return typeOf(object) === REACT_LAZY_TYPE;
+ }
+
+ function isMemo(object) {
+ return typeOf(object) === REACT_MEMO_TYPE;
+ }
+
+ function isPortal(object) {
+ return typeOf(object) === REACT_PORTAL_TYPE;
+ }
+
+ function isProfiler(object) {
+ return typeOf(object) === REACT_PROFILER_TYPE;
+ }
+
+ function isStrictMode(object) {
+ return typeOf(object) === REACT_STRICT_MODE_TYPE;
+ }
+
+ function isSuspense(object) {
+ return typeOf(object) === REACT_SUSPENSE_TYPE;
+ }
+
+ reactIs_development.AsyncMode = AsyncMode;
+ reactIs_development.ConcurrentMode = ConcurrentMode;
+ reactIs_development.ContextConsumer = ContextConsumer;
+ reactIs_development.ContextProvider = ContextProvider;
+ reactIs_development.Element = Element;
+ reactIs_development.ForwardRef = ForwardRef;
+ reactIs_development.Fragment = Fragment;
+ reactIs_development.Lazy = Lazy;
+ reactIs_development.Memo = Memo;
+ reactIs_development.Portal = Portal;
+ reactIs_development.Profiler = Profiler;
+ reactIs_development.StrictMode = StrictMode;
+ reactIs_development.Suspense = Suspense;
+ reactIs_development.isAsyncMode = isAsyncMode;
+ reactIs_development.isConcurrentMode = isConcurrentMode;
+ reactIs_development.isContextConsumer = isContextConsumer;
+ reactIs_development.isContextProvider = isContextProvider;
+ reactIs_development.isElement = isElement;
+ reactIs_development.isForwardRef = isForwardRef;
+ reactIs_development.isFragment = isFragment;
+ reactIs_development.isLazy = isLazy;
+ reactIs_development.isMemo = isMemo;
+ reactIs_development.isPortal = isPortal;
+ reactIs_development.isProfiler = isProfiler;
+ reactIs_development.isStrictMode = isStrictMode;
+ reactIs_development.isSuspense = isSuspense;
+ reactIs_development.isValidElementType = isValidElementType;
+ reactIs_development.typeOf = typeOf;
+ })();
+}
+
+{
+ reactIs$1.exports = reactIs_development;
+}
+
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+/* eslint-disable no-unused-vars */
+
+var getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var propIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
+
+ return Object(val);
+}
+
+function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ } // Detect buggy property enumeration order in older V8 versions.
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+
+
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+
+ test1[5] = 'de';
+
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test2 = {};
+
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+
+ if (order2.join('') !== '0123456789') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+
+ if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+}
+
+var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols$1) {
+ symbols = getOwnPropertySymbols$1(from);
+
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
+};
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var ReactPropTypesSecret$2 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
+var ReactPropTypesSecret_1 = ReactPropTypesSecret$2;
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var printWarning$2 = function () {};
+
+{
+ var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;
+
+ var loggedTypeFailures = {};
+ var has$1 = Function.call.bind(Object.prototype.hasOwnProperty);
+
+ printWarning$2 = function (text) {
+ var message = 'Warning: ' + text;
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+}
+/**
+ * Assert that the values match with the type specs.
+ * Error messages are memorized and will only be shown once.
+ *
+ * @param {object} typeSpecs Map of name to a ReactPropType
+ * @param {object} values Runtime values that need to be type-checked
+ * @param {string} location e.g. "prop", "context", "child context"
+ * @param {string} componentName Name of the component for error messages.
+ * @param {?Function} getStack Returns the component stack.
+ * @private
+ */
+
+
+function checkPropTypes$1(typeSpecs, values, location, componentName, getStack) {
+ {
+ for (var typeSpecName in typeSpecs) {
+ if (has$1(typeSpecs, typeSpecName)) {
+ var error; // Prop type validation may throw. In case they do, we don't want to
+ // fail the render phase where it didn't fail before. So we log it.
+ // After these have been cleaned up, we'll let them throw.
+
+ try {
+ // This is intentionally an invariant that gets caught. It's the same
+ // behavior as without this statement except with a better message.
+ if (typeof typeSpecs[typeSpecName] !== 'function') {
+ var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.');
+ err.name = 'Invariant Violation';
+ throw err;
+ }
+
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);
+ } catch (ex) {
+ error = ex;
+ }
+
+ if (error && !(error instanceof Error)) {
+ printWarning$2((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');
+ }
+
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
+ // Only monitor this failure once because there tends to be a lot of the
+ // same error.
+ loggedTypeFailures[error.message] = true;
+ var stack = getStack ? getStack() : '';
+ printWarning$2('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));
+ }
+ }
+ }
+ }
+}
+/**
+ * Resets warning cache when testing.
+ *
+ * @private
+ */
+
+
+checkPropTypes$1.resetWarningCache = function () {
+ {
+ loggedTypeFailures = {};
+ }
+};
+
+var checkPropTypes_1 = checkPropTypes$1;
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var ReactIs$1 = reactIs$1.exports;
+
+var assign$2 = objectAssign;
+
+var ReactPropTypesSecret = ReactPropTypesSecret_1;
+
+var checkPropTypes = checkPropTypes_1;
+
+var has = Function.call.bind(Object.prototype.hasOwnProperty);
+
+var printWarning$1 = function () {};
+
+{
+ printWarning$1 = function (text) {
+ var message = 'Warning: ' + text;
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+}
+
+function emptyFunctionThatReturnsNull() {
+ return null;
+}
+
+var factoryWithTypeCheckers = function (isValidElement, throwOnDirectAccess) {
+ /* global Symbol */
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
+
+ /**
+ * Returns the iterator method function contained on the iterable object.
+ *
+ * Be sure to invoke the function with the iterable as context:
+ *
+ * var iteratorFn = getIteratorFn(myIterable);
+ * if (iteratorFn) {
+ * var iterator = iteratorFn.call(myIterable);
+ * ...
+ * }
+ *
+ * @param {?object} maybeIterable
+ * @return {?function}
+ */
+
+ function getIteratorFn(maybeIterable) {
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
+
+ if (typeof iteratorFn === 'function') {
+ return iteratorFn;
+ }
+ }
+ /**
+ * Collection of methods that allow declaration and validation of props that are
+ * supplied to React components. Example usage:
+ *
+ * var Props = require('ReactPropTypes');
+ * var MyArticle = React.createClass({
+ * propTypes: {
+ * // An optional string prop named "description".
+ * description: Props.string,
+ *
+ * // A required enum prop named "category".
+ * category: Props.oneOf(['News','Photos']).isRequired,
+ *
+ * // A prop named "dialog" that requires an instance of Dialog.
+ * dialog: Props.instanceOf(Dialog).isRequired
+ * },
+ * render: function() { ... }
+ * });
+ *
+ * A more formal specification of how these methods are used:
+ *
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
+ * decl := ReactPropTypes.{type}(.isRequired)?
+ *
+ * Each and every declaration produces a function with the same signature. This
+ * allows the creation of custom validation functions. For example:
+ *
+ * var MyLink = React.createClass({
+ * propTypes: {
+ * // An optional string or URI prop named "href".
+ * href: function(props, propName, componentName) {
+ * var propValue = props[propName];
+ * if (propValue != null && typeof propValue !== 'string' &&
+ * !(propValue instanceof URI)) {
+ * return new Error(
+ * 'Expected a string or an URI for ' + propName + ' in ' +
+ * componentName
+ * );
+ * }
+ * }
+ * },
+ * render: function() {...}
+ * });
+ *
+ * @internal
+ */
+
+
+ var ANONYMOUS = '<>'; // Important!
+ // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
+
+ var ReactPropTypes = {
+ array: createPrimitiveTypeChecker('array'),
+ bool: createPrimitiveTypeChecker('boolean'),
+ func: createPrimitiveTypeChecker('function'),
+ number: createPrimitiveTypeChecker('number'),
+ object: createPrimitiveTypeChecker('object'),
+ string: createPrimitiveTypeChecker('string'),
+ symbol: createPrimitiveTypeChecker('symbol'),
+ any: createAnyTypeChecker(),
+ arrayOf: createArrayOfTypeChecker,
+ element: createElementTypeChecker(),
+ elementType: createElementTypeTypeChecker(),
+ instanceOf: createInstanceTypeChecker,
+ node: createNodeChecker(),
+ objectOf: createObjectOfTypeChecker,
+ oneOf: createEnumTypeChecker,
+ oneOfType: createUnionTypeChecker,
+ shape: createShapeTypeChecker,
+ exact: createStrictShapeTypeChecker
+ };
+ /**
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
+ */
+
+ /*eslint-disable no-self-compare*/
+
+ function is(x, y) {
+ // SameValue algorithm
+ if (x === y) {
+ // Steps 1-5, 7-10
+ // Steps 6.b-6.e: +0 != -0
+ return x !== 0 || 1 / x === 1 / y;
+ } else {
+ // Step 6.a: NaN == NaN
+ return x !== x && y !== y;
+ }
+ }
+ /*eslint-enable no-self-compare*/
+
+ /**
+ * We use an Error-like object for backward compatibility as people may call
+ * PropTypes directly and inspect their output. However, we don't use real
+ * Errors anymore. We don't inspect their stack anyway, and creating them
+ * is prohibitively expensive if they are created too often, such as what
+ * happens in oneOfType() for any type before the one that matched.
+ */
+
+
+ function PropTypeError(message) {
+ this.message = message;
+ this.stack = '';
+ } // Make `instanceof Error` still work for returned errors.
+
+
+ PropTypeError.prototype = Error.prototype;
+
+ function createChainableTypeChecker(validate) {
+ {
+ var manualPropTypeCallCache = {};
+ var manualPropTypeWarningCount = 0;
+ }
+
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
+ componentName = componentName || ANONYMOUS;
+ propFullName = propFullName || propName;
+
+ if (secret !== ReactPropTypesSecret) {
+ if (throwOnDirectAccess) {
+ // New behavior only for users of `prop-types` package
+ var err = 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');
+ err.name = 'Invariant Violation';
+ throw err;
+ } else if (typeof console !== 'undefined') {
+ // Old behavior for people using React.PropTypes
+ var cacheKey = componentName + ':' + propName;
+
+ if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors
+ manualPropTypeWarningCount < 3) {
+ printWarning$1('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');
+ manualPropTypeCallCache[cacheKey] = true;
+ manualPropTypeWarningCount++;
+ }
+ }
+ }
+
+ if (props[propName] == null) {
+ if (isRequired) {
+ if (props[propName] === null) {
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
+ }
+
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
+ }
+
+ return null;
+ } else {
+ return validate(props, propName, componentName, location, propFullName);
+ }
+ }
+
+ var chainedCheckType = checkType.bind(null, false);
+ chainedCheckType.isRequired = checkType.bind(null, true);
+ return chainedCheckType;
+ }
+
+ function createPrimitiveTypeChecker(expectedType) {
+ function validate(props, propName, componentName, location, propFullName, secret) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== expectedType) {
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
+ // check, but we can offer a more precise error message here rather than
+ // 'of type `object`'.
+ var preciseType = getPreciseType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createAnyTypeChecker() {
+ return createChainableTypeChecker(emptyFunctionThatReturnsNull);
+ }
+
+ function createArrayOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
+ }
+
+ var propValue = props[propName];
+
+ if (!Array.isArray(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
+ }
+
+ for (var i = 0; i < propValue.length; i++) {
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
+
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createElementTypeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ if (!isValidElement(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createElementTypeTypeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ if (!ReactIs$1.isValidElementType(propValue)) {
+ var propType = getPropType(propValue);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createInstanceTypeChecker(expectedClass) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!(props[propName] instanceof expectedClass)) {
+ var expectedClassName = expectedClass.name || ANONYMOUS;
+ var actualClassName = getClassName(props[propName]);
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createEnumTypeChecker(expectedValues) {
+ if (!Array.isArray(expectedValues)) {
+ {
+ if (arguments.length > 1) {
+ printWarning$1('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');
+ } else {
+ printWarning$1('Invalid argument supplied to oneOf, expected an array.');
+ }
+ }
+
+ return emptyFunctionThatReturnsNull;
+ }
+
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+
+ for (var i = 0; i < expectedValues.length; i++) {
+ if (is(propValue, expectedValues[i])) {
+ return null;
+ }
+ }
+
+ var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
+ var type = getPreciseType(value);
+
+ if (type === 'symbol') {
+ return String(value);
+ }
+
+ return value;
+ });
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createObjectOfTypeChecker(typeChecker) {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (typeof typeChecker !== 'function') {
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
+ }
+
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
+ }
+
+ for (var key in propValue) {
+ if (has(propValue, key)) {
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error instanceof Error) {
+ return error;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
+ if (!Array.isArray(arrayOfTypeCheckers)) {
+ printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') ;
+ return emptyFunctionThatReturnsNull;
+ }
+
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+
+ if (typeof checker !== 'function') {
+ printWarning$1('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');
+ return emptyFunctionThatReturnsNull;
+ }
+ }
+
+ function validate(props, propName, componentName, location, propFullName) {
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+ var checker = arrayOfTypeCheckers[i];
+
+ if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
+ return null;
+ }
+ }
+
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createNodeChecker() {
+ function validate(props, propName, componentName, location, propFullName) {
+ if (!isNode(props[propName])) {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ }
+
+ for (var key in shapeTypes) {
+ var checker = shapeTypes[key];
+
+ if (!checker) {
+ continue;
+ }
+
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function createStrictShapeTypeChecker(shapeTypes) {
+ function validate(props, propName, componentName, location, propFullName) {
+ var propValue = props[propName];
+ var propType = getPropType(propValue);
+
+ if (propType !== 'object') {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+ } // We need to check all keys in case some are required but missing from
+ // props.
+
+
+ var allKeys = assign$2({}, props[propName], shapeTypes);
+
+ for (var key in allKeys) {
+ var checker = shapeTypes[key];
+
+ if (!checker) {
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));
+ }
+
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+
+ if (error) {
+ return error;
+ }
+ }
+
+ return null;
+ }
+
+ return createChainableTypeChecker(validate);
+ }
+
+ function isNode(propValue) {
+ switch (typeof propValue) {
+ case 'number':
+ case 'string':
+ case 'undefined':
+ return true;
+
+ case 'boolean':
+ return !propValue;
+
+ case 'object':
+ if (Array.isArray(propValue)) {
+ return propValue.every(isNode);
+ }
+
+ if (propValue === null || isValidElement(propValue)) {
+ return true;
+ }
+
+ var iteratorFn = getIteratorFn(propValue);
+
+ if (iteratorFn) {
+ var iterator = iteratorFn.call(propValue);
+ var step;
+
+ if (iteratorFn !== propValue.entries) {
+ while (!(step = iterator.next()).done) {
+ if (!isNode(step.value)) {
+ return false;
+ }
+ }
+ } else {
+ // Iterator will provide entry [k,v] tuples rather than values.
+ while (!(step = iterator.next()).done) {
+ var entry = step.value;
+
+ if (entry) {
+ if (!isNode(entry[1])) {
+ return false;
+ }
+ }
+ }
+ }
+ } else {
+ return false;
+ }
+
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isSymbol(propType, propValue) {
+ // Native Symbol.
+ if (propType === 'symbol') {
+ return true;
+ } // falsy value can't be a Symbol
+
+
+ if (!propValue) {
+ return false;
+ } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
+
+
+ if (propValue['@@toStringTag'] === 'Symbol') {
+ return true;
+ } // Fallback for non-spec compliant Symbols which are polyfilled.
+
+
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
+ return true;
+ }
+
+ return false;
+ } // Equivalent of `typeof` but with special handling for array and regexp.
+
+
+ function getPropType(propValue) {
+ var propType = typeof propValue;
+
+ if (Array.isArray(propValue)) {
+ return 'array';
+ }
+
+ if (propValue instanceof RegExp) {
+ // Old webkits (at least until Android 4.0) return 'function' rather than
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
+ // passes PropTypes.object.
+ return 'object';
+ }
+
+ if (isSymbol(propType, propValue)) {
+ return 'symbol';
+ }
+
+ return propType;
+ } // This handles more types than `getPropType`. Only used for error messages.
+ // See `createPrimitiveTypeChecker`.
+
+
+ function getPreciseType(propValue) {
+ if (typeof propValue === 'undefined' || propValue === null) {
+ return '' + propValue;
+ }
+
+ var propType = getPropType(propValue);
+
+ if (propType === 'object') {
+ if (propValue instanceof Date) {
+ return 'date';
+ } else if (propValue instanceof RegExp) {
+ return 'regexp';
+ }
+ }
+
+ return propType;
+ } // Returns a string that is postfixed to a warning about an invalid type.
+ // For example, "undefined" or "of type array"
+
+
+ function getPostfixForTypeWarning(value) {
+ var type = getPreciseType(value);
+
+ switch (type) {
+ case 'array':
+ case 'object':
+ return 'an ' + type;
+
+ case 'boolean':
+ case 'date':
+ case 'regexp':
+ return 'a ' + type;
+
+ default:
+ return type;
+ }
+ } // Returns class name of the object, if any.
+
+
+ function getClassName(propValue) {
+ if (!propValue.constructor || !propValue.constructor.name) {
+ return ANONYMOUS;
+ }
+
+ return propValue.constructor.name;
+ }
+
+ ReactPropTypes.checkPropTypes = checkPropTypes;
+ ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
+ ReactPropTypes.PropTypes = ReactPropTypes;
+ return ReactPropTypes;
+};
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+{
+ var ReactIs = reactIs$1.exports; // By explicitly using `prop-types` you are opting into new development behavior.
+ // http://fb.me/prop-types-in-prod
+
+
+ var throwOnDirectAccess = true;
+ propTypes.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);
+}
+
+var _pt = propTypes.exports;
+
+var lib = {};
+
+/*:: type Attr = { [key: string]: string | number } */
+
+/*:: type Opts = { preserveNumbers: ?boolean } */
+
+/*
+
+style-attr
+====
+
+Very simple parsing and stringifying of style attributes.
+
+`parse`
+----
+
+Convert a style attribute string to an object.
+
+*/
+
+/*:: declare function parse (raw: string, opts: ?Opts): Attr */
+function parse(raw, opts) {
+ opts = opts || {};
+ var preserveNumbers = opts.preserveNumbers;
+
+ var trim = function (s) {
+ return s.trim();
+ };
+
+ var obj = {};
+ getKeyValueChunks(raw).map(trim).filter(Boolean).forEach(function (item) {
+ // split with `.indexOf` rather than `.split` because the value may also contain colons.
+ var pos = item.indexOf(':');
+ var key = item.substr(0, pos).trim();
+ var val = item.substr(pos + 1).trim();
+
+ if (preserveNumbers && isNumeric(val)) {
+ val = Number(val);
+ }
+
+ obj[key] = val;
+ });
+ return obj;
+}
+/*
+
+`isNumeric`
+----
+
+Check if a value is numeric.
+Via: https://stackoverflow.com/a/1830844/9324
+
+*/
+
+/*:: declare function isNumeric (n: any): boolean */
+
+
+function isNumeric(n) {
+ return !isNaN(parseFloat(n)) && isFinite(n);
+}
+/*
+
+`getKeyValueChunks`
+----
+
+Split a string into chunks matching `: `
+
+*/
+
+/*:: declare function getKeyValueChunks (raw: string): Array */
+
+
+function getKeyValueChunks(raw) {
+ var chunks = [];
+ var offset = 0;
+ var sep = ';';
+ var hasUnclosedUrl = /url\([^\)]+$/;
+ var chunk = '';
+ var nextSplit;
+
+ while (offset < raw.length) {
+ nextSplit = raw.indexOf(sep, offset);
+
+ if (nextSplit === -1) {
+ nextSplit = raw.length;
+ }
+
+ chunk += raw.substring(offset, nextSplit); // data URIs can contain semicolons, so make sure we get the whole thing
+
+ if (hasUnclosedUrl.test(chunk)) {
+ chunk += ';';
+ offset = nextSplit + 1;
+ continue;
+ }
+
+ chunks.push(chunk);
+ chunk = '';
+ offset = nextSplit + 1;
+ }
+
+ return chunks;
+}
+/*
+
+`stringify`
+----
+
+Convert an object into an attribute string
+
+*/
+
+/*:: declare function stringify (obj: Attr): string */
+
+
+function stringify(obj) {
+ return Object.keys(obj).map(function (key) {
+ return key + ':' + obj[key];
+ }).join(';');
+}
+/*
+
+`normalize`
+----
+
+Normalize an attribute string (eg. collapse duplicates)
+
+*/
+
+/*:: declare function normalize (str: string, opts: ?Opts): string */
+
+
+function normalize(str, opts) {
+ return stringify(parse(str, opts));
+}
+
+lib.parse = parse;
+lib.stringify = stringify;
+lib.normalize = normalize;
+
+var util$2 = {exports: {}};
+
+/**
+ * attr fix for old ie
+ * @author yiminghe@gmail.com
+ */
+
+var R_BOOLEAN = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ R_FOCUSABLE = /^(?:button|input|object|select|textarea)$/i,
+ R_CLICKABLE = /^a(?:rea)?$/i,
+ R_INVALID_CHAR = /:|^on/;
+var attrFix = {},
+ propFix,
+ attrHooks = {
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ tabindex: {
+ get: function (el) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ var attributeNode = el.getAttributeNode('tabindex');
+ return attributeNode && attributeNode.specified ? parseInt(attributeNode.value, 10) : R_FOCUSABLE.test(el.nodeName) || R_CLICKABLE.test(el.nodeName) && el.href ? 0 : undefined;
+ }
+ }
+},
+ boolHook = {
+ get: function (elem, name) {
+ // 转发到 prop 方法
+ return elem[propFix[name] || name] ? // 根据 w3c attribute , true 时返回属性名字符串
+ name.toLowerCase() : undefined;
+ }
+},
+ attrNodeHook = {};
+attrHooks.style = {
+ get: function (el) {
+ return el.style.cssText;
+ }
+};
+propFix = {
+ hidefocus: 'hideFocus',
+ tabindex: 'tabIndex',
+ readonly: 'readOnly',
+ 'for': 'htmlFor',
+ 'class': 'className',
+ maxlength: 'maxLength',
+ cellspacing: 'cellSpacing',
+ cellpadding: 'cellPadding',
+ rowspan: 'rowSpan',
+ colspan: 'colSpan',
+ usemap: 'useMap',
+ frameborder: 'frameBorder',
+ contenteditable: 'contentEditable'
+};
+var ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';
+var doc = typeof document !== 'undefined' ? document : {};
+
+function numberify(s) {
+ var c = 0; // convert '1.2.3.4' to 1.234
+
+ return parseFloat(s.replace(/\./g, function () {
+ return c++ === 0 ? '.' : '';
+ }));
+}
+
+function ieVersion() {
+ var m, v;
+
+ if ((m = ua.match(/MSIE ([^;]*)|Trident.*; rv(?:\s|:)?([0-9.]+)/)) && (v = m[1] || m[2])) {
+ return doc.documentMode || numberify(v);
+ }
+}
+
+function mix(s, t) {
+ for (var p in t) {
+ s[p] = t[p];
+ }
+}
+
+function each(arr, fn) {
+ var i = 0,
+ l = arr.length;
+
+ for (; i < l; i++) {
+ if (fn(arr[i], i) === false) {
+ break;
+ }
+ }
+}
+
+var ie = ieVersion();
+
+if (ie && ie < 8) {
+ attrHooks.style.set = function (el, val) {
+ el.style.cssText = val;
+ }; // get attribute value from attribute node for ie
+
+
+ mix(attrNodeHook, {
+ get: function (elem, name) {
+ var ret = elem.getAttributeNode(name); // Return undefined if attribute node specified by user
+
+ return ret && ( // fix #100
+ ret.specified || ret.nodeValue) ? ret.nodeValue : undefined;
+ }
+ }); // ie6,7 不区分 attribute 与 property
+
+ mix(attrFix, propFix); // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+
+ attrHooks.tabIndex = attrHooks.tabindex; // 不光是 href, src, 还有 rowspan 等非 mapping 属性,也需要用第 2 个参数来获取原始值
+ // 注意 colSpan rowSpan 已经由 propFix 转为大写
+
+ each(['href', 'src', 'width', 'height', 'colSpan', 'rowSpan'], function (name) {
+ attrHooks[name] = {
+ get: function (elem) {
+ var ret = elem.getAttribute(name, 2);
+ return ret === null ? undefined : ret;
+ }
+ };
+ });
+ attrHooks.placeholder = {
+ get: function (elem, name) {
+ return elem[name] || attrNodeHook.get(elem, name);
+ }
+ };
+}
+
+if (ie) {
+ var hrefFix = attrHooks.href = attrHooks.href || {};
+
+ hrefFix.set = function (el, val, name) {
+ var childNodes = el.childNodes,
+ b,
+ len = childNodes.length,
+ allText = len > 0;
+
+ for (len = len - 1; len >= 0; len--) {
+ if (childNodes[len].nodeType !== 3) {
+ allText = 0;
+ }
+ }
+
+ if (allText) {
+ b = el.ownerDocument.createElement('b');
+ b.style.display = 'none';
+ el.appendChild(b);
+ }
+
+ el.setAttribute(name, '' + val);
+
+ if (b) {
+ el.removeChild(b);
+ }
+ };
+}
+
+var RE_TRIM = /^[\s\xa0]+|[\s\xa0]+$/g,
+ trim = String.prototype.trim;
+var SPACE = ' ';
+var getElementsByTagName;
+
+getElementsByTagName = function (name, context) {
+ return context.getElementsByTagName(name);
+};
+
+if (doc.createElement) {
+ var div = doc.createElement('div');
+ div.appendChild(document.createComment(''));
+
+ if (div.getElementsByTagName('*').length) {
+ getElementsByTagName = function (name, context) {
+ var nodes = context.getElementsByTagName(name),
+ needsFilter = name === '*'; //
+
+ if (needsFilter || typeof nodes.length !== 'number') {
+ var ret = [],
+ i = 0,
+ el;
+
+ while (el = nodes[i++]) {
+ if (!needsFilter || el.nodeType === 1) {
+ ret.push(el);
+ }
+ }
+
+ return ret;
+ } else {
+ return nodes;
+ }
+ };
+ }
+}
+
+var compareNodeOrder = 'sourceIndex' in (doc && doc.documentElement || {}) ? function (a, b) {
+ return a.sourceIndex - b.sourceIndex;
+} : function (a, b) {
+ if (!a.compareDocumentPosition || !b.compareDocumentPosition) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ var bit = a.compareDocumentPosition(b) & 4;
+ return bit ? -1 : 1;
+};
+var util$1 = util$2.exports = {
+ ie: ie,
+ unique: function () {
+ var hasDuplicate,
+ baseHasDuplicate = true; // Here we check if the JavaScript engine is using some sort of
+ // optimization where it does not always call our comparison
+ // function. If that is the case, discard the hasDuplicate value.
+ // Thus far that includes Google Chrome.
+
+ [0, 0].sort(function () {
+ baseHasDuplicate = false;
+ return 0;
+ });
+
+ function sortOrder(a, b) {
+ if (a === b) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ return compareNodeOrder(a, b);
+ } // 排序去重
+
+
+ return function (elements) {
+ hasDuplicate = baseHasDuplicate;
+ elements.sort(sortOrder);
+
+ if (hasDuplicate) {
+ var i = 1,
+ len = elements.length;
+
+ while (i < len) {
+ if (elements[i] === elements[i - 1]) {
+ elements.splice(i, 1);
+ --len;
+ } else {
+ i++;
+ }
+ }
+ }
+
+ return elements;
+ };
+ }(),
+ getElementsByTagName: getElementsByTagName,
+ getSimpleAttr: function (el, name) {
+ var ret = el && el.getAttributeNode(name);
+
+ if (ret && ret.specified) {
+ return 'value' in ret ? ret.value : ret.nodeValue;
+ }
+
+ return undefined;
+ },
+ contains: ie ? function (a, b) {
+ if (a.nodeType === 9) {
+ a = a.documentElement;
+ } // !a.contains => a===document || text
+ // 注意原生 contains 判断时 a===b 也返回 true
+
+
+ b = b.parentNode;
+
+ if (a === b) {
+ return true;
+ } // when b is document, a.contains(b) 不支持的接口 in ie
+
+
+ if (b && b.nodeType === 1) {
+ return a.contains && a.contains(b);
+ } else {
+ return false;
+ }
+ } : function (a, b) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ },
+ isTag: function (el, value) {
+ return value === '*' || el.nodeName.toLowerCase() === value.toLowerCase();
+ },
+ hasSingleClass: function (el, cls) {
+ // consider xml
+ // https://github.com/kissyteam/kissy/issues/532
+ var className = el && util$1.getSimpleAttr(el, 'class');
+ return className && (className = className.replace(/[\r\t\n]/g, SPACE)) && (SPACE + className + SPACE).indexOf(SPACE + cls + SPACE) > -1;
+ },
+ startsWith: function (str, prefix) {
+ return str.lastIndexOf(prefix, 0) === 0;
+ },
+ endsWith: function (str, suffix) {
+ var ind = str.length - suffix.length;
+ return ind >= 0 && str.indexOf(suffix, ind) === ind;
+ },
+ trim: trim ? function (str) {
+ return str == null ? '' : trim.call(str);
+ } : function (str) {
+ return str == null ? '' : (str + '').replace(RE_TRIM, '');
+ },
+ attr: function (el, name) {
+ var attrNormalizer, ret; // scrollLeft
+
+ name = name.toLowerCase(); // custom attrs
+
+ name = attrFix[name] || name;
+
+ if (R_BOOLEAN.test(name)) {
+ attrNormalizer = boolHook;
+ } else if (R_INVALID_CHAR.test(name)) {
+ // only old ie?
+ attrNormalizer = attrNodeHook;
+ } else {
+ attrNormalizer = attrHooks[name];
+ }
+
+ if (el && el.nodeType === 1) {
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if (el.nodeName.toLowerCase() === 'form') {
+ attrNormalizer = attrNodeHook;
+ }
+
+ if (attrNormalizer && attrNormalizer.get) {
+ return attrNormalizer.get(el, name);
+ }
+
+ ret = el.getAttribute(name);
+
+ if (ret === '') {
+ var attrNode = el.getAttributeNode(name);
+
+ if (!attrNode || !attrNode.specified) {
+ return undefined;
+ }
+ } // standard browser non-existing attribute return null
+ // ie<8 will return undefined , because it return property
+ // so norm to undefined
+
+
+ return ret === null ? undefined : ret;
+ }
+ }
+};
+
+var parser$1 = {exports: {}};
+
+/*
+ Generated by kison.*/
+
+(function (module) {
+var parser = function (undefined$1) {
+ /*jshint quotmark:false, loopfunc:true, indent:false, unused:false, asi:true, boss:true*/
+
+ /* Generated by kison */
+ var parser = {},
+ GrammarConst = {
+ 'SHIFT_TYPE': 1,
+ 'REDUCE_TYPE': 2,
+ 'ACCEPT_TYPE': 0,
+ 'TYPE_INDEX': 0,
+ 'PRODUCTION_INDEX': 1,
+ 'TO_INDEX': 2
+ };
+ /*jslint quotmark: false*/
+
+ function mix(to, from) {
+ for (var f in from) {
+ to[f] = from[f];
+ }
+ }
+
+ function isArray(obj) {
+ return '[object Array]' === Object.prototype.toString.call(obj);
+ }
+
+ function each(object, fn, context) {
+ if (object) {
+ var key,
+ val,
+ length,
+ i = 0;
+ context = context || null;
+
+ if (!isArray(object)) {
+ for (key in object) {
+ // can not use hasOwnProperty
+ if (fn.call(context, object[key], key, object) === false) {
+ break;
+ }
+ }
+ } else {
+ length = object.length;
+
+ for (val = object[0]; i < length; val = object[++i]) {
+ if (fn.call(context, val, i, object) === false) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ function inArray(item, arr) {
+ for (var i = 0, l = arr.length; i < l; i++) {
+ if (arr[i] === item) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ var Lexer = function Lexer(cfg) {
+ var self = this;
+ /*
+ lex rules.
+ @type {Object[]}
+ @example
+ [
+ {
+ regexp:'\\w+',
+ state:['xx'],
+ token:'c',
+ // this => lex
+ action:function(){}
+ }
+ ]
+ */
+
+ self.rules = [];
+ mix(self, cfg);
+ /*
+ Input languages
+ @type {String}
+ */
+
+ self.resetInput(self.input);
+ };
+
+ Lexer.prototype = {
+ 'resetInput': function (input) {
+ mix(this, {
+ input: input,
+ matched: '',
+ stateStack: [Lexer.STATIC.INITIAL],
+ match: '',
+ text: '',
+ firstLine: 1,
+ lineNumber: 1,
+ lastLine: 1,
+ firstColumn: 1,
+ lastColumn: 1
+ });
+ },
+ 'getCurrentRules': function () {
+ var self = this,
+ currentState = self.stateStack[self.stateStack.length - 1],
+ rules = []; //#JSCOVERAGE_IF
+
+ if (self.mapState) {
+ currentState = self.mapState(currentState);
+ }
+
+ each(self.rules, function (r) {
+ var state = r.state || r[3];
+
+ if (!state) {
+ if (currentState === Lexer.STATIC.INITIAL) {
+ rules.push(r);
+ }
+ } else if (inArray(currentState, state)) {
+ rules.push(r);
+ }
+ });
+ return rules;
+ },
+ 'pushState': function (state) {
+ this.stateStack.push(state);
+ },
+ 'popState': function (num) {
+ num = num || 1;
+ var ret;
+
+ while (num--) {
+ ret = this.stateStack.pop();
+ }
+
+ return ret;
+ },
+ 'showDebugInfo': function () {
+ var self = this,
+ DEBUG_CONTEXT_LIMIT = Lexer.STATIC.DEBUG_CONTEXT_LIMIT,
+ matched = self.matched,
+ match = self.match,
+ input = self.input;
+ matched = matched.slice(0, matched.length - match.length); //#JSCOVERAGE_IF 0
+
+ var past = (matched.length > DEBUG_CONTEXT_LIMIT ? '...' : '') + matched.slice(0 - DEBUG_CONTEXT_LIMIT).replace(/\n/, ' '),
+ next = match + input; //#JSCOVERAGE_ENDIF
+
+ next = next.slice(0, DEBUG_CONTEXT_LIMIT) + (next.length > DEBUG_CONTEXT_LIMIT ? '...' : '');
+ return past + next + '\n' + new Array(past.length + 1).join('-') + '^';
+ },
+ 'mapSymbol': function mapSymbolForCodeGen(t) {
+ return this.symbolMap[t];
+ },
+ 'mapReverseSymbol': function (rs) {
+ var self = this,
+ symbolMap = self.symbolMap,
+ i,
+ reverseSymbolMap = self.reverseSymbolMap;
+
+ if (!reverseSymbolMap && symbolMap) {
+ reverseSymbolMap = self.reverseSymbolMap = {};
+
+ for (i in symbolMap) {
+ reverseSymbolMap[symbolMap[i]] = i;
+ }
+ } //#JSCOVERAGE_IF
+
+
+ if (reverseSymbolMap) {
+ return reverseSymbolMap[rs];
+ } else {
+ return rs;
+ }
+ },
+ 'lex': function () {
+ var self = this,
+ input = self.input,
+ i,
+ rule,
+ m,
+ ret,
+ lines,
+ rules = self.getCurrentRules();
+ self.match = self.text = '';
+
+ if (!input) {
+ return self.mapSymbol(Lexer.STATIC.END_TAG);
+ }
+
+ for (i = 0; i < rules.length; i++) {
+ rule = rules[i]; //#JSCOVERAGE_IF 0
+
+ var regexp = rule.regexp || rule[1],
+ token = rule.token || rule[0],
+ action = rule.action || rule[2] || undefined$1; //#JSCOVERAGE_ENDIF
+
+ if (m = input.match(regexp)) {
+ lines = m[0].match(/\n.*/g);
+
+ if (lines) {
+ self.lineNumber += lines.length;
+ }
+
+ mix(self, {
+ firstLine: self.lastLine,
+ lastLine: self.lineNumber + 1,
+ firstColumn: self.lastColumn,
+ lastColumn: lines ? lines[lines.length - 1].length - 1 : self.lastColumn + m[0].length
+ });
+ var match; // for error report
+
+ match = self.match = m[0]; // all matches
+
+ self.matches = m; // may change by user
+
+ self.text = match; // matched content utils now
+
+ self.matched += match;
+ ret = action && action.call(self);
+
+ if (ret === undefined$1) {
+ ret = token;
+ } else {
+ ret = self.mapSymbol(ret);
+ }
+
+ input = input.slice(match.length);
+ self.input = input;
+
+ if (ret) {
+ return ret;
+ } else {
+ // ignore
+ return self.lex();
+ }
+ }
+ }
+ }
+ };
+ Lexer.STATIC = {
+ 'INITIAL': 'I',
+ 'DEBUG_CONTEXT_LIMIT': 20,
+ 'END_TAG': '$EOF'
+ };
+ var lexer = new Lexer({
+ 'rules': [['b', /^\[(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['c', /^(?:[\t\r\n\f\x20]*)\]/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['d', /^(?:[\t\r\n\f\x20]*)~=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['e', /^(?:[\t\r\n\f\x20]*)\|=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['f', /^(?:[\t\r\n\f\x20]*)\^=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['g', /^(?:[\t\r\n\f\x20]*)\$=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['h', /^(?:[\t\r\n\f\x20]*)\*=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['i', /^(?:[\t\r\n\f\x20]*)\=(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['j', /^(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)\(/, function () {
+ this.text = this.yy.trim(this.text).slice(0, -1);
+ this.pushState('fn');
+ }], ['k', /^[^\)]*/, function () {
+ this.popState();
+ }, ['fn']], ['l', /^(?:[\t\r\n\f\x20]*)\)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['m', /^:not\((?:[\t\r\n\f\x20]*)/i, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['n', /^(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)/, function () {
+ this.text = this.yy.unEscape(this.text);
+ }], ['o', /^"(\\"|[^"])*"/, function () {
+ this.text = this.yy.unEscapeStr(this.text);
+ }], ['o', /^'(\\'|[^'])*'/, function () {
+ this.text = this.yy.unEscapeStr(this.text);
+ }], ['p', /^#(?:(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))+)/, function () {
+ this.text = this.yy.unEscape(this.text.slice(1));
+ }], ['q', /^\.(?:(?:[\w]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))(?:[\w\d-]|[^\x00-\xa0]|(?:\\[^\n\r\f0-9a-f]))*)/, function () {
+ this.text = this.yy.unEscape(this.text.slice(1));
+ }], ['r', /^(?:[\t\r\n\f\x20]*),(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['s', /^::?/, 0], ['t', /^(?:[\t\r\n\f\x20]*)\+(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['u', /^(?:[\t\r\n\f\x20]*)>(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['v', /^(?:[\t\r\n\f\x20]*)~(?:[\t\r\n\f\x20]*)/, function () {
+ this.text = this.yy.trim(this.text);
+ }], ['w', /^\*/, 0], ['x', /^(?:[\t\r\n\f\x20]+)/, 0], ['y', /^./, 0]]
+ });
+ parser.lexer = lexer;
+ lexer.symbolMap = {
+ '$EOF': 'a',
+ 'LEFT_BRACKET': 'b',
+ 'RIGHT_BRACKET': 'c',
+ 'INCLUDES': 'd',
+ 'DASH_MATCH': 'e',
+ 'PREFIX_MATCH': 'f',
+ 'SUFFIX_MATCH': 'g',
+ 'SUBSTRING_MATCH': 'h',
+ 'ALL_MATCH': 'i',
+ 'FUNCTION': 'j',
+ 'PARAMETER': 'k',
+ 'RIGHT_PARENTHESES': 'l',
+ 'NOT': 'm',
+ 'IDENT': 'n',
+ 'STRING': 'o',
+ 'HASH': 'p',
+ 'CLASS': 'q',
+ 'COMMA': 'r',
+ 'COLON': 's',
+ 'PLUS': 't',
+ 'GREATER': 'u',
+ 'TILDE': 'v',
+ 'UNIVERSAL': 'w',
+ 'S': 'x',
+ 'INVALID': 'y',
+ '$START': 'z',
+ 'selectors_group': 'aa',
+ 'selector': 'ab',
+ 'simple_selector_sequence': 'ac',
+ 'combinator': 'ad',
+ 'type_selector': 'ae',
+ 'id_selector': 'af',
+ 'class_selector': 'ag',
+ 'attrib_match': 'ah',
+ 'attrib': 'ai',
+ 'attrib_val': 'aj',
+ 'pseudo': 'ak',
+ 'negation': 'al',
+ 'negation_arg': 'am',
+ 'suffix_selector': 'an',
+ 'suffix_selectors': 'ao'
+ };
+ parser.productions = [['z', ['aa']], ['aa', ['ab'], function () {
+ return [this.$1];
+ }], ['aa', ['aa', 'r', 'ab'], function () {
+ this.$1.push(this.$3);
+ }], ['ab', ['ac']], ['ab', ['ab', 'ad', 'ac'], function () {
+ // LinkedList
+ this.$1.nextCombinator = this.$3.prevCombinator = this.$2;
+ var order;
+ order = this.$1.order = this.$1.order || 0;
+ this.$3.order = order + 1;
+ this.$3.prev = this.$1;
+ this.$1.next = this.$3;
+ return this.$3;
+ }], ['ad', ['t']], ['ad', ['u']], ['ad', ['v']], ['ad', ['x'], function () {
+ return ' ';
+ }], ['ae', ['n'], function () {
+ return {
+ t: 'tag',
+ value: this.$1
+ };
+ }], ['ae', ['w'], function () {
+ return {
+ t: 'tag',
+ value: this.$1
+ };
+ }], ['af', ['p'], function () {
+ return {
+ t: 'id',
+ value: this.$1
+ };
+ }], ['ag', ['q'], function () {
+ return {
+ t: 'cls',
+ value: this.$1
+ };
+ }], ['ah', ['f']], ['ah', ['g']], ['ah', ['h']], ['ah', ['i']], ['ah', ['d']], ['ah', ['e']], ['ai', ['b', 'n', 'c'], function () {
+ return {
+ t: 'attrib',
+ value: {
+ ident: this.$2
+ }
+ };
+ }], ['aj', ['n']], ['aj', ['o']], ['ai', ['b', 'n', 'ah', 'aj', 'c'], function () {
+ return {
+ t: 'attrib',
+ value: {
+ ident: this.$2,
+ match: this.$3,
+ value: this.$4
+ }
+ };
+ }], ['ak', ['s', 'j', 'k', 'l'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ fn: this.$2.toLowerCase(),
+ param: this.$3
+ }
+ };
+ }], ['ak', ['s', 'n'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ ident: this.$2.toLowerCase()
+ }
+ };
+ }], ['al', ['m', 'am', 'l'], function () {
+ return {
+ t: 'pseudo',
+ value: {
+ fn: 'not',
+ param: this.$2
+ }
+ };
+ }], ['am', ['ae']], ['am', ['af']], ['am', ['ag']], ['am', ['ai']], ['am', ['ak']], ['an', ['af']], ['an', ['ag']], ['an', ['ai']], ['an', ['ak']], ['an', ['al']], ['ao', ['an'], function () {
+ return [this.$1];
+ }], ['ao', ['ao', 'an'], function () {
+ this.$1.push(this.$2);
+ }], ['ac', ['ae']], ['ac', ['ao'], function () {
+ return {
+ suffix: this.$1
+ };
+ }], ['ac', ['ae', 'ao'], function () {
+ return {
+ t: 'tag',
+ value: this.$1.value,
+ suffix: this.$2
+ };
+ }]];
+ parser.table = {
+ 'gotos': {
+ '0': {
+ 'aa': 8,
+ 'ab': 9,
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 18
+ },
+ '2': {
+ 'ae': 20,
+ 'af': 21,
+ 'ag': 22,
+ 'ai': 23,
+ 'ak': 24,
+ 'am': 25
+ },
+ '9': {
+ 'ad': 33
+ },
+ '10': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 34
+ },
+ '17': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 35
+ },
+ '19': {
+ 'ah': 43
+ },
+ '28': {
+ 'ab': 46,
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 18
+ },
+ '33': {
+ 'ae': 10,
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 16,
+ 'ao': 17,
+ 'ac': 47
+ },
+ '34': {
+ 'af': 11,
+ 'ag': 12,
+ 'ai': 13,
+ 'ak': 14,
+ 'al': 15,
+ 'an': 35
+ },
+ '43': {
+ 'aj': 50
+ },
+ '46': {
+ 'ad': 33
+ }
+ },
+ 'action': {
+ '0': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '1': {
+ 'n': [1, undefined$1, 19]
+ },
+ '2': {
+ 'b': [1, undefined$1, 1],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '3': {
+ 'a': [2, 9],
+ 'r': [2, 9],
+ 't': [2, 9],
+ 'u': [2, 9],
+ 'v': [2, 9],
+ 'x': [2, 9],
+ 'p': [2, 9],
+ 'q': [2, 9],
+ 'b': [2, 9],
+ 's': [2, 9],
+ 'm': [2, 9],
+ 'l': [2, 9]
+ },
+ '4': {
+ 'a': [2, 11],
+ 'r': [2, 11],
+ 't': [2, 11],
+ 'u': [2, 11],
+ 'v': [2, 11],
+ 'x': [2, 11],
+ 'p': [2, 11],
+ 'q': [2, 11],
+ 'b': [2, 11],
+ 's': [2, 11],
+ 'm': [2, 11],
+ 'l': [2, 11]
+ },
+ '5': {
+ 'a': [2, 12],
+ 'r': [2, 12],
+ 't': [2, 12],
+ 'u': [2, 12],
+ 'v': [2, 12],
+ 'x': [2, 12],
+ 'p': [2, 12],
+ 'q': [2, 12],
+ 'b': [2, 12],
+ 's': [2, 12],
+ 'm': [2, 12],
+ 'l': [2, 12]
+ },
+ '6': {
+ 'j': [1, undefined$1, 26],
+ 'n': [1, undefined$1, 27]
+ },
+ '7': {
+ 'a': [2, 10],
+ 'r': [2, 10],
+ 't': [2, 10],
+ 'u': [2, 10],
+ 'v': [2, 10],
+ 'x': [2, 10],
+ 'p': [2, 10],
+ 'q': [2, 10],
+ 'b': [2, 10],
+ 's': [2, 10],
+ 'm': [2, 10],
+ 'l': [2, 10]
+ },
+ '8': {
+ 'a': [0],
+ 'r': [1, undefined$1, 28]
+ },
+ '9': {
+ 'a': [2, 1],
+ 'r': [2, 1],
+ 't': [1, undefined$1, 29],
+ 'u': [1, undefined$1, 30],
+ 'v': [1, undefined$1, 31],
+ 'x': [1, undefined$1, 32]
+ },
+ '10': {
+ 'a': [2, 38],
+ 'r': [2, 38],
+ 't': [2, 38],
+ 'u': [2, 38],
+ 'v': [2, 38],
+ 'x': [2, 38],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '11': {
+ 'a': [2, 31],
+ 'r': [2, 31],
+ 't': [2, 31],
+ 'u': [2, 31],
+ 'v': [2, 31],
+ 'x': [2, 31],
+ 'p': [2, 31],
+ 'q': [2, 31],
+ 'b': [2, 31],
+ 's': [2, 31],
+ 'm': [2, 31]
+ },
+ '12': {
+ 'a': [2, 32],
+ 'r': [2, 32],
+ 't': [2, 32],
+ 'u': [2, 32],
+ 'v': [2, 32],
+ 'x': [2, 32],
+ 'p': [2, 32],
+ 'q': [2, 32],
+ 'b': [2, 32],
+ 's': [2, 32],
+ 'm': [2, 32]
+ },
+ '13': {
+ 'a': [2, 33],
+ 'r': [2, 33],
+ 't': [2, 33],
+ 'u': [2, 33],
+ 'v': [2, 33],
+ 'x': [2, 33],
+ 'p': [2, 33],
+ 'q': [2, 33],
+ 'b': [2, 33],
+ 's': [2, 33],
+ 'm': [2, 33]
+ },
+ '14': {
+ 'a': [2, 34],
+ 'r': [2, 34],
+ 't': [2, 34],
+ 'u': [2, 34],
+ 'v': [2, 34],
+ 'x': [2, 34],
+ 'p': [2, 34],
+ 'q': [2, 34],
+ 'b': [2, 34],
+ 's': [2, 34],
+ 'm': [2, 34]
+ },
+ '15': {
+ 'a': [2, 35],
+ 'r': [2, 35],
+ 't': [2, 35],
+ 'u': [2, 35],
+ 'v': [2, 35],
+ 'x': [2, 35],
+ 'p': [2, 35],
+ 'q': [2, 35],
+ 'b': [2, 35],
+ 's': [2, 35],
+ 'm': [2, 35]
+ },
+ '16': {
+ 'a': [2, 36],
+ 'r': [2, 36],
+ 't': [2, 36],
+ 'u': [2, 36],
+ 'v': [2, 36],
+ 'x': [2, 36],
+ 'p': [2, 36],
+ 'q': [2, 36],
+ 'b': [2, 36],
+ 's': [2, 36],
+ 'm': [2, 36]
+ },
+ '17': {
+ 'a': [2, 39],
+ 'r': [2, 39],
+ 't': [2, 39],
+ 'u': [2, 39],
+ 'v': [2, 39],
+ 'x': [2, 39],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '18': {
+ 'a': [2, 3],
+ 'r': [2, 3],
+ 't': [2, 3],
+ 'u': [2, 3],
+ 'v': [2, 3],
+ 'x': [2, 3]
+ },
+ '19': {
+ 'c': [1, undefined$1, 36],
+ 'd': [1, undefined$1, 37],
+ 'e': [1, undefined$1, 38],
+ 'f': [1, undefined$1, 39],
+ 'g': [1, undefined$1, 40],
+ 'h': [1, undefined$1, 41],
+ 'i': [1, undefined$1, 42]
+ },
+ '20': {
+ 'l': [2, 26]
+ },
+ '21': {
+ 'l': [2, 27]
+ },
+ '22': {
+ 'l': [2, 28]
+ },
+ '23': {
+ 'l': [2, 29]
+ },
+ '24': {
+ 'l': [2, 30]
+ },
+ '25': {
+ 'l': [1, undefined$1, 44]
+ },
+ '26': {
+ 'k': [1, undefined$1, 45]
+ },
+ '27': {
+ 'a': [2, 24],
+ 'r': [2, 24],
+ 't': [2, 24],
+ 'u': [2, 24],
+ 'v': [2, 24],
+ 'x': [2, 24],
+ 'p': [2, 24],
+ 'q': [2, 24],
+ 'b': [2, 24],
+ 's': [2, 24],
+ 'm': [2, 24],
+ 'l': [2, 24]
+ },
+ '28': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '29': {
+ 'n': [2, 5],
+ 'w': [2, 5],
+ 'p': [2, 5],
+ 'q': [2, 5],
+ 'b': [2, 5],
+ 's': [2, 5],
+ 'm': [2, 5]
+ },
+ '30': {
+ 'n': [2, 6],
+ 'w': [2, 6],
+ 'p': [2, 6],
+ 'q': [2, 6],
+ 'b': [2, 6],
+ 's': [2, 6],
+ 'm': [2, 6]
+ },
+ '31': {
+ 'n': [2, 7],
+ 'w': [2, 7],
+ 'p': [2, 7],
+ 'q': [2, 7],
+ 'b': [2, 7],
+ 's': [2, 7],
+ 'm': [2, 7]
+ },
+ '32': {
+ 'n': [2, 8],
+ 'w': [2, 8],
+ 'p': [2, 8],
+ 'q': [2, 8],
+ 'b': [2, 8],
+ 's': [2, 8],
+ 'm': [2, 8]
+ },
+ '33': {
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'n': [1, undefined$1, 3],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6],
+ 'w': [1, undefined$1, 7]
+ },
+ '34': {
+ 'a': [2, 40],
+ 'r': [2, 40],
+ 't': [2, 40],
+ 'u': [2, 40],
+ 'v': [2, 40],
+ 'x': [2, 40],
+ 'b': [1, undefined$1, 1],
+ 'm': [1, undefined$1, 2],
+ 'p': [1, undefined$1, 4],
+ 'q': [1, undefined$1, 5],
+ 's': [1, undefined$1, 6]
+ },
+ '35': {
+ 'a': [2, 37],
+ 'r': [2, 37],
+ 't': [2, 37],
+ 'u': [2, 37],
+ 'v': [2, 37],
+ 'x': [2, 37],
+ 'p': [2, 37],
+ 'q': [2, 37],
+ 'b': [2, 37],
+ 's': [2, 37],
+ 'm': [2, 37]
+ },
+ '36': {
+ 'a': [2, 19],
+ 'r': [2, 19],
+ 't': [2, 19],
+ 'u': [2, 19],
+ 'v': [2, 19],
+ 'x': [2, 19],
+ 'p': [2, 19],
+ 'q': [2, 19],
+ 'b': [2, 19],
+ 's': [2, 19],
+ 'm': [2, 19],
+ 'l': [2, 19]
+ },
+ '37': {
+ 'n': [2, 17],
+ 'o': [2, 17]
+ },
+ '38': {
+ 'n': [2, 18],
+ 'o': [2, 18]
+ },
+ '39': {
+ 'n': [2, 13],
+ 'o': [2, 13]
+ },
+ '40': {
+ 'n': [2, 14],
+ 'o': [2, 14]
+ },
+ '41': {
+ 'n': [2, 15],
+ 'o': [2, 15]
+ },
+ '42': {
+ 'n': [2, 16],
+ 'o': [2, 16]
+ },
+ '43': {
+ 'n': [1, undefined$1, 48],
+ 'o': [1, undefined$1, 49]
+ },
+ '44': {
+ 'a': [2, 25],
+ 'r': [2, 25],
+ 't': [2, 25],
+ 'u': [2, 25],
+ 'v': [2, 25],
+ 'x': [2, 25],
+ 'p': [2, 25],
+ 'q': [2, 25],
+ 'b': [2, 25],
+ 's': [2, 25],
+ 'm': [2, 25]
+ },
+ '45': {
+ 'l': [1, undefined$1, 51]
+ },
+ '46': {
+ 'a': [2, 2],
+ 'r': [2, 2],
+ 't': [1, undefined$1, 29],
+ 'u': [1, undefined$1, 30],
+ 'v': [1, undefined$1, 31],
+ 'x': [1, undefined$1, 32]
+ },
+ '47': {
+ 'a': [2, 4],
+ 'r': [2, 4],
+ 't': [2, 4],
+ 'u': [2, 4],
+ 'v': [2, 4],
+ 'x': [2, 4]
+ },
+ '48': {
+ 'c': [2, 20]
+ },
+ '49': {
+ 'c': [2, 21]
+ },
+ '50': {
+ 'c': [1, undefined$1, 52]
+ },
+ '51': {
+ 'a': [2, 23],
+ 'r': [2, 23],
+ 't': [2, 23],
+ 'u': [2, 23],
+ 'v': [2, 23],
+ 'x': [2, 23],
+ 'p': [2, 23],
+ 'q': [2, 23],
+ 'b': [2, 23],
+ 's': [2, 23],
+ 'm': [2, 23],
+ 'l': [2, 23]
+ },
+ '52': {
+ 'a': [2, 22],
+ 'r': [2, 22],
+ 't': [2, 22],
+ 'u': [2, 22],
+ 'v': [2, 22],
+ 'x': [2, 22],
+ 'p': [2, 22],
+ 'q': [2, 22],
+ 'b': [2, 22],
+ 's': [2, 22],
+ 'm': [2, 22],
+ 'l': [2, 22]
+ }
+ }
+ };
+
+ parser.parse = function parse(input, filename) {
+ var self = this,
+ lexer = self.lexer,
+ state,
+ symbol,
+ action,
+ table = self.table,
+ gotos = table.gotos,
+ tableAction = table.action,
+ productions = self.productions,
+ valueStack = [null],
+ // for debug info
+ prefix = filename ? 'in file: ' + filename + ' ' : '',
+ stack = [0];
+ lexer.resetInput(input);
+
+ while (1) {
+ // retrieve state number from top of stack
+ state = stack[stack.length - 1];
+
+ if (!symbol) {
+ symbol = lexer.lex();
+ }
+
+ if (symbol) {
+ // read action for current state and first input
+ action = tableAction[state] && tableAction[state][symbol];
+ } else {
+ action = null;
+ }
+
+ if (!action) {
+ var expected = [],
+ error; //#JSCOVERAGE_IF
+
+ if (tableAction[state]) {
+ for (var symbolForState in tableAction[state]) {
+ expected.push(self.lexer.mapReverseSymbol(symbolForState));
+ }
+ }
+
+ error = prefix + 'syntax error at line ' + lexer.lineNumber + ':\n' + lexer.showDebugInfo() + '\n' + 'expect ' + expected.join(', ');
+ throw new Error(error);
+ }
+
+ switch (action[GrammarConst.TYPE_INDEX]) {
+ case GrammarConst.SHIFT_TYPE:
+ stack.push(symbol);
+ valueStack.push(lexer.text); // push state
+
+ stack.push(action[GrammarConst.TO_INDEX]); // allow to read more
+
+ symbol = null;
+ break;
+
+ case GrammarConst.REDUCE_TYPE:
+ var production = productions[action[GrammarConst.PRODUCTION_INDEX]],
+ reducedSymbol = production.symbol || production[0],
+ reducedAction = production.action || production[2],
+ reducedRhs = production.rhs || production[1],
+ len = reducedRhs.length,
+ i = 0,
+ ret,
+ $$ = valueStack[valueStack.length - len]; // default to $$ = $1
+
+ ret = undefined$1;
+ self.$$ = $$;
+
+ for (; i < len; i++) {
+ self['$' + (len - i)] = valueStack[valueStack.length - 1 - i];
+ }
+
+ if (reducedAction) {
+ ret = reducedAction.call(self);
+ }
+
+ if (ret !== undefined$1) {
+ $$ = ret;
+ } else {
+ $$ = self.$$;
+ }
+
+ stack = stack.slice(0, -1 * len * 2);
+ valueStack = valueStack.slice(0, -1 * len);
+ stack.push(reducedSymbol);
+ valueStack.push($$);
+ var newState = gotos[stack[stack.length - 2]][stack[stack.length - 1]];
+ stack.push(newState);
+ break;
+
+ case GrammarConst.ACCEPT_TYPE:
+ return $$;
+ }
+ }
+ };
+
+ return parser;
+}();
+
+{
+ module.exports = parser;
+}
+}(parser$1));
+
+/**
+ * @ignore
+ * css3 selector engine for ie6-8
+ * @author yiminghe@gmail.com
+ */
+
+var util = util$2.exports;
+
+var parser = parser$1.exports;
+
+var EXPANDO_SELECTOR_KEY = '_ks_data_selector_id_',
+ caches = {},
+ isContextXML,
+ uuid = 0,
+ subMatchesCache = {},
+ getAttr = function (el, name) {
+ if (isContextXML) {
+ return util.getSimpleAttr(el, name);
+ } else {
+ return util.attr(el, name);
+ }
+},
+ hasSingleClass = util.hasSingleClass,
+ isTag = util.isTag,
+ aNPlusB = /^(([+-]?(?:\d+)?)?n)?([+-]?\d+)?$/; // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+
+
+var unescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
+ unescapeFn = function (_, escaped) {
+ var high = '0x' + escaped - 0x10000; // NaN means non-codepoint
+
+ return isNaN(high) ? escaped : // BMP codepoint
+ high < 0 ? String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
+};
+
+var matchExpr;
+var pseudoFnExpr = {
+ 'nth-child': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ count = 0,
+ child,
+ ret,
+ len = childNodes.length;
+
+ for (; count < len; count++) {
+ child = childNodes[count];
+
+ if (child.nodeType === 1) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-last-child': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ len = childNodes.length,
+ count = len - 1,
+ child,
+ ret;
+
+ for (; count >= 0; count--) {
+ child = childNodes[count];
+
+ if (child.nodeType === 1) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-of-type': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ elType = el.tagName,
+ count = 0,
+ child,
+ ret,
+ len = childNodes.length;
+
+ for (; count < len; count++) {
+ child = childNodes[count];
+
+ if (child.tagName === elType) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ 'nth-last-of-type': function (el, param) {
+ var ab = getAb(param),
+ a = ab.a,
+ b = ab.b;
+
+ if (a === 0 && b === 0) {
+ return 0;
+ }
+
+ var index = 0,
+ parent = el.parentNode;
+
+ if (parent) {
+ var childNodes = parent.childNodes,
+ len = childNodes.length,
+ elType = el.tagName,
+ count = len - 1,
+ child,
+ ret;
+
+ for (; count >= 0; count--) {
+ child = childNodes[count];
+
+ if (child.tagName === elType) {
+ index++;
+ ret = matchIndexByAb(index, a, b, child === el);
+
+ if (ret !== undefined) {
+ return ret;
+ }
+ }
+ }
+ }
+
+ return 0;
+ },
+ lang: function (el, lang) {
+ var elLang;
+ lang = unEscape(lang.toLowerCase());
+
+ do {
+ if (elLang = isContextXML ? el.getAttribute('xml:lang') || el.getAttribute('lang') : el.lang) {
+ elLang = elLang.toLowerCase();
+ return elLang === lang || elLang.indexOf(lang + '-') === 0;
+ }
+ } while ((el = el.parentNode) && el.nodeType === 1);
+
+ return false;
+ },
+ not: function (el, negationArg) {
+ return !matchExpr[negationArg.t](el, negationArg.value);
+ }
+};
+var pseudoIdentExpr = {
+ empty: function (el) {
+ var childNodes = el.childNodes,
+ index = 0,
+ len = childNodes.length - 1,
+ child,
+ nodeType;
+
+ for (; index < len; index++) {
+ child = childNodes[index];
+ nodeType = child.nodeType; // only element nodes and content nodes
+ // (such as Dom [Dom-LEVEL-3-CORE] text nodes,
+ // CDATA nodes, and entity references
+
+ if (nodeType === 1 || nodeType === 3 || nodeType === 4 || nodeType === 5) {
+ return 0;
+ }
+ }
+
+ return 1;
+ },
+ root: function (el) {
+ if (el.nodeType === 9) {
+ return true;
+ }
+
+ return el.ownerDocument && el === el.ownerDocument.documentElement;
+ },
+ 'first-child': function (el) {
+ return pseudoFnExpr['nth-child'](el, 1);
+ },
+ 'last-child': function (el) {
+ return pseudoFnExpr['nth-last-child'](el, 1);
+ },
+ 'first-of-type': function (el) {
+ return pseudoFnExpr['nth-of-type'](el, 1);
+ },
+ 'last-of-type': function (el) {
+ return pseudoFnExpr['nth-last-of-type'](el, 1);
+ },
+ 'only-child': function (el) {
+ return pseudoIdentExpr['first-child'](el) && pseudoIdentExpr['last-child'](el);
+ },
+ 'only-of-type': function (el) {
+ return pseudoIdentExpr['first-of-type'](el) && pseudoIdentExpr['last-of-type'](el);
+ },
+ focus: function (el) {
+ var doc = el.ownerDocument;
+ return doc && el === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(el.type || el.href || el.tabIndex >= 0);
+ },
+ target: function (el) {
+ var hash = location.hash;
+ return hash && hash.slice(1) === getAttr(el, 'id');
+ },
+ enabled: function (el) {
+ return !el.disabled;
+ },
+ disabled: function (el) {
+ return el.disabled;
+ },
+ checked: function (el) {
+ var nodeName = el.nodeName.toLowerCase();
+ return nodeName === 'input' && el.checked || nodeName === 'option' && el.selected;
+ }
+};
+var attributeExpr = {
+ '~=': function (elValue, value) {
+ if (!value || value.indexOf(' ') > -1) {
+ return 0;
+ }
+
+ return (' ' + elValue + ' ').indexOf(' ' + value + ' ') !== -1;
+ },
+ '|=': function (elValue, value) {
+ return (' ' + elValue).indexOf(' ' + value + '-') !== -1;
+ },
+ '^=': function (elValue, value) {
+ return value && util.startsWith(elValue, value);
+ },
+ '$=': function (elValue, value) {
+ return value && util.endsWith(elValue, value);
+ },
+ '*=': function (elValue, value) {
+ return value && elValue.indexOf(value) !== -1;
+ },
+ '=': function (elValue, value) {
+ return elValue === value;
+ }
+};
+var relativeExpr = {
+ '>': {
+ dir: 'parentNode',
+ immediate: 1
+ },
+ ' ': {
+ dir: 'parentNode'
+ },
+ '+': {
+ dir: 'previousSibling',
+ immediate: 1
+ },
+ '~': {
+ dir: 'previousSibling'
+ }
+};
+matchExpr = {
+ tag: isTag,
+ cls: hasSingleClass,
+ id: function (el, value) {
+ return getAttr(el, 'id') === value;
+ },
+ attrib: function (el, value) {
+ var name = value.ident;
+
+ if (!isContextXML) {
+ name = name.toLowerCase();
+ }
+
+ var elValue = getAttr(el, name);
+ var match = value.match;
+
+ if (!match && elValue !== undefined) {
+ return 1;
+ } else if (match) {
+ if (elValue === undefined) {
+ return 0;
+ }
+
+ var matchFn = attributeExpr[match];
+
+ if (matchFn) {
+ return matchFn(elValue + '', value.value + '');
+ }
+ }
+
+ return 0;
+ },
+ pseudo: function (el, value) {
+ var fn, fnStr, ident;
+
+ if (fnStr = value.fn) {
+ if (!(fn = pseudoFnExpr[fnStr])) {
+ throw new SyntaxError('Syntax error: not support pseudo: ' + fnStr);
+ }
+
+ return fn(el, value.param);
+ }
+
+ if (ident = value.ident) {
+ if (!pseudoIdentExpr[ident]) {
+ throw new SyntaxError('Syntax error: not support pseudo: ' + ident);
+ }
+
+ return pseudoIdentExpr[ident](el);
+ }
+
+ return 0;
+ }
+};
+
+function unEscape(str) {
+ return str.replace(unescape, unescapeFn);
+}
+
+parser.lexer.yy = {
+ trim: util.trim,
+ unEscape: unEscape,
+ unEscapeStr: function (str) {
+ return this.unEscape(str.slice(1, -1));
+ }
+};
+
+function resetStatus() {
+ subMatchesCache = {};
+}
+
+function dir(el, direction) {
+ do {
+ el = el[direction];
+ } while (el && el.nodeType !== 1);
+
+ return el;
+}
+
+function getAb(param) {
+ var a = 0,
+ match,
+ b = 0;
+
+ if (typeof param === 'number') {
+ b = param;
+ } else if (param === 'odd') {
+ a = 2;
+ b = 1;
+ } else if (param === 'even') {
+ a = 2;
+ b = 0;
+ } else if (match = param.replace(/\s/g, '').match(aNPlusB)) {
+ if (match[1]) {
+ a = parseInt(match[2], 10);
+
+ if (isNaN(a)) {
+ if (match[2] === '-') {
+ a = -1;
+ } else {
+ a = 1;
+ }
+ }
+ } else {
+ a = 0;
+ }
+
+ b = parseInt(match[3], 10) || 0;
+ }
+
+ return {
+ a: a,
+ b: b
+ };
+}
+
+function matchIndexByAb(index, a, b, eq) {
+ if (a === 0) {
+ if (index === b) {
+ return eq;
+ }
+ } else {
+ if ((index - b) / a >= 0 && (index - b) % a === 0 && eq) {
+ return 1;
+ }
+ }
+
+ return undefined;
+}
+
+function isXML(elem) {
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName.toLowerCase() !== 'html' : false;
+}
+
+function matches(str, seeds) {
+ return select$1(str, null, seeds);
+}
+
+function singleMatch(el, match) {
+ if (!match) {
+ return true;
+ }
+
+ if (!el) {
+ return false;
+ }
+
+ if (el.nodeType === 9) {
+ return false;
+ }
+
+ var matched = 1,
+ matchSuffix = match.suffix,
+ matchSuffixLen,
+ matchSuffixIndex;
+
+ if (match.t === 'tag') {
+ matched &= matchExpr.tag(el, match.value);
+ }
+
+ if (matched && matchSuffix) {
+ matchSuffixLen = matchSuffix.length;
+ matchSuffixIndex = 0;
+
+ for (; matched && matchSuffixIndex < matchSuffixLen; matchSuffixIndex++) {
+ var singleMatchSuffix = matchSuffix[matchSuffixIndex],
+ singleMatchSuffixType = singleMatchSuffix.t;
+
+ if (matchExpr[singleMatchSuffixType]) {
+ matched &= matchExpr[singleMatchSuffixType](el, singleMatchSuffix.value);
+ }
+ }
+ }
+
+ return matched;
+} // match by adjacent immediate single selector match
+
+
+function matchImmediate(el, match) {
+ var matched = 1,
+ startEl = el,
+ relativeOp,
+ startMatch = match;
+
+ do {
+ matched &= singleMatch(el, match);
+
+ if (matched) {
+ // advance
+ match = match && match.prev;
+
+ if (!match) {
+ return true;
+ }
+
+ relativeOp = relativeExpr[match.nextCombinator];
+ el = dir(el, relativeOp.dir);
+
+ if (!relativeOp.immediate) {
+ return {
+ // advance for non-immediate
+ el: el,
+ match: match
+ };
+ }
+ } else {
+ relativeOp = relativeExpr[match.nextCombinator];
+
+ if (relativeOp.immediate) {
+ // retreat but advance startEl
+ return {
+ el: dir(startEl, relativeExpr[startMatch.nextCombinator].dir),
+ match: startMatch
+ };
+ } else {
+ // advance (before immediate match + jump unmatched)
+ return {
+ el: el && dir(el, relativeOp.dir),
+ match: match
+ };
+ }
+ }
+ } while (el); // only occur when match immediate
+
+
+ return {
+ el: dir(startEl, relativeExpr[startMatch.nextCombinator].dir),
+ match: startMatch
+ };
+} // find fixed part, fixed with seeds
+
+
+function findFixedMatchFromHead(el, head) {
+ var relativeOp,
+ cur = head;
+
+ do {
+ if (!singleMatch(el, cur)) {
+ return null;
+ }
+
+ cur = cur.prev;
+
+ if (!cur) {
+ return true;
+ }
+
+ relativeOp = relativeExpr[cur.nextCombinator];
+ el = dir(el, relativeOp.dir);
+ } while (el && relativeOp.immediate);
+
+ if (!el) {
+ return null;
+ }
+
+ return {
+ el: el,
+ match: cur
+ };
+}
+
+function genId(el) {
+ var selectorId;
+
+ if (isContextXML) {
+ if (!(selectorId = el.getAttribute(EXPANDO_SELECTOR_KEY))) {
+ el.setAttribute(EXPANDO_SELECTOR_KEY, selectorId = +new Date() + '_' + ++uuid);
+ }
+ } else {
+ if (!(selectorId = el[EXPANDO_SELECTOR_KEY])) {
+ selectorId = el[EXPANDO_SELECTOR_KEY] = +new Date() + '_' + ++uuid;
+ }
+ }
+
+ return selectorId;
+}
+
+function matchSub(el, match) {
+ var selectorId = genId(el),
+ matchKey;
+ matchKey = selectorId + '_' + (match.order || 0);
+
+ if (matchKey in subMatchesCache) {
+ return subMatchesCache[matchKey];
+ }
+
+ subMatchesCache[matchKey] = matchSubInternal(el, match);
+ return subMatchesCache[matchKey];
+} // recursive match by sub selector string from right to left
+// grouped by immediate selectors
+
+
+function matchSubInternal(el, match) {
+ var matchImmediateRet = matchImmediate(el, match);
+
+ if (matchImmediateRet === true) {
+ return true;
+ } else {
+ el = matchImmediateRet.el;
+ match = matchImmediateRet.match;
+
+ while (el) {
+ if (matchSub(el, match)) {
+ return true;
+ }
+
+ el = dir(el, relativeExpr[match.nextCombinator].dir);
+ }
+
+ return false;
+ }
+}
+
+function select$1(str, context, seeds) {
+ if (!caches[str]) {
+ caches[str] = parser.parse(str);
+ }
+
+ var selector = caches[str],
+ groupIndex = 0,
+ groupLen = selector.length,
+ contextDocument,
+ group,
+ ret = [];
+
+ if (seeds) {
+ context = context || seeds[0].ownerDocument;
+ }
+
+ contextDocument = context && context.ownerDocument || typeof document !== 'undefined' && document;
+
+ if (context && context.nodeType === 9 && !contextDocument) {
+ contextDocument = context;
+ }
+
+ context = context || contextDocument;
+ isContextXML = isXML(context);
+
+ for (; groupIndex < groupLen; groupIndex++) {
+ resetStatus();
+ group = selector[groupIndex];
+ var suffix = group.suffix,
+ suffixIndex,
+ suffixLen,
+ seedsIndex,
+ mySeeds = seeds,
+ seedsLen,
+ id = null;
+
+ if (!mySeeds) {
+ if (suffix && !isContextXML) {
+ suffixIndex = 0;
+ suffixLen = suffix.length;
+
+ for (; suffixIndex < suffixLen; suffixIndex++) {
+ var singleSuffix = suffix[suffixIndex];
+
+ if (singleSuffix.t === 'id') {
+ id = singleSuffix.value;
+ break;
+ }
+ }
+ }
+
+ if (id) {
+ // http://yiminghe.github.io/lab/playground/fragment-selector/selector.html
+ var doesNotHasById = !context.getElementById,
+ contextInDom = util.contains(contextDocument, context),
+ tmp = doesNotHasById ? contextInDom ? contextDocument.getElementById(id) : null : context.getElementById(id); // id bug
+ // https://github.com/kissyteam/kissy/issues/67
+
+ if (!tmp && doesNotHasById || tmp && getAttr(tmp, 'id') !== id) {
+ var tmps = util.getElementsByTagName('*', context),
+ tmpLen = tmps.length,
+ tmpI = 0;
+
+ for (; tmpI < tmpLen; tmpI++) {
+ tmp = tmps[tmpI];
+
+ if (getAttr(tmp, 'id') === id) {
+ mySeeds = [tmp];
+ break;
+ }
+ }
+
+ if (tmpI === tmpLen) {
+ mySeeds = [];
+ }
+ } else {
+ if (contextInDom && tmp && context !== contextDocument) {
+ tmp = util.contains(context, tmp) ? tmp : null;
+ }
+
+ mySeeds = tmp ? [tmp] : [];
+ }
+ } else {
+ mySeeds = util.getElementsByTagName(group.value || '*', context);
+ }
+ }
+
+ seedsIndex = 0;
+ seedsLen = mySeeds.length;
+
+ if (!seedsLen) {
+ continue;
+ }
+
+ for (; seedsIndex < seedsLen; seedsIndex++) {
+ var seed = mySeeds[seedsIndex];
+ var matchHead = findFixedMatchFromHead(seed, group);
+
+ if (matchHead === true) {
+ ret.push(seed);
+ } else if (matchHead) {
+ if (matchSub(matchHead.el, matchHead.match)) {
+ ret.push(seed);
+ }
+ }
+ }
+ }
+
+ if (groupLen > 1) {
+ ret = util.unique(ret);
+ }
+
+ return ret;
+}
+
+var querySelector$1 = select$1;
+
+select$1.parse = function (str) {
+ return parser.parse(str);
+};
+
+select$1.matches = matches;
+select$1.util = util;
+select$1.version = '@VERSION@';
+
+var querySelector = querySelector$1;
+
+var hyphenExpression = /-+([a-z])/gi;
+
+function upperCaseFirstMatch(match, c, offset) {
+ if (offset !== 0) {
+ return c.toUpperCase();
+ } else {
+ return c;
+ }
+}
+
+function camelCase$2(str) {
+ var camelCased = str.replace(hyphenExpression, upperCaseFirstMatch);
+ hyphenExpression.lastIndex = 0;
+ return camelCased;
+}
+
+var camelCase_1 = camelCase$2;
+
+function isString$1(value) {
+ return typeof value === 'string';
+}
+
+var isString_1 = isString$1;
+
+function isUndefined$1(value) {
+ return typeof value === 'undefined';
+}
+
+var isUndefined_1 = isUndefined$1;
+
+function assign$1(dest) {
+ var args = arguments;
+ var source;
+
+ for (var i = 1; i < args.length; i++) {
+ source = args[i];
+
+ for (var key in source) {
+ dest[key] = source[key];
+ }
+ }
+
+ return dest;
+}
+
+var assign_1 = assign$1;
+
+function mapValues$2(source, fn) {
+ var destination = {};
+
+ for (var key in source) {
+ if (source.hasOwnProperty(key)) {
+ destination[key] = fn(source[key]);
+ }
+ }
+
+ return destination;
+}
+
+var mapValues_1 = mapValues$2;
+
+var camelCase$1 = camelCase_1;
+
+function styleCamelCase$1(name) {
+ var camel = camelCase$1(name); // Detect if the style property is already camelCased
+ // To not convert Webkit*, Moz* and O* to lowercase
+
+ if (camel.charAt(0).toUpperCase() === name.charAt(0)) {
+ return name.charAt(0) + camel.slice(1);
+ }
+
+ if (name.charAt(0) === '-') {
+ return camel.indexOf('ms') === 0 ? camel : camel.charAt(0).toUpperCase() + camel.slice(1);
+ } else {
+ return camel;
+ }
+}
+
+var styleCamelCase_1 = styleCamelCase$1;
+
+var React$2 = require('react');
+
+var styleAttr = lib;
+
+var querySelectorAll = querySelector;
+
+var camelCase = camelCase_1;
+
+var isString = isString_1;
+
+var isUndefined = isUndefined_1;
+
+var assign = assign_1;
+
+var mapValues$1 = mapValues_1;
+
+var styleCamelCase = styleCamelCase_1;
+
+function element$1() {
+ function Element(nodeName, parentNode) {
+ this.nodeName = nodeName;
+ this.parentNode = parentNode;
+ this.childNodes = [];
+ this.eventListeners = {};
+ this.text = '';
+ var self = this;
+ var props = this.props = {
+ ref: function (component) {
+ self.component = component;
+ },
+ style: {
+ setProperty: function (name, value) {
+ props.style[styleCamelCase(name)] = value;
+ },
+ getProperty: function (name) {
+ return props.style[styleCamelCase(name)] || '';
+ },
+ getPropertyValue: function (name) {
+ return props.style.getProperty(name);
+ },
+ removeProperty: function (name) {
+ delete props.style[styleCamelCase(name)];
+ }
+ }
+ };
+ this.style = props.style;
+ }
+
+ Element.ELEMENT_NODE = 1;
+ Element.DOCUMENT_POSITION_DISCONNECTED = 1;
+ Element.DOCUMENT_POSITION_PRECEDING = 2;
+ Element.DOCUMENT_POSITION_FOLLOWING = 4;
+ Element.DOCUMENT_POSITION_CONTAINS = 8;
+ Element.DOCUMENT_POSITION_CONTAINED_BY = 16;
+ Element.prototype.nodeType = 1; // This was easy to do with Vim.
+ // Just saying.
+
+ Element.prototype.eventNameMappings = {
+ 'blur': 'onBlur',
+ 'change': 'onChange',
+ 'click': 'onClick',
+ 'contextmenu': 'onContextMenu',
+ 'copy': 'onCopy',
+ 'cut': 'onCut',
+ 'doubleclick': 'onDoubleClick',
+ 'drag': 'onDrag',
+ 'dragend': 'onDragEnd',
+ 'dragenter': 'onDragEnter',
+ 'dragexit': 'onDragExit',
+ 'dragleave': 'onDragLeave',
+ 'dragover': 'onDragOver',
+ 'dragstart': 'onDragStart',
+ 'drop': 'onDrop',
+ 'error': 'onError',
+ 'focus': 'onFocus',
+ 'input': 'onInput',
+ 'keydown': 'onKeyDown',
+ 'keypress': 'onKeyPress',
+ 'keyup': 'onKeyUp',
+ 'load': 'onLoad',
+ 'mousedown': 'onMouseDown',
+ 'mouseenter': 'onMouseEnter',
+ 'mouseleave': 'onMouseLeave',
+ 'mousemove': 'onMouseMove',
+ 'mouseout': 'onMouseOut',
+ 'mouseover': 'onMouseOver',
+ 'mouseup': 'onMouseUp',
+ 'paste': 'onPaste',
+ 'scroll': 'onScroll',
+ 'submit': 'onSubmit',
+ 'touchcancel': 'onTouchCancel',
+ 'touchend': 'onTouchEnd',
+ 'touchmove': 'onTouchMove',
+ 'touchstart': 'onTouchStart',
+ 'wheel': 'onWheel'
+ };
+ Element.prototype.skipNameTransformationExpressions = [/^data-/, /^aria-/];
+ Element.prototype.attributeNameMappings = {
+ 'class': 'className'
+ };
+
+ Element.prototype.attributeToPropName = function (name) {
+ var skipTransformMatches = this.skipNameTransformationExpressions.map(function (expr) {
+ return expr.test(name);
+ });
+
+ if (skipTransformMatches.some(Boolean)) {
+ return name;
+ } else {
+ return this.attributeNameMappings[name] || camelCase(name);
+ }
+ };
+
+ Element.prototype.setAttribute = function (name, value) {
+ if (name === 'style' && isString(value)) {
+ var styles = styleAttr.parse(value);
+
+ for (var key in styles) {
+ this.style.setProperty(key, styles[key]);
+ }
+ } else {
+ this.props[this.attributeToPropName(name)] = value;
+ }
+ };
+
+ Element.prototype.getAttribute = function (name) {
+ return this.props[this.attributeToPropName(name)];
+ };
+
+ Element.prototype.getAttributeNode = function (name) {
+ var value = this.getAttribute(name);
+
+ if (!isUndefined(value)) {
+ return {
+ value: value,
+ specified: true
+ };
+ }
+ };
+
+ Element.prototype.removeAttribute = function (name) {
+ delete this.props[this.attributeToPropName(name)];
+ };
+
+ Element.prototype.eventToPropName = function (name) {
+ return this.eventNameMappings[name] || name;
+ };
+
+ Element.prototype.addEventListener = function (name, fn) {
+ var prop = this.eventToPropName(name);
+ this.eventListeners[prop] = this.eventListeners[prop] || [];
+ this.eventListeners[prop].push(fn);
+ };
+
+ Element.prototype.removeEventListener = function (name, fn) {
+ var listeners = this.eventListeners[this.eventToPropName(name)];
+
+ if (listeners) {
+ var match = listeners.indexOf(fn);
+
+ if (match !== -1) {
+ listeners.splice(match, 1);
+ }
+ }
+ };
+
+ Element.prototype.appendChild = function (el) {
+ if (el instanceof Element) {
+ el.parentNode = this;
+ }
+
+ this.childNodes.push(el);
+ return el;
+ };
+
+ Element.prototype.insertBefore = function (el, before) {
+ var index = this.childNodes.indexOf(before);
+ el.parentNode = this;
+
+ if (index !== -1) {
+ this.childNodes.splice(index, 0, el);
+ } else {
+ this.childNodes.push(el);
+ }
+
+ return el;
+ };
+
+ Element.prototype.removeChild = function (child) {
+ var target = this.childNodes.indexOf(child);
+ this.childNodes.splice(target, 1);
+ };
+
+ Element.prototype.querySelector = function () {
+ return this.querySelectorAll.apply(this, arguments)[0] || null;
+ };
+
+ Element.prototype.querySelectorAll = function (selector) {
+ if (!selector) {
+ throw new Error('Not enough arguments');
+ }
+
+ return querySelectorAll(selector, this);
+ };
+
+ Element.prototype.getElementsByTagName = function (nodeName) {
+ var children = this.children;
+
+ if (children.length === 0) {
+ return [];
+ } else {
+ var matches;
+
+ if (nodeName !== '*') {
+ matches = children.filter(function (el) {
+ return el.nodeName === nodeName;
+ });
+ } else {
+ matches = children;
+ }
+
+ var childMatches = children.map(function (el) {
+ return el.getElementsByTagName(nodeName);
+ });
+ return matches.concat.apply(matches, childMatches);
+ }
+ };
+
+ Element.prototype.getElementById = function (id) {
+ var children = this.children;
+
+ if (children.length === 0) {
+ return null;
+ } else {
+ var match = children.filter(function (el) {
+ return el.getAttribute('id') === id;
+ })[0];
+
+ if (match) {
+ return match;
+ } else {
+ var childMatches = children.map(function (el) {
+ return el.getElementById(id);
+ });
+ return childMatches.filter(function (match) {
+ return match !== null;
+ })[0] || null;
+ }
+ }
+ };
+
+ Element.prototype.getBoundingClientRect = function () {
+ if (!this.component) {
+ return undefined;
+ }
+
+ return this.component.getBoundingClientRect();
+ };
+
+ Element.prototype.cloneNode = function (deep) {
+ // if deep is not provided, it default to true
+ if (deep === undefined) {
+ deep = true;
+ }
+
+ var el = new Element(this.nodeName, this.parentNode); // copy nodeType
+
+ if (this.nodeType) {
+ el.nodeType = this.nodeType;
+ }
+
+ var k; // copy the props
+
+ for (k in this.props) {
+ if (this.props.hasOwnProperty(k) && k !== 'ref' && k !== 'style') {
+ el.props[k] = this.props[k];
+ }
+ } // copy the styles
+
+
+ for (k in this.style) {
+ if (this.style.hasOwnProperty(k) && ['setProperty', 'getProperty', 'getPropertyValue', 'removeProperty'].indexOf(k) === -1) {
+ el.style[k] = this.style[k];
+ }
+ }
+
+ if (deep) {
+ el.childNodes = this.childNodes.map(function (childEl) {
+ if (!childEl.nodeType) {
+ // It's a React element, let React clone it
+ return React$2.cloneElement(childEl);
+ } // either Element or true dom element
+
+
+ childEl = childEl.cloneNode(true); // if a faux dom element, modify parentNode
+
+ if (childEl instanceof Element) {
+ childEl.parentNode = el;
+ }
+
+ return childEl;
+ });
+ }
+
+ return el;
+ };
+
+ Element.prototype.toReact = function (index) {
+ index = index || 0;
+ var props = assign({}, this.props);
+ props.style = assign({}, props.style);
+ var originalElement = this;
+
+ function uniqueKey() {
+ return 'faux-dom-' + index;
+ }
+
+ if (isUndefined(props.key)) {
+ props.key = uniqueKey();
+ }
+
+ delete props.style.setProperty;
+ delete props.style.getProperty;
+ delete props.style.getPropertyValue;
+ delete props.style.removeProperty;
+ assign(props, mapValues$1(this.eventListeners, function (listeners) {
+ return function (syntheticEvent) {
+ var event;
+
+ if (syntheticEvent) {
+ event = syntheticEvent.nativeEvent;
+ event.syntheticEvent = syntheticEvent;
+ }
+
+ mapValues$1(listeners, function (listener) {
+ listener.call(originalElement, event);
+ });
+ };
+ }));
+ return React$2.createElement(this.nodeName, props, this.text || this.children.map(function (el, i) {
+ if (el instanceof Element) {
+ return el.toReact(i);
+ } else {
+ return el;
+ }
+ }));
+ };
+
+ Element.prototype.compareDocumentPosition = function (other) {
+ function getFirstNodeByOrder(nodes, nodeOne, nodeTwo) {
+ return nodes.reduce(function (result, node) {
+ if (result !== false) {
+ return result;
+ } else if (node === nodeOne) {
+ return nodeOne;
+ } else if (node === nodeTwo) {
+ return nodeTwo;
+ } else if (node.childNodes) {
+ return getFirstNodeByOrder(node.childNodes, nodeOne, nodeTwo);
+ } else {
+ return false;
+ }
+ }, false);
+ }
+
+ function isAncestor(source, target) {
+ while (target.parentNode) {
+ target = target.parentNode;
+
+ if (target === source) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function eitherContains(left, right) {
+ return isAncestor(left, right) ? Element.DOCUMENT_POSITION_CONTAINED_BY + Element.DOCUMENT_POSITION_FOLLOWING : isAncestor(right, left) ? Element.DOCUMENT_POSITION_CONTAINS + Element.DOCUMENT_POSITION_PRECEDING : false;
+ }
+
+ function getRootNode(node) {
+ while (node.parentNode) {
+ node = node.parentNode;
+ }
+
+ return node;
+ }
+
+ if (this === other) {
+ return 0;
+ }
+
+ var referenceRoot = getRootNode(this);
+ var otherRoot = getRootNode(other);
+
+ if (referenceRoot !== otherRoot) {
+ return Element.DOCUMENT_POSITION_DISCONNECTED;
+ }
+
+ var result = eitherContains(this, other);
+
+ if (result) {
+ return result;
+ }
+
+ var first = getFirstNodeByOrder([referenceRoot], this, other);
+ return first === this ? Element.DOCUMENT_POSITION_FOLLOWING : first === other ? Element.DOCUMENT_POSITION_PRECEDING : Element.DOCUMENT_POSITION_DISCONNECTED;
+ };
+
+ Object.defineProperties(Element.prototype, {
+ nextSibling: {
+ get: function () {
+ var siblings = this.parentNode.children;
+ var me = siblings.indexOf(this);
+ return siblings[me + 1];
+ }
+ },
+ previousSibling: {
+ get: function () {
+ var siblings = this.parentNode.children;
+ var me = siblings.indexOf(this);
+ return siblings[me - 1];
+ }
+ },
+ innerHTML: {
+ get: function () {
+ return this.text;
+ },
+ set: function (text) {
+ this.text = text;
+ }
+ },
+ textContent: {
+ get: function () {
+ return this.text;
+ },
+ set: function (text) {
+ this.text = text;
+ }
+ },
+ children: {
+ get: function () {
+ // So far nodes created by this library are all of nodeType 1 (elements),
+ // but this could change in the future.
+ return this.childNodes.filter(function (el) {
+ if (!el.nodeType) {
+ // It's a React element, we always add it
+ return true;
+ } // It's a HTML node. We want to filter to have only nodes with type 1
+
+
+ return el.nodeType === 1;
+ });
+ }
+ }
+ }); // These NS methods are called by things like D3 if it spots a namespace.
+ // Like xlink:href. I don't care about namespaces, so these functions have NS aliases created.
+
+ var namespaceMethods = ['setAttribute', 'getAttribute', 'getAttributeNode', 'removeAttribute', 'getElementsByTagName', 'getElementById'];
+ namespaceMethods.forEach(function (name) {
+ var fn = Element.prototype[name];
+
+ Element.prototype[name + 'NS'] = function () {
+ return fn.apply(this, Array.prototype.slice.call(arguments, 1));
+ };
+ });
+ return Element;
+}
+
+var _element = element$1;
+
+function window$2() {
+ var Window = {
+ getComputedStyle: function (node) {
+ return {
+ getPropertyValue: node.style.getProperty
+ };
+ }
+ };
+ return Window;
+}
+
+var _window = window$2;
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+var _assign = objectAssign; // -- Inlined from fbjs --
+
+
+var emptyObject = {};
+
+{
+ Object.freeze(emptyObject);
+}
+
+var validateFormat = function validateFormat(format) {};
+
+{
+ validateFormat = function validateFormat(format) {
+ if (format === undefined) {
+ throw new Error('invariant requires an error message argument');
+ }
+ };
+}
+
+function _invariant(condition, format, a, b, c, d, e, f) {
+ validateFormat(format);
+
+ if (!condition) {
+ var error;
+
+ if (format === undefined) {
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
+ } else {
+ var args = [a, b, c, d, e, f];
+ var argIndex = 0;
+ error = new Error(format.replace(/%s/g, function () {
+ return args[argIndex++];
+ }));
+ error.name = 'Invariant Violation';
+ }
+
+ error.framesToPop = 1; // we don't care about invariant's own frame
+
+ throw error;
+ }
+}
+
+var warning = function () {};
+
+{
+ var printWarning = function printWarning(format) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ var argIndex = 0;
+ var message = 'Warning: ' + format.replace(/%s/g, function () {
+ return args[argIndex++];
+ });
+
+ if (typeof console !== 'undefined') {
+ console.error(message);
+ }
+
+ try {
+ // --- Welcome to debugging React ---
+ // This error was thrown as a convenience so that you can use this stack
+ // to find the callsite that caused this warning to fire.
+ throw new Error(message);
+ } catch (x) {}
+ };
+
+ warning = function warning(condition, format) {
+ if (format === undefined) {
+ throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
+ }
+
+ if (format.indexOf('Failed Composite propType: ') === 0) {
+ return; // Ignore CompositeComponent proptype check.
+ }
+
+ if (!condition) {
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+ args[_key2 - 2] = arguments[_key2];
+ }
+
+ printWarning.apply(undefined, [format].concat(args));
+ }
+ };
+} // /-- Inlined from fbjs --
+
+
+var MIXINS_KEY = 'mixins'; // Helper function to allow the creation of anonymous functions which do not
+// have .name set to the name of the variable being assigned to.
+
+function identity(fn) {
+ return fn;
+}
+
+var ReactPropTypeLocationNames;
+
+{
+ ReactPropTypeLocationNames = {
+ prop: 'prop',
+ context: 'context',
+ childContext: 'child context'
+ };
+}
+
+function factory$3(ReactComponent, isValidElement, ReactNoopUpdateQueue) {
+ /**
+ * Policies that describe methods in `ReactClassInterface`.
+ */
+ var injectedMixins = [];
+ /**
+ * Composite components are higher-level components that compose other composite
+ * or host components.
+ *
+ * To create a new type of `ReactClass`, pass a specification of
+ * your new class to `React.createClass`. The only requirement of your class
+ * specification is that you implement a `render` method.
+ *
+ * var MyComponent = React.createClass({
+ * render: function() {
+ * return Hello World
;
+ * }
+ * });
+ *
+ * The class specification supports a specific protocol of methods that have
+ * special meaning (e.g. `render`). See `ReactClassInterface` for
+ * more the comprehensive protocol. Any other properties and methods in the
+ * class specification will be available on the prototype.
+ *
+ * @interface ReactClassInterface
+ * @internal
+ */
+
+ var ReactClassInterface = {
+ /**
+ * An array of Mixin objects to include when defining your component.
+ *
+ * @type {array}
+ * @optional
+ */
+ mixins: 'DEFINE_MANY',
+
+ /**
+ * An object containing properties and methods that should be defined on
+ * the component's constructor instead of its prototype (static methods).
+ *
+ * @type {object}
+ * @optional
+ */
+ statics: 'DEFINE_MANY',
+
+ /**
+ * Definition of prop types for this component.
+ *
+ * @type {object}
+ * @optional
+ */
+ propTypes: 'DEFINE_MANY',
+
+ /**
+ * Definition of context types for this component.
+ *
+ * @type {object}
+ * @optional
+ */
+ contextTypes: 'DEFINE_MANY',
+
+ /**
+ * Definition of context types this component sets for its children.
+ *
+ * @type {object}
+ * @optional
+ */
+ childContextTypes: 'DEFINE_MANY',
+ // ==== Definition methods ====
+
+ /**
+ * Invoked when the component is mounted. Values in the mapping will be set on
+ * `this.props` if that prop is not specified (i.e. using an `in` check).
+ *
+ * This method is invoked before `getInitialState` and therefore cannot rely
+ * on `this.state` or use `this.setState`.
+ *
+ * @return {object}
+ * @optional
+ */
+ getDefaultProps: 'DEFINE_MANY_MERGED',
+
+ /**
+ * Invoked once before the component is mounted. The return value will be used
+ * as the initial value of `this.state`.
+ *
+ * getInitialState: function() {
+ * return {
+ * isOn: false,
+ * fooBaz: new BazFoo()
+ * }
+ * }
+ *
+ * @return {object}
+ * @optional
+ */
+ getInitialState: 'DEFINE_MANY_MERGED',
+
+ /**
+ * @return {object}
+ * @optional
+ */
+ getChildContext: 'DEFINE_MANY_MERGED',
+
+ /**
+ * Uses props from `this.props` and state from `this.state` to render the
+ * structure of the component.
+ *
+ * No guarantees are made about when or how often this method is invoked, so
+ * it must not have side effects.
+ *
+ * render: function() {
+ * var name = this.props.name;
+ * return Hello, {name}!
;
+ * }
+ *
+ * @return {ReactComponent}
+ * @required
+ */
+ render: 'DEFINE_ONCE',
+ // ==== Delegate methods ====
+
+ /**
+ * Invoked when the component is initially created and about to be mounted.
+ * This may have side effects, but any external subscriptions or data created
+ * by this method must be cleaned up in `componentWillUnmount`.
+ *
+ * @optional
+ */
+ componentWillMount: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component has been mounted and has a DOM representation.
+ * However, there is no guarantee that the DOM node is in the document.
+ *
+ * Use this as an opportunity to operate on the DOM when the component has
+ * been mounted (initialized and rendered) for the first time.
+ *
+ * @param {DOMElement} rootNode DOM element representing the component.
+ * @optional
+ */
+ componentDidMount: 'DEFINE_MANY',
+
+ /**
+ * Invoked before the component receives new props.
+ *
+ * Use this as an opportunity to react to a prop transition by updating the
+ * state using `this.setState`. Current props are accessed via `this.props`.
+ *
+ * componentWillReceiveProps: function(nextProps, nextContext) {
+ * this.setState({
+ * likesIncreasing: nextProps.likeCount > this.props.likeCount
+ * });
+ * }
+ *
+ * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
+ * transition may cause a state change, but the opposite is not true. If you
+ * need it, you are probably looking for `componentWillUpdate`.
+ *
+ * @param {object} nextProps
+ * @optional
+ */
+ componentWillReceiveProps: 'DEFINE_MANY',
+
+ /**
+ * Invoked while deciding if the component should be updated as a result of
+ * receiving new props, state and/or context.
+ *
+ * Use this as an opportunity to `return false` when you're certain that the
+ * transition to the new props/state/context will not require a component
+ * update.
+ *
+ * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
+ * return !equal(nextProps, this.props) ||
+ * !equal(nextState, this.state) ||
+ * !equal(nextContext, this.context);
+ * }
+ *
+ * @param {object} nextProps
+ * @param {?object} nextState
+ * @param {?object} nextContext
+ * @return {boolean} True if the component should update.
+ * @optional
+ */
+ shouldComponentUpdate: 'DEFINE_ONCE',
+
+ /**
+ * Invoked when the component is about to update due to a transition from
+ * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
+ * and `nextContext`.
+ *
+ * Use this as an opportunity to perform preparation before an update occurs.
+ *
+ * NOTE: You **cannot** use `this.setState()` in this method.
+ *
+ * @param {object} nextProps
+ * @param {?object} nextState
+ * @param {?object} nextContext
+ * @param {ReactReconcileTransaction} transaction
+ * @optional
+ */
+ componentWillUpdate: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component's DOM representation has been updated.
+ *
+ * Use this as an opportunity to operate on the DOM when the component has
+ * been updated.
+ *
+ * @param {object} prevProps
+ * @param {?object} prevState
+ * @param {?object} prevContext
+ * @param {DOMElement} rootNode DOM element representing the component.
+ * @optional
+ */
+ componentDidUpdate: 'DEFINE_MANY',
+
+ /**
+ * Invoked when the component is about to be removed from its parent and have
+ * its DOM representation destroyed.
+ *
+ * Use this as an opportunity to deallocate any external resources.
+ *
+ * NOTE: There is no `componentDidUnmount` since your component will have been
+ * destroyed by that point.
+ *
+ * @optional
+ */
+ componentWillUnmount: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillMount`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillMount: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillReceiveProps`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',
+
+ /**
+ * Replacement for (deprecated) `componentWillUpdate`.
+ *
+ * @optional
+ */
+ UNSAFE_componentWillUpdate: 'DEFINE_MANY',
+ // ==== Advanced methods ====
+
+ /**
+ * Updates the component's currently mounted DOM representation.
+ *
+ * By default, this implements React's rendering and reconciliation algorithm.
+ * Sophisticated clients may wish to override this.
+ *
+ * @param {ReactReconcileTransaction} transaction
+ * @internal
+ * @overridable
+ */
+ updateComponent: 'OVERRIDE_BASE'
+ };
+ /**
+ * Similar to ReactClassInterface but for static methods.
+ */
+
+ var ReactClassStaticInterface = {
+ /**
+ * This method is invoked after a component is instantiated and when it
+ * receives new props. Return an object to update state in response to
+ * prop changes. Return null to indicate no change to state.
+ *
+ * If an object is returned, its keys will be merged into the existing state.
+ *
+ * @return {object || null}
+ * @optional
+ */
+ getDerivedStateFromProps: 'DEFINE_MANY_MERGED'
+ };
+ /**
+ * Mapping from class specification keys to special processing functions.
+ *
+ * Although these are declared like instance properties in the specification
+ * when defining classes using `React.createClass`, they are actually static
+ * and are accessible on the constructor instead of the prototype. Despite
+ * being static, they must be defined outside of the "statics" key under
+ * which all other static methods are defined.
+ */
+
+ var RESERVED_SPEC_KEYS = {
+ displayName: function (Constructor, displayName) {
+ Constructor.displayName = displayName;
+ },
+ mixins: function (Constructor, mixins) {
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ mixSpecIntoComponent(Constructor, mixins[i]);
+ }
+ }
+ },
+ childContextTypes: function (Constructor, childContextTypes) {
+ {
+ validateTypeDef(Constructor, childContextTypes, 'childContext');
+ }
+
+ Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
+ },
+ contextTypes: function (Constructor, contextTypes) {
+ {
+ validateTypeDef(Constructor, contextTypes, 'context');
+ }
+
+ Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
+ },
+
+ /**
+ * Special case getDefaultProps which should move into statics but requires
+ * automatic merging.
+ */
+ getDefaultProps: function (Constructor, getDefaultProps) {
+ if (Constructor.getDefaultProps) {
+ Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
+ } else {
+ Constructor.getDefaultProps = getDefaultProps;
+ }
+ },
+ propTypes: function (Constructor, propTypes) {
+ {
+ validateTypeDef(Constructor, propTypes, 'prop');
+ }
+
+ Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
+ },
+ statics: function (Constructor, statics) {
+ mixStaticSpecIntoComponent(Constructor, statics);
+ },
+ autobind: function () {}
+ };
+
+ function validateTypeDef(Constructor, typeDef, location) {
+ for (var propName in typeDef) {
+ if (typeDef.hasOwnProperty(propName)) {
+ // use a warning instead of an _invariant so components
+ // don't show up in prod but only in __DEV__
+ {
+ warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName);
+ }
+ }
+ }
+ }
+
+ function validateMethodOverride(isAlreadyDefined, name) {
+ var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; // Disallow overriding of base class methods unless explicitly allowed.
+
+ if (ReactClassMixin.hasOwnProperty(name)) {
+ _invariant(specPolicy === 'OVERRIDE_BASE', 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name);
+ } // Disallow defining methods more than once unless explicitly allowed.
+
+
+ if (isAlreadyDefined) {
+ _invariant(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED', 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name);
+ }
+ }
+ /**
+ * Mixin helper which handles policy validation and reserved
+ * specification keys when building React classes.
+ */
+
+
+ function mixSpecIntoComponent(Constructor, spec) {
+ if (!spec) {
+ {
+ var typeofSpec = typeof spec;
+ var isMixinValid = typeofSpec === 'object' && spec !== null;
+
+ {
+ warning(isMixinValid, "%s: You're attempting to include a mixin that is either null " + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec);
+ }
+ }
+
+ return;
+ }
+
+ _invariant(typeof spec !== 'function', "ReactClass: You're attempting to " + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.');
+
+ _invariant(!isValidElement(spec), "ReactClass: You're attempting to " + 'use a component as a mixin. Instead, just use a regular object.');
+
+ var proto = Constructor.prototype;
+ var autoBindPairs = proto.__reactAutoBindPairs; // By handling mixins before any other properties, we ensure the same
+ // chaining order is applied to methods with DEFINE_MANY policy, whether
+ // mixins are listed before or after these methods in the spec.
+
+ if (spec.hasOwnProperty(MIXINS_KEY)) {
+ RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
+ }
+
+ for (var name in spec) {
+ if (!spec.hasOwnProperty(name)) {
+ continue;
+ }
+
+ if (name === MIXINS_KEY) {
+ // We have already handled mixins in a special case above.
+ continue;
+ }
+
+ var property = spec[name];
+ var isAlreadyDefined = proto.hasOwnProperty(name);
+ validateMethodOverride(isAlreadyDefined, name);
+
+ if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
+ RESERVED_SPEC_KEYS[name](Constructor, property);
+ } else {
+ // Setup methods on prototype:
+ // The following member methods should not be automatically bound:
+ // 1. Expected ReactClass methods (in the "interface").
+ // 2. Overridden methods (that were mixed in).
+ var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
+ var isFunction = typeof property === 'function';
+ var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
+
+ if (shouldAutoBind) {
+ autoBindPairs.push(name, property);
+ proto[name] = property;
+ } else {
+ if (isAlreadyDefined) {
+ var specPolicy = ReactClassInterface[name]; // These cases should already be caught by validateMethodOverride.
+
+ _invariant(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY'), 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name); // For methods which are defined more than once, call the existing
+ // methods before calling the new property, merging if appropriate.
+
+
+ if (specPolicy === 'DEFINE_MANY_MERGED') {
+ proto[name] = createMergedResultFunction(proto[name], property);
+ } else if (specPolicy === 'DEFINE_MANY') {
+ proto[name] = createChainedFunction(proto[name], property);
+ }
+ } else {
+ proto[name] = property;
+
+ {
+ // Add verbose displayName to the function, which helps when looking
+ // at profiling tools.
+ if (typeof property === 'function' && spec.displayName) {
+ proto[name].displayName = spec.displayName + '_' + name;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function mixStaticSpecIntoComponent(Constructor, statics) {
+ if (!statics) {
+ return;
+ }
+
+ for (var name in statics) {
+ var property = statics[name];
+
+ if (!statics.hasOwnProperty(name)) {
+ continue;
+ }
+
+ var isReserved = (name in RESERVED_SPEC_KEYS);
+
+ _invariant(!isReserved, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name);
+
+ var isAlreadyDefined = (name in Constructor);
+
+ if (isAlreadyDefined) {
+ var specPolicy = ReactClassStaticInterface.hasOwnProperty(name) ? ReactClassStaticInterface[name] : null;
+
+ _invariant(specPolicy === 'DEFINE_MANY_MERGED', 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name);
+
+ Constructor[name] = createMergedResultFunction(Constructor[name], property);
+ return;
+ }
+
+ Constructor[name] = property;
+ }
+ }
+ /**
+ * Merge two objects, but throw if both contain the same key.
+ *
+ * @param {object} one The first object, which is mutated.
+ * @param {object} two The second object
+ * @return {object} one after it has been mutated to contain everything in two.
+ */
+
+
+ function mergeIntoWithNoDuplicateKeys(one, two) {
+ _invariant(one && two && typeof one === 'object' && typeof two === 'object', 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.');
+
+ for (var key in two) {
+ if (two.hasOwnProperty(key)) {
+ _invariant(one[key] === undefined, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key);
+
+ one[key] = two[key];
+ }
+ }
+
+ return one;
+ }
+ /**
+ * Creates a function that invokes two functions and merges their return values.
+ *
+ * @param {function} one Function to invoke first.
+ * @param {function} two Function to invoke second.
+ * @return {function} Function that invokes the two argument functions.
+ * @private
+ */
+
+
+ function createMergedResultFunction(one, two) {
+ return function mergedResult() {
+ var a = one.apply(this, arguments);
+ var b = two.apply(this, arguments);
+
+ if (a == null) {
+ return b;
+ } else if (b == null) {
+ return a;
+ }
+
+ var c = {};
+ mergeIntoWithNoDuplicateKeys(c, a);
+ mergeIntoWithNoDuplicateKeys(c, b);
+ return c;
+ };
+ }
+ /**
+ * Creates a function that invokes two functions and ignores their return vales.
+ *
+ * @param {function} one Function to invoke first.
+ * @param {function} two Function to invoke second.
+ * @return {function} Function that invokes the two argument functions.
+ * @private
+ */
+
+
+ function createChainedFunction(one, two) {
+ return function chainedFunction() {
+ one.apply(this, arguments);
+ two.apply(this, arguments);
+ };
+ }
+ /**
+ * Binds a method to the component.
+ *
+ * @param {object} component Component whose method is going to be bound.
+ * @param {function} method Method to be bound.
+ * @return {function} The bound method.
+ */
+
+
+ function bindAutoBindMethod(component, method) {
+ var boundMethod = method.bind(component);
+
+ {
+ boundMethod.__reactBoundContext = component;
+ boundMethod.__reactBoundMethod = method;
+ boundMethod.__reactBoundArguments = null;
+ var componentName = component.constructor.displayName;
+ var _bind = boundMethod.bind;
+
+ boundMethod.bind = function (newThis) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ } // User is trying to bind() an autobound method; we effectively will
+ // ignore the value of "this" that the user is trying to use, so
+ // let's warn.
+
+
+ if (newThis !== component && newThis !== null) {
+ {
+ warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName);
+ }
+ } else if (!args.length) {
+ {
+ warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName);
+ }
+
+ return boundMethod;
+ }
+
+ var reboundMethod = _bind.apply(boundMethod, arguments);
+
+ reboundMethod.__reactBoundContext = component;
+ reboundMethod.__reactBoundMethod = method;
+ reboundMethod.__reactBoundArguments = args;
+ return reboundMethod;
+ };
+ }
+
+ return boundMethod;
+ }
+ /**
+ * Binds all auto-bound methods in a component.
+ *
+ * @param {object} component Component whose method is going to be bound.
+ */
+
+
+ function bindAutoBindMethods(component) {
+ var pairs = component.__reactAutoBindPairs;
+
+ for (var i = 0; i < pairs.length; i += 2) {
+ var autoBindKey = pairs[i];
+ var method = pairs[i + 1];
+ component[autoBindKey] = bindAutoBindMethod(component, method);
+ }
+ }
+
+ var IsMountedPreMixin = {
+ componentDidMount: function () {
+ this.__isMounted = true;
+ }
+ };
+ var IsMountedPostMixin = {
+ componentWillUnmount: function () {
+ this.__isMounted = false;
+ }
+ };
+ /**
+ * Add more to the ReactClass base class. These are all legacy features and
+ * therefore not already part of the modern ReactComponent.
+ */
+
+ var ReactClassMixin = {
+ /**
+ * TODO: This will be deprecated because state should always keep a consistent
+ * type signature and the only use case for this, is to avoid that.
+ */
+ replaceState: function (newState, callback) {
+ this.updater.enqueueReplaceState(this, newState, callback);
+ },
+
+ /**
+ * Checks whether or not this composite component is mounted.
+ * @return {boolean} True if mounted, false otherwise.
+ * @protected
+ * @final
+ */
+ isMounted: function () {
+ {
+ warning(this.__didWarnIsMounted, '%s: isMounted is deprecated. Instead, make sure to clean up ' + 'subscriptions and pending requests in componentWillUnmount to ' + 'prevent memory leaks.', this.constructor && this.constructor.displayName || this.name || 'Component');
+ this.__didWarnIsMounted = true;
+ }
+
+ return !!this.__isMounted;
+ }
+ };
+
+ var ReactClassComponent = function () {};
+
+ _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
+ /**
+ * Creates a composite component class given a class specification.
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
+ *
+ * @param {object} spec Class specification (which must define `render`).
+ * @return {function} Component constructor function.
+ * @public
+ */
+
+
+ function createClass(spec) {
+ // To keep our warnings more understandable, we'll use a little hack here to
+ // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
+ // unnecessarily identify a class without displayName as 'Constructor'.
+ var Constructor = identity(function (props, context, updater) {
+ // This constructor gets overridden by mocks. The argument is used
+ // by mocks to assert on what gets mounted.
+ {
+ warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory');
+ } // Wire up auto-binding
+
+
+ if (this.__reactAutoBindPairs.length) {
+ bindAutoBindMethods(this);
+ }
+
+ this.props = props;
+ this.context = context;
+ this.refs = emptyObject;
+ this.updater = updater || ReactNoopUpdateQueue;
+ this.state = null; // ReactClasses doesn't have constructors. Instead, they use the
+ // getInitialState and componentWillMount methods for initialization.
+
+ var initialState = this.getInitialState ? this.getInitialState() : null;
+
+ {
+ // We allow auto-mocks to proceed as if they're returning null.
+ if (initialState === undefined && this.getInitialState._isMockFunction) {
+ // This is probably bad practice. Consider warning here and
+ // deprecating this convenience.
+ initialState = null;
+ }
+ }
+
+ _invariant(typeof initialState === 'object' && !Array.isArray(initialState), '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent');
+
+ this.state = initialState;
+ });
+ Constructor.prototype = new ReactClassComponent();
+ Constructor.prototype.constructor = Constructor;
+ Constructor.prototype.__reactAutoBindPairs = [];
+ injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
+ mixSpecIntoComponent(Constructor, IsMountedPreMixin);
+ mixSpecIntoComponent(Constructor, spec);
+ mixSpecIntoComponent(Constructor, IsMountedPostMixin); // Initialize the defaultProps property after all mixins have been merged.
+
+ if (Constructor.getDefaultProps) {
+ Constructor.defaultProps = Constructor.getDefaultProps();
+ }
+
+ {
+ // This is a tag to indicate that the use of these method names is ok,
+ // since it's used with createClass. If it's not, then it's likely a
+ // mistake so we'll warn you to use the static property, property
+ // initializer or constructor respectively.
+ if (Constructor.getDefaultProps) {
+ Constructor.getDefaultProps.isReactClassApproved = {};
+ }
+
+ if (Constructor.prototype.getInitialState) {
+ Constructor.prototype.getInitialState.isReactClassApproved = {};
+ }
+ }
+
+ _invariant(Constructor.prototype.render, 'createClass(...): Class specification must implement a `render` method.');
+
+ {
+ warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component');
+ warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component');
+ warning(!Constructor.prototype.UNSAFE_componentWillRecieveProps, '%s has a method called UNSAFE_componentWillRecieveProps(). ' + 'Did you mean UNSAFE_componentWillReceiveProps()?', spec.displayName || 'A component');
+ } // Reduce time spent doing lookups by setting these on the prototype.
+
+
+ for (var methodName in ReactClassInterface) {
+ if (!Constructor.prototype[methodName]) {
+ Constructor.prototype[methodName] = null;
+ }
+ }
+
+ return Constructor;
+ }
+
+ return createClass;
+}
+
+var factory_1$1 = factory$3;
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+var React$1 = require('react');
+
+var factory$2 = factory_1$1;
+
+if (typeof React$1 === 'undefined') {
+ throw Error('create-react-class could not find the React object. If you are using script tags, ' + 'make sure that React is being loaded before create-react-class.');
+} // Hack to grab NoopUpdateQueue from isomorphic React
+
+
+var ReactNoopUpdateQueue = new React$1.Component().updater;
+var createReactClass$1 = factory$2(React$1.Component, React$1.isValidElement, ReactNoopUpdateQueue);
+
+var reactIs = reactIs$1.exports;
+/**
+ * Copyright 2015, Yahoo! Inc.
+ * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+
+
+var REACT_STATICS = {
+ childContextTypes: true,
+ contextType: true,
+ contextTypes: true,
+ defaultProps: true,
+ displayName: true,
+ getDefaultProps: true,
+ getDerivedStateFromError: true,
+ getDerivedStateFromProps: true,
+ mixins: true,
+ propTypes: true,
+ type: true
+};
+var KNOWN_STATICS = {
+ name: true,
+ length: true,
+ prototype: true,
+ caller: true,
+ callee: true,
+ arguments: true,
+ arity: true
+};
+var FORWARD_REF_STATICS = {
+ '$$typeof': true,
+ render: true,
+ defaultProps: true,
+ displayName: true,
+ propTypes: true
+};
+var MEMO_STATICS = {
+ '$$typeof': true,
+ compare: true,
+ defaultProps: true,
+ displayName: true,
+ propTypes: true,
+ type: true
+};
+var TYPE_STATICS = {};
+TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
+TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
+
+function getStatics(component) {
+ // React v16.11 and below
+ if (reactIs.isMemo(component)) {
+ return MEMO_STATICS;
+ } // React v16.12 and above
+
+
+ return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;
+}
+
+var defineProperty = Object.defineProperty;
+var getOwnPropertyNames = Object.getOwnPropertyNames;
+var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+var getPrototypeOf = Object.getPrototypeOf;
+var objectPrototype = Object.prototype;
+
+function hoistNonReactStatics$1(targetComponent, sourceComponent, blacklist) {
+ if (typeof sourceComponent !== 'string') {
+ // don't hoist over string (html) components
+ if (objectPrototype) {
+ var inheritedComponent = getPrototypeOf(sourceComponent);
+
+ if (inheritedComponent && inheritedComponent !== objectPrototype) {
+ hoistNonReactStatics$1(targetComponent, inheritedComponent, blacklist);
+ }
+ }
+
+ var keys = getOwnPropertyNames(sourceComponent);
+
+ if (getOwnPropertySymbols) {
+ keys = keys.concat(getOwnPropertySymbols(sourceComponent));
+ }
+
+ var targetStatics = getStatics(targetComponent);
+ var sourceStatics = getStatics(sourceComponent);
+
+ for (var i = 0; i < keys.length; ++i) {
+ var key = keys[i];
+
+ if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
+ var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
+
+ try {
+ // Avoid failures from read-only properties
+ defineProperty(targetComponent, key, descriptor);
+ } catch (e) {}
+ }
+ }
+ }
+
+ return targetComponent;
+}
+
+var hoistNonReactStatics_cjs = hoistNonReactStatics$1;
+
+var React = require('react');
+
+var createReactClass = createReactClass$1;
+
+var mapValues = mapValues_1;
+
+var hoistNonReactStatics = hoistNonReactStatics_cjs;
+
+function withFauxDOMFactory(Element) {
+ function withFauxDOM(WrappedComponent) {
+ var WithFauxDOM = createReactClass({
+ componentWillMount: function () {
+ this.connectedFauxDOM = {};
+ this.animateFauxDOMUntil = 0;
+ },
+ componentWillUnmount: function () {
+ this.stopAnimatingFauxDOM();
+ this.stopDrawFauxDOM();
+ },
+ connectFauxDOM: function (node, name, discardNode) {
+ if (!this.connectedFauxDOM[name] || discardNode) {
+ this.connectedFauxDOM[name] = typeof node !== 'string' ? node : new Element(node);
+ this.drawFauxDOMTimeout = setTimeout(this.drawFauxDOM);
+ }
+
+ return this.connectedFauxDOM[name];
+ },
+ drawFauxDOM: function () {
+ var virtualDOM = mapValues(this.connectedFauxDOM, function (n) {
+ return n.toReact();
+ });
+ this.setState(virtualDOM);
+ },
+ animateFauxDOM: function (duration) {
+ this.animateFauxDOMUntil = Math.max(Date.now() + duration, this.animateFauxDOMUntil);
+
+ if (!this.fauxDOMAnimationInterval) {
+ this.fauxDOMAnimationInterval = setInterval(function () {
+ if (Date.now() < this.animateFauxDOMUntil) {
+ this.drawFauxDOM();
+ } else {
+ this.stopAnimatingFauxDOM();
+ }
+ }.bind(this), 16);
+ }
+ },
+ stopAnimatingFauxDOM: function () {
+ this.fauxDOMAnimationInterval = clearInterval(this.fauxDOMAnimationInterval);
+ this.animateFauxDOMUntil = 0;
+ },
+ stopDrawFauxDOM: function () {
+ this.drawFauxDOMTimeout = clearTimeout(this.drawFauxDOMTimeout);
+ },
+ isAnimatingFauxDOM: function () {
+ return !!this.fauxDOMAnimationInterval;
+ },
+ render: function () {
+ var props = Object.assign({}, this.props, this.state, {
+ connectFauxDOM: this.connectFauxDOM,
+ drawFauxDOM: this.drawFauxDOM,
+ animateFauxDOM: this.animateFauxDOM,
+ stopAnimatingFauxDOM: this.stopAnimatingFauxDOM,
+ isAnimatingFauxDOM: this.isAnimatingFauxDOM
+ });
+ return React.createElement(WrappedComponent, props);
+ }
+ });
+ WithFauxDOM.displayName = 'WithFauxDOM(' + getDisplayName(WrappedComponent) + ')';
+ hoistNonReactStatics(WithFauxDOM, WrappedComponent);
+ return WithFauxDOM;
+ }
+
+ return withFauxDOM;
+}
+
+function getDisplayName(WrappedComponent) {
+ return WrappedComponent.displayName || WrappedComponent.name || 'Component';
+}
+
+var _withFauxDOM = withFauxDOMFactory;
+
+var element = _element;
+
+var window$1 = _window;
+
+var withFauxDOM = _withFauxDOM;
+
+function factory$1() {
+ var Element = element();
+ var Window = window$1();
+ var ReactFauxDOM = {
+ Element: Element,
+ defaultView: Window,
+ withFauxDOM: withFauxDOM(Element),
+ createElement: function (nodeName) {
+ return new Element(nodeName);
+ },
+ createElementNS: function (namespace, nodeName) {
+ return this.createElement(nodeName);
+ },
+ compareDocumentPosition: function () {
+ // The selector engine tries to validate with this, but we don't care.
+ // 8 = DOCUMENT_POSITION_CONTAINS, so we say all nodes are in this document.
+ return 8;
+ }
+ };
+ Element.prototype.ownerDocument = ReactFauxDOM;
+ return ReactFauxDOM;
+}
+
+var factory_1 = factory$1;
+
+var factory = factory_1;
+
+var ReactFauxDOM = factory();
+
+var noop = {
+ value: function () {}
+};
+
+function dispatch$1() {
+ for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
+ if (!(t = arguments[i] + "") || t in _ || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
+ _[t] = [];
+ }
+
+ return new Dispatch(_);
+}
+
+function Dispatch(_) {
+ this._ = _;
+}
+
+function parseTypenames$1(typenames, types) {
+ return typenames.trim().split(/^|\s+/).map(function (t) {
+ var name = "",
+ i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+ return {
+ type: t,
+ name: name
+ };
+ });
+}
+
+Dispatch.prototype = dispatch$1.prototype = {
+ constructor: Dispatch,
+ on: function (typename, callback) {
+ var _ = this._,
+ T = parseTypenames$1(typename + "", _),
+ t,
+ i = -1,
+ n = T.length; // If no callback was specified, return the callback of the given type and name.
+
+ if (arguments.length < 2) {
+ while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
+
+ return;
+ } // If a type was specified, set the callback for the given type and name.
+ // Otherwise, if a null callback was specified, remove callbacks of the given name.
+
+
+ if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
+
+ while (++i < n) {
+ if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
+ }
+
+ return this;
+ },
+ copy: function () {
+ var copy = {},
+ _ = this._;
+
+ for (var t in _) copy[t] = _[t].slice();
+
+ return new Dispatch(copy);
+ },
+ call: function (type, that) {
+ if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+
+ for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ },
+ apply: function (type, that, args) {
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+
+ for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ }
+};
+
+function get(type, name) {
+ for (var i = 0, n = type.length, c; i < n; ++i) {
+ if ((c = type[i]).name === name) {
+ return c.value;
+ }
+ }
+}
+
+function set(type, name, callback) {
+ for (var i = 0, n = type.length; i < n; ++i) {
+ if (type[i].name === name) {
+ type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
+ break;
+ }
+ }
+
+ if (callback != null) type.push({
+ name: name,
+ value: callback
+ });
+ return type;
+}
+
+var src = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ dispatch: dispatch$1
+});
+
+// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/
+// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf
+var dispatch = src.dispatch;
+
+var cloudRadians = Math.PI / 180,
+ cw = 1 << 11 >> 5,
+ ch = 1 << 11;
+
+var d3Cloud = function () {
+ var size = [256, 256],
+ text = cloudText,
+ font = cloudFont,
+ fontSize = cloudFontSize,
+ fontStyle = cloudFontNormal,
+ fontWeight = cloudFontNormal,
+ rotate = cloudRotate,
+ padding = cloudPadding,
+ spiral = archimedeanSpiral,
+ words = [],
+ timeInterval = Infinity,
+ event = dispatch("word", "end"),
+ timer = null,
+ random = Math.random,
+ cloud = {},
+ canvas = cloudCanvas;
+
+ cloud.canvas = function (_) {
+ return arguments.length ? (canvas = functor(_), cloud) : canvas;
+ };
+
+ cloud.start = function () {
+ var contextAndRatio = getContext(canvas()),
+ board = zeroArray((size[0] >> 5) * size[1]),
+ bounds = null,
+ n = words.length,
+ i = -1,
+ tags = [],
+ data = words.map(function (d, i) {
+ d.text = text.call(this, d, i);
+ d.font = font.call(this, d, i);
+ d.style = fontStyle.call(this, d, i);
+ d.weight = fontWeight.call(this, d, i);
+ d.rotate = rotate.call(this, d, i);
+ d.size = ~~fontSize.call(this, d, i);
+ d.padding = padding.call(this, d, i);
+ return d;
+ }).sort(function (a, b) {
+ return b.size - a.size;
+ });
+ if (timer) clearInterval(timer);
+ timer = setInterval(step, 0);
+ step();
+ return cloud;
+
+ function step() {
+ var start = Date.now();
+
+ while (Date.now() - start < timeInterval && ++i < n && timer) {
+ var d = data[i];
+ d.x = size[0] * (random() + .5) >> 1;
+ d.y = size[1] * (random() + .5) >> 1;
+ cloudSprite(contextAndRatio, d, data, i);
+
+ if (d.hasText && place(board, d, bounds)) {
+ tags.push(d);
+ event.call("word", cloud, d);
+ if (bounds) cloudBounds(bounds, d);else bounds = [{
+ x: d.x + d.x0,
+ y: d.y + d.y0
+ }, {
+ x: d.x + d.x1,
+ y: d.y + d.y1
+ }]; // Temporary hack
+
+ d.x -= size[0] >> 1;
+ d.y -= size[1] >> 1;
+ }
+ }
+
+ if (i >= n) {
+ cloud.stop();
+ event.call("end", cloud, tags, bounds);
+ }
+ }
+ };
+
+ cloud.stop = function () {
+ if (timer) {
+ clearInterval(timer);
+ timer = null;
+ }
+
+ return cloud;
+ };
+
+ function getContext(canvas) {
+ canvas.width = canvas.height = 1;
+ var ratio = Math.sqrt(canvas.getContext("2d").getImageData(0, 0, 1, 1).data.length >> 2);
+ canvas.width = (cw << 5) / ratio;
+ canvas.height = ch / ratio;
+ var context = canvas.getContext("2d");
+ context.fillStyle = context.strokeStyle = "red";
+ context.textAlign = "center";
+ return {
+ context: context,
+ ratio: ratio
+ };
+ }
+
+ function place(board, tag, bounds) {
+ [{
+ x: 0,
+ y: 0
+ }, {
+ x: size[0],
+ y: size[1]
+ }];
+ var startX = tag.x,
+ startY = tag.y,
+ maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),
+ s = spiral(size),
+ dt = random() < .5 ? 1 : -1,
+ t = -dt,
+ dxdy,
+ dx,
+ dy;
+
+ while (dxdy = s(t += dt)) {
+ dx = ~~dxdy[0];
+ dy = ~~dxdy[1];
+ if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;
+ tag.x = startX + dx;
+ tag.y = startY + dy;
+ if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue; // TODO only check for collisions within current bounds.
+
+ if (!bounds || !cloudCollide(tag, board, size[0])) {
+ if (!bounds || collideRects(tag, bounds)) {
+ var sprite = tag.sprite,
+ w = tag.width >> 5,
+ sw = size[0] >> 5,
+ lx = tag.x - (w << 4),
+ sx = lx & 0x7f,
+ msx = 32 - sx,
+ h = tag.y1 - tag.y0,
+ x = (tag.y + tag.y0) * sw + (lx >> 5),
+ last;
+
+ for (var j = 0; j < h; j++) {
+ last = 0;
+
+ for (var i = 0; i <= w; i++) {
+ board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);
+ }
+
+ x += sw;
+ }
+
+ delete tag.sprite;
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ cloud.timeInterval = function (_) {
+ return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;
+ };
+
+ cloud.words = function (_) {
+ return arguments.length ? (words = _, cloud) : words;
+ };
+
+ cloud.size = function (_) {
+ return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;
+ };
+
+ cloud.font = function (_) {
+ return arguments.length ? (font = functor(_), cloud) : font;
+ };
+
+ cloud.fontStyle = function (_) {
+ return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;
+ };
+
+ cloud.fontWeight = function (_) {
+ return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;
+ };
+
+ cloud.rotate = function (_) {
+ return arguments.length ? (rotate = functor(_), cloud) : rotate;
+ };
+
+ cloud.text = function (_) {
+ return arguments.length ? (text = functor(_), cloud) : text;
+ };
+
+ cloud.spiral = function (_) {
+ return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;
+ };
+
+ cloud.fontSize = function (_) {
+ return arguments.length ? (fontSize = functor(_), cloud) : fontSize;
+ };
+
+ cloud.padding = function (_) {
+ return arguments.length ? (padding = functor(_), cloud) : padding;
+ };
+
+ cloud.random = function (_) {
+ return arguments.length ? (random = _, cloud) : random;
+ };
+
+ cloud.on = function () {
+ var value = event.on.apply(event, arguments);
+ return value === event ? cloud : value;
+ };
+
+ return cloud;
+};
+
+function cloudText(d) {
+ return d.text;
+}
+
+function cloudFont() {
+ return "serif";
+}
+
+function cloudFontNormal() {
+ return "normal";
+}
+
+function cloudFontSize(d) {
+ return Math.sqrt(d.value);
+}
+
+function cloudRotate() {
+ return (~~(Math.random() * 6) - 3) * 30;
+}
+
+function cloudPadding() {
+ return 1;
+} // Fetches a monochrome sprite bitmap for the specified text.
+// Load in batches for speed.
+
+
+function cloudSprite(contextAndRatio, d, data, di) {
+ if (d.sprite) return;
+ var c = contextAndRatio.context,
+ ratio = contextAndRatio.ratio;
+ c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);
+ var x = 0,
+ y = 0,
+ maxh = 0,
+ n = data.length;
+ --di;
+
+ while (++di < n) {
+ d = data[di];
+ c.save();
+ c.font = d.style + " " + d.weight + " " + ~~((d.size + 1) / ratio) + "px " + d.font;
+ var w = c.measureText(d.text + "m").width * ratio,
+ h = d.size << 1;
+
+ if (d.rotate) {
+ var sr = Math.sin(d.rotate * cloudRadians),
+ cr = Math.cos(d.rotate * cloudRadians),
+ wcr = w * cr,
+ wsr = w * sr,
+ hcr = h * cr,
+ hsr = h * sr;
+ w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;
+ h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));
+ } else {
+ w = w + 0x1f >> 5 << 5;
+ }
+
+ if (h > maxh) maxh = h;
+
+ if (x + w >= cw << 5) {
+ x = 0;
+ y += maxh;
+ maxh = 0;
+ }
+
+ if (y + h >= ch) break;
+ c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);
+ if (d.rotate) c.rotate(d.rotate * cloudRadians);
+ c.fillText(d.text, 0, 0);
+ if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);
+ c.restore();
+ d.width = w;
+ d.height = h;
+ d.xoff = x;
+ d.yoff = y;
+ d.x1 = w >> 1;
+ d.y1 = h >> 1;
+ d.x0 = -d.x1;
+ d.y0 = -d.y1;
+ d.hasText = true;
+ x += w;
+ }
+
+ var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,
+ sprite = [];
+
+ while (--di >= 0) {
+ d = data[di];
+ if (!d.hasText) continue;
+ var w = d.width,
+ w32 = w >> 5,
+ h = d.y1 - d.y0; // Zero the buffer
+
+ for (var i = 0; i < h * w32; i++) sprite[i] = 0;
+
+ x = d.xoff;
+ if (x == null) return;
+ y = d.yoff;
+ var seen = 0,
+ seenRow = -1;
+
+ for (var j = 0; j < h; j++) {
+ for (var i = 0; i < w; i++) {
+ var k = w32 * j + (i >> 5),
+ m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;
+ sprite[k] |= m;
+ seen |= m;
+ }
+
+ if (seen) seenRow = j;else {
+ d.y0++;
+ h--;
+ j--;
+ y++;
+ }
+ }
+
+ d.y1 = d.y0 + seenRow;
+ d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);
+ }
+} // Use mask-based collision detection.
+
+
+function cloudCollide(tag, board, sw) {
+ sw >>= 5;
+ var sprite = tag.sprite,
+ w = tag.width >> 5,
+ lx = tag.x - (w << 4),
+ sx = lx & 0x7f,
+ msx = 32 - sx,
+ h = tag.y1 - tag.y0,
+ x = (tag.y + tag.y0) * sw + (lx >> 5),
+ last;
+
+ for (var j = 0; j < h; j++) {
+ last = 0;
+
+ for (var i = 0; i <= w; i++) {
+ if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;
+ }
+
+ x += sw;
+ }
+
+ return false;
+}
+
+function cloudBounds(bounds, d) {
+ var b0 = bounds[0],
+ b1 = bounds[1];
+ if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;
+ if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;
+ if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;
+ if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;
+}
+
+function collideRects(a, b) {
+ return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;
+}
+
+function archimedeanSpiral(size) {
+ var e = size[0] / size[1];
+ return function (t) {
+ return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];
+ };
+}
+
+function rectangularSpiral(size) {
+ var dy = 4,
+ dx = dy * size[0] / size[1],
+ x = 0,
+ y = 0;
+ return function (t) {
+ var sign = t < 0 ? -1 : 1; // See triangular numbers: T_n = n * (n + 1) / 2.
+
+ switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {
+ case 0:
+ x += dx;
+ break;
+
+ case 1:
+ y += dy;
+ break;
+
+ case 2:
+ x -= dx;
+ break;
+
+ default:
+ y -= dy;
+ break;
+ }
+
+ return [x, y];
+ };
+} // TODO reuse arrays?
+
+
+function zeroArray(n) {
+ var a = [],
+ i = -1;
+
+ while (++i < n) a[i] = 0;
+
+ return a;
+}
+
+function cloudCanvas() {
+ return document.createElement("canvas");
+}
+
+function functor(d) {
+ return typeof d === "function" ? d : function () {
+ return d;
+ };
+}
+
+var spirals = {
+ archimedean: archimedeanSpiral,
+ rectangular: rectangularSpiral
+};
+
+/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */
+
+var hasElementType = typeof Element !== 'undefined';
+var hasMap = typeof Map === 'function';
+var hasSet = typeof Set === 'function';
+var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js
+
+function equal(a, b) {
+ // START: fast-deep-equal es6/index.js 3.1.1
+ if (a === b) return true;
+
+ if (a && b && typeof a == 'object' && typeof b == 'object') {
+ if (a.constructor !== b.constructor) return false;
+ var length, i, keys;
+
+ if (Array.isArray(a)) {
+ length = a.length;
+ if (length != b.length) return false;
+
+ for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;
+
+ return true;
+ } // START: Modifications:
+ // 1. Extra `has &&` helpers in initial condition allow es6 code
+ // to co-exist with es5.
+ // 2. Replace `for of` with es5 compliant iteration using `for`.
+ // Basically, take:
+ //
+ // ```js
+ // for (i of a.entries())
+ // if (!b.has(i[0])) return false;
+ // ```
+ //
+ // ... and convert to:
+ //
+ // ```js
+ // it = a.entries();
+ // while (!(i = it.next()).done)
+ // if (!b.has(i.value[0])) return false;
+ // ```
+ //
+ // **Note**: `i` access switches to `i.value`.
+
+
+ var it;
+
+ if (hasMap && a instanceof Map && b instanceof Map) {
+ if (a.size !== b.size) return false;
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;
+
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;
+
+ return true;
+ }
+
+ if (hasSet && a instanceof Set && b instanceof Set) {
+ if (a.size !== b.size) return false;
+ it = a.entries();
+
+ while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;
+
+ return true;
+ } // END: Modifications
+
+
+ if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
+ length = a.length;
+ if (length != b.length) return false;
+
+ for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;
+
+ return true;
+ }
+
+ if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
+ if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
+ if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
+ keys = Object.keys(a);
+ length = keys.length;
+ if (length !== Object.keys(b).length) return false;
+
+ for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; // END: fast-deep-equal
+ // START: react-fast-compare
+ // custom handling for DOM elements
+
+
+ if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact
+
+ for (i = length; i-- !== 0;) {
+ if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {
+ // React-specific: avoid traversing React elements' _owner
+ // Preact-specific: avoid traversing Preact elements' __v and __o
+ // __v = $_original / $_vnode
+ // __o = $_owner
+ // These properties contain circular references and are not needed when
+ // comparing the actual elements (and not their owners)
+ // .$$typeof and ._store on just reasonable markers of elements
+ continue;
+ } // all other properties should be traversed as usual
+
+
+ if (!equal(a[keys[i]], b[keys[i]])) return false;
+ } // END: react-fast-compare
+ // START: fast-deep-equal
+
+
+ return true;
+ }
+
+ return a !== a && b !== b;
+} // end fast-deep-equal
+
+
+var reactFastCompare = function isEqual(a, b) {
+ try {
+ return equal(a, b);
+ } catch (error) {
+ if ((error.message || '').match(/stack|recursion/i)) {
+ // warn on circular references, don't crash
+ // browsers give this different errors name and messages:
+ // chrome/safari: "RangeError", "Maximum call stack size exceeded"
+ // firefox: "InternalError", too much recursion"
+ // edge: "Error", "Out of stack space"
+ console.warn('react-fast-compare cannot handle circular refs');
+ return false;
+ } // some other error. we should definitely know about these
+
+
+ throw error;
+ }
+};
+
+var xhtml = "http://www.w3.org/1999/xhtml";
+var namespaces = {
+ svg: "http://www.w3.org/2000/svg",
+ xhtml: xhtml,
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/"
+};
+
+function namespace (name) {
+ var prefix = name += "",
+ i = prefix.indexOf(":");
+ if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
+ return namespaces.hasOwnProperty(prefix) ? {
+ space: namespaces[prefix],
+ local: name
+ } : name; // eslint-disable-line no-prototype-builtins
+}
+
+function creatorInherit(name) {
+ return function () {
+ var document = this.ownerDocument,
+ uri = this.namespaceURI;
+ return uri === xhtml && document.documentElement.namespaceURI === xhtml ? document.createElement(name) : document.createElementNS(uri, name);
+ };
+}
+
+function creatorFixed(fullname) {
+ return function () {
+ return this.ownerDocument.createElementNS(fullname.space, fullname.local);
+ };
+}
+
+function creator (name) {
+ var fullname = namespace(name);
+ return (fullname.local ? creatorFixed : creatorInherit)(fullname);
+}
+
+function none() {}
+
+function selector (selector) {
+ return selector == null ? none : function () {
+ return this.querySelector(selector);
+ };
+}
+
+function selection_select (select) {
+ if (typeof select !== "function") select = selector(select);
+
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+ if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+ if ("__data__" in node) subnode.__data__ = node.__data__;
+ subgroup[i] = subnode;
+ }
+ }
+ }
+
+ return new Selection(subgroups, this._parents);
+}
+
+function array (x) {
+ return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like
+ : Array.from(x); // Map, Set, iterable, string, or anything else
+}
+
+function empty() {
+ return [];
+}
+
+function selectorAll (selector) {
+ return selector == null ? empty : function () {
+ return this.querySelectorAll(selector);
+ };
+}
+
+function arrayAll(select) {
+ return function () {
+ var group = select.apply(this, arguments);
+ return group == null ? [] : array(group);
+ };
+}
+
+function selection_selectAll (select) {
+ if (typeof select === "function") select = arrayAll(select);else select = selectorAll(select);
+
+ for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ subgroups.push(select.call(node, node.__data__, i, group));
+ parents.push(node);
+ }
+ }
+ }
+
+ return new Selection(subgroups, parents);
+}
+
+function matcher (selector) {
+ return function () {
+ return this.matches(selector);
+ };
+}
+function childMatcher(selector) {
+ return function (node) {
+ return node.matches(selector);
+ };
+}
+
+var find = Array.prototype.find;
+
+function childFind(match) {
+ return function () {
+ return find.call(this.children, match);
+ };
+}
+
+function childFirst() {
+ return this.firstElementChild;
+}
+
+function selection_selectChild (match) {
+ return this.select(match == null ? childFirst : childFind(typeof match === "function" ? match : childMatcher(match)));
+}
+
+var filter = Array.prototype.filter;
+
+function children() {
+ return this.children;
+}
+
+function childrenFilter(match) {
+ return function () {
+ return filter.call(this.children, match);
+ };
+}
+
+function selection_selectChildren (match) {
+ return this.selectAll(match == null ? children : childrenFilter(typeof match === "function" ? match : childMatcher(match)));
+}
+
+function selection_filter (match) {
+ if (typeof match !== "function") match = matcher(match);
+
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+ if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+ subgroup.push(node);
+ }
+ }
+ }
+
+ return new Selection(subgroups, this._parents);
+}
+
+function sparse (update) {
+ return new Array(update.length);
+}
+
+function selection_enter () {
+ return new Selection(this._enter || this._groups.map(sparse), this._parents);
+}
+function EnterNode(parent, datum) {
+ this.ownerDocument = parent.ownerDocument;
+ this.namespaceURI = parent.namespaceURI;
+ this._next = null;
+ this._parent = parent;
+ this.__data__ = datum;
+}
+EnterNode.prototype = {
+ constructor: EnterNode,
+ appendChild: function (child) {
+ return this._parent.insertBefore(child, this._next);
+ },
+ insertBefore: function (child, next) {
+ return this._parent.insertBefore(child, next);
+ },
+ querySelector: function (selector) {
+ return this._parent.querySelector(selector);
+ },
+ querySelectorAll: function (selector) {
+ return this._parent.querySelectorAll(selector);
+ }
+};
+
+function constant (x) {
+ return function () {
+ return x;
+ };
+}
+
+function bindIndex(parent, group, enter, update, exit, data) {
+ var i = 0,
+ node,
+ groupLength = group.length,
+ dataLength = data.length; // Put any non-null nodes that fit into update.
+ // Put any null nodes into enter.
+ // Put any remaining data into enter.
+
+ for (; i < dataLength; ++i) {
+ if (node = group[i]) {
+ node.__data__ = data[i];
+ update[i] = node;
+ } else {
+ enter[i] = new EnterNode(parent, data[i]);
+ }
+ } // Put any non-null nodes that don’t fit into exit.
+
+
+ for (; i < groupLength; ++i) {
+ if (node = group[i]) {
+ exit[i] = node;
+ }
+ }
+}
+
+function bindKey(parent, group, enter, update, exit, data, key) {
+ var i,
+ node,
+ nodeByKeyValue = new Map(),
+ groupLength = group.length,
+ dataLength = data.length,
+ keyValues = new Array(groupLength),
+ keyValue; // Compute the key for each node.
+ // If multiple nodes have the same key, the duplicates are added to exit.
+
+ for (i = 0; i < groupLength; ++i) {
+ if (node = group[i]) {
+ keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + "";
+
+ if (nodeByKeyValue.has(keyValue)) {
+ exit[i] = node;
+ } else {
+ nodeByKeyValue.set(keyValue, node);
+ }
+ }
+ } // Compute the key for each datum.
+ // If there a node associated with this key, join and add it to update.
+ // If there is not (or the key is a duplicate), add it to enter.
+
+
+ for (i = 0; i < dataLength; ++i) {
+ keyValue = key.call(parent, data[i], i, data) + "";
+
+ if (node = nodeByKeyValue.get(keyValue)) {
+ update[i] = node;
+ node.__data__ = data[i];
+ nodeByKeyValue.delete(keyValue);
+ } else {
+ enter[i] = new EnterNode(parent, data[i]);
+ }
+ } // Add any remaining nodes that were not bound to data to exit.
+
+
+ for (i = 0; i < groupLength; ++i) {
+ if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {
+ exit[i] = node;
+ }
+ }
+}
+
+function datum(node) {
+ return node.__data__;
+}
+
+function selection_data (value, key) {
+ if (!arguments.length) return Array.from(this, datum);
+ var bind = key ? bindKey : bindIndex,
+ parents = this._parents,
+ groups = this._groups;
+ if (typeof value !== "function") value = constant(value);
+
+ for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
+ var parent = parents[j],
+ group = groups[j],
+ groupLength = group.length,
+ data = array(value.call(parent, parent && parent.__data__, j, parents)),
+ dataLength = data.length,
+ enterGroup = enter[j] = new Array(dataLength),
+ updateGroup = update[j] = new Array(dataLength),
+ exitGroup = exit[j] = new Array(groupLength);
+ bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); // Now connect the enter nodes to their following update node, such that
+ // appendChild can insert the materialized enter node before this node,
+ // rather than at the end of the parent node.
+
+ for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
+ if (previous = enterGroup[i0]) {
+ if (i0 >= i1) i1 = i0 + 1;
+
+ while (!(next = updateGroup[i1]) && ++i1 < dataLength);
+
+ previous._next = next || null;
+ }
+ }
+ }
+
+ update = new Selection(update, parents);
+ update._enter = enter;
+ update._exit = exit;
+ return update;
+}
+
+function selection_exit () {
+ return new Selection(this._exit || this._groups.map(sparse), this._parents);
+}
+
+function selection_join (onenter, onupdate, onexit) {
+ var enter = this.enter(),
+ update = this,
+ exit = this.exit();
+ enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + "");
+ if (onupdate != null) update = onupdate(update);
+ if (onexit == null) exit.remove();else onexit(exit);
+ return enter && update ? enter.merge(update).order() : update;
+}
+
+function selection_merge (selection) {
+ if (!(selection instanceof Selection)) throw new Error("invalid merge");
+
+ for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
+ for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group0[i] || group1[i]) {
+ merge[i] = node;
+ }
+ }
+ }
+
+ for (; j < m0; ++j) {
+ merges[j] = groups0[j];
+ }
+
+ return new Selection(merges, this._parents);
+}
+
+function selection_order () {
+ for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
+ for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
+ if (node = group[i]) {
+ if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
+ next = node;
+ }
+ }
+ }
+
+ return this;
+}
+
+function selection_sort (compare) {
+ if (!compare) compare = ascending;
+
+ function compareNode(a, b) {
+ return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+ }
+
+ for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ sortgroup[i] = node;
+ }
+ }
+
+ sortgroup.sort(compareNode);
+ }
+
+ return new Selection(sortgroups, this._parents).order();
+}
+
+function ascending(a, b) {
+ return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+}
+
+function selection_call () {
+ var callback = arguments[0];
+ arguments[0] = this;
+ callback.apply(null, arguments);
+ return this;
+}
+
+function selection_nodes () {
+ return Array.from(this);
+}
+
+function selection_node () {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
+ var node = group[i];
+ if (node) return node;
+ }
+ }
+
+ return null;
+}
+
+function selection_size () {
+ let size = 0;
+
+ for (const node of this) ++size; // eslint-disable-line no-unused-vars
+
+
+ return size;
+}
+
+function selection_empty () {
+ return !this.node();
+}
+
+function selection_each (callback) {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+ if (node = group[i]) callback.call(node, node.__data__, i, group);
+ }
+ }
+
+ return this;
+}
+
+function attrRemove(name) {
+ return function () {
+ this.removeAttribute(name);
+ };
+}
+
+function attrRemoveNS(fullname) {
+ return function () {
+ this.removeAttributeNS(fullname.space, fullname.local);
+ };
+}
+
+function attrConstant(name, value) {
+ return function () {
+ this.setAttribute(name, value);
+ };
+}
+
+function attrConstantNS(fullname, value) {
+ return function () {
+ this.setAttributeNS(fullname.space, fullname.local, value);
+ };
+}
+
+function attrFunction(name, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttribute(name);else this.setAttribute(name, v);
+ };
+}
+
+function attrFunctionNS(fullname, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttributeNS(fullname.space, fullname.local);else this.setAttributeNS(fullname.space, fullname.local, v);
+ };
+}
+
+function selection_attr (name, value) {
+ var fullname = namespace(name);
+
+ if (arguments.length < 2) {
+ var node = this.node();
+ return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);
+ }
+
+ return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === "function" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value));
+}
+
+function defaultView (node) {
+ return node.ownerDocument && node.ownerDocument.defaultView // node is a Node
+ || node.document && node // node is a Window
+ || node.defaultView; // node is a Document
+}
+
+function styleRemove(name) {
+ return function () {
+ this.style.removeProperty(name);
+ };
+}
+
+function styleConstant(name, value, priority) {
+ return function () {
+ this.style.setProperty(name, value, priority);
+ };
+}
+
+function styleFunction(name, value, priority) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) this.style.removeProperty(name);else this.style.setProperty(name, v, priority);
+ };
+}
+
+function selection_style (name, value, priority) {
+ return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === "function" ? styleFunction : styleConstant)(name, value, priority == null ? "" : priority)) : styleValue(this.node(), name);
+}
+function styleValue(node, name) {
+ return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
+}
+
+function propertyRemove(name) {
+ return function () {
+ delete this[name];
+ };
+}
+
+function propertyConstant(name, value) {
+ return function () {
+ this[name] = value;
+ };
+}
+
+function propertyFunction(name, value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ if (v == null) delete this[name];else this[name] = v;
+ };
+}
+
+function selection_property (name, value) {
+ return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === "function" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];
+}
+
+function classArray(string) {
+ return string.trim().split(/^|\s+/);
+}
+
+function classList(node) {
+ return node.classList || new ClassList(node);
+}
+
+function ClassList(node) {
+ this._node = node;
+ this._names = classArray(node.getAttribute("class") || "");
+}
+
+ClassList.prototype = {
+ add: function (name) {
+ var i = this._names.indexOf(name);
+
+ if (i < 0) {
+ this._names.push(name);
+
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ remove: function (name) {
+ var i = this._names.indexOf(name);
+
+ if (i >= 0) {
+ this._names.splice(i, 1);
+
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ contains: function (name) {
+ return this._names.indexOf(name) >= 0;
+ }
+};
+
+function classedAdd(node, names) {
+ var list = classList(node),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) list.add(names[i]);
+}
+
+function classedRemove(node, names) {
+ var list = classList(node),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) list.remove(names[i]);
+}
+
+function classedTrue(names) {
+ return function () {
+ classedAdd(this, names);
+ };
+}
+
+function classedFalse(names) {
+ return function () {
+ classedRemove(this, names);
+ };
+}
+
+function classedFunction(names, value) {
+ return function () {
+ (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
+ };
+}
+
+function selection_classed (name, value) {
+ var names = classArray(name + "");
+
+ if (arguments.length < 2) {
+ var list = classList(this.node()),
+ i = -1,
+ n = names.length;
+
+ while (++i < n) if (!list.contains(names[i])) return false;
+
+ return true;
+ }
+
+ return this.each((typeof value === "function" ? classedFunction : value ? classedTrue : classedFalse)(names, value));
+}
+
+function textRemove() {
+ this.textContent = "";
+}
+
+function textConstant(value) {
+ return function () {
+ this.textContent = value;
+ };
+}
+
+function textFunction(value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ this.textContent = v == null ? "" : v;
+ };
+}
+
+function selection_text (value) {
+ return arguments.length ? this.each(value == null ? textRemove : (typeof value === "function" ? textFunction : textConstant)(value)) : this.node().textContent;
+}
+
+function htmlRemove() {
+ this.innerHTML = "";
+}
+
+function htmlConstant(value) {
+ return function () {
+ this.innerHTML = value;
+ };
+}
+
+function htmlFunction(value) {
+ return function () {
+ var v = value.apply(this, arguments);
+ this.innerHTML = v == null ? "" : v;
+ };
+}
+
+function selection_html (value) {
+ return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === "function" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;
+}
+
+function raise() {
+ if (this.nextSibling) this.parentNode.appendChild(this);
+}
+
+function selection_raise () {
+ return this.each(raise);
+}
+
+function lower() {
+ if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
+}
+
+function selection_lower () {
+ return this.each(lower);
+}
+
+function selection_append (name) {
+ var create = typeof name === "function" ? name : creator(name);
+ return this.select(function () {
+ return this.appendChild(create.apply(this, arguments));
+ });
+}
+
+function constantNull() {
+ return null;
+}
+
+function selection_insert (name, before) {
+ var create = typeof name === "function" ? name : creator(name),
+ select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
+ return this.select(function () {
+ return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
+ });
+}
+
+function remove() {
+ var parent = this.parentNode;
+ if (parent) parent.removeChild(this);
+}
+
+function selection_remove () {
+ return this.each(remove);
+}
+
+function selection_cloneShallow() {
+ var clone = this.cloneNode(false),
+ parent = this.parentNode;
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+}
+
+function selection_cloneDeep() {
+ var clone = this.cloneNode(true),
+ parent = this.parentNode;
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
+}
+
+function selection_clone (deep) {
+ return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
+}
+
+function selection_datum (value) {
+ return arguments.length ? this.property("__data__", value) : this.node().__data__;
+}
+
+function contextListener(listener) {
+ return function (event) {
+ listener.call(this, event, this.__data__);
+ };
+}
+
+function parseTypenames(typenames) {
+ return typenames.trim().split(/^|\s+/).map(function (t) {
+ var name = "",
+ i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ return {
+ type: t,
+ name: name
+ };
+ });
+}
+
+function onRemove(typename) {
+ return function () {
+ var on = this.__on;
+ if (!on) return;
+
+ for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
+ if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.options);
+ } else {
+ on[++i] = o;
+ }
+ }
+
+ if (++i) on.length = i;else delete this.__on;
+ };
+}
+
+function onAdd(typename, value, options) {
+ return function () {
+ var on = this.__on,
+ o,
+ listener = contextListener(value);
+ if (on) for (var j = 0, m = on.length; j < m; ++j) {
+ if ((o = on[j]).type === typename.type && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.options);
+ this.addEventListener(o.type, o.listener = listener, o.options = options);
+ o.value = value;
+ return;
+ }
+ }
+ this.addEventListener(typename.type, listener, options);
+ o = {
+ type: typename.type,
+ name: typename.name,
+ value: value,
+ listener: listener,
+ options: options
+ };
+ if (!on) this.__on = [o];else on.push(o);
+ };
+}
+
+function selection_on (typename, value, options) {
+ var typenames = parseTypenames(typename + ""),
+ i,
+ n = typenames.length,
+ t;
+
+ if (arguments.length < 2) {
+ var on = this.node().__on;
+
+ if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
+ for (i = 0, o = on[j]; i < n; ++i) {
+ if ((t = typenames[i]).type === o.type && t.name === o.name) {
+ return o.value;
+ }
+ }
+ }
+ return;
+ }
+
+ on = value ? onAdd : onRemove;
+
+ for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));
+
+ return this;
+}
+
+function dispatchEvent(node, type, params) {
+ var window = defaultView(node),
+ event = window.CustomEvent;
+
+ if (typeof event === "function") {
+ event = new event(type, params);
+ } else {
+ event = window.document.createEvent("Event");
+ if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;else event.initEvent(type, false, false);
+ }
+
+ node.dispatchEvent(event);
+}
+
+function dispatchConstant(type, params) {
+ return function () {
+ return dispatchEvent(this, type, params);
+ };
+}
+
+function dispatchFunction(type, params) {
+ return function () {
+ return dispatchEvent(this, type, params.apply(this, arguments));
+ };
+}
+
+function selection_dispatch (type, params) {
+ return this.each((typeof params === "function" ? dispatchFunction : dispatchConstant)(type, params));
+}
+
+function* selection_iterator () {
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+ if (node = group[i]) yield node;
+ }
+ }
+}
+
+var root = [null];
+function Selection(groups, parents) {
+ this._groups = groups;
+ this._parents = parents;
+}
+
+function selection_selection() {
+ return this;
+}
+
+Selection.prototype = {
+ constructor: Selection,
+ select: selection_select,
+ selectAll: selection_selectAll,
+ selectChild: selection_selectChild,
+ selectChildren: selection_selectChildren,
+ filter: selection_filter,
+ data: selection_data,
+ enter: selection_enter,
+ exit: selection_exit,
+ join: selection_join,
+ merge: selection_merge,
+ selection: selection_selection,
+ order: selection_order,
+ sort: selection_sort,
+ call: selection_call,
+ nodes: selection_nodes,
+ node: selection_node,
+ size: selection_size,
+ empty: selection_empty,
+ each: selection_each,
+ attr: selection_attr,
+ style: selection_style,
+ property: selection_property,
+ classed: selection_classed,
+ text: selection_text,
+ html: selection_html,
+ raise: selection_raise,
+ lower: selection_lower,
+ append: selection_append,
+ insert: selection_insert,
+ remove: selection_remove,
+ clone: selection_clone,
+ datum: selection_datum,
+ on: selection_on,
+ dispatch: selection_dispatch,
+ [Symbol.iterator]: selection_iterator
+};
+
+function select (selector) {
+ return typeof selector === "string" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root);
+}
+
+function initRange(domain, range) {
+ switch (arguments.length) {
+ case 0:
+ break;
+
+ case 1:
+ this.range(domain);
+ break;
+
+ default:
+ this.range(range).domain(domain);
+ break;
+ }
+
+ return this;
+}
+
+const implicit = Symbol("implicit");
+function ordinal() {
+ var index = new Map(),
+ domain = [],
+ range = [],
+ unknown = implicit;
+
+ function scale(d) {
+ var key = d + "",
+ i = index.get(key);
+
+ if (!i) {
+ if (unknown !== implicit) return unknown;
+ index.set(key, i = domain.push(d));
+ }
+
+ return range[(i - 1) % range.length];
+ }
+
+ scale.domain = function (_) {
+ if (!arguments.length) return domain.slice();
+ domain = [], index = new Map();
+
+ for (const value of _) {
+ const key = value + "";
+ if (index.has(key)) continue;
+ index.set(key, domain.push(value));
+ }
+
+ return scale;
+ };
+
+ scale.range = function (_) {
+ return arguments.length ? (range = Array.from(_), scale) : range.slice();
+ };
+
+ scale.unknown = function (_) {
+ return arguments.length ? (unknown = _, scale) : unknown;
+ };
+
+ scale.copy = function () {
+ return ordinal(domain, range).unknown(unknown);
+ };
+
+ initRange.apply(scale, arguments);
+ return scale;
+}
+
+function colors (specifier) {
+ var n = specifier.length / 6 | 0,
+ colors = new Array(n),
+ i = 0;
+
+ while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6);
+
+ return colors;
+}
+
+var schemeCategory10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf");
+
+function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
+}
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
+
+function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+}
+
+function _iterableToArrayLimit(arr, i) {
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
+
+ if (_i == null) return;
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+
+ var _s, _e;
+
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+var defaultScaleOrdinal = ordinal(schemeCategory10);
+
+function WordCloud(_ref) {
+ var data = _ref.data,
+ _ref$width = _ref.width,
+ width = _ref$width === void 0 ? 700 : _ref$width,
+ _ref$height = _ref.height,
+ height = _ref$height === void 0 ? 600 : _ref$height,
+ _ref$font = _ref.font,
+ font = _ref$font === void 0 ? 'serif' : _ref$font,
+ _ref$fontStyle = _ref.fontStyle,
+ fontStyle = _ref$fontStyle === void 0 ? 'normal' : _ref$fontStyle,
+ _ref$fontWeight = _ref.fontWeight,
+ fontWeight = _ref$fontWeight === void 0 ? 'normal' : _ref$fontWeight,
+ _ref$fontSize = _ref.fontSize,
+ fontSize = _ref$fontSize === void 0 ? function (d) {
+ return Math.sqrt(d.value);
+ } : _ref$fontSize,
+ _ref$rotate = _ref.rotate,
+ rotate = _ref$rotate === void 0 ? function () {
+ return (~~(Math.random() * 6) - 3) * 30;
+ } : _ref$rotate,
+ _ref$spiral = _ref.spiral,
+ spiral = _ref$spiral === void 0 ? 'archimedean' : _ref$spiral,
+ _ref$padding = _ref.padding,
+ padding = _ref$padding === void 0 ? 1 : _ref$padding,
+ _ref$random = _ref.random,
+ random = _ref$random === void 0 ? Math.random : _ref$random,
+ _ref$fill = _ref.fill,
+ fill = _ref$fill === void 0 ? function (_, i) {
+ return defaultScaleOrdinal(i);
+ } : _ref$fill,
+ onWordClick = _ref.onWordClick,
+ onWordMouseOver = _ref.onWordMouseOver,
+ onWordMouseOut = _ref.onWordMouseOut;
+ var elementRef = useRef();
+
+ if (!elementRef.current) {
+ elementRef.current = ReactFauxDOM.createElement('div');
+ }
+
+ var el = elementRef.current; // clear old words
+
+ select(el).selectAll('*').remove(); // render based on new data
+
+ var layout = d3Cloud().words(data).size([width, height]).font(font).fontStyle(fontStyle).fontWeight(fontWeight).fontSize(fontSize).rotate(rotate).spiral(spiral).padding(padding).random(random).on('end', function (words) {
+ var _layout$size = layout.size(),
+ _layout$size2 = _slicedToArray(_layout$size, 2),
+ w = _layout$size2[0],
+ h = _layout$size2[1];
+
+ var texts = select(el).append('svg').attr('viewBox', "0 0 ".concat(w, " ").concat(h)).attr('preserveAspectRatio', 'xMinYMin meet').append('g').attr('transform', "translate(".concat(w / 2, ",").concat(h / 2, ")")).selectAll('text').data(words).enter().append('text').style('font-family', function (d) {
+ return d.font;
+ }).style('font-style', function (d) {
+ return d.style;
+ }).style('font-weight', function (d) {
+ return d.weight;
+ }).style('font-size', function (d) {
+ return "".concat(d.size, "px");
+ }).style('fill', fill).attr('text-anchor', 'middle').attr('transform', function (d) {
+ return "translate(".concat([d.x, d.y], ")rotate(").concat(d.rotate, ")");
+ }).text(function (d) {
+ return d.text;
+ });
+
+ if (onWordClick) {
+ texts.on('click', onWordClick);
+ }
+
+ if (onWordMouseOver) {
+ texts.on('mouseover', onWordMouseOver);
+ }
+
+ if (onWordMouseOut) {
+ texts.on('mouseout', onWordMouseOut);
+ }
+ });
+ layout.start();
+ return el.toReact();
+}
+
+WordCloud.propTypes = {
+ data: _pt.arrayOf(_pt.shape({
+ text: _pt.string.isRequired,
+ value: _pt.number.isRequired
+ })).isRequired,
+ width: _pt.number,
+ height: _pt.number,
+ font: _pt.oneOfType([_pt.string, _pt.func]),
+ fontStyle: _pt.oneOfType([_pt.string, _pt.func]),
+ fontWeight: _pt.oneOfType([_pt.string, _pt.number, _pt.func]),
+ fontSize: _pt.oneOfType([_pt.number, _pt.func]),
+ rotate: _pt.oneOfType([_pt.number, _pt.func]),
+ spiral: _pt.oneOfType([_pt.oneOf(['archimedean']), _pt.oneOf(['rectangular']), _pt.func]),
+ padding: _pt.oneOfType([_pt.number, _pt.func]),
+ random: _pt.func,
+ onWordClick: _pt.func,
+ onWordMouseOver: _pt.func,
+ onWordMouseOut: _pt.func
+};
+var WordCloud$1 = /*#__PURE__*/React$3.memo(WordCloud, reactFastCompare);
+
+function WordCloudWidgetComponent(props) {
+ const data = props.inputData;
+
+ const fontSizeMapper = word => Math.log2(word.value) * 5;
+
+ const rotate = word => Math.floor(Math.random() * 2) * 90;
+
+ const onClickHandle = text => {
+ props.onClickAction.canExecute && !props.onClickAction.isExecuting;
+ {
+ props.chosenWord.setValue(text);
+ props.onClickAction.execute();
+ }
+ };
+
+ return createElement$2(WordCloud$1, {
+ data: data,
+ fontSizeMapper: fontSizeMapper,
+ rotate: rotate,
+ onWordClick: (event, word) => onClickHandle(word.text)
+ });
+}
+
+class WordCloudWidget extends Component {
+ shouldComponentUpdate(nextProps) {
+ return nextProps.dataSource !== this.props.dataSource;
+ }
+
+ render() {
+ var dataToRender = [];
+
+ if (this.props.dataSource.status === "available" && this.props.dataSource.items) {
+ var i = 0;
+
+ for (i = 0; i < this.props.dataSource.items.length; i++) {
+ dataToRender.push({
+ text: this.props.textAttrib.get(this.props.dataSource.items[i]).value,
+ value: this.props.intAttrib.get(this.props.dataSource.items[i]).value
+ });
+ }
+ }
+
+ return createElement$2(WordCloudWidgetComponent, {
+ inputData: dataToRender,
+ chosenWord: this.props.chosenWord,
+ onClickAction: this.props.onClickAction
+ });
+ }
+
+}
+
+export { WordCloudWidget as default };
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29yZENsb3VkLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXdlYWstbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtZXh0ZXJuYWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtd3JhcHBlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5oYXMtaW5zdGFuY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5pcy1jb25jYXQtc3ByZWFkYWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLml0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wubWF0Y2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5tYXRjaC1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5yZXBsYWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuc2VhcmNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuc3BlY2llcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLnNwbGl0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wudG8tcHJpbWl0aXZlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wudG8tc3RyaW5nLXRhZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLnVuc2NvcGFibGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktY29weS13aXRoaW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvcHktd2l0aGluLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmV2ZXJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZpbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluZGV4LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pcy1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1sYXN0LWluZGV4LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5sYXN0LWluZGV4LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UtcmlnaHQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJldmVyc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNsaWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb21lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNvcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWllLW9yLWVkZ2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXdlYmtpdC12ZXJzaW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGVjaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnVuc2NvcGFibGVzLmZsYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnVuc2NvcGFibGVzLmZsYXQtbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1uYXRpdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llZWU3NTQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLmlzLXZpZXcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuc2xpY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGEtdmlldy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS5nZXQteWVhci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS5ub3cuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUuc2V0LXllYXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUudG8tZ210LXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcmVwZWF0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1wYWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGF0ZS10by1pc28tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5kYXRlLnRvLWlzby1zdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUudG8tanNvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kYXRlLXRvLXByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS50by1wcmltaXRpdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUudG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5lc2NhcGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24uYmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24uaGFzLWluc3RhbmNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5nbG9iYWwtdGhpcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmpzb24udG8tc3RyaW5nLXRhZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mcmVlemluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi1zdHJvbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLWxvZzFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmFjb3NoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmFzaW5oLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmF0YW5oLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtc2lnbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5jYnJ0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmNsejMyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtZXhwbTEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguY29zaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5leHBtMS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLWZyb3VuZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5mcm91bmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguaHlwb3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguaW11bC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5sb2cxMC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5sb2cxcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5sb2cyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLnNpZ24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguc2luaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC50YW5oLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5tYXRoLnRvLXN0cmluZy10YWcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGgudHJ1bmMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGhpcy1udW1iZXItdmFsdWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmVwc2lsb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbnVtYmVyLWlzLWZpbml0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmlzLWZpbml0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1pbnRlZ3JhbC1udW1iZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5pcy1pbnRlZ2VyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuaXMtbmFuLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIubWF4LXNhZmUtaW50ZWdlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWZsb2F0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIucGFyc2UtZmxvYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWludC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnBhcnNlLWludC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tcHJlY2lzaW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5jcmVhdGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3RvdHlwZS1hY2Nlc3NvcnMtZm9yY2VkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLWdldHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXNldHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5lbnRyaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZnJlZXplLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZnJvbS1lbnRyaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaGFzLW93bi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zYW1lLXZhbHVlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5pcy1leHRlbnNpYmxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaXMtZnJvemVuLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaXMtc2VhbGVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5sb29rdXAtc2V0dGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Quc2VhbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnZhbHVlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtZmxvYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnBhcnNlLWludC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Rhc2suanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9taWNyb3Rhc2suanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYWxsLXNldHRsZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYW55LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuYXBwbHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuY29uc3RydWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5kZWxldGUtcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZGF0YS1kZXNjcmlwdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LmdldC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5oYXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QuaXMtZXh0ZW5zaWJsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5vd24ta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3Quc2V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZmxlY3QudG8tc3RyaW5nLXRhZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5kb3QtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuc3RpY2t5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYXQtYWx0ZXJuYXRpdmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm90LWEtcmVnZXhwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZW5kcy13aXRoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXBhZC13ZWJraXQtYnVnLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucGFkLWVuZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnBhZC1zdGFydC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJhdy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGVhdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdGFydHMtd2l0aC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN1YnN0ci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS1lbmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLXN0YXJ0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1odG1sLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmFuY2hvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmJpZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmJsaW5rLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYm9sZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmZpeGVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZm9udGNvbG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZm9udHNpemUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGFsaWNzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubGluay5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3RyaWtlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3ViLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3VwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLXdyYXBwZXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2Zmc2V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZsb2F0MzItYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZsb2F0NjQtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDgtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDE2LWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pbnQzMi1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnVpbnQ4LWNsYW1wZWQtYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnVpbnQxNi1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDMyLWFycmF5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5hdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuY29weS13aXRoaW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmV2ZXJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20tY29uc3RydWN0b3ItYW5kLWxpc3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLXNwZWNpZXMtYW5kLWxpc3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC1pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZm9yLWVhY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmluY2x1ZGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pbmRleC1vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmpvaW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5Lm1hcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkub2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkucmVkdWNlLXJpZ2h0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5yZXZlcnNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zZXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNsaWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zb21lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zb3J0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zdWJhcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudG8tbG9jYWxlLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudG8tc3RyaW5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy51bmVzY2FwZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLXdlYWsuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLndlYWstbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy53ZWFrLXNldC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXN5bmMtZnJvbS1zeW5jLWl0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1hc3luYy1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnRyeS12aXJ0dWFsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLWFzeW5jLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXJyYXkuZnJvbS1hc3luYy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5LmZpbHRlci1vdXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5maWx0ZXItcmVqZWN0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5maW5kLWxhc3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5maW5kLWxhc3QtaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZ3JvdXAtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5ncm91cC1ieS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5LmlzLXRlbXBsYXRlLW9iamVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFycmF5Lmxhc3QtaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hcnJheS5sYXN0LWl0ZW0uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktdW5pcXVlLWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXJyYXkudW5pcXVlLWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuY29uc3RydWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItY3JlYXRlLXByb3h5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuYXMtaW5kZXhlZC1wYWlycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmRyb3AuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci5ldmVyeS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmZpbHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmZpbmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci5mbGF0LW1hcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLmZvci1lYWNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IuZnJvbS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLm1hcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLnJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFzeW5jLWl0ZXJhdG9yLnNvbWUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hc3luYy1pdGVyYXRvci50YWtlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYXN5bmMtaXRlcmF0b3IudG8tYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbnVtZXJpYy1yYW5nZS1pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmJpZ2ludC5yYW5nZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb21wb3NpdGUta2V5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuY29tcG9zaXRlLWtleS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmNvbXBvc2l0ZS1zeW1ib2wuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5hcy1pbmRleGVkLXBhaXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZHJvcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmV2ZXJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmluZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZsYXQtbWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mcm9tLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IubWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IucmVkdWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3Iuc29tZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLnRha2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci50by1hcnJheS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLWRlbGV0ZS1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZGVsZXRlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXAtZW1wbGFjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5lbXBsYWNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZXZlcnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZmlsdGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmZpbmQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZmluZC1rZXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi1mcm9tLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAuZ3JvdXAtYnkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2FtZS12YWx1ZS16ZXJvLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmluY2x1ZGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLmtleS1ieS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5rZXktb2YuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAubWFwLWtleXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAubWFwLXZhbHVlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5tZXJnZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLm9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLnJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hcC5zb21lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLnVwZGF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXAtdXBzZXJ0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWFwLnVwZGF0ZS1vci1pbnNlcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXAudXBzZXJ0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5jbGFtcC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguZGVnLXBlci1yYWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLmRlZ3JlZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC1zY2FsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguZnNjYWxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5pYWRkaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguaW11bGguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLmlzdWJoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5yYWQtcGVyLWRlZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGgucmFkaWFucy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm1hdGguc2NhbGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5tYXRoLnNlZWRlZC1wcm5nLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC5zaWduYml0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQubWF0aC51bXVsaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm51bWJlci5mcm9tLXN0cmluZy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm51bWJlci5yYW5nZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXRlcmF0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5vYmplY3QuaXRlcmF0ZS1lbnRyaWVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQub2JqZWN0Lml0ZXJhdGUta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm9iamVjdC5pdGVyYXRlLXZhbHVlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0Lm9ic2VydmFibGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLnRyeS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5kZWZpbmUtbWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS1rZXlzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucmVmbGVjdC5oYXMtbWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5yZWZsZWN0Lm1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24tYWRkLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5hZGQtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmRlbGV0ZS1hbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuZGlmZmVyZW5jZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmV2ZXJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmZpbHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5maW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaW50ZXJzZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmlzLWRpc2pvaW50LWZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaXMtc3Vic2V0LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmlzLXN1cGVyc2V0LW9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmpvaW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQubWFwLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0Lm9mLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LnJlZHVjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5zb21lLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LnN5bW1ldHJpYy1kaWZmZXJlbmNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LnVuaW9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3RyaW5nLmF0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3RyaW5nLmNvZGUtcG9pbnRzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3ltYm9sLmFzeW5jLWRpc3Bvc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zeW1ib2wuZGlzcG9zZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5tYXRjaGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3ltYm9sLm1ldGFkYXRhLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc3ltYm9sLm9ic2VydmFibGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zeW1ib2wucGF0dGVybi1tYXRjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnN5bWJvbC5yZXBsYWNlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnR5cGVkLWFycmF5LmZyb20tYXN5bmMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC50eXBlZC1hcnJheS5maWx0ZXItb3V0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkuZmlsdGVyLXJlamVjdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnR5cGVkLWFycmF5LmZpbmQtbGFzdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnR5cGVkLWFycmF5LmZpbmQtbGFzdC1pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnR5cGVkLWFycmF5Lmdyb3VwLWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQudHlwZWQtYXJyYXkudW5pcXVlLWJ5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQud2Vhay1tYXAuZGVsZXRlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstbWFwLmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLW1hcC5vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstbWFwLmVtcGxhY2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLW1hcC51cHNlcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLXNldC5hZGQtYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQud2Vhay1zZXQuZGVsZXRlLWFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LndlYWstc2V0LmZyb20uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC53ZWFrLXNldC5vZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20taXRlcmFibGVzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmltbWVkaWF0ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnF1ZXVlLW1pY3JvdGFzay5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnRpbWVycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtdXJsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL29iamVjdC1hc3NpZ24vaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtYXR0ci9saWIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcXVlcnktc2VsZWN0b3IvbGliL3F1ZXJ5LXNlbGVjdG9yL3V0aWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcXVlcnktc2VsZWN0b3IvbGliL3F1ZXJ5LXNlbGVjdG9yL3BhcnNlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9xdWVyeS1zZWxlY3Rvci9saWIvcXVlcnktc2VsZWN0b3IuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcXVlcnktc2VsZWN0b3IvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL3V0aWxzL2NhbWVsQ2FzZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvdXRpbHMvaXNTdHJpbmcuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL3V0aWxzL2lzVW5kZWZpbmVkLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi91dGlscy9hc3NpZ24uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL3V0aWxzL21hcFZhbHVlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvdXRpbHMvc3R5bGVDYW1lbENhc2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZmF1eC1kb20vbGliL19lbGVtZW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi9fd2luZG93LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1yZWFjdC1jbGFzcy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9kaXN0L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzLmNqcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXV4LWRvbS9saWIvX3dpdGhGYXV4RE9NLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi9mYWN0b3J5LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhdXgtZG9tL2xpYi9SZWFjdEZhdXhET00uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2Rpc3BhdGNoLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNsb3VkL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhc3QtY29tcGFyZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2VzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9jcmVhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvYXJyYXkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0b3JBbGwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdEFsbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9tYXRjaGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RDaGlsZC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0Q2hpbGRyZW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2ZpbHRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc3BhcnNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9lbnRlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9jb25zdGFudC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGF0YS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZXhpdC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vam9pbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbWVyZ2UuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29yZGVyLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zb3J0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9jYWxsLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2Rlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbm9kZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2l6ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW1wdHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VhY2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2F0dHIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvd2luZG93LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zdHlsZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcHJvcGVydHkuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NsYXNzZWQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3RleHQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2h0bWwuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JhaXNlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9sb3dlci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vYXBwZW5kLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9pbnNlcnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JlbW92ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2xvbmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdHVtLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9vbi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGlzcGF0Y2guanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2l0ZXJhdG9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3QuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbml0LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWQzLWNsb3VkL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvb3JkaW5hbC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jb2xvcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtZDMtY2xvdWQvbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvY2F0ZWdvcnkxMC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kMy1jbG91ZC9saWIvZXNtL1dvcmRDbG91ZC5qcyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1dvcmRDbG91ZFdpZGdldENvbXBvbmVudC5qc3giLCIuLi8uLi8uLi8uLi8uLi9zcmMvV29yZENsb3VkLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyIHNwbGl0ID0gJycuc3BsaXQ7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuIiwiLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCIvLyBgSXNDYWxsYWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwidmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignbmF2aWdhdG9yJywgJ3VzZXJBZ2VudCcpIHx8ICcnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgdmVyc2lvbiA9IG1hdGNoWzBdIDwgNCA/IDEgOiBtYXRjaFswXSArIG1hdGNoWzFdO1xufSBlbHNlIGlmICh1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSBtYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb24gJiYgK3ZlcnNpb247XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICByZXR1cm4gIVN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBPYmplY3QoaXQpIGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiBTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwidmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsInZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjE4LjMnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbCh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyBTdHJpbmcoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgKCsraWQgKyBwb3N0Zml4KS50b1N0cmluZygzNik7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSB8fCAhKE5BVElWRV9TWU1CT0wgfHwgdHlwZW9mIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9PSAnc3RyaW5nJykpIHtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKSkge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gICAgfVxuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpIHx8IGlzU3ltYm9sKGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZXhvdGljVG9QcmltID0gZ2V0TWV0aG9kKGlucHV0LCBUT19QUklNSVRJVkUpO1xuICB2YXIgcmVzdWx0O1xuICBpZiAoZXhvdGljVG9QcmltKSB7XG4gICAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdkZWZhdWx0JztcbiAgICByZXN1bHQgPSBleG90aWNUb1ByaW0uY2FsbChpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsInZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBTdHJpbmcoa2V5KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnRvU3RyaW5nO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoaW5zcGVjdFNvdXJjZShXZWFrTWFwKSk7XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAod21oYXMuY2FsbChzdG9yZSwgaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIHZhciBuYW1lID0gb3B0aW9ucyAmJiBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgdmFyIHN0YXRlO1xuICBpZiAoaXNDYWxsYWJsZSh2YWx1ZSkpIHtcbiAgICBpZiAoU3RyaW5nKG5hbWUpLnNsaWNlKDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICAgIG5hbWUgPSAnWycgKyBTdHJpbmcobmFtZSkucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJztcbiAgICB9XG4gICAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodmFsdWUsICduYW1lJywgbmFtZSk7XG4gICAgfVxuICAgIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICAgIGlmICghc3RhdGUuc291cmNlKSB7XG4gICAgICBzdGF0ZS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgICB9XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTywga2V5LCB2YWx1ZSk7XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59KTtcbiIsInZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIHNhZmVcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiAobnVtYmVyID4gMCA/IGZsb29yIDogY2VpbCkobnVtYmVyKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCksIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsInZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuIiwidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCJ2YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpKSBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gIH1cbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgc2V0R2xvYmFsKFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IChnbG9iYWxbVEFSR0VUXSB8fCB7fSkucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMubm9UYXJnZXRHZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxuLy8gYElzQXJyYXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2FycmF5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktaXNhcnJheSAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmd1bWVudCkge1xuICByZXR1cm4gY2xhc3NvZihhcmd1bWVudCkgPT0gJ0FycmF5Jztcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChjbGFzc29mKGFyZ3VtZW50KSA9PT0gJ1N5bWJvbCcpIHRocm93IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcbiAgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0aWVzIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXkgPSBrZXlzW2luZGV4KytdLCBQcm9wZXJ0aWVzW2tleV0pO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsIi8qIGdsb2JhbCBBY3RpdmVYT2JqZWN0IC0tIG9sZCBJRSwgV1NIICovXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgYWN0aXZlWERvY3VtZW50ID0gbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJ1xuICAgID8gZG9jdW1lbnQuZG9tYWluICYmIGFjdGl2ZVhEb2N1bWVudFxuICAgICAgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgLy8gb2xkIElFXG4gICAgICA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpXG4gICAgOiBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCk7IC8vIFdTSFxuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlICovXG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xuXG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkge1xuICB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlOYW1lcyhpdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJ1xuICAgID8gZ2V0V2luZG93TmFtZXMoaXQpXG4gICAgOiAkZ2V0T3duUHJvcGVydHlOYW1lcyh0b0luZGV4ZWRPYmplY3QoaXQpKTtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbmV4cG9ydHMuZiA9IHdlbGxLbm93blN5bWJvbDtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xuIiwidmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgdmFyIFN5bWJvbCA9IHBhdGguU3ltYm9sIHx8IChwYXRoLlN5bWJvbCA9IHt9KTtcbiAgaWYgKCFoYXNPd24oU3ltYm9sLCBOQU1FKSkgZGVmaW5lUHJvcGVydHkoU3ltYm9sLCBOQU1FLCB7XG4gICAgdmFsdWU6IHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZihOQU1FKVxuICB9KTtcbn07XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBUQUcsIFNUQVRJQykge1xuICBpZiAoaXQgJiYgIWhhc093bihpdCA9IFNUQVRJQyA/IGl0IDogaXQucHJvdG90eXBlLCBUT19TVFJJTkdfVEFHKSkge1xuICAgIGRlZmluZVByb3BlcnR5KGl0LCBUT19TVFJJTkdfVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IFRBRyB9KTtcbiAgfVxufTtcbiIsInZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUNhbGxhYmxlKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgZW1wdHkgPSBbXTtcbnZhciBjb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xudmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbnZhciBleGVjID0gY29uc3RydWN0b3JSZWdFeHAuZXhlYztcbnZhciBJTkNPUlJFQ1RfVE9fU1RSSU5HID0gIWNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcblxudmFyIGlzQ29uc3RydWN0b3JNb2Rlcm4gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0cnVjdChPYmplY3QsIGVtcHR5LCBhcmd1bWVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgaXNDb25zdHJ1Y3RvckxlZ2FjeSA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHN3aXRjaCAoY2xhc3NvZihhcmd1bWVudCkpIHtcbiAgICBjYXNlICdBc3luY0Z1bmN0aW9uJzpcbiAgICBjYXNlICdHZW5lcmF0b3JGdW5jdGlvbic6XG4gICAgY2FzZSAnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbic6IHJldHVybiBmYWxzZTtcbiAgICAvLyB3ZSBjYW4ndCBjaGVjayAucHJvdG90eXBlIHNpbmNlIGNvbnN0cnVjdG9ycyBwcm9kdWNlZCBieSAuYmluZCBoYXZlbid0IGl0XG4gIH0gcmV0dXJuIElOQ09SUkVDVF9UT19TVFJJTkcgfHwgISFleGVjLmNhbGwoY29uc3RydWN0b3JSZWdFeHAsIGluc3BlY3RTb3VyY2UoYXJndW1lbnQpKTtcbn07XG5cbi8vIGBJc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSAhY29uc3RydWN0IHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxlZDtcbiAgcmV0dXJuIGlzQ29uc3RydWN0b3JNb2Rlcm4oaXNDb25zdHJ1Y3Rvck1vZGVybi5jYWxsKVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKE9iamVjdClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihmdW5jdGlvbiAoKSB7IGNhbGxlZCA9IHRydWU7IH0pXG4gICAgfHwgY2FsbGVkO1xufSkgPyBpc0NvbnN0cnVjdG9yTGVnYWN5IDogaXNDb25zdHJ1Y3Rvck1vZGVybjtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBhIHBhcnQgb2YgYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmIChpc0NvbnN0cnVjdG9yKEMpICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7XG59O1xuIiwidmFyIGFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxuLy8gYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKGFycmF5U3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsQXJyYXkpKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZm9yRWFjaCwgbWFwLCBmaWx0ZXIsIHNvbWUsIGV2ZXJ5LCBmaW5kLCBmaW5kSW5kZXgsIGZpbHRlclJlamVjdCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBJU19GSUxURVJfUkVKRUNUID0gVFlQRSA9PSA3O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCwgc3BlY2lmaWNDcmVhdGUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShzZWxmKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiB8fCBJU19GSUxURVJfUkVKRUNUID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSB0YXJnZXRbaW5kZXhdID0gcmVzdWx0OyAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbHVlOyAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAvLyBldmVyeVxuICAgICAgICAgIGNhc2UgNzogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJSZWplY3RcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuICBtYXA6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiAgZXZlcnk6IGNyZWF0ZU1ldGhvZCg0KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlclJlamVjdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuICBmaWx0ZXJSZWplY3Q6IGNyZWF0ZU1ldGhvZCg3KVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciAkdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgbmF0aXZlT2JqZWN0Q3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCcpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkJyk7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG5cbnZhciBISURERU4gPSBzaGFyZWRLZXkoJ2hpZGRlbicpO1xudmFyIFNZTUJPTCA9ICdTeW1ib2wnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNZTUJPTCk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJHN0cmluZ2lmeSA9IGdldEJ1aWx0SW4oJ0pTT04nLCAnc3RyaW5naWZ5Jyk7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzRXh0ZXJuYWwuZjtcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvdHlwZVN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgVVNFX1NFVFRFUiA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RDcmVhdGUobmF0aXZlRGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgdmFyIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCBQKTtcbiAgaWYgKE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpIGRlbGV0ZSBPYmplY3RQcm90b3R5cGVbUF07XG4gIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICBpZiAoT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciAmJiBPICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPYmplY3RQcm90b3R5cGUsIFAsIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpO1xuICB9XG59IDogbmF0aXZlRGVmaW5lUHJvcGVydHk7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZywgZGVzY3JpcHRpb24pIHtcbiAgdmFyIHN5bWJvbCA9IEFsbFN5bWJvbHNbdGFnXSA9IG5hdGl2ZU9iamVjdENyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzZXRJbnRlcm5hbFN0YXRlKHN5bWJvbCwge1xuICAgIHR5cGU6IFNZTUJPTCxcbiAgICB0YWc6IHRhZyxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25cbiAgfSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHN5bWJvbC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICByZXR1cm4gc3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgaWYgKE8gPT09IE9iamVjdFByb3RvdHlwZSkgJGRlZmluZVByb3BlcnR5KE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIFAsIEF0dHJpYnV0ZXMpO1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleSA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoaGFzT3duKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUF0dHJpYnV0ZXMuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXNPd24oTywgSElEREVOKSkgbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgSElEREVOLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwge30pKTtcbiAgICAgIE9bSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc093bihPLCBISURERU4pICYmIE9bSElEREVOXVtrZXldKSBPW0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgQXR0cmlidXRlcyA9IG5hdGl2ZU9iamVjdENyZWF0ZShBdHRyaWJ1dGVzLCB7IGVudW1lcmFibGU6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzY3JpcHRvcihPLCBrZXksIEF0dHJpYnV0ZXMpO1xuICB9IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPLCBrZXksIEF0dHJpYnV0ZXMpO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIgcHJvcGVydGllcyA9IHRvSW5kZXhlZE9iamVjdChQcm9wZXJ0aWVzKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKHByb3BlcnRpZXMpLmNvbmNhdCgkZ2V0T3duUHJvcGVydHlTeW1ib2xzKHByb3BlcnRpZXMpKTtcbiAgJGZvckVhY2goa2V5cywgZnVuY3Rpb24gKGtleSkge1xuICAgIGlmICghREVTQ1JJUFRPUlMgfHwgJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocHJvcGVydGllcywga2V5KSkgJGRlZmluZVByb3BlcnR5KE8sIGtleSwgcHJvcGVydGllc1trZXldKTtcbiAgfSk7XG4gIHJldHVybiBPO1xufTtcblxudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gbmF0aXZlT2JqZWN0Q3JlYXRlKE8pIDogJGRlZmluZVByb3BlcnRpZXMobmF0aXZlT2JqZWN0Q3JlYXRlKE8pLCBQcm9wZXJ0aWVzKTtcbn07XG5cbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBQID0gdG9Qcm9wZXJ0eUtleShWKTtcbiAgdmFyIGVudW1lcmFibGUgPSBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRoaXMsIFApO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG90eXBlICYmIGhhc093bihBbGxTeW1ib2xzLCBQKSAmJiAhaGFzT3duKE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIFApKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBlbnVtZXJhYmxlIHx8ICFoYXNPd24odGhpcywgUCkgfHwgIWhhc093bihBbGxTeW1ib2xzLCBQKSB8fCBoYXNPd24odGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1bUF1cbiAgICA/IGVudW1lcmFibGUgOiB0cnVlO1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICB2YXIgaXQgPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIHZhciBrZXkgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvdHlwZSAmJiBoYXNPd24oQWxsU3ltYm9scywga2V5KSAmJiAhaGFzT3duKE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIGRlc2NyaXB0b3IgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSk7XG4gIGlmIChkZXNjcmlwdG9yICYmIGhhc093bihBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzT3duKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIHtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlO1xuICB9XG4gIHJldHVybiBkZXNjcmlwdG9yO1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHZhciBuYW1lcyA9IG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXModG9JbmRleGVkT2JqZWN0KE8pKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICAkZm9yRWFjaChuYW1lcywgZnVuY3Rpb24gKGtleSkge1xuICAgIGlmICghaGFzT3duKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpKSByZXN1bHQucHVzaChrZXkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pIHtcbiAgdmFyIElTX09CSkVDVF9QUk9UT1RZUEUgPSBPID09PSBPYmplY3RQcm90b3R5cGU7XG4gIHZhciBuYW1lcyA9IG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMoSVNfT0JKRUNUX1BST1RPVFlQRSA/IE9iamVjdFByb3RvdHlwZVN5bWJvbHMgOiB0b0luZGV4ZWRPYmplY3QoTykpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gICRmb3JFYWNoKG5hbWVzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGhhc093bihBbGxTeW1ib2xzLCBrZXkpICYmICghSVNfT0JKRUNUX1BST1RPVFlQRSB8fCBoYXNPd24oT2JqZWN0UHJvdG90eXBlLCBrZXkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gYFN5bWJvbGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLWNvbnN0cnVjdG9yXG5pZiAoIU5BVElWRV9TWU1CT0wpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gIWFyZ3VtZW50cy5sZW5ndGggfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiAkdG9TdHJpbmcoYXJndW1lbnRzWzBdKTtcbiAgICB2YXIgdGFnID0gdWlkKGRlc2NyaXB0aW9uKTtcbiAgICB2YXIgc2V0dGVyID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG90eXBlKSBzZXR0ZXIuY2FsbChPYmplY3RQcm90b3R5cGVTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzT3duKHRoaXMsIEhJRERFTikgJiYgaGFzT3duKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2NyaXB0b3IodGhpcywgdGFnLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBVU0VfU0VUVEVSKSBzZXRTeW1ib2xEZXNjcmlwdG9yKE9iamVjdFByb3RvdHlwZSwgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiBzZXR0ZXIgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnLCBkZXNjcmlwdGlvbik7XG4gIH07XG5cbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS50YWc7XG4gIH0pO1xuXG4gIHJlZGVmaW5lKCRTeW1ib2wsICd3aXRob3V0U2V0dGVyJywgZnVuY3Rpb24gKGRlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIHdyYXAodWlkKGRlc2NyaXB0aW9uKSwgZGVzY3JpcHRpb24pO1xuICB9KTtcblxuICBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mID0gJGRlZmluZVByb3BlcnR5O1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZiA9IGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICB3cmFwcGVkV2VsbEtub3duU3ltYm9sTW9kdWxlLmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdlbGxLbm93blN5bWJvbChuYW1lKSwgbmFtZSk7XG4gIH07XG5cbiAgaWYgKERFU0NSSVBUT1JTKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtU3ltYm9sLWRlc2NyaXB0aW9uXG4gICAgbmF0aXZlRGVmaW5lUHJvcGVydHkoJFN5bWJvbFtQUk9UT1RZUEVdLCAnZGVzY3JpcHRpb24nLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5kZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIUlTX1BVUkUpIHtcbiAgICAgIHJlZGVmaW5lKE9iamVjdFByb3RvdHlwZSwgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbn1cblxuJCh7IGdsb2JhbDogdHJ1ZSwgd3JhcDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCwgc2hhbTogIU5BVElWRV9TWU1CT0wgfSwge1xuICBTeW1ib2w6ICRTeW1ib2xcbn0pO1xuXG4kZm9yRWFjaChvYmplY3RLZXlzKFdlbGxLbm93blN5bWJvbHNTdG9yZSksIGZ1bmN0aW9uIChuYW1lKSB7XG4gIGRlZmluZVdlbGxLbm93blN5bWJvbChuYW1lKTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiBTWU1CT0wsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wgfSwge1xuICAvLyBgU3ltYm9sLmZvcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLmZvclxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBzdHJpbmcgPSAkdG9TdHJpbmcoa2V5KTtcbiAgICBpZiAoaGFzT3duKFN0cmluZ1RvU3ltYm9sUmVnaXN0cnksIHN0cmluZykpIHJldHVybiBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ107XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woc3RyaW5nKTtcbiAgICBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ10gPSBzeW1ib2w7XG4gICAgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeVtzeW1ib2xdID0gc3RyaW5nO1xuICAgIHJldHVybiBzeW1ib2w7XG4gIH0sXG4gIC8vIGBTeW1ib2wua2V5Rm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wua2V5Zm9yXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sJyk7XG4gICAgaWYgKGhhc093bihTeW1ib2xUb1N0cmluZ1JlZ2lzdHJ5LCBzeW0pKSByZXR1cm4gU3ltYm9sVG9TdHJpbmdSZWdpc3RyeVtzeW1dO1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgVVNFX1NFVFRFUiA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBVU0VfU0VUVEVSID0gZmFsc2U7IH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JzXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvclxufSk7XG5cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MIH0sIHtcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eXN5bWJvbHNcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gQ2hyb21lIDM4IGFuZCAzOSBgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc2AgZmFpbHMgb24gcHJpbWl0aXZlc1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzQ0M1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogZmFpbHMoZnVuY3Rpb24gKCkgeyBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZigxKTsgfSkgfSwge1xuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZih0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuLy8gYEpTT04uc3RyaW5naWZ5YCBtZXRob2QgYmVoYXZpb3Igd2l0aCBzeW1ib2xzXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWpzb24uc3RyaW5naWZ5XG5pZiAoJHN0cmluZ2lmeSkge1xuICB2YXIgRk9SQ0VEX0pTT05fU1RSSU5HSUZZID0gIU5BVElWRV9TWU1CT0wgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBzeW1ib2wgPSAkU3ltYm9sKCk7XG4gICAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgICByZXR1cm4gJHN0cmluZ2lmeShbc3ltYm9sXSkgIT0gJ1tudWxsXSdcbiAgICAgIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAgICAgfHwgJHN0cmluZ2lmeSh7IGE6IHN5bWJvbCB9KSAhPSAne30nXG4gICAgICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICAgICAgfHwgJHN0cmluZ2lmeShPYmplY3Qoc3ltYm9sKSkgIT0gJ3t9JztcbiAgfSk7XG5cbiAgJCh7IHRhcmdldDogJ0pTT04nLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9KU09OX1NUUklOR0lGWSB9LCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCwgcmVwbGFjZXIsIHNwYWNlKSB7XG4gICAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgICB2YXIgaW5kZXggPSAxO1xuICAgICAgdmFyICRyZXBsYWNlcjtcbiAgICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaW5kZXgpIGFyZ3MucHVzaChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgICAgJHJlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0NhbGxhYmxlKCRyZXBsYWNlcikpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgICAgcmV0dXJuICRzdHJpbmdpZnkuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLUBAdG9wcmltaXRpdmVcbmlmICghJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0pIHtcbiAgdmFyIHZhbHVlT2YgPSAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZjtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdmFsdWVPZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9KTtcbn1cbi8vIGBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddYCBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsIFNZTUJPTCk7XG5cbmhpZGRlbktleXNbSElEREVOXSA9IHRydWU7XG4iLCIvLyBgU3ltYm9sLnByb3RvdHlwZS5kZXNjcmlwdGlvbmAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUuZGVzY3JpcHRpb25cbid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG5cbnZhciBOYXRpdmVTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xuXG5pZiAoREVTQ1JJUFRPUlMgJiYgaXNDYWxsYWJsZShOYXRpdmVTeW1ib2wpICYmICghKCdkZXNjcmlwdGlvbicgaW4gTmF0aXZlU3ltYm9sLnByb3RvdHlwZSkgfHxcbiAgLy8gU2FmYXJpIDEyIGJ1Z1xuICBOYXRpdmVTeW1ib2woKS5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkXG4pKSB7XG4gIHZhciBFbXB0eVN0cmluZ0Rlc2NyaXB0aW9uU3RvcmUgPSB7fTtcbiAgLy8gd3JhcCBTeW1ib2wgY29uc3RydWN0b3IgZm9yIGNvcnJlY3Qgd29yayB3aXRoIHVuZGVmaW5lZCBkZXNjcmlwdGlvblxuICB2YXIgU3ltYm9sV3JhcHBlciA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoIDwgMSB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IFN0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgIHZhciByZXN1bHQgPSB0aGlzIGluc3RhbmNlb2YgU3ltYm9sV3JhcHBlclxuICAgICAgPyBuZXcgTmF0aXZlU3ltYm9sKGRlc2NyaXB0aW9uKVxuICAgICAgLy8gaW4gRWRnZSAxMywgU3RyaW5nKFN5bWJvbCh1bmRlZmluZWQpKSA9PT0gJ1N5bWJvbCh1bmRlZmluZWQpJ1xuICAgICAgOiBkZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkID8gTmF0aXZlU3ltYm9sKCkgOiBOYXRpdmVTeW1ib2woZGVzY3JpcHRpb24pO1xuICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gJycpIEVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZVtyZXN1bHRdID0gdHJ1ZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKFN5bWJvbFdyYXBwZXIsIE5hdGl2ZVN5bWJvbCk7XG4gIHZhciBzeW1ib2xQcm90b3R5cGUgPSBTeW1ib2xXcmFwcGVyLnByb3RvdHlwZSA9IE5hdGl2ZVN5bWJvbC5wcm90b3R5cGU7XG4gIHN5bWJvbFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN5bWJvbFdyYXBwZXI7XG5cbiAgdmFyIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG90eXBlLnRvU3RyaW5nO1xuICB2YXIgbmF0aXZlU3ltYm9sID0gU3RyaW5nKE5hdGl2ZVN5bWJvbCgndGVzdCcpKSA9PSAnU3ltYm9sKHRlc3QpJztcbiAgdmFyIHJlZ2V4cCA9IC9eU3ltYm9sXFwoKC4qKVxcKVteKV0rJC87XG4gIGRlZmluZVByb3BlcnR5KHN5bWJvbFByb3RvdHlwZSwgJ2Rlc2NyaXB0aW9uJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGRlc2NyaXB0aW9uKCkge1xuICAgICAgdmFyIHN5bWJvbCA9IGlzT2JqZWN0KHRoaXMpID8gdGhpcy52YWx1ZU9mKCkgOiB0aGlzO1xuICAgICAgdmFyIHN0cmluZyA9IHN5bWJvbFRvU3RyaW5nLmNhbGwoc3ltYm9sKTtcbiAgICAgIGlmIChoYXNPd24oRW1wdHlTdHJpbmdEZXNjcmlwdGlvblN0b3JlLCBzeW1ib2wpKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZGVzYyA9IG5hdGl2ZVN5bWJvbCA/IHN0cmluZy5zbGljZSg3LCAtMSkgOiBzdHJpbmcucmVwbGFjZShyZWdleHAsICckMScpO1xuICAgICAgcmV0dXJuIGRlc2MgPT09ICcnID8gdW5kZWZpbmVkIDogZGVzYztcbiAgICB9XG4gIH0pO1xuXG4gICQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgU3ltYm9sOiBTeW1ib2xXcmFwcGVyXG4gIH0pO1xufVxuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5hc3luY0l0ZXJhdG9yYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuYXN5bmNpdGVyYXRvclxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdhc3luY0l0ZXJhdG9yJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLmhhc0luc3RhbmNlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuaGFzaW5zdGFuY2VcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnaGFzSW5zdGFuY2UnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wuaXNjb25jYXRzcHJlYWRhYmxlXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2lzQ29uY2F0U3ByZWFkYWJsZScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5pdGVyYXRvcmAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLml0ZXJhdG9yXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLm1hdGNoYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wubWF0Y2hcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wubWF0Y2hBbGxgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5tYXRjaGFsbFxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdtYXRjaEFsbCcpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5yZXBsYWNlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wucmVwbGFjZVxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdyZXBsYWNlJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnNlYXJjaGAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNlYXJjaFxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdzZWFyY2gnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wuc3BlY2llc2Agd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNwZWNpZXNcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5zcGxpdGAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnNwbGl0XG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3NwbGl0Jyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnRvUHJpbWl0aXZlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zeW1ib2wudG9wcmltaXRpdmVcbmRlZmluZVdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wudG9TdHJpbmdUYWdgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC50b3N0cmluZ3RhZ1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC51bnNjb3BhYmxlc2Agd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3ltYm9sLnVuc2NvcGFibGVzXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIEYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwidmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlcicpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRwcm90b3R5cGVvZlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIChPKSB7XG4gIHZhciBvYmplY3QgPSB0b09iamVjdChPKTtcbiAgaWYgKGhhc093bihvYmplY3QsIElFX1BST1RPKSkgcmV0dXJuIG9iamVjdFtJRV9QUk9UT107XG4gIHZhciBjb25zdHJ1Y3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgaWYgKGlzQ2FsbGFibGUoY29uc3RydWN0b3IpICYmIG9iamVjdCBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG90eXBlIDogbnVsbDtcbn07XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnb2JqZWN0JyB8fCBpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyBTdHJpbmcoYXJndW1lbnQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvIC0tIHNhZmUgKi9cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5zZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5cGVvZlxuLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LXNldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENPUlJFQ1RfU0VUVEVSID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICAgIHNldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldDtcbiAgICBzZXR0ZXIuY2FsbCh0ZXN0LCBbXSk7XG4gICAgQ09SUkVDVF9TRVRURVIgPSB0ZXN0IGluc3RhbmNlb2YgQXJyYXk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgYW5PYmplY3QoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlci5jYWxsKE8sIHByb3RvKTtcbiAgICBlbHNlIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgcmV0dXJuIE87XG4gIH07XG59KCkgOiB1bmRlZmluZWQpO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxuLy8gYEluc3RhbGxFcnJvckNhdXNlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1lcnJvci1jYXVzZS8jc2VjLWVycm9yb2JqZWN0cy1pbnN0YWxsLWVycm9yLWNhdXNlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSAmJiAnY2F1c2UnIGluIG9wdGlvbnMpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTywgJ2NhdXNlJywgb3B0aW9ucy5jYXVzZSk7XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGdldE1ldGhvZChpdCwgSVRFUkFUT1IpXG4gICAgfHwgZ2V0TWV0aG9kKGl0LCAnQEBpdGVyYXRvcicpXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCJ2YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50LCB1c2luZ0l0ZXJhdG9yKSB7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZ2V0SXRlcmF0b3JNZXRob2QoYXJndW1lbnQpIDogdXNpbmdJdGVyYXRvcjtcbiAgaWYgKGFDYWxsYWJsZShpdGVyYXRvck1ldGhvZCkpIHJldHVybiBhbk9iamVjdChpdGVyYXRvck1ldGhvZC5jYWxsKGFyZ3VtZW50KSk7XG4gIHRocm93IFR5cGVFcnJvcihTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGlubmVyUmVzdWx0LmNhbGwoaXRlcmF0b3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlubmVyRXJyb3IgPSB0cnVlO1xuICAgIGlubmVyUmVzdWx0ID0gZXJyb3I7XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICBpZiAoaW5uZXJFcnJvcikgdGhyb3cgaW5uZXJSZXN1bHQ7XG4gIGFuT2JqZWN0KGlubmVyUmVzdWx0KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciBSZXN1bHQgPSBmdW5jdGlvbiAoc3RvcHBlZCwgcmVzdWx0KSB7XG4gIHRoaXMuc3RvcHBlZCA9IHN0b3BwZWQ7XG4gIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aGF0O1xuICB2YXIgQVNfRU5UUklFUyA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5BU19FTlRSSUVTKTtcbiAgdmFyIElTX0lURVJBVE9SID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX0lURVJBVE9SKTtcbiAgdmFyIElOVEVSUlVQVEVEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklOVEVSUlVQVEVEKTtcbiAgdmFyIGZuID0gYmluZCh1bmJvdW5kRnVuY3Rpb24sIHRoYXQsIDEgKyBBU19FTlRSSUVTICsgSU5URVJSVVBURUQpO1xuICB2YXIgaXRlcmF0b3IsIGl0ZXJGbiwgaW5kZXgsIGxlbmd0aCwgcmVzdWx0LCBuZXh0LCBzdGVwO1xuXG4gIHZhciBzdG9wID0gZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuICAgIGlmIChpdGVyYXRvcikgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGNvbmRpdGlvbik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodHJ1ZSwgY29uZGl0aW9uKTtcbiAgfTtcblxuICB2YXIgY2FsbEZuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKEFTX0VOVFJJRVMpIHtcbiAgICAgIGFuT2JqZWN0KHZhbHVlKTtcbiAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSwgc3RvcCkgOiBmbih2YWx1ZVswXSwgdmFsdWVbMV0pO1xuICAgIH0gcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWUsIHN0b3ApIDogZm4odmFsdWUpO1xuICB9O1xuXG4gIGlmIChJU19JVEVSQVRPUikge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGU7XG4gIH0gZWxzZSB7XG4gICAgaXRlckZuID0gZ2V0SXRlcmF0b3JNZXRob2QoaXRlcmFibGUpO1xuICAgIGlmICghaXRlckZuKSB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0ZXJhYmxlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG4gICAgLy8gb3B0aW1pc2F0aW9uIGZvciBhcnJheSBpdGVyYXRvcnNcbiAgICBpZiAoaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShpdGVyYWJsZSk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlLCBpdGVyRm4pO1xuICB9XG5cbiAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBuZXh0LmNhbGwoaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGNhbGxGbihzdGVwLnZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PSAnb2JqZWN0JyAmJiByZXN1bHQgJiYgcmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICB9IHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBpbnN0YWxsRXJyb3JDYXVzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbnZhciAkQWdncmVnYXRlRXJyb3IgPSBmdW5jdGlvbiBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIG1lc3NhZ2UgLyogLCBvcHRpb25zICovKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgaWYgKCEodGhhdCBpbnN0YW5jZW9mICRBZ2dyZWdhdGVFcnJvcikpIHJldHVybiBuZXcgJEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSwgb3B0aW9ucyk7XG4gIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2Vycm9yLW1lc3NhZ2UgLS0gZXhwZWN0ZWRcbiAgICB0aGF0ID0gc2V0UHJvdG90eXBlT2YobmV3IEVycm9yKHVuZGVmaW5lZCksIGdldFByb3RvdHlwZU9mKHRoYXQpKTtcbiAgfVxuICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ21lc3NhZ2UnLCB0b1N0cmluZyhtZXNzYWdlKSk7XG4gIGluc3RhbGxFcnJvckNhdXNlKHRoYXQsIG9wdGlvbnMpO1xuICB2YXIgZXJyb3JzQXJyYXkgPSBbXTtcbiAgaXRlcmF0ZShlcnJvcnMsIGVycm9yc0FycmF5LnB1c2gsIHsgdGhhdDogZXJyb3JzQXJyYXkgfSk7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCAnZXJyb3JzJywgZXJyb3JzQXJyYXkpO1xuICByZXR1cm4gdGhhdDtcbn07XG5cbmlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoJEFnZ3JlZ2F0ZUVycm9yLCBFcnJvcik7XG5lbHNlIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoJEFnZ3JlZ2F0ZUVycm9yLCBFcnJvcik7XG5cbiRBZ2dyZWdhdGVFcnJvci5wcm90b3R5cGUgPSBjcmVhdGUoRXJyb3IucHJvdG90eXBlLCB7XG4gIGNvbnN0cnVjdG9yOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJEFnZ3JlZ2F0ZUVycm9yKSxcbiAgbWVzc2FnZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICcnKSxcbiAgbmFtZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICdBZ2dyZWdhdGVFcnJvcicpXG59KTtcblxuLy8gYEFnZ3JlZ2F0ZUVycm9yYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZ2dyZWdhdGUtZXJyb3ItY29uc3RydWN0b3JcbiQoeyBnbG9iYWw6IHRydWUgfSwge1xuICBBZ2dyZWdhdGVFcnJvcjogJEFnZ3JlZ2F0ZUVycm9yXG59KTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxudmFyIFVOU0NPUEFCTEVTID0gd2VsbEtub3duU3ltYm9sKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSB7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiBjcmVhdGUobnVsbClcbiAgfSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmF0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJlbGF0aXZlLWluZGV4aW5nLW1ldGhvZFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBhdDogZnVuY3Rpb24gYXQoaW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgcmVsYXRpdmVJbmRleCA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICAgIHZhciBrID0gcmVsYXRpdmVJbmRleCA+PSAwID8gcmVsYXRpdmVJbmRleCA6IGxlbiArIHJlbGF0aXZlSW5kZXg7XG4gICAgcmV0dXJuIChrIDwgMCB8fCBrID49IGxlbikgPyB1bmRlZmluZWQgOiBPW2tdO1xuICB9XG59KTtcblxuYWRkVG9VbnNjb3BhYmxlcygnYXQnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBwcm9wZXJ0eUtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3N1xuICByZXR1cm4gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBmb286IDEgfTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheVtNRVRIT0RfTkFNRV0oQm9vbGVhbikuZm9vICE9PSAxO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHdlbGxLbm93blN5bWJvbCgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7XG52YXIgTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEID0gJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCc7XG5cbi8vIFdlIGNhbid0IHVzZSB0aGlzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRV9TVVBQT1JUID0gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgYXJyYXkgPSBbXTtcbiAgYXJyYXlbSVNfQ09OQ0FUX1NQUkVBREFCTEVdID0gZmFsc2U7XG4gIHJldHVybiBhcnJheS5jb25jYXQoKVswXSAhPT0gYXJyYXk7XG59KTtcblxudmFyIFNQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ2NvbmNhdCcpO1xuXG52YXIgaXNDb25jYXRTcHJlYWRhYmxlID0gZnVuY3Rpb24gKE8pIHtcbiAgaWYgKCFpc09iamVjdChPKSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgc3ByZWFkYWJsZSA9IE9bSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICByZXR1cm4gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShPKTtcbn07XG5cbnZhciBGT1JDRUQgPSAhSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCB8fCAhU1BFQ0lFU19TVVBQT1JUO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmNvbmNhdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5jb25jYXRcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBpc0NvbmNhdFNwcmVhZGFibGUgYW5kIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgY29uY2F0OiBmdW5jdGlvbiBjb25jYXQoYXJnKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICB2YXIgbiA9IDA7XG4gICAgdmFyIGksIGssIGxlbmd0aCwgbGVuLCBFO1xuICAgIGZvciAoaSA9IC0xLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIEUgPSBpID09PSAtMSA/IE8gOiBhcmd1bWVudHNbaV07XG4gICAgICBpZiAoaXNDb25jYXRTcHJlYWRhYmxlKEUpKSB7XG4gICAgICAgIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKEUpO1xuICAgICAgICBpZiAobiArIGxlbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbGVuOyBrKyssIG4rKykgaWYgKGsgaW4gRSkgY3JlYXRlUHJvcGVydHkoQSwgbiwgRVtrXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobiA+PSBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEKTtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkoQSwgbisrLCBFKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQS5sZW5ndGggPSBuO1xuICAgIHJldHVybiBBO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbmAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5jb3B5d2l0aGluXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWNvcHl3aXRoaW4gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIHRvID0gdG9BYnNvbHV0ZUluZGV4KHRhcmdldCwgbGVuKTtcbiAgdmFyIGZyb20gPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGNvdW50ID0gbWluKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbikpIC0gZnJvbSwgbGVuIC0gdG8pO1xuICB2YXIgaW5jID0gMTtcbiAgaWYgKGZyb20gPCB0byAmJiB0byA8IGZyb20gKyBjb3VudCkge1xuICAgIGluYyA9IC0xO1xuICAgIGZyb20gKz0gY291bnQgLSAxO1xuICAgIHRvICs9IGNvdW50IC0gMTtcbiAgfVxuICB3aGlsZSAoY291bnQtLSA+IDApIHtcbiAgICBpZiAoZnJvbSBpbiBPKSBPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gKz0gaW5jO1xuICAgIGZyb20gKz0gaW5jO1xuICB9IHJldHVybiBPO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNvcHlXaXRoaW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktY29weS13aXRoaW4nKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuY29weXdpdGhpblxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBjb3B5V2l0aGluOiBjb3B5V2l0aGluXG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnY29weVdpdGhpbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FLCBhcmd1bWVudCkge1xuICB2YXIgbWV0aG9kID0gW11bTUVUSE9EX05BTUVdO1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGwsbm8tdGhyb3ctbGl0ZXJhbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgIG1ldGhvZC5jYWxsKG51bGwsIGFyZ3VtZW50IHx8IGZ1bmN0aW9uICgpIHsgdGhyb3cgMTsgfSwgMSk7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5ldmVyeTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdldmVyeScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbGxgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsbFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBsZW5ndGgpO1xuICB2YXIgZW5kID0gYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGVuZFBvcyA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuZ3RoKTtcbiAgd2hpbGUgKGVuZFBvcyA+IGluZGV4KSBPW2luZGV4KytdID0gdmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZpbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZmlsbCcpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWxsXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZpbGw6IGZpbGxcbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdmaWxsJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbHRlcjtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnZmlsdGVyJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIH0sIHtcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG52YXIgRklORCA9ICdmaW5kJztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoRklORCBpbiBbXSkgQXJyYXkoMSlbRklORF0oZnVuY3Rpb24gKCkgeyBTS0lQU19IT0xFUyA9IGZhbHNlOyB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKEZJTkQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmRJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kSW5kZXg7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxudmFyIEZJTkRfSU5ERVggPSAnZmluZEluZGV4JztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoRklORF9JTkRFWCBpbiBbXSkgQXJyYXkoMSlbRklORF9JTkRFWF0oZnVuY3Rpb24gKCkgeyBTS0lQU19IT0xFUyA9IGZhbHNlOyB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZGluZGV4XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTS0lQU19IT0xFUyB9LCB7XG4gIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kSW5kZXgodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcyhGSU5EX0lOREVYKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xuXG4vLyBgRmxhdHRlbkludG9BcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1GbGF0dGVuSW50b0FycmF5XG52YXIgZmxhdHRlbkludG9BcnJheSA9IGZ1bmN0aW9uICh0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgdmFyIHRhcmdldEluZGV4ID0gc3RhcnQ7XG4gIHZhciBzb3VyY2VJbmRleCA9IDA7XG4gIHZhciBtYXBGbiA9IG1hcHBlciA/IGJpbmQobWFwcGVyLCB0aGlzQXJnLCAzKSA6IGZhbHNlO1xuICB2YXIgZWxlbWVudCwgZWxlbWVudExlbjtcblxuICB3aGlsZSAoc291cmNlSW5kZXggPCBzb3VyY2VMZW4pIHtcbiAgICBpZiAoc291cmNlSW5kZXggaW4gc291cmNlKSB7XG4gICAgICBlbGVtZW50ID0gbWFwRm4gPyBtYXBGbihzb3VyY2Vbc291cmNlSW5kZXhdLCBzb3VyY2VJbmRleCwgb3JpZ2luYWwpIDogc291cmNlW3NvdXJjZUluZGV4XTtcblxuICAgICAgaWYgKGRlcHRoID4gMCAmJiBpc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgIGVsZW1lbnRMZW4gPSBsZW5ndGhPZkFycmF5TGlrZShlbGVtZW50KTtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIGVsZW1lbnQsIGVsZW1lbnRMZW4sIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAweDFGRkZGRkZGRkZGRkZGKSB0aHJvdyBUeXBlRXJyb3IoJ0V4Y2VlZCB0aGUgYWNjZXB0YWJsZSBhcnJheSBsZW5ndGgnKTtcbiAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgfVxuICAgIHNvdXJjZUluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIHRhcmdldEluZGV4O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuSW50b0FycmF5O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXknKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZsYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmxhdFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBmbGF0OiBmdW5jdGlvbiBmbGF0KC8qIGRlcHRoQXJnID0gMSAqLykge1xuICAgIHZhciBkZXB0aEFyZyA9IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgQS5sZW5ndGggPSBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgZGVwdGhBcmcgPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXJPckluZmluaXR5KGRlcHRoQXJnKSk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXknKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmxhdE1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mbGF0bWFwXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZsYXRNYXA6IGZ1bmN0aW9uIGZsYXRNYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgQTtcbiAgICBhQ2FsbGFibGUoY2FsbGJhY2tmbik7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBBLmxlbmd0aCA9IGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCAxLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnZm9yRWFjaCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxubW9kdWxlLmV4cG9ydHMgPSAhU1RSSUNUX01FVEhPRCA/IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1wcm90b3R5cGUtZm9yZWFjaCAtLSBzYWZlXG59IDogW10uZm9yRWFjaDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2gnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1wcm90b3R5cGUtZm9yZWFjaCAtLSBzYWZlXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBbXS5mb3JFYWNoICE9IGZvckVhY2ggfSwge1xuICBmb3JFYWNoOiBmb3JFYWNoXG59KTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIEVOVFJJRVMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gRU5UUklFUyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gIHZhciBJU19DT05TVFJVQ1RPUiA9IGlzQ29uc3RydWN0b3IodGhpcyk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIGlmIChtYXBwaW5nKSBtYXBmbiA9IGJpbmQobWFwZm4sIGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dCwgdmFsdWU7XG4gIC8vIGlmIHRoZSB0YXJnZXQgaXMgbm90IGl0ZXJhYmxlIG9yIGl0J3MgYW4gYXJyYXkgd2l0aCB0aGUgZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBhIHNpbXBsZSBjYXNlXG4gIGlmIChpdGVyYXRvck1ldGhvZCAmJiAhKHRoaXMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKE8sIGl0ZXJhdG9yTWV0aG9kKTtcbiAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICByZXN1bHQgPSBJU19DT05TVFJVQ1RPUiA/IG5ldyB0aGlzKCkgOiBbXTtcbiAgICBmb3IgKDshKHN0ZXAgPSBuZXh0LmNhbGwoaXRlcmF0b3IpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlO1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICByZXN1bHQgPSBJU19DT05TVFJVQ1RPUiA/IG5ldyB0aGlzKGxlbmd0aCkgOiBBcnJheShsZW5ndGgpO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIGNhbGxlZCA9IDA7XG4gIHZhciBpdGVyYXRvcldpdGhSZXR1cm4gPSB7XG4gICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHsgZG9uZTogISFjYWxsZWQrKyB9O1xuICAgIH0sXG4gICAgJ3JldHVybic6IGZ1bmN0aW9uICgpIHtcbiAgICAgIFNBRkVfQ0xPU0lORyA9IHRydWU7XG4gICAgfVxuICB9O1xuICBpdGVyYXRvcldpdGhSZXR1cm5bSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktZnJvbSwgbm8tdGhyb3ctbGl0ZXJhbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBBcnJheS5mcm9tKGl0ZXJhdG9yV2l0aFJldHVybiwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgU0tJUF9DTE9TSU5HKSB7XG4gIGlmICghU0tJUF9DTE9TSU5HICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIElURVJBVElPTl9TVVBQT1JUID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIG9iamVjdCA9IHt9O1xuICAgIG9iamVjdFtJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogSVRFUkFUSU9OX1NVUFBPUlQgPSB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBleGVjKG9iamVjdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIElURVJBVElPTl9TVVBQT1JUO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbScpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcblxudmFyIElOQ09SUkVDVF9JVEVSQVRJT04gPSAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktZnJvbSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBBcnJheS5mcm9tKGl0ZXJhYmxlKTtcbn0pO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbiQoeyB0YXJnZXQ6ICdBcnJheScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5jbHVkZXM7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoZWwgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuICRpbmNsdWRlcyh0aGlzLCBlbCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLWFycmF5LXByb3RvdHlwZS1pbmRleG9mIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciBuYXRpdmVJbmRleE9mID0gW10uaW5kZXhPZjtcblxudmFyIE5FR0FUSVZFX1pFUk8gPSAhIW5hdGl2ZUluZGV4T2YgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2luZGV4T2YnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IE5FR0FUSVZFX1pFUk8gfHwgIVNUUklDVF9NRVRIT0QgfSwge1xuICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuIE5FR0FUSVZFX1pFUk9cbiAgICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICAgID8gbmF0aXZlSW5kZXhPZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDBcbiAgICAgIDogJGluZGV4T2YodGhpcywgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcblxuLy8gYEFycmF5LmlzQXJyYXlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5pc2FycmF5XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNBcnJheTogaXNBcnJheVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gZmFsc2U7XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1vYmplY3RcbnZhciBJdGVyYXRvclByb3RvdHlwZSwgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1hcnJheS1wcm90b3R5cGUta2V5cyAtLSBzYWZlICovXG5pZiAoW10ua2V5cykge1xuICBhcnJheUl0ZXJhdG9yID0gW10ua2V5cygpO1xuICAvLyBTYWZhcmkgOCBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgaWYgKCEoJ25leHQnIGluIGFycmF5SXRlcmF0b3IpKSBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gdHJ1ZTtcbiAgZWxzZSB7XG4gICAgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoYXJyYXlJdGVyYXRvcikpO1xuICAgIGlmIChQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIEl0ZXJhdG9yUHJvdG90eXBlID0gUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG59XG5cbnZhciBORVdfSVRFUkFUT1JfUFJPVE9UWVBFID0gSXRlcmF0b3JQcm90b3R5cGUgPT0gdW5kZWZpbmVkIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgLy8gRkY0NC0gbGVnYWN5IGl0ZXJhdG9ycyBjYXNlXG4gIHJldHVybiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0uY2FsbCh0ZXN0KSAhPT0gdGVzdDtcbn0pO1xuXG5pZiAoTkVXX0lURVJBVE9SX1BST1RPVFlQRSkgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbmVsc2UgaWYgKElTX1BVUkUpIEl0ZXJhdG9yUHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtQEBpdGVyYXRvclxuaWYgKCFpc0NhbGxhYmxlKEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSkpIHtcbiAgcmVkZWZpbmUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSXRlcmF0b3JQcm90b3R5cGU6IEl0ZXJhdG9yUHJvdG90eXBlLFxuICBCVUdHWV9TQUZBUklfSVRFUkFUT1JTOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJykuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRnVuY3Rpb25OYW1lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSXRlcmF0b3JzQ29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpO1xuXG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuUFJPUEVSO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLkNPTkZJR1VSQUJMRTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IEl0ZXJhdG9yc0NvcmUuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IEl0ZXJhdG9yc0NvcmUuQlVHR1lfU0FGQVJJX0lURVJBVE9SUztcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xudmFyIEVOVFJJRVMgPSAnZW50cmllcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmFibGUsIE5BTUUsIEl0ZXJhdG9yQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cbiAgdmFyIGdldEl0ZXJhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIChLSU5EKSB7XG4gICAgaWYgKEtJTkQgPT09IERFRkFVTFQgJiYgZGVmYXVsdEl0ZXJhdG9yKSByZXR1cm4gZGVmYXVsdEl0ZXJhdG9yO1xuICAgIGlmICghQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBLSU5EIGluIEl0ZXJhYmxlUHJvdG90eXBlKSByZXR1cm4gSXRlcmFibGVQcm90b3R5cGVbS0lORF07XG4gICAgc3dpdGNoIChLSU5EKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBFTlRSSUVTOiByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMpOyB9O1xuICB9O1xuXG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gZmFsc2U7XG4gIHZhciBJdGVyYWJsZVByb3RvdHlwZSA9IEl0ZXJhYmxlLnByb3RvdHlwZTtcbiAgdmFyIG5hdGl2ZUl0ZXJhdG9yID0gSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdXG4gICAgfHwgSXRlcmFibGVQcm90b3R5cGVbJ0BAaXRlcmF0b3InXVxuICAgIHx8IERFRkFVTFQgJiYgSXRlcmFibGVQcm90b3R5cGVbREVGQVVMVF07XG4gIHZhciBkZWZhdWx0SXRlcmF0b3IgPSAhQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBuYXRpdmVJdGVyYXRvciB8fCBnZXRJdGVyYXRpb25NZXRob2QoREVGQVVMVCk7XG4gIHZhciBhbnlOYXRpdmVJdGVyYXRvciA9IE5BTUUgPT0gJ0FycmF5JyA/IEl0ZXJhYmxlUHJvdG90eXBlLmVudHJpZXMgfHwgbmF0aXZlSXRlcmF0b3IgOiBuYXRpdmVJdGVyYXRvcjtcbiAgdmFyIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgbWV0aG9kcywgS0VZO1xuXG4gIC8vIGZpeCBuYXRpdmVcbiAgaWYgKGFueU5hdGl2ZUl0ZXJhdG9yKSB7XG4gICAgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoYW55TmF0aXZlSXRlcmF0b3IuY2FsbChuZXcgSXRlcmFibGUoKSkpO1xuICAgIGlmIChDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYWxsYWJsZShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICAgICAgICAgIHJlZGVmaW5lKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5LnByb3RvdHlwZS57IHZhbHVlcywgQEBpdGVyYXRvciB9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgREVGQVVMVCA9PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgaWYgKCFJU19QVVJFICYmIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmFibGVQcm90b3R5cGUsICduYW1lJywgVkFMVUVTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICAgIGRlZmF1bHRJdGVyYXRvciA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5hdGl2ZUl0ZXJhdG9yLmNhbGwodGhpcyk7IH07XG4gICAgfVxuICB9XG5cbiAgLy8gZXhwb3J0IGFkZGl0aW9uYWwgbWV0aG9kc1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gZGVmYXVsdEl0ZXJhdG9yIDogZ2V0SXRlcmF0aW9uTWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogZ2V0SXRlcmF0aW9uTWV0aG9kKEVOVFJJRVMpXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKEtFWSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfHwgIShLRVkgaW4gSXRlcmFibGVQcm90b3R5cGUpKSB7XG4gICAgICAgIHJlZGVmaW5lKEl0ZXJhYmxlUHJvdG90eXBlLCBLRVksIG1ldGhvZHNbS0VZXSk7XG4gICAgICB9XG4gICAgfSBlbHNlICQoeyB0YXJnZXQ6IE5BTUUsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIH0sIG1ldGhvZHMpO1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIHJlZGVmaW5lKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yLCB7IG5hbWU6IERFRkFVTFQgfSk7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBBUlJBWV9JVEVSQVRPUiA9ICdBcnJheSBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihBUlJBWV9JVEVSQVRPUik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5lbnRyaWVzXG4vLyBgQXJyYXkucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUua2V5c1xuLy8gYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUudmFsdWVzXG4vLyBgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAaXRlcmF0b3Jcbi8vIGBDcmVhdGVBcnJheUl0ZXJhdG9yYCBpbnRlcm5hbCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVJdGVyYXRvcihBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IEFSUkFZX0lURVJBVE9SLFxuICAgIHRhcmdldDogdG9JbmRleGVkT2JqZWN0KGl0ZXJhdGVkKSwgLy8gdGFyZ2V0XG4gICAgaW5kZXg6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gICAga2luZDoga2luZCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gIH0pO1xuLy8gYCVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWFycmF5aXRlcmF0b3Jwcm90b3R5cGUlLm5leHRcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHRhcmdldCA9IHN0YXRlLnRhcmdldDtcbiAgdmFyIGtpbmQgPSBzdGF0ZS5raW5kO1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiB7IHZhbHVlOiBpbmRleCwgZG9uZTogZmFsc2UgfTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiB7IHZhbHVlOiB0YXJnZXRbaW5kZXhdLCBkb25lOiBmYWxzZSB9O1xuICByZXR1cm4geyB2YWx1ZTogW2luZGV4LCB0YXJnZXRbaW5kZXhdXSwgZG9uZTogZmFsc2UgfTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZXVubWFwcGVkYXJndW1lbnRzb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciBuYXRpdmVKb2luID0gW10uam9pbjtcblxudmFyIEVTM19TVFJJTkdTID0gSW5kZXhlZE9iamVjdCAhPSBPYmplY3Q7XG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2pvaW4nLCAnLCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmpvaW5gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuam9pblxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogRVMzX1NUUklOR1MgfHwgIVNUUklDVF9NRVRIT0QgfSwge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikge1xuICAgIHJldHVybiBuYXRpdmVKb2luLmNhbGwodG9JbmRleGVkT2JqZWN0KHRoaXMpLCBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IHNlcGFyYXRvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWxhc3RpbmRleG9mIC0tIHNhZmUgKi9cbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG52YXIgJGxhc3RJbmRleE9mID0gW10ubGFzdEluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhJGxhc3RJbmRleE9mICYmIDEgLyBbMV0ubGFzdEluZGV4T2YoMSwgLTApIDwgMDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnbGFzdEluZGV4T2YnKTtcbnZhciBGT1JDRUQgPSBORUdBVElWRV9aRVJPIHx8ICFTVFJJQ1RfTUVUSE9EO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmxhc3RpbmRleG9mXG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSBAWyotMV0gKi8pIHtcbiAgLy8gY29udmVydCAtMCB0byArMFxuICBpZiAoTkVHQVRJVkVfWkVSTykgcmV0dXJuICRsYXN0SW5kZXhPZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDA7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgaW5kZXggPSBtaW4oaW5kZXgsIHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnRzWzFdKSk7XG4gIGlmIChpbmRleCA8IDApIGluZGV4ID0gbGVuZ3RoICsgaW5kZXg7XG4gIGZvciAoO2luZGV4ID49IDA7IGluZGV4LS0pIGlmIChpbmRleCBpbiBPICYmIE9baW5kZXhdID09PSBzZWFyY2hFbGVtZW50KSByZXR1cm4gaW5kZXggfHwgMDtcbiAgcmV0dXJuIC0xO1xufSA6ICRsYXN0SW5kZXhPZjtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGxhc3RJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWxhc3QtaW5kZXgtb2YnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5sYXN0aW5kZXhvZlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1sYXN0aW5kZXhvZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogbGFzdEluZGV4T2YgIT09IFtdLmxhc3RJbmRleE9mIH0sIHtcbiAgbGFzdEluZGV4T2Y6IGxhc3RJbmRleE9mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykubWFwO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdtYXAnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkbWFwKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcblxudmFyIElTTlRfR0VORVJJQyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktb2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuICEoQXJyYXkub2YuY2FsbChGKSBpbnN0YW5jZW9mIEYpO1xufSk7XG5cbi8vIGBBcnJheS5vZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5Lm9mXG4vLyBXZWJLaXQgQXJyYXkub2YgaXNuJ3QgZ2VuZXJpY1xuJCh7IHRhcmdldDogJ0FycmF5Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBJU05UX0dFTkVSSUMgfSwge1xuICBvZjogZnVuY3Rpb24gb2YoLyogLi4uYXJncyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyAoaXNDb25zdHJ1Y3Rvcih0aGlzKSA/IHRoaXMgOiBBcnJheSkoYXJndW1lbnRzTGVuZ3RoKTtcbiAgICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGFyZ3VtZW50c0xlbmd0aDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsInZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgcmVkdWNlLCByZWR1Y2VSaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX1JJR0hUKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYXJndW1lbnRzTGVuZ3RoLCBtZW1vKSB7XG4gICAgYUNhbGxhYmxlKGNhbGxiYWNrZm4pO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgaW5kZXggPSBJU19SSUdIVCA/IGxlbmd0aCAtIDEgOiAwO1xuICAgIHZhciBpID0gSVNfUklHSFQgPyAtMSA6IDE7XG4gICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8IDIpIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gaTtcbiAgICAgIGlmIChJU19SSUdIVCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICg7SVNfUklHSFQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gY2FsbGJhY2tmbihtZW1vLCBzZWxmW2luZGV4XSwgaW5kZXgsIE8pO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJlZHVjZVxuICBsZWZ0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbiAgcmlnaHQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzb2YoZ2xvYmFsLnByb2Nlc3MpID09ICdwcm9jZXNzJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktcmVkdWNlJykubGVmdDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBDSFJPTUVfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdyZWR1Y2UnKTtcbi8vIENocm9tZSA4MC04MiBoYXMgYSBjcml0aWNhbCBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwNDk5ODJcbnZhciBDSFJPTUVfQlVHID0gIUlTX05PREUgJiYgQ0hST01FX1ZFUlNJT04gPiA3OSAmJiBDSFJPTUVfVkVSU0lPTiA8IDgzO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIHx8IENIUk9NRV9CVUcgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRyZWR1Y2VSaWdodCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1yZWR1Y2UnKS5yaWdodDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBDSFJPTUVfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdyZWR1Y2VSaWdodCcpO1xuLy8gQ2hyb21lIDgwLTgyIGhhcyBhIGNyaXRpY2FsIGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTA0OTk4MlxudmFyIENIUk9NRV9CVUcgPSAhSVNfTk9ERSAmJiBDSFJPTUVfVkVSU0lPTiA+IDc5ICYmIENIUk9NRV9WRVJTSU9OIDwgODM7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIHx8IENIUk9NRV9CVUcgfSwge1xuICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHJldHVybiAkcmVkdWNlUmlnaHQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcblxudmFyIG5hdGl2ZVJldmVyc2UgPSBbXS5yZXZlcnNlO1xudmFyIHRlc3QgPSBbMSwgMl07XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucmV2ZXJzZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZXZlcnNlXG4vLyBmaXggZm9yIFNhZmFyaSAxMi4wIGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODc5NFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogU3RyaW5nKHRlc3QpID09PSBTdHJpbmcodGVzdC5yZXZlcnNlKCkpIH0sIHtcbiAgcmV2ZXJzZTogZnVuY3Rpb24gcmV2ZXJzZSgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ24gLS0gZGlydHkgaGFja1xuICAgIGlmIChpc0FycmF5KHRoaXMpKSB0aGlzLmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHJldHVybiBuYXRpdmVSZXZlcnNlLmNhbGwodGhpcyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdzbGljZScpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIG5hdGl2ZVNsaWNlID0gW10uc2xpY2U7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2Vcbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBFUzMgc3RyaW5ncyBhbmQgRE9NIG9iamVjdHNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIH0sIHtcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGsgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICAvLyBpbmxpbmUgYEFycmF5U3BlY2llc0NyZWF0ZWAgZm9yIHVzYWdlIG5hdGl2ZSBgQXJyYXkjc2xpY2VgIHdoZXJlIGl0J3MgcG9zc2libGVcbiAgICB2YXIgQ29uc3RydWN0b3IsIHJlc3VsdCwgbjtcbiAgICBpZiAoaXNBcnJheShPKSkge1xuICAgICAgQ29uc3RydWN0b3IgPSBPLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICAgIGlmIChpc0NvbnN0cnVjdG9yKENvbnN0cnVjdG9yKSAmJiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IGlzQXJyYXkoQ29uc3RydWN0b3IucHJvdG90eXBlKSkpIHtcbiAgICAgICAgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KENvbnN0cnVjdG9yKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yW1NQRUNJRVNdO1xuICAgICAgICBpZiAoQ29uc3RydWN0b3IgPT09IG51bGwpIENvbnN0cnVjdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yID09PSBBcnJheSB8fCBDb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVTbGljZS5jYWxsKE8sIGssIGZpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IG5ldyAoQ29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQ29uc3RydWN0b3IpKG1heChmaW4gLSBrLCAwKSk7XG4gICAgZm9yIChuID0gMDsgayA8IGZpbjsgaysrLCBuKyspIGlmIChrIGluIE8pIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgbiwgT1trXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkc29tZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5zb21lO1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ3NvbWUnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIH0sIHtcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwiLy8gVE9ETzogdXNlIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggbGlrZSB0aW1zb3J0P1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxudmFyIG1lcmdlU29ydCA9IGZ1bmN0aW9uIChhcnJheSwgY29tcGFyZWZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciBtaWRkbGUgPSBmbG9vcihsZW5ndGggLyAyKTtcbiAgcmV0dXJuIGxlbmd0aCA8IDggPyBpbnNlcnRpb25Tb3J0KGFycmF5LCBjb21wYXJlZm4pIDogbWVyZ2UoXG4gICAgbWVyZ2VTb3J0KGFycmF5LnNsaWNlKDAsIG1pZGRsZSksIGNvbXBhcmVmbiksXG4gICAgbWVyZ2VTb3J0KGFycmF5LnNsaWNlKG1pZGRsZSksIGNvbXBhcmVmbiksXG4gICAgY29tcGFyZWZuXG4gICk7XG59O1xuXG52YXIgaW5zZXJ0aW9uU29ydCA9IGZ1bmN0aW9uIChhcnJheSwgY29tcGFyZWZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHZhciBpID0gMTtcbiAgdmFyIGVsZW1lbnQsIGo7XG5cbiAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICBqID0gaTtcbiAgICBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgd2hpbGUgKGogJiYgY29tcGFyZWZuKGFycmF5W2ogLSAxXSwgZWxlbWVudCkgPiAwKSB7XG4gICAgICBhcnJheVtqXSA9IGFycmF5Wy0tal07XG4gICAgfVxuICAgIGlmIChqICE9PSBpKyspIGFycmF5W2pdID0gZWxlbWVudDtcbiAgfSByZXR1cm4gYXJyYXk7XG59O1xuXG52YXIgbWVyZ2UgPSBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIGNvbXBhcmVmbikge1xuICB2YXIgbGxlbmd0aCA9IGxlZnQubGVuZ3RoO1xuICB2YXIgcmxlbmd0aCA9IHJpZ2h0Lmxlbmd0aDtcbiAgdmFyIGxpbmRleCA9IDA7XG4gIHZhciByaW5kZXggPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKGxpbmRleCA8IGxsZW5ndGggfHwgcmluZGV4IDwgcmxlbmd0aCkge1xuICAgIGlmIChsaW5kZXggPCBsbGVuZ3RoICYmIHJpbmRleCA8IHJsZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNvbXBhcmVmbihsZWZ0W2xpbmRleF0sIHJpZ2h0W3JpbmRleF0pIDw9IDAgPyBsZWZ0W2xpbmRleCsrXSA6IHJpZ2h0W3JpbmRleCsrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGxpbmRleCA8IGxsZW5ndGggPyBsZWZ0W2xpbmRleCsrXSA6IHJpZ2h0W3JpbmRleCsrXSk7XG4gICAgfVxuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlU29ydDtcbiIsInZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIGZpcmVmb3ggPSB1c2VyQWdlbnQubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvaSk7XG5cbm1vZHVsZS5leHBvcnRzID0gISFmaXJlZm94ICYmICtmaXJlZm94WzFdO1xuIiwidmFyIFVBID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL01TSUV8VHJpZGVudC8udGVzdChVQSk7XG4iLCJ2YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciB3ZWJraXQgPSB1c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XFwvKFxcZCspXFwuLyk7XG5cbm1vZHVsZS5leHBvcnRzID0gISF3ZWJraXQgJiYgK3dlYmtpdFsxXTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGludGVybmFsU29ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zb3J0Jyk7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG52YXIgRkYgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24nKTtcbnZhciBJRV9PUl9FREdFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pZS1vci1lZGdlJyk7XG52YXIgVjggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBXRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXdlYmtpdC12ZXJzaW9uJyk7XG5cbnZhciB0ZXN0ID0gW107XG52YXIgbmF0aXZlU29ydCA9IHRlc3Quc29ydDtcblxuLy8gSUU4LVxudmFyIEZBSUxTX09OX1VOREVGSU5FRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KTtcbi8vIFY4IGJ1Z1xudmFyIEZBSUxTX09OX05VTEwgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHRlc3Quc29ydChudWxsKTtcbn0pO1xuLy8gT2xkIFdlYktpdFxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdzb3J0Jyk7XG5cbnZhciBTVEFCTEVfU09SVCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGZlYXR1cmUgZGV0ZWN0aW9uIGNhbiBiZSB0b28gc2xvdywgc28gY2hlY2sgZW5naW5lcyB2ZXJzaW9uc1xuICBpZiAoVjgpIHJldHVybiBWOCA8IDcwO1xuICBpZiAoRkYgJiYgRkYgPiAzKSByZXR1cm47XG4gIGlmIChJRV9PUl9FREdFKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFdFQktJVCkgcmV0dXJuIFdFQktJVCA8IDYwMztcblxuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjb2RlLCBjaHIsIHZhbHVlLCBpbmRleDtcblxuICAvLyBnZW5lcmF0ZSBhbiBhcnJheSB3aXRoIG1vcmUgNTEyIGVsZW1lbnRzIChDaGFrcmEgYW5kIG9sZCBWOCBmYWlscyBvbmx5IGluIHRoaXMgY2FzZSlcbiAgZm9yIChjb2RlID0gNjU7IGNvZGUgPCA3NjsgY29kZSsrKSB7XG4gICAgY2hyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcblxuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSA2NjogY2FzZSA2OTogY2FzZSA3MDogY2FzZSA3MjogdmFsdWUgPSAzOyBicmVhaztcbiAgICAgIGNhc2UgNjg6IGNhc2UgNzE6IHZhbHVlID0gNDsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB2YWx1ZSA9IDI7XG4gICAgfVxuXG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDc7IGluZGV4KyspIHtcbiAgICAgIHRlc3QucHVzaCh7IGs6IGNociArIGluZGV4LCB2OiB2YWx1ZSB9KTtcbiAgICB9XG4gIH1cblxuICB0ZXN0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGIudiAtIGEudjsgfSk7XG5cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGVzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjaHIgPSB0ZXN0W2luZGV4XS5rLmNoYXJBdCgwKTtcbiAgICBpZiAocmVzdWx0LmNoYXJBdChyZXN1bHQubGVuZ3RoIC0gMSkgIT09IGNocikgcmVzdWx0ICs9IGNocjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgIT09ICdER0JFRkhBQ0lKSyc7XG59KTtcblxudmFyIEZPUkNFRCA9IEZBSUxTX09OX1VOREVGSU5FRCB8fCAhRkFJTFNfT05fTlVMTCB8fCAhU1RSSUNUX01FVEhPRCB8fCAhU1RBQkxFX1NPUlQ7XG5cbnZhciBnZXRTb3J0Q29tcGFyZSA9IGZ1bmN0aW9uIChjb21wYXJlZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgaWYgKHkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xO1xuICAgIGlmICh4ID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuICAgIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgcmV0dXJuICtjb21wYXJlZm4oeCwgeSkgfHwgMDtcbiAgICByZXR1cm4gdG9TdHJpbmcoeCkgPiB0b1N0cmluZyh5KSA/IDEgOiAtMTtcbiAgfTtcbn07XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb3J0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgYUNhbGxhYmxlKGNvbXBhcmVmbik7XG5cbiAgICB2YXIgYXJyYXkgPSB0b09iamVjdCh0aGlzKTtcblxuICAgIGlmIChTVEFCTEVfU09SVCkgcmV0dXJuIGNvbXBhcmVmbiA9PT0gdW5kZWZpbmVkID8gbmF0aXZlU29ydC5jYWxsKGFycmF5KSA6IG5hdGl2ZVNvcnQuY2FsbChhcnJheSwgY29tcGFyZWZuKTtcblxuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIHZhciBhcnJheUxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGFycmF5KTtcbiAgICB2YXIgaXRlbXNMZW5ndGgsIGluZGV4O1xuXG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpbmRleCBpbiBhcnJheSkgaXRlbXMucHVzaChhcnJheVtpbmRleF0pO1xuICAgIH1cblxuICAgIGl0ZW1zID0gaW50ZXJuYWxTb3J0KGl0ZW1zLCBnZXRTb3J0Q29tcGFyZShjb21wYXJlZm4pKTtcbiAgICBpdGVtc0xlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcbiAgICBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBpdGVtc0xlbmd0aCkgYXJyYXlbaW5kZXhdID0gaXRlbXNbaW5kZXgrK107XG4gICAgd2hpbGUgKGluZGV4IDwgYXJyYXlMZW5ndGgpIGRlbGV0ZSBhcnJheVtpbmRleCsrXTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgU1BFQ0lFUywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCJ2YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xuXG4vLyBgQXJyYXlbQEBzcGVjaWVzXWAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1hcnJheS1AQHNwZWNpZXNcbnNldFNwZWNpZXMoJ0FycmF5Jyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdzcGxpY2UnKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGO1xudmFyIE1BWElNVU1fQUxMT1dFRF9MRU5HVEhfRVhDRUVERUQgPSAnTWF4aW11bSBhbGxvd2VkIGxlbmd0aCBleGNlZWRlZCc7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc3BsaWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNwbGljZVxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIH0sIHtcbiAgc3BsaWNlOiBmdW5jdGlvbiBzcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50IC8qICwgLi4uaXRlbXMgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgYWN0dWFsU3RhcnQgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGluc2VydENvdW50LCBhY3R1YWxEZWxldGVDb3VudCwgQSwgaywgZnJvbSwgdG87XG4gICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA9PT0gMCkge1xuICAgICAgaW5zZXJ0Q291bnQgPSBhY3R1YWxEZWxldGVDb3VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChhcmd1bWVudHNMZW5ndGggPT09IDEpIHtcbiAgICAgIGluc2VydENvdW50ID0gMDtcbiAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gbGVuIC0gYWN0dWFsU3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc2VydENvdW50ID0gYXJndW1lbnRzTGVuZ3RoIC0gMjtcbiAgICAgIGFjdHVhbERlbGV0ZUNvdW50ID0gbWluKG1heCh0b0ludGVnZXJPckluZmluaXR5KGRlbGV0ZUNvdW50KSwgMCksIGxlbiAtIGFjdHVhbFN0YXJ0KTtcbiAgICB9XG4gICAgaWYgKGxlbiArIGluc2VydENvdW50IC0gYWN0dWFsRGVsZXRlQ291bnQgPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0xFTkdUSF9FWENFRURFRCk7XG4gICAgfVxuICAgIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgYWN0dWFsRGVsZXRlQ291bnQpO1xuICAgIGZvciAoayA9IDA7IGsgPCBhY3R1YWxEZWxldGVDb3VudDsgaysrKSB7XG4gICAgICBmcm9tID0gYWN0dWFsU3RhcnQgKyBrO1xuICAgICAgaWYgKGZyb20gaW4gTykgY3JlYXRlUHJvcGVydHkoQSwgaywgT1tmcm9tXSk7XG4gICAgfVxuICAgIEEubGVuZ3RoID0gYWN0dWFsRGVsZXRlQ291bnQ7XG4gICAgaWYgKGluc2VydENvdW50IDwgYWN0dWFsRGVsZXRlQ291bnQpIHtcbiAgICAgIGZvciAoayA9IGFjdHVhbFN0YXJ0OyBrIDwgbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQ7IGsrKykge1xuICAgICAgICBmcm9tID0gayArIGFjdHVhbERlbGV0ZUNvdW50O1xuICAgICAgICB0byA9IGsgKyBpbnNlcnRDb3VudDtcbiAgICAgICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgICAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICAgIH1cbiAgICAgIGZvciAoayA9IGxlbjsgayA+IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaW5zZXJ0Q291bnQ7IGstLSkgZGVsZXRlIE9bayAtIDFdO1xuICAgIH0gZWxzZSBpZiAoaW5zZXJ0Q291bnQgPiBhY3R1YWxEZWxldGVDb3VudCkge1xuICAgICAgZm9yIChrID0gbGVuIC0gYWN0dWFsRGVsZXRlQ291bnQ7IGsgPiBhY3R1YWxTdGFydDsgay0tKSB7XG4gICAgICAgIGZyb20gPSBrICsgYWN0dWFsRGVsZXRlQ291bnQgLSAxO1xuICAgICAgICB0byA9IGsgKyBpbnNlcnRDb3VudCAtIDE7XG4gICAgICAgIGlmIChmcm9tIGluIE8pIE9bdG9dID0gT1tmcm9tXTtcbiAgICAgICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IDA7IGsgPCBpbnNlcnRDb3VudDsgaysrKSB7XG4gICAgICBPW2sgKyBhY3R1YWxTdGFydF0gPSBhcmd1bWVudHNbayArIDJdO1xuICAgIH1cbiAgICBPLmxlbmd0aCA9IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaW5zZXJ0Q291bnQ7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiLy8gdGhpcyBtZXRob2Qgd2FzIGFkZGVkIHRvIHVuc2NvcGFibGVzIGFmdGVyIGltcGxlbWVudGF0aW9uXG4vLyBpbiBwb3B1bGFyIGVuZ2luZXMsIHNvIGl0J3MgbW92ZWQgdG8gYSBzZXBhcmF0ZSBtb2R1bGVcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdmbGF0Jyk7XG4iLCIvLyB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgdG8gdW5zY29wYWJsZXMgYWZ0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGluIHBvcHVsYXIgZW5naW5lcywgc28gaXQncyBtb3ZlZCB0byBhIHNlcGFyYXRlIG1vZHVsZVxudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2ZsYXRNYXAnKTtcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby10eXBlZC1hcnJheXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBEYXRhVmlldyAhPT0gJ3VuZGVmaW5lZCc7XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUpIHtcbiAgaWYgKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHJldHVybiBpdDtcbiAgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgJyArIChuYW1lID8gbmFtZSArICcgJyA6ICcnKSArICdpbnZvY2F0aW9uJyk7XG59O1xuIiwidmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgVG9JbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgdmFyIG51bWJlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGggb3IgaW5kZXgnKTtcbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCIvLyBJRUVFNzU0IGNvbnZlcnNpb25zIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NFxudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxudmFyIHBhY2sgPSBmdW5jdGlvbiAobnVtYmVyLCBtYW50aXNzYUxlbmd0aCwgYnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShieXRlcyk7XG4gIHZhciBleHBvbmVudExlbmd0aCA9IGJ5dGVzICogOCAtIG1hbnRpc3NhTGVuZ3RoIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBleHBvbmVudExlbmd0aCkgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBydCA9IG1hbnRpc3NhTGVuZ3RoID09PSAyMyA/IHBvdygyLCAtMjQpIC0gcG93KDIsIC03NykgOiAwO1xuICB2YXIgc2lnbiA9IG51bWJlciA8IDAgfHwgbnVtYmVyID09PSAwICYmIDEgLyBudW1iZXIgPCAwID8gMSA6IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBleHBvbmVudCwgbWFudGlzc2EsIGM7XG4gIG51bWJlciA9IGFicyhudW1iZXIpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICBpZiAobnVtYmVyICE9IG51bWJlciB8fCBudW1iZXIgPT09IEluZmluaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBtYW50aXNzYSA9IG51bWJlciAhPSBudW1iZXIgPyAxIDogMDtcbiAgICBleHBvbmVudCA9IGVNYXg7XG4gIH0gZWxzZSB7XG4gICAgZXhwb25lbnQgPSBmbG9vcihsb2cobnVtYmVyKSAvIExOMik7XG4gICAgaWYgKG51bWJlciAqIChjID0gcG93KDIsIC1leHBvbmVudCkpIDwgMSkge1xuICAgICAgZXhwb25lbnQtLTtcbiAgICAgIGMgKj0gMjtcbiAgICB9XG4gICAgaWYgKGV4cG9uZW50ICsgZUJpYXMgPj0gMSkge1xuICAgICAgbnVtYmVyICs9IHJ0IC8gYztcbiAgICB9IGVsc2Uge1xuICAgICAgbnVtYmVyICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmIChudW1iZXIgKiBjID49IDIpIHtcbiAgICAgIGV4cG9uZW50Kys7XG4gICAgICBjIC89IDI7XG4gICAgfVxuICAgIGlmIChleHBvbmVudCArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG1hbnRpc3NhID0gMDtcbiAgICAgIGV4cG9uZW50ID0gZU1heDtcbiAgICB9IGVsc2UgaWYgKGV4cG9uZW50ICsgZUJpYXMgPj0gMSkge1xuICAgICAgbWFudGlzc2EgPSAobnVtYmVyICogYyAtIDEpICogcG93KDIsIG1hbnRpc3NhTGVuZ3RoKTtcbiAgICAgIGV4cG9uZW50ID0gZXhwb25lbnQgKyBlQmlhcztcbiAgICB9IGVsc2Uge1xuICAgICAgbWFudGlzc2EgPSBudW1iZXIgKiBwb3coMiwgZUJpYXMgLSAxKSAqIHBvdygyLCBtYW50aXNzYUxlbmd0aCk7XG4gICAgICBleHBvbmVudCA9IDA7XG4gICAgfVxuICB9XG4gIGZvciAoOyBtYW50aXNzYUxlbmd0aCA+PSA4OyBidWZmZXJbaW5kZXgrK10gPSBtYW50aXNzYSAmIDI1NSwgbWFudGlzc2EgLz0gMjU2LCBtYW50aXNzYUxlbmd0aCAtPSA4KTtcbiAgZXhwb25lbnQgPSBleHBvbmVudCA8PCBtYW50aXNzYUxlbmd0aCB8IG1hbnRpc3NhO1xuICBleHBvbmVudExlbmd0aCArPSBtYW50aXNzYUxlbmd0aDtcbiAgZm9yICg7IGV4cG9uZW50TGVuZ3RoID4gMDsgYnVmZmVyW2luZGV4KytdID0gZXhwb25lbnQgJiAyNTUsIGV4cG9uZW50IC89IDI1NiwgZXhwb25lbnRMZW5ndGggLT0gOCk7XG4gIGJ1ZmZlclstLWluZGV4XSB8PSBzaWduICogMTI4O1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxudmFyIHVucGFjayA9IGZ1bmN0aW9uIChidWZmZXIsIG1hbnRpc3NhTGVuZ3RoKSB7XG4gIHZhciBieXRlcyA9IGJ1ZmZlci5sZW5ndGg7XG4gIHZhciBleHBvbmVudExlbmd0aCA9IGJ5dGVzICogOCAtIG1hbnRpc3NhTGVuZ3RoIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBleHBvbmVudExlbmd0aCkgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBuQml0cyA9IGV4cG9uZW50TGVuZ3RoIC0gNztcbiAgdmFyIGluZGV4ID0gYnl0ZXMgLSAxO1xuICB2YXIgc2lnbiA9IGJ1ZmZlcltpbmRleC0tXTtcbiAgdmFyIGV4cG9uZW50ID0gc2lnbiAmIDEyNztcbiAgdmFyIG1hbnRpc3NhO1xuICBzaWduID4+PSA3O1xuICBmb3IgKDsgbkJpdHMgPiAwOyBleHBvbmVudCA9IGV4cG9uZW50ICogMjU2ICsgYnVmZmVyW2luZGV4XSwgaW5kZXgtLSwgbkJpdHMgLT0gOCk7XG4gIG1hbnRpc3NhID0gZXhwb25lbnQgJiAoMSA8PCAtbkJpdHMpIC0gMTtcbiAgZXhwb25lbnQgPj49IC1uQml0cztcbiAgbkJpdHMgKz0gbWFudGlzc2FMZW5ndGg7XG4gIGZvciAoOyBuQml0cyA+IDA7IG1hbnRpc3NhID0gbWFudGlzc2EgKiAyNTYgKyBidWZmZXJbaW5kZXhdLCBpbmRleC0tLCBuQml0cyAtPSA4KTtcbiAgaWYgKGV4cG9uZW50ID09PSAwKSB7XG4gICAgZXhwb25lbnQgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZXhwb25lbnQgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbWFudGlzc2EgPyBOYU4gOiBzaWduID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gIH0gZWxzZSB7XG4gICAgbWFudGlzc2EgPSBtYW50aXNzYSArIHBvdygyLCBtYW50aXNzYUxlbmd0aCk7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCAtIGVCaWFzO1xuICB9IHJldHVybiAoc2lnbiA/IC0xIDogMSkgKiBtYW50aXNzYSAqIHBvdygyLCBleHBvbmVudCAtIG1hbnRpc3NhTGVuZ3RoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwYWNrOiBwYWNrLFxuICB1bnBhY2s6IHVucGFja1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1uYXRpdmUnKTtcbnZhciBGdW5jdGlvbk5hbWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4Jyk7XG52YXIgSUVFRTc1NCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZWVlNzU0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGFycmF5RmlsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1maWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5QUk9QRVI7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuQ09ORklHVVJBQkxFO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcbnZhciBEQVRBX1ZJRVcgPSAnRGF0YVZpZXcnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGgnO1xudmFyIFdST05HX0lOREVYID0gJ1dyb25nIGluZGV4JztcbnZhciBOYXRpdmVBcnJheUJ1ZmZlciA9IGdsb2JhbFtBUlJBWV9CVUZGRVJdO1xudmFyICRBcnJheUJ1ZmZlciA9IE5hdGl2ZUFycmF5QnVmZmVyO1xudmFyICREYXRhVmlldyA9IGdsb2JhbFtEQVRBX1ZJRVddO1xudmFyICREYXRhVmlld1Byb3RvdHlwZSA9ICREYXRhVmlldyAmJiAkRGF0YVZpZXdbUFJPVE9UWVBFXTtcbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcblxudmFyIHBhY2tJRUVFNzU0ID0gSUVFRTc1NC5wYWNrO1xudmFyIHVucGFja0lFRUU3NTQgPSBJRUVFNzU0LnVucGFjaztcblxudmFyIHBhY2tJbnQ4ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkZdO1xufTtcblxudmFyIHBhY2tJbnQxNiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIFtudW1iZXIgJiAweEZGLCBudW1iZXIgPj4gOCAmIDB4RkZdO1xufTtcblxudmFyIHBhY2tJbnQzMiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIFtudW1iZXIgJiAweEZGLCBudW1iZXIgPj4gOCAmIDB4RkYsIG51bWJlciA+PiAxNiAmIDB4RkYsIG51bWJlciA+PiAyNCAmIDB4RkZdO1xufTtcblxudmFyIHVucGFja0ludDMyID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyWzNdIDw8IDI0IHwgYnVmZmVyWzJdIDw8IDE2IHwgYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF07XG59O1xuXG52YXIgcGFja0Zsb2F0MzIgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChudW1iZXIsIDIzLCA0KTtcbn07XG5cbnZhciBwYWNrRmxvYXQ2NCA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KG51bWJlciwgNTIsIDgpO1xufTtcblxudmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwga2V5KSB7XG4gIGRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yW1BST1RPVFlQRV0sIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldEludGVybmFsU3RhdGUodGhpcylba2V5XTsgfSB9KTtcbn07XG5cbnZhciBnZXQgPSBmdW5jdGlvbiAodmlldywgY291bnQsIGluZGV4LCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KGluZGV4KTtcbiAgdmFyIHN0b3JlID0gZ2V0SW50ZXJuYWxTdGF0ZSh2aWV3KTtcbiAgaWYgKGludEluZGV4ICsgY291bnQgPiBzdG9yZS5ieXRlTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIGJ5dGVzID0gZ2V0SW50ZXJuYWxTdGF0ZShzdG9yZS5idWZmZXIpLmJ5dGVzO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHN0b3JlLmJ5dGVPZmZzZXQ7XG4gIHZhciBwYWNrID0gYnl0ZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgY291bnQpO1xuICByZXR1cm4gaXNMaXR0bGVFbmRpYW4gPyBwYWNrIDogcGFjay5yZXZlcnNlKCk7XG59O1xuXG52YXIgc2V0ID0gZnVuY3Rpb24gKHZpZXcsIGNvdW50LCBpbmRleCwgY29udmVyc2lvbiwgdmFsdWUsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgoaW5kZXgpO1xuICB2YXIgc3RvcmUgPSBnZXRJbnRlcm5hbFN0YXRlKHZpZXcpO1xuICBpZiAoaW50SW5kZXggKyBjb3VudCA+IHN0b3JlLmJ5dGVMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgYnl0ZXMgPSBnZXRJbnRlcm5hbFN0YXRlKHN0b3JlLmJ1ZmZlcikuYnl0ZXM7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgc3RvcmUuYnl0ZU9mZnNldDtcbiAgdmFyIHBhY2sgPSBjb252ZXJzaW9uKCt2YWx1ZSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgYnl0ZXNbc3RhcnQgKyBpXSA9IHBhY2tbaXNMaXR0bGVFbmRpYW4gPyBpIDogY291bnQgLSBpIC0gMV07XG59O1xuXG5pZiAoIU5BVElWRV9BUlJBWV9CVUZGRVIpIHtcbiAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0b0luZGV4KGxlbmd0aCk7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICBieXRlczogYXJyYXlGaWxsLmNhbGwobmV3IEFycmF5KGJ5dGVMZW5ndGgpLCAwKSxcbiAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGhcbiAgICB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gICREYXRhVmlldyA9IGZ1bmN0aW9uIERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuICAgIGFuSW5zdGFuY2UoYnVmZmVyLCAkQXJyYXlCdWZmZXIsIERBVEFfVklFVyk7XG4gICAgdmFyIGJ1ZmZlckxlbmd0aCA9IGdldEludGVybmFsU3RhdGUoYnVmZmVyKS5ieXRlTGVuZ3RoO1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXJPckluZmluaXR5KGJ5dGVPZmZzZXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0Jyk7XG4gICAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPT09IHVuZGVmaW5lZCA/IGJ1ZmZlckxlbmd0aCAtIG9mZnNldCA6IHRvTGVuZ3RoKGJ5dGVMZW5ndGgpO1xuICAgIGlmIChvZmZzZXQgKyBieXRlTGVuZ3RoID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgsXG4gICAgICBieXRlT2Zmc2V0OiBvZmZzZXRcbiAgICB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgIHRoaXMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7XG4gICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuICB9O1xuXG4gIGlmIChERVNDUklQVE9SUykge1xuICAgIGFkZEdldHRlcigkQXJyYXlCdWZmZXIsICdieXRlTGVuZ3RoJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgJ2J1ZmZlcicpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsICdieXRlTGVuZ3RoJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgJ2J5dGVPZmZzZXQnKTtcbiAgfVxuXG4gIHJlZGVmaW5lQWxsKCREYXRhVmlld1tQUk9UT1RZUEVdLCB7XG4gICAgZ2V0SW50ODogZnVuY3Rpb24gZ2V0SW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdIDw8IDI0ID4+IDI0O1xuICAgIH0sXG4gICAgZ2V0VWludDg6IGZ1bmN0aW9uIGdldFVpbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF07XG4gICAgfSxcbiAgICBnZXRJbnQxNjogZnVuY3Rpb24gZ2V0SW50MTYoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgdmFyIGJ5dGVzID0gZ2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiAoYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdKSA8PCAxNiA+PiAxNjtcbiAgICB9LFxuICAgIGdldFVpbnQxNjogZnVuY3Rpb24gZ2V0VWludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm4gYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MzI6IGZ1bmN0aW9uIGdldEludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJbnQzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpKTtcbiAgICB9LFxuICAgIGdldFVpbnQzMjogZnVuY3Rpb24gZ2V0VWludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJbnQzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpKSA+Pj4gMDtcbiAgICB9LFxuICAgIGdldEZsb2F0MzI6IGZ1bmN0aW9uIGdldEZsb2F0MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSwgMjMpO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NDogZnVuY3Rpb24gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpLCA1Mik7XG4gICAgfSxcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0ludDgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJbnQ4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRJbnQxNjogZnVuY3Rpb24gc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSW50MTYsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzZXRVaW50MTY6IGZ1bmN0aW9uIHNldFVpbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJbnQxNiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNldEludDMyOiBmdW5jdGlvbiBzZXRJbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJbnQzMiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNldFVpbnQzMjogZnVuY3Rpb24gc2V0VWludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0ludDMyLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc2V0RmxvYXQzMjogZnVuY3Rpb24gc2V0RmxvYXQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tGbG9hdDMyLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc2V0RmxvYXQ2NDogZnVuY3Rpb24gc2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIHBhY2tGbG9hdDY0LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICB2YXIgSU5DT1JSRUNUX0FSUkFZX0JVRkZFUl9OQU1FID0gUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgTmF0aXZlQXJyYXlCdWZmZXIubmFtZSAhPT0gQVJSQVlfQlVGRkVSO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbiAgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgTmF0aXZlQXJyYXlCdWZmZXIoMSk7XG4gIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IE5hdGl2ZUFycmF5QnVmZmVyKC0xKTtcbiAgfSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcigpO1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcigxLjUpO1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcihOYU4pO1xuICAgIHJldHVybiBJTkNPUlJFQ1RfQVJSQVlfQlVGRkVSX05BTUUgJiYgIUNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FO1xuICB9KSkge1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xuICAgICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCAkQXJyYXlCdWZmZXIpO1xuICAgICAgcmV0dXJuIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcih0b0luZGV4KGxlbmd0aCkpO1xuICAgIH07XG4gICAgdmFyIEFycmF5QnVmZmVyUHJvdG90eXBlID0gJEFycmF5QnVmZmVyW1BST1RPVFlQRV0gPSBOYXRpdmVBcnJheUJ1ZmZlcltQUk9UT1RZUEVdO1xuICAgIGZvciAodmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKE5hdGl2ZUFycmF5QnVmZmVyKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOykge1xuICAgICAgaWYgKCEoKGtleSA9IGtleXNbaisrXSkgaW4gJEFycmF5QnVmZmVyKSkge1xuICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoJEFycmF5QnVmZmVyLCBrZXksIE5hdGl2ZUFycmF5QnVmZmVyW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBBcnJheUJ1ZmZlclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICRBcnJheUJ1ZmZlcjtcbiAgfSBlbHNlIGlmIChJTkNPUlJFQ1RfQVJSQVlfQlVGRkVSX05BTUUgJiYgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTmF0aXZlQXJyYXlCdWZmZXIsICduYW1lJywgQVJSQVlfQlVGRkVSKTtcbiAgfVxuXG4gIC8vIFdlYktpdCBidWcgLSB0aGUgc2FtZSBwYXJlbnQgcHJvdG90eXBlIGZvciB0eXBlZCBhcnJheXMgYW5kIGRhdGEgdmlld1xuICBpZiAoc2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBlT2YoJERhdGFWaWV3UHJvdG90eXBlKSAhPT0gT2JqZWN0UHJvdG90eXBlKSB7XG4gICAgc2V0UHJvdG90eXBlT2YoJERhdGFWaWV3UHJvdG90eXBlLCBPYmplY3RQcm90b3R5cGUpO1xuICB9XG5cbiAgLy8gaU9TIFNhZmFyaSA3LnggYnVnXG4gIHZhciB0ZXN0VmlldyA9IG5ldyAkRGF0YVZpZXcobmV3ICRBcnJheUJ1ZmZlcigyKSk7XG4gIHZhciAkc2V0SW50OCA9ICREYXRhVmlld1Byb3RvdHlwZS5zZXRJbnQ4O1xuICB0ZXN0Vmlldy5zZXRJbnQ4KDAsIDIxNDc0ODM2NDgpO1xuICB0ZXN0Vmlldy5zZXRJbnQ4KDEsIDIxNDc0ODM2NDkpO1xuICBpZiAodGVzdFZpZXcuZ2V0SW50OCgwKSB8fCAhdGVzdFZpZXcuZ2V0SW50OCgxKSkgcmVkZWZpbmVBbGwoJERhdGFWaWV3UHJvdG90eXBlLCB7XG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDguY2FsbCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH1cbiAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG59XG5cbnNldFRvU3RyaW5nVGFnKCRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbnNldFRvU3RyaW5nVGFnKCREYXRhVmlldywgREFUQV9WSUVXKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFycmF5QnVmZmVyOiAkQXJyYXlCdWZmZXIsXG4gIERhdGFWaWV3OiAkRGF0YVZpZXdcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYXJyYXlCdWZmZXJNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xuXG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcbnZhciBBcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyTW9kdWxlW0FSUkFZX0JVRkZFUl07XG52YXIgTmF0aXZlQXJyYXlCdWZmZXIgPSBnbG9iYWxbQVJSQVlfQlVGRkVSXTtcblxuLy8gYEFycmF5QnVmZmVyYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheWJ1ZmZlci1jb25zdHJ1Y3RvclxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBOYXRpdmVBcnJheUJ1ZmZlciAhPT0gQXJyYXlCdWZmZXIgfSwge1xuICBBcnJheUJ1ZmZlcjogQXJyYXlCdWZmZXJcbn0pO1xuXG5zZXRTcGVjaWVzKEFSUkFZX0JVRkZFUik7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItbmF0aXZlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBJbnQ4QXJyYXkgPSBnbG9iYWwuSW50OEFycmF5O1xudmFyIEludDhBcnJheVByb3RvdHlwZSA9IEludDhBcnJheSAmJiBJbnQ4QXJyYXkucHJvdG90eXBlO1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5ID0gZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5O1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlID0gVWludDhDbGFtcGVkQXJyYXkgJiYgVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlO1xudmFyIFR5cGVkQXJyYXkgPSBJbnQ4QXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtcbnZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gSW50OEFycmF5UHJvdG90eXBlICYmIGdldFByb3RvdHlwZU9mKEludDhBcnJheVByb3RvdHlwZSk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbnZhciBpc1Byb3RvdHlwZU9mID0gT2JqZWN0UHJvdG90eXBlLmlzUHJvdG90eXBlT2Y7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIFRZUEVEX0FSUkFZX1RBRyA9IHVpZCgnVFlQRURfQVJSQVlfVEFHJyk7XG52YXIgVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IgPSB1aWQoJ1RZUEVEX0FSUkFZX0NPTlNUUlVDVE9SJyk7XG4vLyBGaXhpbmcgbmF0aXZlIHR5cGVkIGFycmF5cyBpbiBPcGVyYSBQcmVzdG8gY3Jhc2hlcyB0aGUgYnJvd3Nlciwgc2VlICM1OTVcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gTkFUSVZFX0FSUkFZX0JVRkZFUiAmJiAhIXNldFByb3RvdHlwZU9mICYmIGNsYXNzb2YoZ2xvYmFsLm9wZXJhKSAhPT0gJ09wZXJhJztcbnZhciBUWVBFRF9BUlJBWV9UQUdfUkVRSVJFRCA9IGZhbHNlO1xudmFyIE5BTUUsIENvbnN0cnVjdG9yLCBQcm90b3R5cGU7XG5cbnZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCA9IHtcbiAgSW50OEFycmF5OiAxLFxuICBVaW50OEFycmF5OiAxLFxuICBVaW50OENsYW1wZWRBcnJheTogMSxcbiAgSW50MTZBcnJheTogMixcbiAgVWludDE2QXJyYXk6IDIsXG4gIEludDMyQXJyYXk6IDQsXG4gIFVpbnQzMkFycmF5OiA0LFxuICBGbG9hdDMyQXJyYXk6IDQsXG4gIEZsb2F0NjRBcnJheTogOFxufTtcblxudmFyIEJpZ0ludEFycmF5Q29uc3RydWN0b3JzTGlzdCA9IHtcbiAgQmlnSW50NjRBcnJheTogOCxcbiAgQmlnVWludDY0QXJyYXk6IDhcbn07XG5cbnZhciBpc1ZpZXcgPSBmdW5jdGlvbiBpc1ZpZXcoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBmYWxzZTtcbiAgdmFyIGtsYXNzID0gY2xhc3NvZihpdCk7XG4gIHJldHVybiBrbGFzcyA9PT0gJ0RhdGFWaWV3J1xuICAgIHx8IGhhc093bihUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpXG4gICAgfHwgaGFzT3duKEJpZ0ludEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpO1xufTtcblxudmFyIGlzVHlwZWRBcnJheSA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGZhbHNlO1xuICB2YXIga2xhc3MgPSBjbGFzc29mKGl0KTtcbiAgcmV0dXJuIGhhc093bihUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpXG4gICAgfHwgaGFzT3duKEJpZ0ludEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpO1xufTtcblxudmFyIGFUeXBlZEFycmF5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc1R5cGVkQXJyYXkoaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IFR5cGVFcnJvcignVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Jyk7XG59O1xuXG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChDKSB7XG4gIGlmIChpc0NhbGxhYmxlKEMpICYmICghc2V0UHJvdG90eXBlT2YgfHwgaXNQcm90b3R5cGVPZi5jYWxsKFR5cGVkQXJyYXksIEMpKSkgcmV0dXJuIEM7XG4gIHRocm93IFR5cGVFcnJvcih0cnlUb1N0cmluZyhDKSArICcgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3InKTtcbn07XG5cbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gZnVuY3Rpb24gKEtFWSwgcHJvcGVydHksIGZvcmNlZCkge1xuICBpZiAoIURFU0NSSVBUT1JTKSByZXR1cm47XG4gIGlmIChmb3JjZWQpIGZvciAodmFyIEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgdmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtBUlJBWV07XG4gICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiBoYXNPd24oVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZSwgS0VZKSkgdHJ5IHtcbiAgICAgIGRlbGV0ZSBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlW0tFWV07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB9XG4gIGlmICghVHlwZWRBcnJheVByb3RvdHlwZVtLRVldIHx8IGZvcmNlZCkge1xuICAgIHJlZGVmaW5lKFR5cGVkQXJyYXlQcm90b3R5cGUsIEtFWSwgZm9yY2VkID8gcHJvcGVydHlcbiAgICAgIDogTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBJbnQ4QXJyYXlQcm90b3R5cGVbS0VZXSB8fCBwcm9wZXJ0eSk7XG4gIH1cbn07XG5cbnZhciBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kID0gZnVuY3Rpb24gKEtFWSwgcHJvcGVydHksIGZvcmNlZCkge1xuICB2YXIgQVJSQVksIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuO1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICBpZiAoZm9yY2VkKSBmb3IgKEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiBoYXNPd24oVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBLRVkpKSB0cnkge1xuICAgICAgICBkZWxldGUgVHlwZWRBcnJheUNvbnN0cnVjdG9yW0tFWV07XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgfVxuICAgIGlmICghVHlwZWRBcnJheVtLRVldIHx8IGZvcmNlZCkge1xuICAgICAgLy8gVjggfiBDaHJvbWUgNDktNTAgYCVUeXBlZEFycmF5JWAgbWV0aG9kcyBhcmUgbm9uLXdyaXRhYmxlIG5vbi1jb25maWd1cmFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiByZWRlZmluZShUeXBlZEFycmF5LCBLRVksIGZvcmNlZCA/IHByb3BlcnR5IDogTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBUeXBlZEFycmF5W0tFWV0gfHwgcHJvcGVydHkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIH0gZWxzZSByZXR1cm47XG4gIH1cbiAgZm9yIChBUlJBWSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtBUlJBWV07XG4gICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiAoIVR5cGVkQXJyYXlDb25zdHJ1Y3RvcltLRVldIHx8IGZvcmNlZCkpIHtcbiAgICAgIHJlZGVmaW5lKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgS0VZLCBwcm9wZXJ0eSk7XG4gICAgfVxuICB9XG59O1xuXG5mb3IgKE5BTUUgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgQ29uc3RydWN0b3IgPSBnbG9iYWxbTkFNRV07XG4gIFByb3RvdHlwZSA9IENvbnN0cnVjdG9yICYmIENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgaWYgKFByb3RvdHlwZSkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFByb3RvdHlwZSwgVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IsIENvbnN0cnVjdG9yKTtcbiAgZWxzZSBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gZmFsc2U7XG59XG5cbmZvciAoTkFNRSBpbiBCaWdJbnRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgQ29uc3RydWN0b3IgPSBnbG9iYWxbTkFNRV07XG4gIFByb3RvdHlwZSA9IENvbnN0cnVjdG9yICYmIENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgaWYgKFByb3RvdHlwZSkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFByb3RvdHlwZSwgVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IsIENvbnN0cnVjdG9yKTtcbn1cblxuLy8gV2ViS2l0IGJ1ZyAtIHR5cGVkIGFycmF5cyBjb25zdHJ1Y3RvcnMgcHJvdG90eXBlIGlzIE9iamVjdC5wcm90b3R5cGVcbmlmICghTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB8fCAhaXNDYWxsYWJsZShUeXBlZEFycmF5KSB8fCBUeXBlZEFycmF5ID09PSBGdW5jdGlvbi5wcm90b3R5cGUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvdyAtLSBzYWZlXG4gIFR5cGVkQXJyYXkgPSBmdW5jdGlvbiBUeXBlZEFycmF5KCkge1xuICAgIHRocm93IFR5cGVFcnJvcignSW5jb3JyZWN0IGludm9jYXRpb24nKTtcbiAgfTtcbiAgaWYgKE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MpIGZvciAoTkFNRSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICAgIGlmIChnbG9iYWxbTkFNRV0pIHNldFByb3RvdHlwZU9mKGdsb2JhbFtOQU1FXSwgVHlwZWRBcnJheSk7XG4gIH1cbn1cblxuaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTIHx8ICFUeXBlZEFycmF5UHJvdG90eXBlIHx8IFR5cGVkQXJyYXlQcm90b3R5cGUgPT09IE9iamVjdFByb3RvdHlwZSkge1xuICBUeXBlZEFycmF5UHJvdG90eXBlID0gVHlwZWRBcnJheS5wcm90b3R5cGU7XG4gIGlmIChOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSBmb3IgKE5BTUUgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICBpZiAoZ2xvYmFsW05BTUVdKSBzZXRQcm90b3R5cGVPZihnbG9iYWxbTkFNRV0ucHJvdG90eXBlLCBUeXBlZEFycmF5UHJvdG90eXBlKTtcbiAgfVxufVxuXG4vLyBXZWJLaXQgYnVnIC0gb25lIG1vcmUgb2JqZWN0IGluIFVpbnQ4Q2xhbXBlZEFycmF5IHByb3RvdHlwZSBjaGFpblxuaWYgKE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgJiYgZ2V0UHJvdG90eXBlT2YoVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUpICE9PSBUeXBlZEFycmF5UHJvdG90eXBlKSB7XG4gIHNldFByb3RvdHlwZU9mKFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlLCBUeXBlZEFycmF5UHJvdG90eXBlKTtcbn1cblxuaWYgKERFU0NSSVBUT1JTICYmICFoYXNPd24oVHlwZWRBcnJheVByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRykpIHtcbiAgVFlQRURfQVJSQVlfVEFHX1JFUUlSRUQgPSB0cnVlO1xuICBkZWZpbmVQcm9wZXJ0eShUeXBlZEFycmF5UHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB7IGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpc09iamVjdCh0aGlzKSA/IHRoaXNbVFlQRURfQVJSQVlfVEFHXSA6IHVuZGVmaW5lZDtcbiAgfSB9KTtcbiAgZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSBpZiAoZ2xvYmFsW05BTUVdKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGdsb2JhbFtOQU1FXSwgVFlQRURfQVJSQVlfVEFHLCBOQU1FKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzogTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyxcbiAgVFlQRURfQVJSQVlfQ09OU1RSVUNUT1I6IFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SLFxuICBUWVBFRF9BUlJBWV9UQUc6IFRZUEVEX0FSUkFZX1RBR19SRVFJUkVEICYmIFRZUEVEX0FSUkFZX1RBRyxcbiAgYVR5cGVkQXJyYXk6IGFUeXBlZEFycmF5LFxuICBhVHlwZWRBcnJheUNvbnN0cnVjdG9yOiBhVHlwZWRBcnJheUNvbnN0cnVjdG9yLFxuICBleHBvcnRUeXBlZEFycmF5TWV0aG9kOiBleHBvcnRUeXBlZEFycmF5TWV0aG9kLFxuICBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOiBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kLFxuICBpc1ZpZXc6IGlzVmlldyxcbiAgaXNUeXBlZEFycmF5OiBpc1R5cGVkQXJyYXksXG4gIFR5cGVkQXJyYXk6IFR5cGVkQXJyYXksXG4gIFR5cGVkQXJyYXlQcm90b3R5cGU6IFR5cGVkQXJyYXlQcm90b3R5cGVcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcblxudmFyIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M7XG5cbi8vIGBBcnJheUJ1ZmZlci5pc1ZpZXdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheWJ1ZmZlci5pc3ZpZXdcbiQoeyB0YXJnZXQ6ICdBcnJheUJ1ZmZlcicsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfSwge1xuICBpc1ZpZXc6IEFycmF5QnVmZmVyVmlld0NvcmUuaXNWaWV3XG59KTtcbiIsInZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG4vLyBgQXNzZXJ0OiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ29uc3RydWN0b3IoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhQ29uc3RydWN0b3IoUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBBcnJheUJ1ZmZlck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG52YXIgQXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlck1vZHVsZS5BcnJheUJ1ZmZlcjtcbnZhciBEYXRhVmlldyA9IEFycmF5QnVmZmVyTW9kdWxlLkRhdGFWaWV3O1xudmFyIG5hdGl2ZUFycmF5QnVmZmVyU2xpY2UgPSBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2U7XG5cbnZhciBJTkNPUlJFQ1RfU0xJQ0UgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhbmV3IEFycmF5QnVmZmVyKDIpLnNsaWNlKDEsIHVuZGVmaW5lZCkuYnl0ZUxlbmd0aDtcbn0pO1xuXG4vLyBgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlidWZmZXIucHJvdG90eXBlLnNsaWNlXG4kKHsgdGFyZ2V0OiAnQXJyYXlCdWZmZXInLCBwcm90bzogdHJ1ZSwgdW5zYWZlOiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9TTElDRSB9LCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgaWYgKG5hdGl2ZUFycmF5QnVmZmVyU2xpY2UgIT09IHVuZGVmaW5lZCAmJiBlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG5hdGl2ZUFycmF5QnVmZmVyU2xpY2UuY2FsbChhbk9iamVjdCh0aGlzKSwgc3RhcnQpOyAvLyBGRiBmaXhcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGFuT2JqZWN0KHRoaXMpLmJ5dGVMZW5ndGg7XG4gICAgdmFyIGZpcnN0ID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW5ndGgpO1xuICAgIHZhciBmaW4gPSB0b0Fic29sdXRlSW5kZXgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQsIGxlbmd0aCk7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIEFycmF5QnVmZmVyKSkodG9MZW5ndGgoZmluIC0gZmlyc3QpKTtcbiAgICB2YXIgdmlld1NvdXJjZSA9IG5ldyBEYXRhVmlldyh0aGlzKTtcbiAgICB2YXIgdmlld1RhcmdldCA9IG5ldyBEYXRhVmlldyhyZXN1bHQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGZpcnN0IDwgZmluKSB7XG4gICAgICB2aWV3VGFyZ2V0LnNldFVpbnQ4KGluZGV4KyssIHZpZXdTb3VyY2UuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBBcnJheUJ1ZmZlck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXInKTtcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1uYXRpdmUnKTtcblxuLy8gYERhdGFWaWV3YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRhdmlldy1jb25zdHJ1Y3RvclxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX0FSUkFZX0JVRkZFUiB9LCB7XG4gIERhdGFWaWV3OiBBcnJheUJ1ZmZlck1vZHVsZS5EYXRhVmlld1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IERhdGUoMTZlMTEpLmdldFllYXIoKSAhPT0gMTIwO1xufSk7XG5cbnZhciBnZXRGdWxsWWVhciA9IERhdGUucHJvdG90eXBlLmdldEZ1bGxZZWFyO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUuZ2V0WWVhcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLmdldHllYXJcbiQoeyB0YXJnZXQ6ICdEYXRlJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgZ2V0WWVhcjogZnVuY3Rpb24gZ2V0WWVhcigpIHtcbiAgICByZXR1cm4gZ2V0RnVsbFllYXIuY2FsbCh0aGlzKSAtIDE5MDA7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBEYXRlLm5vd2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUubm93XG4kKHsgdGFyZ2V0OiAnRGF0ZScsIHN0YXQ6IHRydWUgfSwge1xuICBub3c6IGZ1bmN0aW9uIG5vdygpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBnZXRUaW1lID0gRGF0ZS5wcm90b3R5cGUuZ2V0VGltZTtcbnZhciBzZXRGdWxsWWVhciA9IERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUuc2V0WWVhcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLnNldHllYXJcbiQoeyB0YXJnZXQ6ICdEYXRlJywgcHJvdG86IHRydWUgfSwge1xuICBzZXRZZWFyOiBmdW5jdGlvbiBzZXRZZWFyKHllYXIpIHtcbiAgICAvLyB2YWxpZGF0ZVxuICAgIGdldFRpbWUuY2FsbCh0aGlzKTtcbiAgICB2YXIgeWkgPSB0b0ludGVnZXJPckluZmluaXR5KHllYXIpO1xuICAgIHZhciB5eXl5ID0gMCA8PSB5aSAmJiB5aSA8PSA5OSA/IHlpICsgMTkwMCA6IHlpO1xuICAgIHJldHVybiBzZXRGdWxsWWVhci5jYWxsKHRoaXMsIHl5eXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUudG9HTVRTdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS50b2dtdHN0cmluZ1xuJCh7IHRhcmdldDogJ0RhdGUnLCBwcm90bzogdHJ1ZSB9LCB7XG4gIHRvR01UU3RyaW5nOiBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwZWF0YCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBlYXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVwZWF0KGNvdW50KSB7XG4gIHZhciBzdHIgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoY291bnQpO1xuICBpZiAobiA8IDAgfHwgbiA9PSBJbmZpbml0eSkgdGhyb3cgUmFuZ2VFcnJvcignV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zJyk7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXN1bHQgKz0gc3RyO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1yZXBlYXQnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBwYWRTdGFydCwgcGFkRW5kIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfRU5EKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIG1heExlbmd0aCwgZmlsbFN0cmluZykge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBpbnRNYXhMZW5ndGggPSB0b0xlbmd0aChtYXhMZW5ndGgpO1xuICAgIHZhciBzdHJpbmdMZW5ndGggPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlsbFN0ciA9IGZpbGxTdHJpbmcgPT09IHVuZGVmaW5lZCA/ICcgJyA6IHRvU3RyaW5nKGZpbGxTdHJpbmcpO1xuICAgIHZhciBmaWxsTGVuLCBzdHJpbmdGaWxsZXI7XG4gICAgaWYgKGludE1heExlbmd0aCA8PSBzdHJpbmdMZW5ndGggfHwgZmlsbFN0ciA9PSAnJykgcmV0dXJuIFM7XG4gICAgZmlsbExlbiA9IGludE1heExlbmd0aCAtIHN0cmluZ0xlbmd0aDtcbiAgICBzdHJpbmdGaWxsZXIgPSByZXBlYXQuY2FsbChmaWxsU3RyLCBjZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICAgIGlmIChzdHJpbmdGaWxsZXIubGVuZ3RoID4gZmlsbExlbikgc3RyaW5nRmlsbGVyID0gc3RyaW5nRmlsbGVyLnNsaWNlKDAsIGZpbGxMZW4pO1xuICAgIHJldHVybiBJU19FTkQgPyBTICsgc3RyaW5nRmlsbGVyIDogc3RyaW5nRmlsbGVyICsgUztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5wYWRzdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUucGFkRW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnBhZGVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHBhZFN0YXJ0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wYWQnKS5zdGFydDtcblxudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIERhdGVQcm90b3R5cGUgPSBEYXRlLnByb3RvdHlwZTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvdHlwZS5nZXRUaW1lO1xudmFyIG5hdGl2ZURhdGVUb0lTT1N0cmluZyA9IERhdGVQcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ2AgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLnRvaXNvc3RyaW5nXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGZhaWxzIGhlcmU6XG5tb2R1bGUuZXhwb3J0cyA9IChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuYXRpdmVEYXRlVG9JU09TdHJpbmcuY2FsbChuZXcgRGF0ZSgtNWUxMyAtIDEpKSAhPSAnMDM4NS0wNy0yNVQwNzowNjozOS45OTlaJztcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIG5hdGl2ZURhdGVUb0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKE5hTikpO1xufSkpID8gZnVuY3Rpb24gdG9JU09TdHJpbmcoKSB7XG4gIGlmICghaXNGaW5pdGUoZ2V0VGltZS5jYWxsKHRoaXMpKSkgdGhyb3cgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIHZhciBkYXRlID0gdGhpcztcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBtaWxsaXNlY29uZHMgPSBkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgc2lnbiA9IHllYXIgPCAwID8gJy0nIDogeWVhciA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHNpZ24gKyBwYWRTdGFydChhYnMoeWVhciksIHNpZ24gPyA2IDogNCwgMCkgK1xuICAgICctJyArIHBhZFN0YXJ0KGRhdGUuZ2V0VVRDTW9udGgoKSArIDEsIDIsIDApICtcbiAgICAnLScgKyBwYWRTdGFydChkYXRlLmdldFVUQ0RhdGUoKSwgMiwgMCkgK1xuICAgICdUJyArIHBhZFN0YXJ0KGRhdGUuZ2V0VVRDSG91cnMoKSwgMiwgMCkgK1xuICAgICc6JyArIHBhZFN0YXJ0KGRhdGUuZ2V0VVRDTWludXRlcygpLCAyLCAwKSArXG4gICAgJzonICsgcGFkU3RhcnQoZGF0ZS5nZXRVVENTZWNvbmRzKCksIDIsIDApICtcbiAgICAnLicgKyBwYWRTdGFydChtaWxsaXNlY29uZHMsIDMsIDApICtcbiAgICAnWic7XG59IDogbmF0aXZlRGF0ZVRvSVNPU3RyaW5nO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9JU09TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGF0ZS10by1pc28tc3RyaW5nJyk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLnRvaXNvc3RyaW5nXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbiQoeyB0YXJnZXQ6ICdEYXRlJywgcHJvdG86IHRydWUsIGZvcmNlZDogRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgIT09IHRvSVNPU3RyaW5nIH0sIHtcbiAgdG9JU09TdHJpbmc6IHRvSVNPU3RyaW5nXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0ZShOYU4pLnRvSlNPTigpICE9PSBudWxsXG4gICAgfHwgRGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoeyB0b0lTT1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfSB9KSAhPT0gMTtcbn0pO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUudG9qc29uXG4kKHsgdGFyZ2V0OiAnRGF0ZScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKGtleSkge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHB2ID0gdG9QcmltaXRpdmUoTywgJ251bWJlcicpO1xuICAgIHJldHVybiB0eXBlb2YgcHYgPT0gJ251bWJlcicgJiYgIWlzRmluaXRlKHB2KSA/IG51bGwgOiBPLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlJyk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLUBAdG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhpbnQpIHtcbiAgYW5PYmplY3QodGhpcyk7XG4gIGlmIChoaW50ID09PSAnc3RyaW5nJyB8fCBoaW50ID09PSAnZGVmYXVsdCcpIGhpbnQgPSAnc3RyaW5nJztcbiAgZWxzZSBpZiAoaGludCAhPT0gJ251bWJlcicpIHRocm93IFR5cGVFcnJvcignSW5jb3JyZWN0IGhpbnQnKTtcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUodGhpcywgaGludCk7XG59O1xuIiwidmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZGF0ZVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RhdGUtdG8tcHJpbWl0aXZlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG52YXIgRGF0ZVByb3RvdHlwZSA9IERhdGUucHJvdG90eXBlO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS1AQHRvcHJpbWl0aXZlXG5pZiAoIShUT19QUklNSVRJVkUgaW4gRGF0ZVByb3RvdHlwZSkpIHtcbiAgcmVkZWZpbmUoRGF0ZVByb3RvdHlwZSwgVE9fUFJJTUlUSVZFLCBkYXRlVG9QcmltaXRpdmUpO1xufVxuIiwidmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG5cbnZhciBEYXRlUHJvdG90eXBlID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBuYXRpdmVEYXRlVG9TdHJpbmcgPSBEYXRlUHJvdG90eXBlW1RPX1NUUklOR107XG52YXIgZ2V0VGltZSA9IERhdGVQcm90b3R5cGUuZ2V0VGltZTtcblxuLy8gYERhdGUucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZGF0ZS5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChTdHJpbmcobmV3IERhdGUoTmFOKSkgIT0gSU5WQUxJRF9EQVRFKSB7XG4gIHJlZGVmaW5lKERhdGVQcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VGltZS5jYWxsKHRoaXMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IG5hdGl2ZURhdGVUb1N0cmluZy5jYWxsKHRoaXMpIDogSU5WQUxJRF9EQVRFO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xuXG52YXIgcmF3ID0gL1tcXHcqK1xcLS4vQF0vO1xuXG52YXIgaGV4ID0gZnVuY3Rpb24gKGNvZGUsIGxlbmd0aCkge1xuICB2YXIgcmVzdWx0ID0gY29kZS50b1N0cmluZygxNik7XG4gIHdoaWxlIChyZXN1bHQubGVuZ3RoIDwgbGVuZ3RoKSByZXN1bHQgPSAnMCcgKyByZXN1bHQ7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBgZXNjYXBlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZXNjYXBlLXN0cmluZ1xuJCh7IGdsb2JhbDogdHJ1ZSB9LCB7XG4gIGVzY2FwZTogZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICAgIHZhciBzdHIgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgIHZhciByZXN1bHQgPSAnJztcbiAgICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjaHIsIGNvZGU7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaHIgPSBzdHIuY2hhckF0KGluZGV4KyspO1xuICAgICAgaWYgKHJhdy50ZXN0KGNocikpIHtcbiAgICAgICAgcmVzdWx0ICs9IGNocjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGUgPSBjaHIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gJyUnICsgaGV4KGNvZGUsIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSAnJXUnICsgaGV4KGNvZGUsIDQpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBzbGljZSA9IFtdLnNsaWNlO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEMsIGFyZ3NMZW5ndGgsIGFyZ3MpIHtcbiAgaWYgKCEoYXJnc0xlbmd0aCBpbiBmYWN0b3JpZXMpKSB7XG4gICAgZm9yICh2YXIgbGlzdCA9IFtdLCBpID0gMDsgaSA8IGFyZ3NMZW5ndGg7IGkrKykgbGlzdFtpXSA9ICdhWycgKyBpICsgJ10nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSB3ZSBoYXZlIG5vIHByb3BlciBhbHRlcm5hdGl2ZXMsIElFOC0gb25seVxuICAgIGZhY3Rvcmllc1thcmdzTGVuZ3RoXSA9IEZ1bmN0aW9uKCdDLGEnLCAncmV0dXJuIG5ldyBDKCcgKyBsaXN0LmpvaW4oJywnKSArICcpJyk7XG4gIH0gcmV0dXJuIGZhY3Rvcmllc1thcmdzTGVuZ3RoXShDLCBhcmdzKTtcbn07XG5cbi8vIGBGdW5jdGlvbi5wcm90b3R5cGUuYmluZGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmJpbmQgfHwgZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgZm4gPSBhQ2FsbGFibGUodGhpcyk7XG4gIHZhciBwYXJ0QXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgdmFyIGJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiBib3VuZCgvKiBhcmdzLi4uICovKSB7XG4gICAgdmFyIGFyZ3MgPSBwYXJ0QXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGJvdW5kRnVuY3Rpb24gPyBjb25zdHJ1Y3QoZm4sIGFyZ3MubGVuZ3RoLCBhcmdzKSA6IGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoZm4ucHJvdG90eXBlKSkgYm91bmRGdW5jdGlvbi5wcm90b3R5cGUgPSBmbi5wcm90b3R5cGU7XG4gIHJldHVybiBib3VuZEZ1bmN0aW9uO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZCcpO1xuXG4vLyBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUuYmluZFxuJCh7IHRhcmdldDogJ0Z1bmN0aW9uJywgcHJvdG86IHRydWUgfSwge1xuICBiaW5kOiBiaW5kXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBIQVNfSU5TVEFOQ0UgPSB3ZWxsS25vd25TeW1ib2woJ2hhc0luc3RhbmNlJyk7XG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8vIGBGdW5jdGlvbi5wcm90b3R5cGVbQEBoYXNJbnN0YW5jZV1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUtQEBoYXNpbnN0YW5jZVxuaWYgKCEoSEFTX0lOU1RBTkNFIGluIEZ1bmN0aW9uUHJvdG90eXBlKSkge1xuICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKEZ1bmN0aW9uUHJvdG90eXBlLCBIQVNfSU5TVEFOQ0UsIHsgdmFsdWU6IGZ1bmN0aW9uIChPKSB7XG4gICAgaWYgKCFpc0NhbGxhYmxlKHRoaXMpIHx8ICFpc09iamVjdChPKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghaXNPYmplY3QodGhpcy5wcm90b3R5cGUpKSByZXR1cm4gTyBpbnN0YW5jZW9mIHRoaXM7XG4gICAgLy8gZm9yIGVudmlyb25tZW50IHcvbyBuYXRpdmUgYEBAaGFzSW5zdGFuY2VgIGxvZ2ljIGVub3VnaCBgaW5zdGFuY2VvZmAsIGJ1dCBhZGQgdGhpczpcbiAgICB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKSBpZiAodGhpcy5wcm90b3R5cGUgPT09IE8pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSB9KTtcbn1cbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIEZVTkNUSU9OX05BTUVfRVhJU1RTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5FWElTVFM7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nID0gRnVuY3Rpb25Qcm90b3R5cGUudG9TdHJpbmc7XG52YXIgbmFtZVJFID0gL15cXHMqZnVuY3Rpb24gKFteIChdKikvO1xudmFyIE5BTUUgPSAnbmFtZSc7XG5cbi8vIEZ1bmN0aW9uIGluc3RhbmNlcyBgLm5hbWVgIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLWluc3RhbmNlcy1uYW1lXG5pZiAoREVTQ1JJUFRPUlMgJiYgIUZVTkNUSU9OX05BTUVfRVhJU1RTKSB7XG4gIGRlZmluZVByb3BlcnR5KEZ1bmN0aW9uUHJvdG90eXBlLCBOQU1FLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmcuY2FsbCh0aGlzKS5tYXRjaChuYW1lUkUpWzFdO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGBnbG9iYWxUaGlzYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2xvYmFsdGhpc1xuJCh7IGdsb2JhbDogdHJ1ZSB9LCB7XG4gIGdsb2JhbFRoaXM6IGdsb2JhbFxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciAkc3RyaW5naWZ5ID0gZ2V0QnVpbHRJbignSlNPTicsICdzdHJpbmdpZnknKTtcbnZhciByZSA9IC9bXFx1RDgwMC1cXHVERkZGXS9nO1xudmFyIGxvdyA9IC9eW1xcdUQ4MDAtXFx1REJGRl0kLztcbnZhciBoaSA9IC9eW1xcdURDMDAtXFx1REZGRl0kLztcblxudmFyIGZpeCA9IGZ1bmN0aW9uIChtYXRjaCwgb2Zmc2V0LCBzdHJpbmcpIHtcbiAgdmFyIHByZXYgPSBzdHJpbmcuY2hhckF0KG9mZnNldCAtIDEpO1xuICB2YXIgbmV4dCA9IHN0cmluZy5jaGFyQXQob2Zmc2V0ICsgMSk7XG4gIGlmICgobG93LnRlc3QobWF0Y2gpICYmICFoaS50ZXN0KG5leHQpKSB8fCAoaGkudGVzdChtYXRjaCkgJiYgIWxvdy50ZXN0KHByZXYpKSkge1xuICAgIHJldHVybiAnXFxcXHUnICsgbWF0Y2guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7XG4gIH0gcmV0dXJuIG1hdGNoO1xufTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICRzdHJpbmdpZnkoJ1xcdURGMDZcXHVEODM0JykgIT09ICdcIlxcXFx1ZGYwNlxcXFx1ZDgzNFwiJ1xuICAgIHx8ICRzdHJpbmdpZnkoJ1xcdURFQUQnKSAhPT0gJ1wiXFxcXHVkZWFkXCInO1xufSk7XG5cbmlmICgkc3RyaW5naWZ5KSB7XG4gIC8vIGBKU09OLnN0cmluZ2lmeWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtanNvbi5zdHJpbmdpZnlcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtd2VsbC1mb3JtZWQtc3RyaW5naWZ5XG4gICQoeyB0YXJnZXQ6ICdKU09OJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gICAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgICAgdmFyIHJlc3VsdCA9ICRzdHJpbmdpZnkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiB0eXBlb2YgcmVzdWx0ID09ICdzdHJpbmcnID8gcmVzdWx0LnJlcGxhY2UocmUsIGZpeCkgOiByZXN1bHQ7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcblxuLy8gSlNPTltAQHRvU3RyaW5nVGFnXSBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUsIGVzL25vLW9iamVjdC1wcmV2ZW50ZXh0ZW5zaW9ucyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTtcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbE1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBGUkVFWklORyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mcmVlemluZycpO1xuXG52YXIgUkVRVUlSRUQgPSBmYWxzZTtcbnZhciBNRVRBREFUQSA9IHVpZCgnbWV0YScpO1xudmFyIGlkID0gMDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBzZXRNZXRhZGF0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBkZWZpbmVQcm9wZXJ0eShpdCwgTUVUQURBVEEsIHsgdmFsdWU6IHtcbiAgICBvYmplY3RJRDogJ08nICsgaWQrKywgLy8gb2JqZWN0IElEXG4gICAgd2Vha0RhdGE6IHt9ICAgICAgICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gfSk7XG59O1xuXG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBhIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXNPd24oaXQsIE1FVEFEQVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhZGF0YShpdCk7XG4gIC8vIHJldHVybiBvYmplY3QgSURcbiAgfSByZXR1cm4gaXRbTUVUQURBVEFdLm9iamVjdElEO1xufTtcblxudmFyIGdldFdlYWtEYXRhID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXNPd24oaXQsIE1FVEFEQVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhZGF0YShpdCk7XG4gIC8vIHJldHVybiB0aGUgc3RvcmUgb2Ygd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQURBVEFdLndlYWtEYXRhO1xufTtcblxuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaSU5HICYmIFJFUVVJUkVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhc093bihpdCwgTUVUQURBVEEpKSBzZXRNZXRhZGF0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cbnZhciBlbmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gIG1ldGEuZW5hYmxlID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuICBSRVFVSVJFRCA9IHRydWU7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mO1xuICB2YXIgc3BsaWNlID0gW10uc3BsaWNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB0ZXN0W01FVEFEQVRBXSA9IDE7XG5cbiAgLy8gcHJldmVudCBleHBvc2luZyBvZiBtZXRhZGF0YSBrZXlcbiAgaWYgKGdldE93blByb3BlcnR5TmFtZXModGVzdCkubGVuZ3RoKSB7XG4gICAgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChyZXN1bHRbaV0gPT09IE1FVEFEQVRBKSB7XG4gICAgICAgICAgc3BsaWNlLmNhbGwocmVzdWx0LCBpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAkKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICAgIGdldE93blByb3BlcnR5TmFtZXM6IGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbE1vZHVsZS5mXG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBtZXRhID0gbW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVuYWJsZTogZW5hYmxlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrRGF0YTogZ2V0V2Vha0RhdGEsXG4gIG9uRnJlZXplOiBvbkZyZWV6ZVxufTtcblxuaGlkZGVuS2V5c1tNRVRBREFUQV0gPSB0cnVlO1xuIiwidmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgaXNDYWxsYWJsZShOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgJiZcbiAgICBOZXdUYXJnZXQgIT09IFdyYXBwZXIgJiZcbiAgICBpc09iamVjdChOZXdUYXJnZXRQcm90b3R5cGUgPSBOZXdUYXJnZXQucHJvdG90eXBlKSAmJlxuICAgIE5ld1RhcmdldFByb3RvdHlwZSAhPT0gV3JhcHBlci5wcm90b3R5cGVcbiAgKSBzZXRQcm90b3R5cGVPZigkdGhpcywgTmV3VGFyZ2V0UHJvdG90eXBlKTtcbiAgcmV0dXJuICR0aGlzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIEludGVybmFsTWV0YWRhdGFNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUl9OQU1FLCB3cmFwcGVyLCBjb21tb24pIHtcbiAgdmFyIElTX01BUCA9IENPTlNUUlVDVE9SX05BTUUuaW5kZXhPZignTWFwJykgIT09IC0xO1xuICB2YXIgSVNfV0VBSyA9IENPTlNUUlVDVE9SX05BTUUuaW5kZXhPZignV2VhaycpICE9PSAtMTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIE5hdGl2ZUNvbnN0cnVjdG9yID0gZ2xvYmFsW0NPTlNUUlVDVE9SX05BTUVdO1xuICB2YXIgTmF0aXZlUHJvdG90eXBlID0gTmF0aXZlQ29uc3RydWN0b3IgJiYgTmF0aXZlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICB2YXIgQ29uc3RydWN0b3IgPSBOYXRpdmVDb25zdHJ1Y3RvcjtcbiAgdmFyIGV4cG9ydGVkID0ge307XG5cbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgbmF0aXZlTWV0aG9kID0gTmF0aXZlUHJvdG90eXBlW0tFWV07XG4gICAgcmVkZWZpbmUoTmF0aXZlUHJvdG90eXBlLCBLRVksXG4gICAgICBLRVkgPT0gJ2FkZCcgPyBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgICAgbmF0aXZlTWV0aG9kLmNhbGwodGhpcywgdmFsdWUgPT09IDAgPyAwIDogdmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0gOiBLRVkgPT0gJ2RlbGV0ZScgPyBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChrZXkpID8gZmFsc2UgOiBuYXRpdmVNZXRob2QuY2FsbCh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5KTtcbiAgICAgIH0gOiBLRVkgPT0gJ2dldCcgPyBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChrZXkpID8gdW5kZWZpbmVkIDogbmF0aXZlTWV0aG9kLmNhbGwodGhpcywga2V5ID09PSAwID8gMCA6IGtleSk7XG4gICAgICB9IDogS0VZID09ICdoYXMnID8gZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3Qoa2V5KSA/IGZhbHNlIDogbmF0aXZlTWV0aG9kLmNhbGwodGhpcywga2V5ID09PSAwID8gMCA6IGtleSk7XG4gICAgICB9IDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgbmF0aXZlTWV0aG9kLmNhbGwodGhpcywga2V5ID09PSAwID8gMCA6IGtleSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIHZhciBSRVBMQUNFID0gaXNGb3JjZWQoXG4gICAgQ09OU1RSVUNUT1JfTkFNRSxcbiAgICAhaXNDYWxsYWJsZShOYXRpdmVDb25zdHJ1Y3RvcikgfHwgIShJU19XRUFLIHx8IE5hdGl2ZVByb3RvdHlwZS5mb3JFYWNoICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgTmF0aXZlQ29uc3RydWN0b3IoKS5lbnRyaWVzKCkubmV4dCgpO1xuICAgIH0pKVxuICApO1xuXG4gIGlmIChSRVBMQUNFKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDb25zdHJ1Y3RvciA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVAsIEFEREVSKTtcbiAgICBJbnRlcm5hbE1ldGFkYXRhTW9kdWxlLmVuYWJsZSgpO1xuICB9IGVsc2UgaWYgKGlzRm9yY2VkKENPTlNUUlVDVE9SX05BTUUsIHRydWUpKSB7XG4gICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7XG4gICAgLy8gZWFybHkgaW1wbGVtZW50YXRpb25zIG5vdCBzdXBwb3J0cyBjaGFpbmluZ1xuICAgIHZhciBIQVNOVF9DSEFJTklORyA9IGluc3RhbmNlW0FEREVSXShJU19XRUFLID8ge30gOiAtMCwgMSkgIT0gaW5zdGFuY2U7XG4gICAgLy8gVjggfiBDaHJvbWl1bSA0MC0gd2Vhay1jb2xsZWN0aW9ucyB0aHJvd3Mgb24gcHJpbWl0aXZlcywgYnV0IHNob3VsZCByZXR1cm4gZmFsc2VcbiAgICB2YXIgVEhST1dTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IGluc3RhbmNlLmhhcygxKTsgfSk7XG4gICAgLy8gbW9zdCBlYXJseSBpbXBsZW1lbnRhdGlvbnMgZG9lc24ndCBzdXBwb3J0cyBpdGVyYWJsZXMsIG1vc3QgbW9kZXJuIC0gbm90IGNsb3NlIGl0IGNvcnJlY3RseVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXcgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgICB2YXIgQUNDRVBUX0lURVJBQkxFUyA9IGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbihmdW5jdGlvbiAoaXRlcmFibGUpIHsgbmV3IE5hdGl2ZUNvbnN0cnVjdG9yKGl0ZXJhYmxlKTsgfSk7XG4gICAgLy8gZm9yIGVhcmx5IGltcGxlbWVudGF0aW9ucyAtMCBhbmQgKzAgbm90IHRoZSBzYW1lXG4gICAgdmFyIEJVR0dZX1pFUk8gPSAhSVNfV0VBSyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBWOCB+IENocm9taXVtIDQyLSBmYWlscyBvbmx5IHdpdGggNSsgZWxlbWVudHNcbiAgICAgIHZhciAkaW5zdGFuY2UgPSBuZXcgTmF0aXZlQ29uc3RydWN0b3IoKTtcbiAgICAgIHZhciBpbmRleCA9IDU7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkgJGluc3RhbmNlW0FEREVSXShpbmRleCwgaW5kZXgpO1xuICAgICAgcmV0dXJuICEkaW5zdGFuY2UuaGFzKC0wKTtcbiAgICB9KTtcblxuICAgIGlmICghQUNDRVBUX0lURVJBQkxFUykge1xuICAgICAgQ29uc3RydWN0b3IgPSB3cmFwcGVyKGZ1bmN0aW9uIChkdW1teSwgaXRlcmFibGUpIHtcbiAgICAgICAgYW5JbnN0YW5jZShkdW1teSwgQ29uc3RydWN0b3IsIENPTlNUUlVDVE9SX05BTUUpO1xuICAgICAgICB2YXIgdGhhdCA9IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpLCBkdW1teSwgQ29uc3RydWN0b3IpO1xuICAgICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBpdGVyYXRlKGl0ZXJhYmxlLCB0aGF0W0FEREVSXSwgeyB0aGF0OiB0aGF0LCBBU19FTlRSSUVTOiBJU19NQVAgfSk7XG4gICAgICAgIHJldHVybiB0aGF0O1xuICAgICAgfSk7XG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBOYXRpdmVQcm90b3R5cGU7XG4gICAgICBOYXRpdmVQcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICB9XG5cbiAgICBpZiAoVEhST1dTX09OX1BSSU1JVElWRVMgfHwgQlVHR1lfWkVSTykge1xuICAgICAgZml4TWV0aG9kKCdkZWxldGUnKTtcbiAgICAgIGZpeE1ldGhvZCgnaGFzJyk7XG4gICAgICBJU19NQVAgJiYgZml4TWV0aG9kKCdnZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoQlVHR1lfWkVSTyB8fCBIQVNOVF9DSEFJTklORykgZml4TWV0aG9kKEFEREVSKTtcblxuICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgc2hvdWxkIG5vdCBjb250YWlucyAuY2xlYXIgbWV0aG9kXG4gICAgaWYgKElTX1dFQUsgJiYgTmF0aXZlUHJvdG90eXBlLmNsZWFyKSBkZWxldGUgTmF0aXZlUHJvdG90eXBlLmNsZWFyO1xuICB9XG5cbiAgZXhwb3J0ZWRbQ09OU1RSVUNUT1JfTkFNRV0gPSBDb25zdHJ1Y3RvcjtcbiAgJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBDb25zdHJ1Y3RvciAhPSBOYXRpdmVDb25zdHJ1Y3RvciB9LCBleHBvcnRlZCk7XG5cbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIENPTlNUUlVDVE9SX05BTUUpO1xuXG4gIGlmICghSVNfV0VBSykgY29tbW9uLnNldFN0cm9uZyhDb25zdHJ1Y3RvciwgQ09OU1RSVUNUT1JfTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQ29uc3RydWN0b3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFzdEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpLmZhc3RLZXk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGludGVybmFsU3RhdGVHZXR0ZXJGb3IgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcjtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgQ09OU1RSVUNUT1JfTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgQ09OU1RSVUNUT1JfTkFNRSk7XG4gICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICAgICAgdHlwZTogQ09OU1RSVUNUT1JfTkFNRSxcbiAgICAgICAgaW5kZXg6IGNyZWF0ZShudWxsKSxcbiAgICAgICAgZmlyc3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgbGFzdDogdW5kZWZpbmVkLFxuICAgICAgICBzaXplOiAwXG4gICAgICB9KTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMpIHRoYXQuc2l6ZSA9IDA7XG4gICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBpdGVyYXRlKGl0ZXJhYmxlLCB0aGF0W0FEREVSXSwgeyB0aGF0OiB0aGF0LCBBU19FTlRSSUVTOiBJU19NQVAgfSk7XG4gICAgfSk7XG5cbiAgICB2YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IGludGVybmFsU3RhdGVHZXR0ZXJGb3IoQ09OU1RSVUNUT1JfTkFNRSk7XG5cbiAgICB2YXIgZGVmaW5lID0gZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgICAgdmFyIHByZXZpb3VzLCBpbmRleDtcbiAgICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGVudHJ5LnZhbHVlID0gdmFsdWU7XG4gICAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5sYXN0ID0gZW50cnkgPSB7XG4gICAgICAgICAgaW5kZXg6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLFxuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBwcmV2aW91czogcHJldmlvdXMgPSBzdGF0ZS5sYXN0LFxuICAgICAgICAgIG5leHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZW1vdmVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoIXN0YXRlLmZpcnN0KSBzdGF0ZS5maXJzdCA9IGVudHJ5O1xuICAgICAgICBpZiAocHJldmlvdXMpIHByZXZpb3VzLm5leHQgPSBlbnRyeTtcbiAgICAgICAgaWYgKERFU0NSSVBUT1JTKSBzdGF0ZS5zaXplKys7XG4gICAgICAgIGVsc2UgdGhhdC5zaXplKys7XG4gICAgICAgIC8vIGFkZCB0byBpbmRleFxuICAgICAgICBpZiAoaW5kZXggIT09ICdGJykgc3RhdGUuaW5kZXhbaW5kZXhdID0gZW50cnk7XG4gICAgICB9IHJldHVybiB0aGF0O1xuICAgIH07XG5cbiAgICB2YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoYXQpO1xuICAgICAgLy8gZmFzdCBjYXNlXG4gICAgICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gICAgICB2YXIgZW50cnk7XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgcmV0dXJuIHN0YXRlLmluZGV4W2luZGV4XTtcbiAgICAgIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuICAgICAgZm9yIChlbnRyeSA9IHN0YXRlLmZpcnN0OyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uZXh0KSB7XG4gICAgICAgIGlmIChlbnRyeS5rZXkgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyBgeyBNYXAsIFNldCB9LnByb3RvdHlwZS5jbGVhcigpYCBtZXRob2RzXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hcC5wcm90b3R5cGUuY2xlYXJcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS5jbGVhclxuICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICAgIHZhciBkYXRhID0gc3RhdGUuaW5kZXg7XG4gICAgICAgIHZhciBlbnRyeSA9IHN0YXRlLmZpcnN0O1xuICAgICAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgICAgICBlbnRyeS5yZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZW50cnkucHJldmlvdXMpIGVudHJ5LnByZXZpb3VzID0gZW50cnkucHJldmlvdXMubmV4dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pbmRleF07XG4gICAgICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmZpcnN0ID0gc3RhdGUubGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKERFU0NSSVBUT1JTKSBzdGF0ZS5zaXplID0gMDtcbiAgICAgICAgZWxzZSB0aGF0LnNpemUgPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIGB7IE1hcCwgU2V0IH0ucHJvdG90eXBlLmRlbGV0ZShrZXkpYCBtZXRob2RzXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hcC5wcm90b3R5cGUuZGVsZXRlXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUuZGVsZXRlXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkubmV4dDtcbiAgICAgICAgICB2YXIgcHJldiA9IGVudHJ5LnByZXZpb3VzO1xuICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5pbmRleFtlbnRyeS5pbmRleF07XG4gICAgICAgICAgZW50cnkucmVtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKHByZXYpIHByZXYubmV4dCA9IG5leHQ7XG4gICAgICAgICAgaWYgKG5leHQpIG5leHQucHJldmlvdXMgPSBwcmV2O1xuICAgICAgICAgIGlmIChzdGF0ZS5maXJzdCA9PSBlbnRyeSkgc3RhdGUuZmlyc3QgPSBuZXh0O1xuICAgICAgICAgIGlmIChzdGF0ZS5sYXN0ID09IGVudHJ5KSBzdGF0ZS5sYXN0ID0gcHJldjtcbiAgICAgICAgICBpZiAoREVTQ1JJUFRPUlMpIHN0YXRlLnNpemUtLTtcbiAgICAgICAgICBlbHNlIHRoYXQuc2l6ZS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIGB7IE1hcCwgU2V0IH0ucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5mb3JlYWNoXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUuZm9yZWFjaFxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubmV4dCA6IHN0YXRlLmZpcnN0KSB7XG4gICAgICAgICAgYm91bmRGdW5jdGlvbihlbnRyeS52YWx1ZSwgZW50cnkua2V5LCB0aGlzKTtcbiAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucmVtb3ZlZCkgZW50cnkgPSBlbnRyeS5wcmV2aW91cztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGB7IE1hcCwgU2V0fS5wcm90b3R5cGUuaGFzKGtleSlgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5oYXNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS5oYXNcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIElTX01BUCA/IHtcbiAgICAgIC8vIGBNYXAucHJvdG90eXBlLmdldChrZXkpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5nZXRcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGlzLCBrZXkpO1xuICAgICAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudmFsdWU7XG4gICAgICB9LFxuICAgICAgLy8gYE1hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5zZXRcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZSh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSA6IHtcbiAgICAgIC8vIGBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlgIG1ldGhvZFxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQucHJvdG90eXBlLmFkZFxuICAgICAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZSh0aGlzLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eShDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGdldEludGVybmFsU3RhdGUodGhpcykuc2l6ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbiAoQywgQ09OU1RSVUNUT1JfTkFNRSwgSVNfTUFQKSB7XG4gICAgdmFyIElURVJBVE9SX05BTUUgPSBDT05TVFJVQ1RPUl9OQU1FICsgJyBJdGVyYXRvcic7XG4gICAgdmFyIGdldEludGVybmFsQ29sbGVjdGlvblN0YXRlID0gaW50ZXJuYWxTdGF0ZUdldHRlckZvcihDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICB2YXIgZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlID0gaW50ZXJuYWxTdGF0ZUdldHRlckZvcihJVEVSQVRPUl9OQU1FKTtcbiAgICAvLyBgeyBNYXAsIFNldCB9LnByb3RvdHlwZS57IGtleXMsIHZhbHVlcywgZW50cmllcywgQEBpdGVyYXRvciB9KClgIG1ldGhvZHNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hcC5wcm90b3R5cGUuZW50cmllc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS5rZXlzXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAucHJvdG90eXBlLnZhbHVlc1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWFwLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXQucHJvdG90eXBlLmVudHJpZXNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUua2V5c1xuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LnByb3RvdHlwZS52YWx1ZXNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNldC5wcm90b3R5cGUtQEBpdGVyYXRvclxuICAgIGRlZmluZUl0ZXJhdG9yKEMsIENPTlNUUlVDVE9SX05BTUUsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICAgICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICAgIHR5cGU6IElURVJBVE9SX05BTUUsXG4gICAgICAgIHRhcmdldDogaXRlcmF0ZWQsXG4gICAgICAgIHN0YXRlOiBnZXRJbnRlcm5hbENvbGxlY3Rpb25TdGF0ZShpdGVyYXRlZCksXG4gICAgICAgIGtpbmQ6IGtpbmQsXG4gICAgICAgIGxhc3Q6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGtpbmQgPSBzdGF0ZS5raW5kO1xuICAgICAgdmFyIGVudHJ5ID0gc3RhdGUubGFzdDtcbiAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnJlbW92ZWQpIGVudHJ5ID0gZW50cnkucHJldmlvdXM7XG4gICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuICAgICAgaWYgKCFzdGF0ZS50YXJnZXQgfHwgIShzdGF0ZS5sYXN0ID0gZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm5leHQgOiBzdGF0ZS5zdGF0ZS5maXJzdCkpIHtcbiAgICAgICAgLy8gb3IgZmluaXNoIHRoZSBpdGVyYXRpb25cbiAgICAgICAgc3RhdGUudGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG4gICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiB7IHZhbHVlOiBlbnRyeS5rZXksIGRvbmU6IGZhbHNlIH07XG4gICAgICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHsgdmFsdWU6IGVudHJ5LnZhbHVlLCBkb25lOiBmYWxzZSB9O1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IFtlbnRyeS5rZXksIGVudHJ5LnZhbHVlXSwgZG9uZTogZmFsc2UgfTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7XG5cbiAgICAvLyBgeyBNYXAsIFNldCB9LnByb3RvdHlwZVtAQHNwZWNpZXNdYCBhY2Nlc3NvcnNcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1tYXAtQEBzcGVjaWVzXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtc2V0LUBAc3BlY2llc1xuICAgIHNldFNwZWNpZXMoQ09OU1RSVUNUT1JfTkFNRSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY29sbGVjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uJyk7XG52YXIgY29sbGVjdGlvblN0cm9uZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLXN0cm9uZycpO1xuXG4vLyBgTWFwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXAtb2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSBjb2xsZWN0aW9uKCdNYXAnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gTWFwKCkgeyByZXR1cm4gaW5pdCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIGNvbGxlY3Rpb25TdHJvbmcpO1xuIiwidmFyIGxvZyA9IE1hdGgubG9nO1xuXG4vLyBgTWF0aC5sb2cxcGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgubG9nMXBcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWxvZzFwIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5sb2cxcCB8fCBmdW5jdGlvbiBsb2cxcCh4KSB7XG4gIHJldHVybiAoeCA9ICt4KSA+IC0xZS04ICYmIHggPCAxZS04ID8geCAtIHggKiB4IC8gMiA6IGxvZygxICsgeCk7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbG9nMXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1sb2cxcCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1hY29zaCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRhY29zaCA9IE1hdGguYWNvc2g7XG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgc3FydCA9IE1hdGguc3FydDtcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxudmFyIEZPUkNFRCA9ICEkYWNvc2hcbiAgLy8gVjggYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzUwOVxuICB8fCBNYXRoLmZsb29yKCRhY29zaChOdW1iZXIuTUFYX1ZBTFVFKSkgIT0gNzEwXG4gIC8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hY29zaChJbmZpbml0eSkgLT4gTmFOXG4gIHx8ICRhY29zaChJbmZpbml0eSkgIT0gSW5maW5pdHk7XG5cbi8vIGBNYXRoLmFjb3NoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5hY29zaFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIGFjb3NoOiBmdW5jdGlvbiBhY29zaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpIDwgMSA/IE5hTiA6IHggPiA5NDkwNjI2NS42MjQyNTE1NlxuICAgICAgPyBsb2coeCkgKyBMTjJcbiAgICAgIDogbG9nMXAoeCAtIDEgKyBzcXJ0KHggLSAxKSAqIHNxcnQoeCArIDEpKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtYXNpbmggLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkYXNpbmggPSBNYXRoLmFzaW5oO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG5cbmZ1bmN0aW9uIGFzaW5oKHgpIHtcbiAgcmV0dXJuICFpc0Zpbml0ZSh4ID0gK3gpIHx8IHggPT0gMCA/IHggOiB4IDwgMCA/IC1hc2luaCgteCkgOiBsb2coeCArIHNxcnQoeCAqIHggKyAxKSk7XG59XG5cbi8vIGBNYXRoLmFzaW5oYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5hc2luaFxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFzaW5oKDApIC0+IC0wXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogISgkYXNpbmggJiYgMSAvICRhc2luaCgwKSA+IDApIH0sIHtcbiAgYXNpbmg6IGFzaW5oXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1hdGFuaCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRhdGFuaCA9IE1hdGguYXRhbmg7XG52YXIgbG9nID0gTWF0aC5sb2c7XG5cbi8vIGBNYXRoLmF0YW5oYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5hdGFuaFxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogISgkYXRhbmggJiYgMSAvICRhdGFuaCgtMCkgPCAwKSB9LCB7XG4gIGF0YW5oOiBmdW5jdGlvbiBhdGFuaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpID09IDAgPyB4IDogbG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gYE1hdGguc2lnbmAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguc2lnblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtc2lnbiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbiBzaWduKHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgfHwgeCAhPSB4ID8geCA6IHggPCAwID8gLTEgOiAxO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1zaWduJyk7XG5cbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBwb3cgPSBNYXRoLnBvdztcblxuLy8gYE1hdGguY2JydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguY2JydFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgY2JydDogZnVuY3Rpb24gY2JydCh4KSB7XG4gICAgcmV0dXJuIHNpZ24oeCA9ICt4KSAqIHBvdyhhYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMT0cyRSA9IE1hdGguTE9HMkU7XG5cbi8vIGBNYXRoLmNsejMyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5jbHozMlxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgY2x6MzI6IGZ1bmN0aW9uIGNsejMyKHgpIHtcbiAgICByZXR1cm4gKHggPj4+PSAwKSA/IDMxIC0gZmxvb3IobG9nKHggKyAwLjUpICogTE9HMkUpIDogMzI7XG4gIH1cbn0pO1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtZXhwbTEgLS0gc2FmZVxudmFyICRleHBtMSA9IE1hdGguZXhwbTE7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbi8vIGBNYXRoLmV4cG0xYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5leHBtMVxubW9kdWxlLmV4cG9ydHMgPSAoISRleHBtMVxuICAvLyBPbGQgRkYgYnVnXG4gIHx8ICRleHBtMSgxMCkgPiAyMjAyNS40NjU3OTQ4MDY3MTkgfHwgJGV4cG0xKDEwKSA8IDIyMDI1LjQ2NTc5NDgwNjcxNjUxNjhcbiAgLy8gVG9yIEJyb3dzZXIgYnVnXG4gIHx8ICRleHBtMSgtMmUtMTcpICE9IC0yZS0xN1xuKSA/IGZ1bmN0aW9uIGV4cG0xKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgPyB4IDogeCA+IC0xZS02ICYmIHggPCAxZS02ID8geCArIHggKiB4IC8gMiA6IGV4cCh4KSAtIDE7XG59IDogJGV4cG0xO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1leHBtMScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1jb3NoIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGNvc2ggPSBNYXRoLmNvc2g7XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgRSA9IE1hdGguRTtcblxuLy8gYE1hdGguY29zaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguY29zaFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICEkY29zaCB8fCAkY29zaCg3MTApID09PSBJbmZpbml0eSB9LCB7XG4gIGNvc2g6IGZ1bmN0aW9uIGNvc2goeCkge1xuICAgIHZhciB0ID0gZXhwbTEoYWJzKHgpIC0gMSkgKyAxO1xuICAgIHJldHVybiAodCArIDEgLyAodCAqIEUgKiBFKSkgKiAoRSAvIDIpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtZXhwbTEnKTtcblxuLy8gYE1hdGguZXhwbTFgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmV4cG0xXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1leHBtMSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IGV4cG0xICE9IE1hdGguZXhwbTEgfSwgeyBleHBtMTogZXhwbTEgfSk7XG4iLCJ2YXIgc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXNpZ24nKTtcblxudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIEVQU0lMT04gPSBwb3coMiwgLTUyKTtcbnZhciBFUFNJTE9OMzIgPSBwb3coMiwgLTIzKTtcbnZhciBNQVgzMiA9IHBvdygyLCAxMjcpICogKDIgLSBFUFNJTE9OMzIpO1xudmFyIE1JTjMyID0gcG93KDIsIC0xMjYpO1xuXG52YXIgcm91bmRUaWVzVG9FdmVuID0gZnVuY3Rpb24gKG4pIHtcbiAgcmV0dXJuIG4gKyAxIC8gRVBTSUxPTiAtIDEgLyBFUFNJTE9OO1xufTtcblxuLy8gYE1hdGguZnJvdW5kYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5mcm91bmRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWZyb3VuZCAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZnJvdW5kIHx8IGZ1bmN0aW9uIGZyb3VuZCh4KSB7XG4gIHZhciAkYWJzID0gYWJzKHgpO1xuICB2YXIgJHNpZ24gPSBzaWduKHgpO1xuICB2YXIgYSwgcmVzdWx0O1xuICBpZiAoJGFicyA8IE1JTjMyKSByZXR1cm4gJHNpZ24gKiByb3VuZFRpZXNUb0V2ZW4oJGFicyAvIE1JTjMyIC8gRVBTSUxPTjMyKSAqIE1JTjMyICogRVBTSUxPTjMyO1xuICBhID0gKDEgKyBFUFNJTE9OMzIgLyBFUFNJTE9OKSAqICRhYnM7XG4gIHJlc3VsdCA9IGEgLSAoYSAtICRhYnMpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICBpZiAocmVzdWx0ID4gTUFYMzIgfHwgcmVzdWx0ICE9IHJlc3VsdCkgcmV0dXJuICRzaWduICogSW5maW5pdHk7XG4gIHJldHVybiAkc2lnbiAqIHJlc3VsdDtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmcm91bmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1mcm91bmQnKTtcblxuLy8gYE1hdGguZnJvdW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5mcm91bmRcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7IGZyb3VuZDogZnJvdW5kIH0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWh5cG90IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGh5cG90ID0gTWF0aC5oeXBvdDtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuXG4vLyBDaHJvbWUgNzcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05NTQ2XG52YXIgQlVHR1kgPSAhISRoeXBvdCAmJiAkaHlwb3QoSW5maW5pdHksIE5hTikgIT09IEluZmluaXR5O1xuXG4vLyBgTWF0aC5oeXBvdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguaHlwb3RcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBCVUdHWSB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGh5cG90OiBmdW5jdGlvbiBoeXBvdCh2YWx1ZTEsIHZhbHVlMikge1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogc3FydChzdW0pO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWltdWwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICRpbXVsKDB4RkZGRkZGRkYsIDUpICE9IC01IHx8ICRpbXVsLmxlbmd0aCAhPSAyO1xufSk7XG5cbi8vIGBNYXRoLmltdWxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmltdWxcbi8vIHNvbWUgV2ViS2l0IHZlcnNpb25zIGZhaWxzIHdpdGggYmlnIG51bWJlcnMsIHNvbWUgaGFzIHdyb25nIGFyaXR5XG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4RkZGRjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgTE9HMTBFID0gTWF0aC5MT0cxMEU7XG5cbi8vIGBNYXRoLmxvZzEwYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5sb2cxMFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgbG9nMTA6IGZ1bmN0aW9uIGxvZzEwKHgpIHtcbiAgICByZXR1cm4gbG9nKHgpICogTE9HMTBFO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGxvZzFwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtbG9nMXAnKTtcblxuLy8gYE1hdGgubG9nMXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmxvZzFwXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwgeyBsb2cxcDogbG9nMXAgfSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExOMiA9IE1hdGguTE4yO1xuXG4vLyBgTWF0aC5sb2cyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC5sb2cyXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBsb2cyOiBmdW5jdGlvbiBsb2cyKHgpIHtcbiAgICByZXR1cm4gbG9nKHgpIC8gTE4yO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1zaWduJyk7XG5cbi8vIGBNYXRoLnNpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnNpZ25cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNpZ246IHNpZ25cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBleHBtMSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLWV4cG0xJyk7XG5cbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBleHAgPSBNYXRoLmV4cDtcbnZhciBFID0gTWF0aC5FO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC1zaW5oIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBNYXRoLnNpbmgoLTJlLTE3KSAhPSAtMmUtMTc7XG59KTtcblxuLy8gYE1hdGguc2luaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGguc2luaFxuLy8gVjggbmVhciBDaHJvbWl1bSAzOCBoYXMgYSBwcm9ibGVtIHdpdGggdmVyeSBzbWFsbCBudW1iZXJzXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgc2luaDogZnVuY3Rpb24gc2luaCh4KSB7XG4gICAgcmV0dXJuIGFicyh4ID0gK3gpIDwgMSA/IChleHBtMSh4KSAtIGV4cG0xKC14KSkgLyAyIDogKGV4cCh4IC0gMSkgLSBleHAoLXggLSAxKSkgKiAoRSAvIDIpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtZXhwbTEnKTtcblxudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4vLyBgTWF0aC50YW5oYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50YW5oXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICB0YW5oOiBmdW5jdGlvbiB0YW5oKHgpIHtcbiAgICB2YXIgYSA9IGV4cG0xKHggPSAreCk7XG4gICAgdmFyIGIgPSBleHBtMSgteCk7XG4gICAgcmV0dXJuIGEgPT0gSW5maW5pdHkgPyAxIDogYiA9PSBJbmZpbml0eSA/IC0xIDogKGEgLSBiKSAvIChleHAoeCkgKyBleHAoLXgpKTtcbiAgfVxufSk7XG4iLCJ2YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcblxuLy8gTWF0aFtAQHRvU3RyaW5nVGFnXSBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG4gIH1cbn0pO1xuIiwidmFyIHZhbHVlT2YgPSAxLjAudmFsdWVPZjtcblxuLy8gYHRoaXNOdW1iZXJWYWx1ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRoaXNudW1iZXJ2YWx1ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlT2YuY2FsbCh2YWx1ZSk7XG59O1xuIiwiLy8gYSBzdHJpbmcgb2YgYWxsIHZhbGlkIHVuaWNvZGUgd2hpdGVzcGFjZXNcbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyJyArXG4gICdcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgd2hpdGVzcGFjZSA9ICdbJyArIHdoaXRlc3BhY2VzICsgJ10nO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cCh3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShsdHJpbSwgJycpO1xuICAgIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbUxlZnQsIHRyaW1TdGFydCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltc3RhcnRcbiAgc3RhcnQ6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltUmlnaHQsIHRyaW1FbmQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltXG4gIHRyaW06IGNyZWF0ZU1ldGhvZCgzKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpLmY7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIHRoaXNOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZScpO1xudmFyIHRyaW0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS50cmltO1xuXG52YXIgTlVNQkVSID0gJ051bWJlcic7XG52YXIgTmF0aXZlTnVtYmVyID0gZ2xvYmFsW05VTUJFUl07XG52YXIgTnVtYmVyUHJvdG90eXBlID0gTmF0aXZlTnVtYmVyLnByb3RvdHlwZTtcblxuLy8gYFRvTnVtZXJpY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbnVtZXJpY1xudmFyIHRvTnVtZXJpYyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJpbVZhbHVlID0gdG9QcmltaXRpdmUodmFsdWUsICdudW1iZXInKTtcbiAgcmV0dXJuIHR5cGVvZiBwcmltVmFsdWUgPT09ICdiaWdpbnQnID8gcHJpbVZhbHVlIDogdG9OdW1iZXIocHJpbVZhbHVlKTtcbn07XG5cbi8vIGBUb051bWJlcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbnVtYmVyXG52YXIgdG9OdW1iZXIgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGl0ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdudW1iZXInKTtcbiAgdmFyIGZpcnN0LCB0aGlyZCwgcmFkaXgsIG1heENvZGUsIGRpZ2l0cywgbGVuZ3RoLCBpbmRleCwgY29kZTtcbiAgaWYgKGlzU3ltYm9sKGl0KSkgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIG51bWJlcicpO1xuICBpZiAodHlwZW9mIGl0ID09ICdzdHJpbmcnICYmIGl0Lmxlbmd0aCA+IDIpIHtcbiAgICBpdCA9IHRyaW0oaXQpO1xuICAgIGZpcnN0ID0gaXQuY2hhckNvZGVBdCgwKTtcbiAgICBpZiAoZmlyc3QgPT09IDQzIHx8IGZpcnN0ID09PSA0NSkge1xuICAgICAgdGhpcmQgPSBpdC5jaGFyQ29kZUF0KDIpO1xuICAgICAgaWYgKHRoaXJkID09PSA4OCB8fCB0aGlyZCA9PT0gMTIwKSByZXR1cm4gTmFOOyAvLyBOdW1iZXIoJysweDEnKSBzaG91bGQgYmUgTmFOLCBvbGQgVjggZml4XG4gICAgfSBlbHNlIGlmIChmaXJzdCA9PT0gNDgpIHtcbiAgICAgIHN3aXRjaCAoaXQuY2hhckNvZGVBdCgxKSkge1xuICAgICAgICBjYXNlIDY2OiBjYXNlIDk4OiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgb2YgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzk6IGNhc2UgMTExOiByYWRpeCA9IDg7IG1heENvZGUgPSA1NTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgb2YgL14wb1swLTddKyQvaVxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZGlnaXRzID0gaXQuc2xpY2UoMik7XG4gICAgICBsZW5ndGggPSBkaWdpdHMubGVuZ3RoO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvZGUgPSBkaWdpdHMuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIC8vIHBhcnNlSW50IHBhcnNlcyBhIHN0cmluZyB0byBhIGZpcnN0IHVuYXZhaWxhYmxlIHN5bWJvbFxuICAgICAgICAvLyBidXQgVG9OdW1iZXIgc2hvdWxkIHJldHVybiBOYU4gaWYgYSBzdHJpbmcgY29udGFpbnMgdW5hdmFpbGFibGUgc3ltYm9sc1xuICAgICAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKSByZXR1cm4gTmFOO1xuICAgICAgfSByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLCByYWRpeCk7XG4gICAgfVxuICB9IHJldHVybiAraXQ7XG59O1xuXG4vLyBgTnVtYmVyYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXItY29uc3RydWN0b3JcbmlmIChpc0ZvcmNlZChOVU1CRVIsICFOYXRpdmVOdW1iZXIoJyAwbzEnKSB8fCAhTmF0aXZlTnVtYmVyKCcwYjEnKSB8fCBOYXRpdmVOdW1iZXIoJysweDEnKSkpIHtcbiAgdmFyIE51bWJlcldyYXBwZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IE5hdGl2ZU51bWJlcih0b051bWVyaWModmFsdWUpKTtcbiAgICB2YXIgZHVtbXkgPSB0aGlzO1xuICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgIHJldHVybiBkdW1teSBpbnN0YW5jZW9mIE51bWJlcldyYXBwZXIgJiYgZmFpbHMoZnVuY3Rpb24gKCkgeyB0aGlzTnVtYmVyVmFsdWUoZHVtbXkpOyB9KVxuICAgICAgPyBpbmhlcml0SWZSZXF1aXJlZChPYmplY3QobiksIGR1bW15LCBOdW1iZXJXcmFwcGVyKSA6IG47XG4gIH07XG4gIGZvciAodmFyIGtleXMgPSBERVNDUklQVE9SUyA/IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlTnVtYmVyKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTMjAxNSAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTMjAxNSBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdFUixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixwYXJzZUZsb2F0LHBhcnNlSW50LCcgK1xuICAgIC8vIEVTTmV4dFxuICAgICdmcm9tU3RyaW5nLHJhbmdlJ1xuICApLnNwbGl0KCcsJyksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajsgaisrKSB7XG4gICAgaWYgKGhhc093bihOYXRpdmVOdW1iZXIsIGtleSA9IGtleXNbal0pICYmICFoYXNPd24oTnVtYmVyV3JhcHBlciwga2V5KSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkoTnVtYmVyV3JhcHBlciwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTmF0aXZlTnVtYmVyLCBrZXkpKTtcbiAgICB9XG4gIH1cbiAgTnVtYmVyV3JhcHBlci5wcm90b3R5cGUgPSBOdW1iZXJQcm90b3R5cGU7XG4gIE51bWJlclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE51bWJlcldyYXBwZXI7XG4gIHJlZGVmaW5lKGdsb2JhbCwgTlVNQkVSLCBOdW1iZXJXcmFwcGVyKTtcbn1cbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTnVtYmVyLkVQU0lMT05gIGNvbnN0YW50XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5lcHNpbG9uXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7XG4gIEVQU0lMT046IE1hdGgucG93KDIsIC01Milcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyIGdsb2JhbElzRmluaXRlID0gZ2xvYmFsLmlzRmluaXRlO1xuXG4vLyBgTnVtYmVyLmlzRmluaXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmlzZmluaXRlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbnVtYmVyLWlzZmluaXRlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTnVtYmVyLmlzRmluaXRlIHx8IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ251bWJlcicgJiYgZ2xvYmFsSXNGaW5pdGUoaXQpO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG51bWJlcklzRmluaXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWJlci1pcy1maW5pdGUnKTtcblxuLy8gYE51bWJlci5pc0Zpbml0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5pc2Zpbml0ZVxuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwgeyBpc0Zpbml0ZTogbnVtYmVySXNGaW5pdGUgfSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBJc0ludGVncmFsTnVtYmVyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNpbnRlZ3JhbG51bWJlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW51bWJlci1pc2ludGVnZXIgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBOdW1iZXIuaXNJbnRlZ2VyIHx8IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0ludGVncmFsTnVtYmVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWludGVncmFsLW51bWJlcicpO1xuXG4vLyBgTnVtYmVyLmlzSW50ZWdlcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5pc2ludGVnZXJcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNJbnRlZ2VyOiBpc0ludGVncmFsTnVtYmVyXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTnVtYmVyLmlzTmFOYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmlzbmFuXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGlzTmFOOiBmdW5jdGlvbiBpc05hTihudW1iZXIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIHJldHVybiBudW1iZXIgIT0gbnVtYmVyO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzSW50ZWdyYWxOdW1iZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtaW50ZWdyYWwtbnVtYmVyJyk7XG5cbnZhciBhYnMgPSBNYXRoLmFicztcblxuLy8gYE51bWJlci5pc1NhZmVJbnRlZ2VyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLmlzc2FmZWludGVnZXJcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ3JhbE51bWJlcihudW1iZXIpICYmIGFicyhudW1iZXIpIDw9IDB4MUZGRkZGRkZGRkZGRkY7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAgY29uc3RhbnRcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXJcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlIH0sIHtcbiAgTUFYX1NBRkVfSU5URUdFUjogMHgxRkZGRkZGRkZGRkZGRlxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE51bWJlci5NSU5fU0FGRV9JTlRFR0VSYCBjb25zdGFudFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIubWluX3NhZmVfaW50ZWdlclxuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwge1xuICBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxRkZGRkZGRkZGRkZGRlxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyICRwYXJzZUZsb2F0ID0gZ2xvYmFsLnBhcnNlRmxvYXQ7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBJVEVSQVRPUiA9IFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRk9SQ0VEID0gMSAvICRwYXJzZUZsb2F0KHdoaXRlc3BhY2VzICsgJy0wJykgIT09IC1JbmZpbml0eVxuICAvLyBNUyBFZGdlIDE4LSBicm9rZW4gd2l0aCBib3hlZCBzeW1ib2xzXG4gIHx8IChJVEVSQVRPUiAmJiAhZmFpbHMoZnVuY3Rpb24gKCkgeyAkcGFyc2VGbG9hdChPYmplY3QoSVRFUkFUT1IpKTsgfSkpO1xuXG4vLyBgcGFyc2VGbG9hdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXBhcnNlZmxvYXQtc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyaW5nKSB7XG4gIHZhciB0cmltbWVkU3RyaW5nID0gdHJpbSh0b1N0cmluZyhzdHJpbmcpKTtcbiAgdmFyIHJlc3VsdCA9ICRwYXJzZUZsb2F0KHRyaW1tZWRTdHJpbmcpO1xuICByZXR1cm4gcmVzdWx0ID09PSAwICYmIHRyaW1tZWRTdHJpbmcuY2hhckF0KDApID09ICctJyA/IC0wIDogcmVzdWx0O1xufSA6ICRwYXJzZUZsb2F0O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQnKTtcblxuLy8gYE51bWJlci5wYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLnBhcnNlRmxvYXRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1udW1iZXItcGFyc2VmbG9hdCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUsIGZvcmNlZDogTnVtYmVyLnBhcnNlRmxvYXQgIT0gcGFyc2VGbG9hdCB9LCB7XG4gIHBhcnNlRmxvYXQ6IHBhcnNlRmxvYXRcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHRyaW0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciAkcGFyc2VJbnQgPSBnbG9iYWwucGFyc2VJbnQ7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBJVEVSQVRPUiA9IFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgaGV4ID0gL15bKy1dPzB4L2k7XG52YXIgRk9SQ0VEID0gJHBhcnNlSW50KHdoaXRlc3BhY2VzICsgJzA4JykgIT09IDggfHwgJHBhcnNlSW50KHdoaXRlc3BhY2VzICsgJzB4MTYnKSAhPT0gMjJcbiAgLy8gTVMgRWRnZSAxOC0gYnJva2VuIHdpdGggYm94ZWQgc3ltYm9sc1xuICB8fCAoSVRFUkFUT1IgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHsgJHBhcnNlSW50KE9iamVjdChJVEVSQVRPUikpOyB9KSk7XG5cbi8vIGBwYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRUQgPyBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4KSB7XG4gIHZhciBTID0gdHJpbSh0b1N0cmluZyhzdHJpbmcpKTtcbiAgcmV0dXJuICRwYXJzZUludChTLCAocmFkaXggPj4+IDApIHx8IChoZXgudGVzdChTKSA/IDE2IDogMTApKTtcbn0gOiAkcGFyc2VJbnQ7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBwYXJzZUludCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItcGFyc2UtaW50Jyk7XG5cbi8vIGBOdW1iZXIucGFyc2VJbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXIucGFyc2VpbnRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1udW1iZXItcGFyc2VpbnQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiQoeyB0YXJnZXQ6ICdOdW1iZXInLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IE51bWJlci5wYXJzZUludCAhPSBwYXJzZUludCB9LCB7XG4gIHBhcnNlSW50OiBwYXJzZUludFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0aGlzTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGhpcy1udW1iZXItdmFsdWUnKTtcbnZhciByZXBlYXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXJlcGVhdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBuYXRpdmVUb0ZpeGVkID0gMS4wLnRvRml4ZWQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG52YXIgcG93ID0gZnVuY3Rpb24gKHgsIG4sIGFjYykge1xuICByZXR1cm4gbiA9PT0gMCA/IGFjYyA6IG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYyk7XG59O1xuXG52YXIgbG9nID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG4gPSAwO1xuICB2YXIgeDIgPSB4O1xuICB3aGlsZSAoeDIgPj0gNDA5Nikge1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSAoeDIgPj0gMikge1xuICAgIG4gKz0gMTtcbiAgICB4MiAvPSAyO1xuICB9IHJldHVybiBuO1xufTtcblxudmFyIG11bHRpcGx5ID0gZnVuY3Rpb24gKGRhdGEsIG4sIGMpIHtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjMiA9IGM7XG4gIHdoaWxlICgrK2luZGV4IDwgNikge1xuICAgIGMyICs9IG4gKiBkYXRhW2luZGV4XTtcbiAgICBkYXRhW2luZGV4XSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xuXG52YXIgZGl2aWRlID0gZnVuY3Rpb24gKGRhdGEsIG4pIHtcbiAgdmFyIGluZGV4ID0gNjtcbiAgdmFyIGMgPSAwO1xuICB3aGlsZSAoLS1pbmRleCA+PSAwKSB7XG4gICAgYyArPSBkYXRhW2luZGV4XTtcbiAgICBkYXRhW2luZGV4XSA9IGZsb29yKGMgLyBuKTtcbiAgICBjID0gKGMgJSBuKSAqIDFlNztcbiAgfVxufTtcblxudmFyIGRhdGFUb1N0cmluZyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpbmRleCA9IDY7XG4gIHZhciBzID0gJyc7XG4gIHdoaWxlICgtLWluZGV4ID49IDApIHtcbiAgICBpZiAocyAhPT0gJycgfHwgaW5kZXggPT09IDAgfHwgZGF0YVtpbmRleF0gIT09IDApIHtcbiAgICAgIHZhciB0ID0gU3RyaW5nKGRhdGFbaW5kZXhdKTtcbiAgICAgIHMgPSBzID09PSAnJyA/IHQgOiBzICsgcmVwZWF0LmNhbGwoJzAnLCA3IC0gdC5sZW5ndGgpICsgdDtcbiAgICB9XG4gIH0gcmV0dXJuIHM7XG59O1xuXG52YXIgRk9SQ0VEID0gbmF0aXZlVG9GaXhlZCAmJiAoXG4gIDAuMDAwMDgudG9GaXhlZCgzKSAhPT0gJzAuMDAwJyB8fFxuICAwLjkudG9GaXhlZCgwKSAhPT0gJzEnIHx8XG4gIDEuMjU1LnRvRml4ZWQoMikgIT09ICcxLjI1JyB8fFxuICAxMDAwMDAwMDAwMDAwMDAwMTI4LjAudG9GaXhlZCgwKSAhPT0gJzEwMDAwMDAwMDAwMDAwMDAxMjgnXG4pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gIG5hdGl2ZVRvRml4ZWQuY2FsbCh7fSk7XG59KTtcblxuLy8gYE51bWJlci5wcm90b3R5cGUudG9GaXhlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW51bWJlci5wcm90b3R5cGUudG9maXhlZFxuJCh7IHRhcmdldDogJ051bWJlcicsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHRvRml4ZWQ6IGZ1bmN0aW9uIHRvRml4ZWQoZnJhY3Rpb25EaWdpdHMpIHtcbiAgICB2YXIgbnVtYmVyID0gdGhpc051bWJlclZhbHVlKHRoaXMpO1xuICAgIHZhciBmcmFjdERpZ2l0cyA9IHRvSW50ZWdlck9ySW5maW5pdHkoZnJhY3Rpb25EaWdpdHMpO1xuICAgIHZhciBkYXRhID0gWzAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIHZhciBzaWduID0gJyc7XG4gICAgdmFyIHJlc3VsdCA9ICcwJztcbiAgICB2YXIgZSwgeiwgaiwgaztcblxuICAgIGlmIChmcmFjdERpZ2l0cyA8IDAgfHwgZnJhY3REaWdpdHMgPiAyMCkgdGhyb3cgUmFuZ2VFcnJvcignSW5jb3JyZWN0IGZyYWN0aW9uIGRpZ2l0cycpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKG51bWJlciAhPSBudW1iZXIpIHJldHVybiAnTmFOJztcbiAgICBpZiAobnVtYmVyIDw9IC0xZTIxIHx8IG51bWJlciA+PSAxZTIxKSByZXR1cm4gU3RyaW5nKG51bWJlcik7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHNpZ24gPSAnLSc7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyID4gMWUtMjEpIHtcbiAgICAgIGUgPSBsb2cobnVtYmVyICogcG93KDIsIDY5LCAxKSkgLSA2OTtcbiAgICAgIHogPSBlIDwgMCA/IG51bWJlciAqIHBvdygyLCAtZSwgMSkgOiBudW1iZXIgLyBwb3coMiwgZSwgMSk7XG4gICAgICB6ICo9IDB4MTAwMDAwMDAwMDAwMDA7XG4gICAgICBlID0gNTIgLSBlO1xuICAgICAgaWYgKGUgPiAwKSB7XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIDAsIHopO1xuICAgICAgICBqID0gZnJhY3REaWdpdHM7XG4gICAgICAgIHdoaWxlIChqID49IDcpIHtcbiAgICAgICAgICBtdWx0aXBseShkYXRhLCAxZTcsIDApO1xuICAgICAgICAgIGogLT0gNztcbiAgICAgICAgfVxuICAgICAgICBtdWx0aXBseShkYXRhLCBwb3coMTAsIGosIDEpLCAwKTtcbiAgICAgICAgaiA9IGUgLSAxO1xuICAgICAgICB3aGlsZSAoaiA+PSAyMykge1xuICAgICAgICAgIGRpdmlkZShkYXRhLCAxIDw8IDIzKTtcbiAgICAgICAgICBqIC09IDIzO1xuICAgICAgICB9XG4gICAgICAgIGRpdmlkZShkYXRhLCAxIDw8IGopO1xuICAgICAgICBtdWx0aXBseShkYXRhLCAxLCAxKTtcbiAgICAgICAgZGl2aWRlKGRhdGEsIDIpO1xuICAgICAgICByZXN1bHQgPSBkYXRhVG9TdHJpbmcoZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdWx0aXBseShkYXRhLCAwLCB6KTtcbiAgICAgICAgbXVsdGlwbHkoZGF0YSwgMSA8PCAtZSwgMCk7XG4gICAgICAgIHJlc3VsdCA9IGRhdGFUb1N0cmluZyhkYXRhKSArIHJlcGVhdC5jYWxsKCcwJywgZnJhY3REaWdpdHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZnJhY3REaWdpdHMgPiAwKSB7XG4gICAgICBrID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgIHJlc3VsdCA9IHNpZ24gKyAoayA8PSBmcmFjdERpZ2l0c1xuICAgICAgICA/ICcwLicgKyByZXBlYXQuY2FsbCgnMCcsIGZyYWN0RGlnaXRzIC0gaykgKyByZXN1bHRcbiAgICAgICAgOiByZXN1bHQuc2xpY2UoMCwgayAtIGZyYWN0RGlnaXRzKSArICcuJyArIHJlc3VsdC5zbGljZShrIC0gZnJhY3REaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gc2lnbiArIHJlc3VsdDtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB0aGlzTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGhpcy1udW1iZXItdmFsdWUnKTtcblxudmFyIG5hdGl2ZVRvUHJlY2lzaW9uID0gMS4wLnRvUHJlY2lzaW9uO1xuXG52YXIgRk9SQ0VEID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBJRTctXG4gIHJldHVybiBuYXRpdmVUb1ByZWNpc2lvbi5jYWxsKDEsIHVuZGVmaW5lZCkgIT09ICcxJztcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IH4gQW5kcm9pZCA0LjMtXG4gIG5hdGl2ZVRvUHJlY2lzaW9uLmNhbGwoe30pO1xufSk7XG5cbi8vIGBOdW1iZXIucHJvdG90eXBlLnRvUHJlY2lzaW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLnByb3RvdHlwZS50b3ByZWNpc2lvblxuJCh7IHRhcmdldDogJ051bWJlcicsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHRvUHJlY2lzaW9uOiBmdW5jdGlvbiB0b1ByZWNpc2lvbihwcmVjaXNpb24pIHtcbiAgICByZXR1cm4gcHJlY2lzaW9uID09PSB1bmRlZmluZWRcbiAgICAgID8gbmF0aXZlVG9QcmVjaXNpb24uY2FsbCh0aGlzTnVtYmVyVmFsdWUodGhpcykpXG4gICAgICA6IG5hdGl2ZVRvUHJlY2lzaW9uLmNhbGwodGhpc051bWJlclZhbHVlKHRoaXMpLCBwcmVjaXNpb24pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gc2hvdWxkIGhhdmUgY29ycmVjdCBvcmRlciBvZiBvcGVyYXRpb25zIChFZGdlIGJ1ZylcbiAgaWYgKERFU0NSSVBUT1JTICYmICRhc3NpZ24oeyBiOiAxIH0sICRhc3NpZ24oZGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAnYicsIHtcbiAgICAgICAgdmFsdWU6IDMsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCB7IGI6IDIgfSkpLmIgIT09IDEpIHJldHVybiB0cnVlO1xuICAvLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1ZylcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN5bWJvbCAtLSBzYWZlXG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgdmFyIGFscGhhYmV0ID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtzeW1ib2xdID0gNztcbiAgYWxwaGFiZXQuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGNocikgeyBCW2Nocl0gPSBjaHI7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbc3ltYm9sXSAhPSA3IHx8IG9iamVjdEtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IGFscGhhYmV0O1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgdmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZjtcbiAgd2hpbGUgKGFyZ3VtZW50c0xlbmd0aCA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJbmRleGVkT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBvYmplY3RLZXlzKFMpLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoUykpIDogb2JqZWN0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBhc3NpZ24gfSwge1xuICBhc3NpZ246IGFzc2lnblxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGNyZWF0ZTogY3JlYXRlXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBXRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXdlYmtpdC12ZXJzaW9uJyk7XG5cbi8vIEZvcmNlZCByZXBsYWNlbWVudCBvYmplY3QgcHJvdG90eXBlIGFjY2Vzc29ycyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IElTX1BVUkUgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhpcyBmZWF0dXJlIGRldGVjdGlvbiBjcmFzaGVzIG9sZCBXZWJLaXRcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzIzMlxuICBpZiAoV0VCS0lUICYmIFdFQktJVCA8IDUzNSkgcmV0dXJuO1xuICB2YXIga2V5ID0gTWF0aC5yYW5kb20oKTtcbiAgLy8gSW4gRkYgdGhyb3dzIG9ubHkgZGVmaW5lIG1ldGhvZHNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmLCBuby11c2VsZXNzLWNhbGwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgX19kZWZpbmVTZXR0ZXJfXy5jYWxsKG51bGwsIGtleSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgZGVsZXRlIGdsb2JhbFtrZXldO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIEZPUkNFRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvdG90eXBlLWFjY2Vzc29ycy1mb3JjZWQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfX2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfX1xuaWYgKERFU0NSSVBUT1JTKSB7XG4gICQoeyB0YXJnZXQ6ICdPYmplY3QnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAgIF9fZGVmaW5lR2V0dGVyX186IGZ1bmN0aW9uIF9fZGVmaW5lR2V0dGVyX18oUCwgZ2V0dGVyKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKHRvT2JqZWN0KHRoaXMpLCBQLCB7IGdldDogYUNhbGxhYmxlKGdldHRlciksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIURFU0NSSVBUT1JTLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBkZWZpbmVQcm9wZXJ0aWVzOiBkZWZpbmVQcm9wZXJ0aWVzXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgb2JqZWN0RGVmaW5lUHJvcGVydHlNb2RpbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhREVTQ1JJUFRPUlMsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGRlZmluZVByb3BlcnR5OiBvYmplY3REZWZpbmVQcm9wZXJ0eU1vZGlsZS5mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRk9SQ0VEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm90b3R5cGUtYWNjZXNzb3JzLWZvcmNlZCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZVNldHRlcl9fYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZVNldHRlcl9fXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gICAgX19kZWZpbmVTZXR0ZXJfXzogZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyhQLCBzZXR0ZXIpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYodG9PYmplY3QodGhpcyksIFAsIHsgc2V0OiBhQ2FsbGFibGUoc2V0dGVyKSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKS5mO1xuXG4vLyBgT2JqZWN0LnsgZW50cmllcywgdmFsdWVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVE9fRU5UUklFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoaXQpO1xuICAgIHZhciBrZXlzID0gb2JqZWN0S2V5cyhPKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSB7XG4gICAgICBrZXkgPSBrZXlzW2krK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoTywga2V5KSkge1xuICAgICAgICByZXN1bHQucHVzaChUT19FTlRSSUVTID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYE9iamVjdC5lbnRyaWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZW50cmllc1xuICBlbnRyaWVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBPYmplY3QudmFsdWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QudmFsdWVzXG4gIHZhbHVlczogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRlbnRyaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1hcnJheScpLmVudHJpZXM7XG5cbi8vIGBPYmplY3QuZW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5lbnRyaWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoTykge1xuICAgIHJldHVybiAkZW50cmllcyhPKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBGUkVFWklORyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mcmVlemluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgb25GcmVlemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEnKS5vbkZyZWV6ZTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1mcmVlemUgLS0gc2FmZVxudmFyICRmcmVlemUgPSBPYmplY3QuZnJlZXplO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRmcmVlemUoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmZyZWV6ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5mcmVlemVcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMsIHNoYW06ICFGUkVFWklORyB9LCB7XG4gIGZyZWV6ZTogZnVuY3Rpb24gZnJlZXplKGl0KSB7XG4gICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShvbkZyZWV6ZShpdCkpIDogaXQ7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QuZnJvbUVudHJpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWZyb20tZW50cmllc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tRW50cmllczogZnVuY3Rpb24gZnJvbUVudHJpZXMoaXRlcmFibGUpIHtcbiAgICB2YXIgb2JqID0ge307XG4gICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KG9iaiwgaywgdik7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlIH0pO1xuICAgIHJldHVybiBvYmo7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcigxKTsgfSk7XG52YXIgRk9SQ0VEID0gIURFU0NSSVBUT1JTIHx8IEZBSUxTX09OX1BSSU1JVElWRVM7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VELCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcih0b0luZGV4ZWRPYmplY3QoaXQpLCBrZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yczogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICAgIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGtleSwgZGVzY3JpcHRvcjtcbiAgICB3aGlsZSAoa2V5cy5sZW5ndGggPiBpbmRleCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBrZXkgPSBrZXlzW2luZGV4KytdKTtcbiAgICAgIGlmIChkZXNjcmlwdG9yICE9PSB1bmRlZmluZWQpIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtZXh0ZXJuYWwnKS5mO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKDEpOyB9KTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMgfSwge1xuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiBnZXRPd25Qcm9wZXJ0eU5hbWVzXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbmF0aXZlR2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBuYXRpdmVHZXRQcm90b3R5cGVPZigxKTsgfSk7XG5cbi8vIGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2ZcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMsIHNoYW06ICFDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgfSwge1xuICBnZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlR2V0UHJvdG90eXBlT2YodG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG5cbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QuaGFzT3duYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFjY2Vzc2libGUtb2JqZWN0LWhhc293bnByb3BlcnR5XG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGhhc093bjogaGFzT3duXG59KTtcbiIsIi8vIGBTYW1lVmFsdWVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zYW1ldmFsdWVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4geCA9PT0geSA/IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5IDogeCAhPSB4ICYmIHkgIT0geTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYW1lLXZhbHVlJyk7XG5cbi8vIGBPYmplY3QuaXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuaXNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXM6IGlzXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaXNleHRlbnNpYmxlIC0tIHNhZmVcbnZhciAkaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyAkaXNFeHRlbnNpYmxlKDEpOyB9KTtcblxuLy8gYE9iamVjdC5pc0V4dGVuc2libGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuaXNleHRlbnNpYmxlXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTIH0sIHtcbiAgaXNFeHRlbnNpYmxlOiBmdW5jdGlvbiBpc0V4dGVuc2libGUoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUoaXQpIDogdHJ1ZSA6IGZhbHNlO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaXNmcm96ZW4gLS0gc2FmZVxudmFyICRpc0Zyb3plbiA9IE9iamVjdC5pc0Zyb3plbjtcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyAkaXNGcm96ZW4oMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmlzRnJvemVuYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmlzZnJvemVuXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTIH0sIHtcbiAgaXNGcm96ZW46IGZ1bmN0aW9uIGlzRnJvemVuKGl0KSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KGl0KSA/ICRpc0Zyb3plbiA/ICRpc0Zyb3plbihpdCkgOiBmYWxzZSA6IHRydWU7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc3NlYWxlZCAtLSBzYWZlXG52YXIgJGlzU2VhbGVkID0gT2JqZWN0LmlzU2VhbGVkO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRpc1NlYWxlZCgxKTsgfSk7XG5cbi8vIGBPYmplY3QuaXNTZWFsZWRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuaXNzZWFsZWRcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZBSUxTX09OX1BSSU1JVElWRVMgfSwge1xuICBpc1NlYWxlZDogZnVuY3Rpb24gaXNTZWFsZWQoaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzU2VhbGVkID8gJGlzU2VhbGVkKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IG5hdGl2ZUtleXMoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyh0b09iamVjdChpdCkpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRk9SQ0VEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm90b3R5cGUtYWNjZXNzb3JzLWZvcmNlZCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX19gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX19cbmlmIChERVNDUklQVE9SUykge1xuICAkKHsgdGFyZ2V0OiAnT2JqZWN0JywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgICBfX2xvb2t1cEdldHRlcl9fOiBmdW5jdGlvbiBfX2xvb2t1cEdldHRlcl9fKFApIHtcbiAgICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgICB2YXIga2V5ID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgICAgIHZhciBkZXNjO1xuICAgICAgZG8ge1xuICAgICAgICBpZiAoZGVzYyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBrZXkpKSByZXR1cm4gZGVzYy5nZXQ7XG4gICAgICB9IHdoaWxlIChPID0gZ2V0UHJvdG90eXBlT2YoTykpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIEZPUkNFRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvdG90eXBlLWFjY2Vzc29ycy1mb3JjZWQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cFNldHRlcl9fYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cFNldHRlcl9fXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gICAgX19sb29rdXBTZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyhQKSB7XG4gICAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIGtleSA9IHRvUHJvcGVydHlLZXkoUCk7XG4gICAgICB2YXIgZGVzYztcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKGRlc2MgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywga2V5KSkgcmV0dXJuIGRlc2Muc2V0O1xuICAgICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgb25GcmVlemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEnKS5vbkZyZWV6ZTtcbnZhciBGUkVFWklORyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mcmVlemluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtcHJldmVudGV4dGVuc2lvbnMgLS0gc2FmZVxudmFyICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyAkcHJldmVudEV4dGVuc2lvbnMoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByZXZlbnRleHRlbnNpb25zXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTLCBzaGFtOiAhRlJFRVpJTkcgfSwge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnMoaXQpIHtcbiAgICByZXR1cm4gJHByZXZlbnRFeHRlbnNpb25zICYmIGlzT2JqZWN0KGl0KSA/ICRwcmV2ZW50RXh0ZW5zaW9ucyhvbkZyZWV6ZShpdCkpIDogaXQ7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgb25GcmVlemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEnKS5vbkZyZWV6ZTtcbnZhciBGUkVFWklORyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mcmVlemluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2VhbCAtLSBzYWZlXG52YXIgJHNlYWwgPSBPYmplY3Quc2VhbDtcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyAkc2VhbCgxKTsgfSk7XG5cbi8vIGBPYmplY3Quc2VhbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5zZWFsXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTLCBzaGFtOiAhRlJFRVpJTkcgfSwge1xuICBzZWFsOiBmdW5jdGlvbiBzZWFsKGl0KSB7XG4gICAgcmV0dXJuICRzZWFsICYmIGlzT2JqZWN0KGl0KSA/ICRzZWFsKG9uRnJlZXplKGl0KSkgOiBpdDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNldFByb3RvdHlwZU9mOiBzZXRQcm90b3R5cGVPZlxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8ge30udG9TdHJpbmcgOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xufTtcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKCFUT19TVFJJTkdfVEFHX1NVUFBPUlQpIHtcbiAgcmVkZWZpbmUoT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgdG9TdHJpbmcsIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHZhbHVlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tYXJyYXknKS52YWx1ZXM7XG5cbi8vIGBPYmplY3QudmFsdWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnZhbHVlc1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhPKSB7XG4gICAgcmV0dXJuICR2YWx1ZXMoTyk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWZsb2F0Jyk7XG5cbi8vIGBwYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VmbG9hdC1zdHJpbmdcbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogcGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCB9LCB7XG4gIHBhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItcGFyc2UtaW50Jyk7XG5cbi8vIGBwYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBwYXJzZUludCAhPSAkcGFyc2VJbnQgfSwge1xuICBwYXJzZUludDogJHBhcnNlSW50XG59KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLlByb21pc2U7XG4iLCJ2YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gLyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3QodXNlckFnZW50KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBzZXQgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGxvY2F0aW9uLCBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblxudHJ5IHtcbiAgLy8gRGVubyB0aHJvd3MgYSBSZWZlcmVuY2VFcnJvciBvbiBgbG9jYXRpb25gIGFjY2VzcyB3aXRob3V0IGAtLWxvY2F0aW9uYCBmbGFnXG4gIGxvY2F0aW9uID0gZ2xvYmFsLmxvY2F0aW9uO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG52YXIgcnVuID0gZnVuY3Rpb24gKGlkKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICBpZiAocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcblxudmFyIHJ1bm5lciA9IGZ1bmN0aW9uIChpZCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJ1bihpZCk7XG4gIH07XG59O1xuXG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuKGV2ZW50LmRhdGEpO1xufTtcblxudmFyIHBvc3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgLy8gb2xkIGVuZ2luZXMgaGF2ZSBub3QgbG9jYXRpb24ub3JpZ2luXG4gIGdsb2JhbC5wb3N0TWVzc2FnZShTdHJpbmcoaWQpLCBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBsb2NhdGlvbi5ob3N0KTtcbn07XG5cbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0IHx8ICFjbGVhcikge1xuICBzZXQgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHNwZWMgcmVxdWlyZW1lbnRcbiAgICAgIChpc0NhbGxhYmxlKGZuKSA/IGZuIDogRnVuY3Rpb24oZm4pKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKElTX05PREUpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgLy8gZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82MjRcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCAmJiAhSVNfSU9TKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBiaW5kKHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJlxuICAgIGlzQ2FsbGFibGUoZ2xvYmFsLnBvc3RNZXNzYWdlKSAmJlxuICAgICFnbG9iYWwuaW1wb3J0U2NyaXB0cyAmJlxuICAgIGxvY2F0aW9uICYmIGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKHBvc3QpXG4gICkge1xuICAgIGRlZmVyID0gcG9zdDtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QodXNlckFnZW50KSAmJiBnbG9iYWwuUGViYmxlICE9PSB1bmRlZmluZWQ7XG4iLCJ2YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdCh1c2VyQWdlbnQpO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19JT1NfUEVCQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MtcGViYmxlJyk7XG52YXIgSVNfV0VCT1NfV0VCS0lUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy13ZWJvcy13ZWJraXQnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBNdXRhdGlvbk9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbi8vIE5vZGUuanMgMTEgc2hvd3MgRXhwZXJpbWVudGFsV2FybmluZyBvbiBnZXR0aW5nIGBxdWV1ZU1pY3JvdGFza2BcbnZhciBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAncXVldWVNaWNyb3Rhc2snKTtcbnZhciBxdWV1ZU1pY3JvdGFzayA9IHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvciAmJiBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IudmFsdWU7XG5cbnZhciBmbHVzaCwgaGVhZCwgbGFzdCwgbm90aWZ5LCB0b2dnbGUsIG5vZGUsIHByb21pc2UsIHRoZW47XG5cbi8vIG1vZGVybiBlbmdpbmVzIGhhdmUgcXVldWVNaWNyb3Rhc2sgbWV0aG9kXG5pZiAoIXF1ZXVlTWljcm90YXNrKSB7XG4gIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIC8vIGFsc28gZXhjZXB0IFdlYk9TIFdlYmtpdCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODk4XG4gIGlmICghSVNfSU9TICYmICFJU19OT0RFICYmICFJU19XRUJPU19XRUJLSVQgJiYgTXV0YXRpb25PYnNlcnZlciAmJiBkb2N1bWVudCkge1xuICAgIHRvZ2dsZSA9IHRydWU7XG4gICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKCFJU19JT1NfUEVCQkxFICYmIFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgLy8gd29ya2Fyb3VuZCBvZiBXZWJLaXQgfiBpT1MgU2FmYXJpIDEwLjEgYnVnXG4gICAgcHJvbWlzZS5jb25zdHJ1Y3RvciA9IFByb21pc2U7XG4gICAgdGhlbiA9IHByb21pc2UudGhlbjtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGVuLmNhbGwocHJvbWlzZSwgZmx1c2gpO1xuICAgIH07XG4gIC8vIE5vZGUuanMgd2l0aG91dCBwcm9taXNlc1xuICB9IGVsc2UgaWYgKElTX05PREUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHF1ZXVlTWljcm90YXNrIHx8IGZ1bmN0aW9uIChmbikge1xuICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gIGlmICghaGVhZCkge1xuICAgIGhlYWQgPSB0YXNrO1xuICAgIG5vdGlmeSgpO1xuICB9IGxhc3QgPSB0YXNrO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG52YXIgUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUNhbGxhYmxlKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFDYWxsYWJsZShyZWplY3QpO1xufTtcblxuLy8gYE5ld1Byb21pc2VDYXBhYmlsaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbmV3cHJvbWlzZWNhcGFiaWxpdHlcbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gIHZhciBjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGU7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY29uc29sZS5lcnJvcihhKSA6IGNvbnNvbGUuZXJyb3IoYSwgYik7XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGZhbHNlLCB2YWx1ZTogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIHZhbHVlOiBlcnJvciB9O1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgTmF0aXZlUHJvbWlzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3RvcicpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWljcm90YXNrJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgaG9zdFJlcG9ydEVycm9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX0JST1dTRVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXInKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFBST01JU0UpO1xudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlICYmIE5hdGl2ZVByb21pc2UucHJvdG90eXBlO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvciA9IE5hdGl2ZVByb21pc2U7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG52YXIgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHk7XG52YXIgRElTUEFUQ0hfRVZFTlQgPSAhIShkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAmJiBnbG9iYWwuZGlzcGF0Y2hFdmVudCk7XG52YXIgTkFUSVZFX1JFSkVDVElPTl9FVkVOVCA9IGlzQ2FsbGFibGUoZ2xvYmFsLlByb21pc2VSZWplY3Rpb25FdmVudCk7XG52YXIgVU5IQU5ETEVEX1JFSkVDVElPTiA9ICd1bmhhbmRsZWRyZWplY3Rpb24nO1xudmFyIFJFSkVDVElPTl9IQU5ETEVEID0gJ3JlamVjdGlvbmhhbmRsZWQnO1xudmFyIFBFTkRJTkcgPSAwO1xudmFyIEZVTEZJTExFRCA9IDE7XG52YXIgUkVKRUNURUQgPSAyO1xudmFyIEhBTkRMRUQgPSAxO1xudmFyIFVOSEFORExFRCA9IDI7XG52YXIgU1VCQ0xBU1NJTkcgPSBmYWxzZTtcbnZhciBJbnRlcm5hbCwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFByb21pc2VXcmFwcGVyLCBuYXRpdmVUaGVuO1xuXG52YXIgRk9SQ0VEID0gaXNGb3JjZWQoUFJPTUlTRSwgZnVuY3Rpb24gKCkge1xuICB2YXIgUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgPSBpbnNwZWN0U291cmNlKFByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIHZhciBHTE9CQUxfQ09SRV9KU19QUk9NSVNFID0gUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgIT09IFN0cmluZyhQcm9taXNlQ29uc3RydWN0b3IpO1xuICAvLyBWOCA2LjYgKE5vZGUgMTAgYW5kIENocm9tZSA2NikgaGF2ZSBhIGJ1ZyB3aXRoIHJlc29sdmluZyBjdXN0b20gdGhlbmFibGVzXG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAvLyBXZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICBpZiAoIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgVjhfVkVSU0lPTiA9PT0gNjYpIHJldHVybiB0cnVlO1xuICAvLyBXZSBuZWVkIFByb21pc2UjZmluYWxseSBpbiB0aGUgcHVyZSB2ZXJzaW9uIGZvciBwcmV2ZW50aW5nIHByb3RvdHlwZSBwb2xsdXRpb25cbiAgaWYgKElTX1BVUkUgJiYgIVByb21pc2VDb25zdHJ1Y3RvclByb3RvdHlwZVsnZmluYWxseSddKSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgY2FuJ3QgdXNlIEBAc3BlY2llcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKFY4X1ZFUlNJT04gPj0gNTEgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFKSkgcmV0dXJuIGZhbHNlO1xuICAvLyBEZXRlY3QgY29ycmVjdG5lc3Mgb2Ygc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSgxKTsgfSk7XG4gIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgZXhlYyhmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gIH07XG4gIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBGYWtlUHJvbWlzZTtcbiAgU1VCQ0xBU1NJTkcgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICBpZiAoIVNVQkNMQVNTSU5HKSByZXR1cm4gdHJ1ZTtcbiAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICByZXR1cm4gIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgSVNfQlJPV1NFUiAmJiAhTkFUSVZFX1JFSkVDVElPTl9FVkVOVDtcbn0pO1xuXG52YXIgSU5DT1JSRUNUX0lURVJBVElPTiA9IEZPUkNFRCB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBQcm9taXNlQ29uc3RydWN0b3IuYWxsKGl0ZXJhYmxlKVsnY2F0Y2gnXShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGhlbHBlcnNcbnZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIGlzQ2FsbGFibGUodGhlbiA9IGl0LnRoZW4pID8gdGhlbiA6IGZhbHNlO1xufTtcblxudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChzdGF0ZSwgaXNSZWplY3QpIHtcbiAgaWYgKHN0YXRlLm5vdGlmaWVkKSByZXR1cm47XG4gIHN0YXRlLm5vdGlmaWVkID0gdHJ1ZTtcbiAgdmFyIGNoYWluID0gc3RhdGUucmVhY3Rpb25zO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICAgIHZhciBvayA9IHN0YXRlLnN0YXRlID09IEZVTEZJTExFRDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBjaGFpbltpbmRleCsrXTtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgICAgICBzdGF0ZS5yZWplY3Rpb24gPSBIQU5ETEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHN0YXRlLnJlYWN0aW9ucyA9IFtdO1xuICAgIHN0YXRlLm5vdGlmaWVkID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFzdGF0ZS5yZWplY3Rpb24pIG9uVW5oYW5kbGVkKHN0YXRlKTtcbiAgfSk7XG59O1xuXG52YXIgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChuYW1lLCBwcm9taXNlLCByZWFzb24pIHtcbiAgdmFyIGV2ZW50LCBoYW5kbGVyO1xuICBpZiAoRElTUEFUQ0hfRVZFTlQpIHtcbiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LnByb21pc2UgPSBwcm9taXNlO1xuICAgIGV2ZW50LnJlYXNvbiA9IHJlYXNvbjtcbiAgICBldmVudC5pbml0RXZlbnQobmFtZSwgZmFsc2UsIHRydWUpO1xuICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSBlbHNlIGV2ZW50ID0geyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHJlYXNvbiB9O1xuICBpZiAoIU5BVElWRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICAgIHZhciBJU19VTkhBTkRMRUQgPSBpc1VuaGFuZGxlZChzdGF0ZSk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoSVNfVU5IQU5ETEVEKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKElTX05PREUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoVU5IQU5ETEVEX1JFSkVDVElPTiwgcHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgc3RhdGUucmVqZWN0aW9uID0gSVNfTk9ERSB8fCBpc1VuaGFuZGxlZChzdGF0ZSkgPyBVTkhBTkRMRUQgOiBIQU5ETEVEO1xuICAgICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLnJlamVjdGlvbiAhPT0gSEFORExFRCAmJiAhc3RhdGUucGFyZW50O1xufTtcblxudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoUkVKRUNUSU9OX0hBTkRMRUQsIHByb21pc2UsIHN0YXRlLnZhbHVlKTtcbiAgfSk7XG59O1xuXG52YXIgYmluZCA9IGZ1bmN0aW9uIChmbiwgc3RhdGUsIHVud3JhcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm4oc3RhdGUsIHZhbHVlLCB1bndyYXApO1xuICB9O1xufTtcblxudmFyIGludGVybmFsUmVqZWN0ID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgc3RhdGUuc3RhdGUgPSBSRUpFQ1RFRDtcbiAgbm90aWZ5KHN0YXRlLCB0cnVlKTtcbn07XG5cbnZhciBpbnRlcm5hbFJlc29sdmUgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICB0cnkge1xuICAgIGlmIChzdGF0ZS5mYWNhZGUgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICB2YXIgdGhlbiA9IGlzVGhlbmFibGUodmFsdWUpO1xuICAgIGlmICh0aGVuKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRUQpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgUHJvbWlzZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFKTtcbiAgICBhQ2FsbGFibGUoZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKSwgYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaW50ZXJuYWxSZWplY3Qoc3RhdGUsIGVycm9yKTtcbiAgICB9XG4gIH07XG4gIFByb21pc2VDb25zdHJ1Y3RvclByb3RvdHlwZSA9IFByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgICAgdHlwZTogUFJPTUlTRSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgbm90aWZpZWQ6IGZhbHNlLFxuICAgICAgcGFyZW50OiBmYWxzZSxcbiAgICAgIHJlYWN0aW9uczogW10sXG4gICAgICByZWplY3Rpb246IGZhbHNlLFxuICAgICAgc3RhdGU6IFBFTkRJTkcsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKFByb21pc2VDb25zdHJ1Y3RvclByb3RvdHlwZSwge1xuICAgIC8vIGBQcm9taXNlLnByb3RvdHlwZS50aGVuYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLnRoZW5cbiAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBQcm9taXNlQ29uc3RydWN0b3IpKTtcbiAgICAgIHJlYWN0aW9uLm9rID0gaXNDYWxsYWJsZShvbkZ1bGZpbGxlZCkgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgICByZWFjdGlvbi5mYWlsID0gaXNDYWxsYWJsZShvblJlamVjdGVkKSAmJiBvblJlamVjdGVkO1xuICAgICAgcmVhY3Rpb24uZG9tYWluID0gSVNfTk9ERSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgc3RhdGUucGFyZW50ID0gdHJ1ZTtcbiAgICAgIHN0YXRlLnJlYWN0aW9ucy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmIChzdGF0ZS5zdGF0ZSAhPSBQRU5ESU5HKSBub3RpZnkoc3RhdGUsIGZhbHNlKTtcbiAgICAgIHJldHVybiByZWFjdGlvbi5wcm9taXNlO1xuICAgIH0sXG4gICAgLy8gYFByb21pc2UucHJvdG90eXBlLmNhdGNoYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLmNhdGNoXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUocHJvbWlzZSk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpO1xuICAgIHRoaXMucmVqZWN0ID0gYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpO1xuICB9O1xuICBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICAgIHJldHVybiBDID09PSBQcm9taXNlQ29uc3RydWN0b3IgfHwgQyA9PT0gUHJvbWlzZVdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcblxuICBpZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlKSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGUudGhlbjtcblxuICAgIGlmICghU1VCQ0xBU1NJTkcpIHtcbiAgICAgIC8vIG1ha2UgYFByb21pc2UjdGhlbmAgcmV0dXJuIGEgcG9seWZpbGxlZCBgUHJvbWlzZWAgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICAgIHJlZGVmaW5lKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBuYXRpdmVUaGVuLmNhbGwodGhhdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjQwXG4gICAgICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcblxuICAgICAgLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjY2F0Y2hgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuICAgICAgcmVkZWZpbmUoTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2NhdGNoJywgUHJvbWlzZUNvbnN0cnVjdG9yUHJvdG90eXBlWydjYXRjaCddLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIGAuY29uc3RydWN0b3IgPT09IFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICB0cnkge1xuICAgICAgZGVsZXRlIE5hdGl2ZVByb21pc2VQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgLy8gbWFrZSBgaW5zdGFuY2VvZiBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICBzZXRQcm90b3R5cGVPZihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCBQcm9taXNlQ29uc3RydWN0b3JQcm90b3R5cGUpO1xuICAgIH1cbiAgfVxufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIFByb21pc2U6IFByb21pc2VDb25zdHJ1Y3RvclxufSk7XG5cbnNldFRvU3RyaW5nVGFnKFByb21pc2VDb25zdHJ1Y3RvciwgUFJPTUlTRSwgZmFsc2UsIHRydWUpO1xuc2V0U3BlY2llcyhQUk9NSVNFKTtcblxuUHJvbWlzZVdyYXBwZXIgPSBnZXRCdWlsdEluKFBST01JU0UpO1xuXG4vLyBzdGF0aWNzXG4kKHsgdGFyZ2V0OiBQUk9NSVNFLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIC8vIGBQcm9taXNlLnJlamVjdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZWplY3RcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgY2FwYWJpbGl0eS5yZWplY3QuY2FsbCh1bmRlZmluZWQsIHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiBQUk9NSVNFLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfHwgRk9SQ0VEIH0sIHtcbiAgLy8gYFByb21pc2UucmVzb2x2ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZXNvbHZlXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShJU19QVVJFICYmIHRoaXMgPT09IFByb21pc2VXcmFwcGVyID8gUHJvbWlzZUNvbnN0cnVjdG9yIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiBQUk9NSVNFLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICAvLyBgUHJvbWlzZS5hbGxgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYWxsXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgJHByb21pc2VSZXNvbHZlLmNhbGwoQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyBgUHJvbWlzZS5yYWNlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJhY2VcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICAkcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBQcm9taXNlLmFsbFNldHRsZWRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbHNldHRsZWRcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGFsbFNldHRsZWQ6IGZ1bmN0aW9uIGFsbFNldHRsZWQoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAnZnVsZmlsbGVkJywgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB7IHN0YXR1czogJ3JlamVjdGVkJywgcmVhc29uOiBlcnJvciB9O1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbnZhciBQUk9NSVNFX0FOWV9FUlJPUiA9ICdObyBvbmUgcHJvbWlzZSByZXNvbHZlZCc7XG5cbi8vIGBQcm9taXNlLmFueWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYW55XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUgfSwge1xuICBhbnk6IGZ1bmN0aW9uIGFueShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICB2YXIgYWxyZWFkeVJlc29sdmVkID0gZmFsc2U7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5UmVqZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgZXJyb3JzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIHByb21pc2VSZXNvbHZlLmNhbGwoQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeVJlamVjdGVkIHx8IGFscmVhZHlSZXNvbHZlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5UmVqZWN0ZWQgfHwgYWxyZWFkeVJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeVJlamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBlcnJvcnNbaW5kZXhdID0gZXJyb3I7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVqZWN0KG5ldyAoZ2V0QnVpbHRJbignQWdncmVnYXRlRXJyb3InKSkoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVqZWN0KG5ldyAoZ2V0QnVpbHRJbignQWdncmVnYXRlRXJyb3InKSkoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3RvcicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xuXG4vLyBTYWZhcmkgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4MjlcbnZhciBOT05fR0VORVJJQyA9ICEhTmF0aXZlUHJvbWlzZSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIE5hdGl2ZVByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10uY2FsbCh7IHRoZW46IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuZmluYWxseVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBOT05fR0VORVJJQyB9LCB7XG4gICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGdldEJ1aWx0SW4oJ1Byb21pc2UnKSk7XG4gICAgdmFyIGlzRnVuY3Rpb24gPSBpc0NhbGxhYmxlKG9uRmluYWxseSk7XG4gICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5LFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseVxuICAgICk7XG4gIH1cbn0pO1xuXG4vLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNmaW5hbGx5YCBwcm9wZXJseSB3b3JrcyB3aXRoIHBhdGNoZWQgYFByb21pc2UjdGhlbmBcbmlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2UpKSB7XG4gIHZhciBtZXRob2QgPSBnZXRCdWlsdEluKCdQcm9taXNlJykucHJvdG90eXBlWydmaW5hbGx5J107XG4gIGlmIChOYXRpdmVQcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddICE9PSBtZXRob2QpIHtcbiAgICByZWRlZmluZShOYXRpdmVQcm9taXNlLnByb3RvdHlwZSwgJ2ZpbmFsbHknLCBtZXRob2QsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICB9XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIG5hdGl2ZUFwcGx5ID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdhcHBseScpO1xudmFyIGZ1bmN0aW9uQXBwbHkgPSBGdW5jdGlvbi5hcHBseTtcblxuLy8gTVMgRWRnZSBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG52YXIgT1BUSU9OQUxfQVJHVU1FTlRTX0xJU1QgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBuYXRpdmVBcHBseShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGBSZWZsZWN0LmFwcGx5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5hcHBseVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IE9QVElPTkFMX0FSR1VNRU5UU19MSVNUIH0sIHtcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KSB7XG4gICAgYUNhbGxhYmxlKHRhcmdldCk7XG4gICAgYW5PYmplY3QoYXJndW1lbnRzTGlzdCk7XG4gICAgcmV0dXJuIG5hdGl2ZUFwcGx5XG4gICAgICA/IG5hdGl2ZUFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KVxuICAgICAgOiBmdW5jdGlvbkFwcGx5LmNhbGwodGFyZ2V0LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBuYXRpdmVDb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xuXG4vLyBgUmVmbGVjdC5jb25zdHJ1Y3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVjdFxuLy8gTVMgRWRnZSBzdXBwb3J0cyBvbmx5IDIgYXJndW1lbnRzIGFuZCBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG4vLyBGRiBOaWdodGx5IHNldHMgdGhpcmQgYXJndW1lbnQgYXMgYG5ldy50YXJnZXRgLCBidXQgZG9lcyBub3QgY3JlYXRlIGB0aGlzYCBmcm9tIGl0XG52YXIgTkVXX1RBUkdFVF9CVUcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuICEobmF0aXZlQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgW10sIEYpIGluc3RhbmNlb2YgRik7XG59KTtcbnZhciBBUkdTX0JVRyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIG5hdGl2ZUNvbnN0cnVjdChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG52YXIgRk9SQ0VEID0gTkVXX1RBUkdFVF9CVUcgfHwgQVJHU19CVUc7XG5cbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQsIHNoYW06IEZPUkNFRCB9LCB7XG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gY29uc3RydWN0KFRhcmdldCwgYXJncyAvKiAsIG5ld1RhcmdldCAqLykge1xuICAgIGFDb25zdHJ1Y3RvcihUYXJnZXQpO1xuICAgIGFuT2JqZWN0KGFyZ3MpO1xuICAgIHZhciBuZXdUYXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IFRhcmdldCA6IGFDb25zdHJ1Y3Rvcihhcmd1bWVudHNbMl0pO1xuICAgIGlmIChBUkdTX0JVRyAmJiAhTkVXX1RBUkdFVF9CVUcpIHJldHVybiBuYXRpdmVDb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzLCBuZXdUYXJnZXQpO1xuICAgIGlmIChUYXJnZXQgPT0gbmV3VGFyZ2V0KSB7XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIG9wdGltaXphdGlvbiBmb3IgMC00IGFyZ3VtZW50c1xuICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgVGFyZ2V0KCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSk7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICB9XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIGxvdCBvZiBhcmd1bWVudHMgY2FzZVxuICAgICAgdmFyICRhcmdzID0gW251bGxdO1xuICAgICAgJGFyZ3MucHVzaC5hcHBseSgkYXJncywgYXJncyk7XG4gICAgICByZXR1cm4gbmV3IChiaW5kLmFwcGx5KFRhcmdldCwgJGFyZ3MpKSgpO1xuICAgIH1cbiAgICAvLyB3aXRoIGFsdGVyZWQgbmV3VGFyZ2V0LCBub3Qgc3VwcG9ydCBidWlsdC1pbiBjb25zdHJ1Y3RvcnNcbiAgICB2YXIgcHJvdG8gPSBuZXdUYXJnZXQucHJvdG90eXBlO1xuICAgIHZhciBpbnN0YW5jZSA9IGNyZWF0ZShpc09iamVjdChwcm90bykgPyBwcm90byA6IE9iamVjdC5wcm90b3R5cGUpO1xuICAgIHZhciByZXN1bHQgPSBGdW5jdGlvbi5hcHBseS5jYWxsKFRhcmdldCwgaW5zdGFuY2UsIGFyZ3MpO1xuICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogaW5zdGFuY2U7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBNUyBFZGdlIGhhcyBicm9rZW4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSAtIHRocm93aW5nIGluc3RlYWQgb2YgcmV0dXJuaW5nIGZhbHNlXG52YXIgRVJST1JfSU5TVEVBRF9PRl9GQUxTRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKHt9LCAxLCB7IHZhbHVlOiAxIH0pLCAxLCB7IHZhbHVlOiAyIH0pO1xufSk7XG5cbi8vIGBSZWZsZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9wZXJ0eVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEVSUk9SX0lOU1RFQURfT0ZfRkFMU0UsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGRlZmluZVByb3BlcnR5OiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICB2YXIga2V5ID0gdG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgYW5PYmplY3QoYXR0cmlidXRlcyk7XG4gICAgdHJ5IHtcbiAgICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYodGFyZ2V0LCBrZXksIGF0dHJpYnV0ZXMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xuXG4vLyBgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZGVsZXRlcHJvcGVydHlcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGRlbGV0ZVByb3BlcnR5OiBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICAgIHJldHVybiBkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA/IGZhbHNlIDogZGVsZXRlIHRhcmdldFtwcm9wZXJ0eUtleV07XG4gIH1cbn0pO1xuIiwidmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgIT09IHVuZGVmaW5lZCAmJiAoaGFzT3duKGRlc2NyaXB0b3IsICd2YWx1ZScpIHx8IGhhc093bihkZXNjcmlwdG9yLCAnd3JpdGFibGUnKSk7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNEYXRhRGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1kYXRhLWRlc2NyaXB0b3InKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIGBSZWZsZWN0LmdldGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0XG5mdW5jdGlvbiBnZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdGFyZ2V0IDogYXJndW1lbnRzWzJdO1xuICB2YXIgZGVzY3JpcHRvciwgcHJvdG90eXBlO1xuICBpZiAoYW5PYmplY3QodGFyZ2V0KSA9PT0gcmVjZWl2ZXIpIHJldHVybiB0YXJnZXRbcHJvcGVydHlLZXldO1xuICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYodGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gIGlmIChkZXNjcmlwdG9yKSByZXR1cm4gaXNEYXRhRGVzY3JpcHRvcihkZXNjcmlwdG9yKVxuICAgID8gZGVzY3JpcHRvci52YWx1ZVxuICAgIDogZGVzY3JpcHRvci5nZXQgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGRlc2NyaXB0b3IuZ2V0LmNhbGwocmVjZWl2ZXIpO1xuICBpZiAoaXNPYmplY3QocHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHJldHVybiBnZXQocHJvdG90eXBlLCBwcm9wZXJ0eUtleSwgcmVjZWl2ZXIpO1xufVxuXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBnZXQ6IGdldFxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbi8vIGBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9iamVjdEdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlcicpO1xuXG4vLyBgUmVmbGVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0cHJvdG90eXBlb2ZcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSwgc2hhbTogIUNPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiB9LCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gb2JqZWN0R2V0UHJvdG90eXBlT2YoYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBSZWZsZWN0Lmhhc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuaGFzXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBoYXM6IGZ1bmN0aW9uIGhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIHByb3BlcnR5S2V5IGluIHRhcmdldDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyIG9iamVjdElzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG5cbi8vIGBSZWZsZWN0LmlzRXh0ZW5zaWJsZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZmxlY3QuaXNleHRlbnNpYmxlXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBpc0V4dGVuc2libGU6IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZSh0YXJnZXQpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHJldHVybiBvYmplY3RJc0V4dGVuc2libGUgPyBvYmplY3RJc0V4dGVuc2libGUodGFyZ2V0KSA6IHRydWU7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xuXG4vLyBgUmVmbGVjdC5vd25LZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlzXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBvd25LZXlzOiBvd25LZXlzXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgRlJFRVpJTkcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnJlZXppbmcnKTtcblxuLy8gYFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnByZXZlbnRleHRlbnNpb25zXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUsIHNoYW06ICFGUkVFWklORyB9LCB7XG4gIHByZXZlbnRFeHRlbnNpb25zOiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHRyeSB7XG4gICAgICB2YXIgb2JqZWN0UHJldmVudEV4dGVuc2lvbnMgPSBnZXRCdWlsdEluKCdPYmplY3QnLCAncHJldmVudEV4dGVuc2lvbnMnKTtcbiAgICAgIGlmIChvYmplY3RQcmV2ZW50RXh0ZW5zaW9ucykgb2JqZWN0UHJldmVudEV4dGVuc2lvbnModGFyZ2V0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzRGF0YURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZGF0YS1kZXNjcmlwdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG4vLyBgUmVmbGVjdC5zZXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldFxuZnVuY3Rpb24gc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgLyogLCByZWNlaXZlciAqLykge1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgNCA/IHRhcmdldCA6IGFyZ3VtZW50c1szXTtcbiAgdmFyIG93bkRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvdHlwZSwgc2V0dGVyO1xuICBpZiAoIW93bkRlc2NyaXB0b3IpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSkpIHtcbiAgICAgIHJldHVybiBzZXQocHJvdG90eXBlLCBwcm9wZXJ0eUtleSwgViwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgICBvd25EZXNjcmlwdG9yID0gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDApO1xuICB9XG4gIGlmIChpc0RhdGFEZXNjcmlwdG9yKG93bkRlc2NyaXB0b3IpKSB7XG4gICAgaWYgKG93bkRlc2NyaXB0b3Iud3JpdGFibGUgPT09IGZhbHNlIHx8ICFpc09iamVjdChyZWNlaXZlcikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5KSkge1xuICAgICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvci5nZXQgfHwgZXhpc3RpbmdEZXNjcmlwdG9yLnNldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iud3JpdGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgICBleGlzdGluZ0Rlc2NyaXB0b3IudmFsdWUgPSBWO1xuICAgICAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGV4aXN0aW5nRGVzY3JpcHRvcik7XG4gICAgfSBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYocmVjZWl2ZXIsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgVikpO1xuICB9IGVsc2Uge1xuICAgIHNldHRlciA9IG93bkRlc2NyaXB0b3Iuc2V0O1xuICAgIGlmIChzZXR0ZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIHNldHRlci5jYWxsKHJlY2VpdmVyLCBWKTtcbiAgfSByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gTVMgRWRnZSAxNy0xOCBSZWZsZWN0LnNldCBhbGxvd3Mgc2V0dGluZyB0aGUgcHJvcGVydHkgdG8gb2JqZWN0XG4vLyB3aXRoIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiB0aGUgcHJvdG90eXBlXG52YXIgTVNfRURHRV9CVUcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiAgdmFyIG9iamVjdCA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmYobmV3IENvbnN0cnVjdG9yKCksICdhJywgeyBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1yZWZsZWN0IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBSZWZsZWN0LnNldChDb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdhJywgMSwgb2JqZWN0KSAhPT0gZmFsc2U7XG59KTtcblxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IE1TX0VER0VfQlVHIH0sIHtcbiAgc2V0OiBzZXRcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG52YXIgb2JqZWN0U2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcblxuLy8gYFJlZmxlY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mXG5pZiAob2JqZWN0U2V0UHJvdG90eXBlT2YpICQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICBhUG9zc2libGVQcm90b3R5cGUocHJvdG8pO1xuICAgIHRyeSB7XG4gICAgICBvYmplY3RTZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHsgUmVmbGVjdDoge30gfSk7XG5cbi8vIFJlZmxlY3RbQEB0b1N0cmluZ1RhZ10gcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC1AQHRvc3RyaW5ndGFnXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuUmVmbGVjdCwgJ1JlZmxlY3QnLCB0cnVlKTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNyZWdleHBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNsYXNzb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZmxhZ3Ncbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC5kb3RBbGwpIHJlc3VsdCArPSAncyc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG5cbmV4cG9ydHMuVU5TVVBQT1JURURfWSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gJFJlZ0V4cCgnYScsICd5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdhYmNkJykgIT0gbnVsbDtcbn0pO1xuXG5leHBvcnRzLkJST0tFTl9DQVJFVCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjg3XG4gIHZhciByZSA9ICRSZWdFeHAoJ15yJywgJ2d5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdzdHInKSAhPSBudWxsO1xufSk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnLicsICdzJykgLT4gLy4vcyBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUgPSAkUmVnRXhwKCcuJywgJ3MnKTtcbiAgcmV0dXJuICEocmUuZG90QWxsICYmIHJlLmV4ZWMoJ1xcbicpICYmIHJlLmZsYWdzID09PSAncycpO1xufSk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnKD88YT5iKScsICdnJykgLT4gLyg/PGE+YikvZyBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUgPSAkUmVnRXhwKCcoPzxhPmIpJywgJ2cnKTtcbiAgcmV0dXJuIHJlLmV4ZWMoJ2InKS5ncm91cHMuYSAhPT0gJ2InIHx8XG4gICAgJ2InLnJlcGxhY2UocmUsICckPGE+YycpICE9PSAnYmMnO1xufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1yZWdleHAnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBnZXRGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBzdGlja3lIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJykuZW5mb3JjZTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVU5TVVBQT1JURURfRE9UX0FMTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbCcpO1xudmFyIFVOU1VQUE9SVEVEX05DRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcbnZhciBOYXRpdmVSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IE5hdGl2ZVJlZ0V4cC5wcm90b3R5cGU7XG4vLyBUT0RPOiBVc2Ugb25seSBwcm9wcGVyIFJlZ0V4cElkZW50aWZpZXJOYW1lXG52YXIgSVNfTkNHID0gL15cXD88W15cXHNcXGQhIyUmKis8PT5AXl1bXlxccyEjJSYqKzw9PkBeXSo+LztcbnZhciByZTEgPSAvYS9nO1xudmFyIHJlMiA9IC9hL2c7XG5cbi8vIFwibmV3XCIgc2hvdWxkIGNyZWF0ZSBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnXG52YXIgQ09SUkVDVF9ORVcgPSBuZXcgTmF0aXZlUmVnRXhwKHJlMSkgIT09IHJlMTtcblxudmFyIFVOU1VQUE9SVEVEX1kgPSBzdGlja3lIZWxwZXJzLlVOU1VQUE9SVEVEX1k7XG5cbnZhciBCQVNFX0ZPUkNFRCA9IERFU0NSSVBUT1JTICYmXG4gICghQ09SUkVDVF9ORVcgfHwgVU5TVVBQT1JURURfWSB8fCBVTlNVUFBPUlRFRF9ET1RfQUxMIHx8IFVOU1VQUE9SVEVEX05DRyB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgcmUyW01BVENIXSA9IGZhbHNlO1xuICAgIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gICAgcmV0dXJuIE5hdGl2ZVJlZ0V4cChyZTEpICE9IHJlMSB8fCBOYXRpdmVSZWdFeHAocmUyKSA9PSByZTIgfHwgTmF0aXZlUmVnRXhwKHJlMSwgJ2knKSAhPSAnL2EvaSc7XG4gIH0pKTtcblxudmFyIGhhbmRsZURvdEFsbCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGJyYWNrZXRzID0gZmFsc2U7XG4gIHZhciBjaHI7XG4gIGZvciAoOyBpbmRleCA8PSBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjaHIgPSBzdHJpbmcuY2hhckF0KGluZGV4KTtcbiAgICBpZiAoY2hyID09PSAnXFxcXCcpIHtcbiAgICAgIHJlc3VsdCArPSBjaHIgKyBzdHJpbmcuY2hhckF0KCsraW5kZXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghYnJhY2tldHMgJiYgY2hyID09PSAnLicpIHtcbiAgICAgIHJlc3VsdCArPSAnW1xcXFxzXFxcXFNdJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNociA9PT0gJ1snKSB7XG4gICAgICAgIGJyYWNrZXRzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnXScpIHtcbiAgICAgICAgYnJhY2tldHMgPSBmYWxzZTtcbiAgICAgIH0gcmVzdWx0ICs9IGNocjtcbiAgICB9XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBoYW5kbGVOQ0cgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBuYW1lZCA9IFtdO1xuICB2YXIgbmFtZXMgPSB7fTtcbiAgdmFyIGJyYWNrZXRzID0gZmFsc2U7XG4gIHZhciBuY2cgPSBmYWxzZTtcbiAgdmFyIGdyb3VwaWQgPSAwO1xuICB2YXIgZ3JvdXBuYW1lID0gJyc7XG4gIHZhciBjaHI7XG4gIGZvciAoOyBpbmRleCA8PSBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjaHIgPSBzdHJpbmcuY2hhckF0KGluZGV4KTtcbiAgICBpZiAoY2hyID09PSAnXFxcXCcpIHtcbiAgICAgIGNociA9IGNociArIHN0cmluZy5jaGFyQXQoKytpbmRleCk7XG4gICAgfSBlbHNlIGlmIChjaHIgPT09ICddJykge1xuICAgICAgYnJhY2tldHMgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFicmFja2V0cykgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIGNociA9PT0gJ1snOlxuICAgICAgICBicmFja2V0cyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjaHIgPT09ICcoJzpcbiAgICAgICAgaWYgKElTX05DRy50ZXN0KHN0cmluZy5zbGljZShpbmRleCArIDEpKSkge1xuICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgbmNnID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gY2hyO1xuICAgICAgICBncm91cGlkKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBjaHIgPT09ICc+JyAmJiBuY2c6XG4gICAgICAgIGlmIChncm91cG5hbWUgPT09ICcnIHx8IGhhc093bihuYW1lcywgZ3JvdXBuYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCBjYXB0dXJlIGdyb3VwIG5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgICBuYW1lc1tncm91cG5hbWVdID0gdHJ1ZTtcbiAgICAgICAgbmFtZWQucHVzaChbZ3JvdXBuYW1lLCBncm91cGlkXSk7XG4gICAgICAgIG5jZyA9IGZhbHNlO1xuICAgICAgICBncm91cG5hbWUgPSAnJztcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChuY2cpIGdyb3VwbmFtZSArPSBjaHI7XG4gICAgZWxzZSByZXN1bHQgKz0gY2hyO1xuICB9IHJldHVybiBbcmVzdWx0LCBuYW1lZF07XG59O1xuXG4vLyBgUmVnRXhwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAtY29uc3RydWN0b3JcbmlmIChpc0ZvcmNlZCgnUmVnRXhwJywgQkFTRV9GT1JDRUQpKSB7XG4gIHZhciBSZWdFeHBXcmFwcGVyID0gZnVuY3Rpb24gUmVnRXhwKHBhdHRlcm4sIGZsYWdzKSB7XG4gICAgdmFyIHRoaXNJc1JlZ0V4cCA9IHRoaXMgaW5zdGFuY2VvZiBSZWdFeHBXcmFwcGVyO1xuICAgIHZhciBwYXR0ZXJuSXNSZWdFeHAgPSBpc1JlZ0V4cChwYXR0ZXJuKTtcbiAgICB2YXIgZmxhZ3NBcmVVbmRlZmluZWQgPSBmbGFncyA9PT0gdW5kZWZpbmVkO1xuICAgIHZhciBncm91cHMgPSBbXTtcbiAgICB2YXIgcmF3UGF0dGVybiA9IHBhdHRlcm47XG4gICAgdmFyIHJhd0ZsYWdzLCBkb3RBbGwsIHN0aWNreSwgaGFuZGxlZCwgcmVzdWx0LCBzdGF0ZTtcblxuICAgIGlmICghdGhpc0lzUmVnRXhwICYmIHBhdHRlcm5Jc1JlZ0V4cCAmJiBmbGFnc0FyZVVuZGVmaW5lZCAmJiBwYXR0ZXJuLmNvbnN0cnVjdG9yID09PSBSZWdFeHBXcmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGF0dGVybjtcbiAgICB9XG5cbiAgICBpZiAocGF0dGVybklzUmVnRXhwIHx8IHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHBXcmFwcGVyKSB7XG4gICAgICBwYXR0ZXJuID0gcGF0dGVybi5zb3VyY2U7XG4gICAgICBpZiAoZmxhZ3NBcmVVbmRlZmluZWQpIGZsYWdzID0gJ2ZsYWdzJyBpbiByYXdQYXR0ZXJuID8gcmF3UGF0dGVybi5mbGFncyA6IGdldEZsYWdzLmNhbGwocmF3UGF0dGVybik7XG4gICAgfVxuXG4gICAgcGF0dGVybiA9IHBhdHRlcm4gPT09IHVuZGVmaW5lZCA/ICcnIDogdG9TdHJpbmcocGF0dGVybik7XG4gICAgZmxhZ3MgPSBmbGFncyA9PT0gdW5kZWZpbmVkID8gJycgOiB0b1N0cmluZyhmbGFncyk7XG4gICAgcmF3UGF0dGVybiA9IHBhdHRlcm47XG5cbiAgICBpZiAoVU5TVVBQT1JURURfRE9UX0FMTCAmJiAnZG90QWxsJyBpbiByZTEpIHtcbiAgICAgIGRvdEFsbCA9ICEhZmxhZ3MgJiYgZmxhZ3MuaW5kZXhPZigncycpID4gLTE7XG4gICAgICBpZiAoZG90QWxsKSBmbGFncyA9IGZsYWdzLnJlcGxhY2UoL3MvZywgJycpO1xuICAgIH1cblxuICAgIHJhd0ZsYWdzID0gZmxhZ3M7XG5cbiAgICBpZiAoVU5TVVBQT1JURURfWSAmJiAnc3RpY2t5JyBpbiByZTEpIHtcbiAgICAgIHN0aWNreSA9ICEhZmxhZ3MgJiYgZmxhZ3MuaW5kZXhPZigneScpID4gLTE7XG4gICAgICBpZiAoc3RpY2t5KSBmbGFncyA9IGZsYWdzLnJlcGxhY2UoL3kvZywgJycpO1xuICAgIH1cblxuICAgIGlmIChVTlNVUFBPUlRFRF9OQ0cpIHtcbiAgICAgIGhhbmRsZWQgPSBoYW5kbGVOQ0cocGF0dGVybik7XG4gICAgICBwYXR0ZXJuID0gaGFuZGxlZFswXTtcbiAgICAgIGdyb3VwcyA9IGhhbmRsZWRbMV07XG4gICAgfVxuXG4gICAgcmVzdWx0ID0gaW5oZXJpdElmUmVxdWlyZWQoTmF0aXZlUmVnRXhwKHBhdHRlcm4sIGZsYWdzKSwgdGhpc0lzUmVnRXhwID8gdGhpcyA6IFJlZ0V4cFByb3RvdHlwZSwgUmVnRXhwV3JhcHBlcik7XG5cbiAgICBpZiAoZG90QWxsIHx8IHN0aWNreSB8fCBncm91cHMubGVuZ3RoKSB7XG4gICAgICBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHJlc3VsdCk7XG4gICAgICBpZiAoZG90QWxsKSB7XG4gICAgICAgIHN0YXRlLmRvdEFsbCA9IHRydWU7XG4gICAgICAgIHN0YXRlLnJhdyA9IFJlZ0V4cFdyYXBwZXIoaGFuZGxlRG90QWxsKHBhdHRlcm4pLCByYXdGbGFncyk7XG4gICAgICB9XG4gICAgICBpZiAoc3RpY2t5KSBzdGF0ZS5zdGlja3kgPSB0cnVlO1xuICAgICAgaWYgKGdyb3Vwcy5sZW5ndGgpIHN0YXRlLmdyb3VwcyA9IGdyb3VwcztcbiAgICB9XG5cbiAgICBpZiAocGF0dGVybiAhPT0gcmF3UGF0dGVybikgdHJ5IHtcbiAgICAgIC8vIGZhaWxzIGluIG9sZCBlbmdpbmVzLCBidXQgd2UgaGF2ZSBubyBhbHRlcm5hdGl2ZXMgZm9yIHVuc3VwcG9ydGVkIHJlZ2V4IHN5bnRheFxuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHJlc3VsdCwgJ3NvdXJjZScsIHJhd1BhdHRlcm4gPT09ICcnID8gJyg/OiknIDogcmF3UGF0dGVybik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgcHJveHkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAga2V5IGluIFJlZ0V4cFdyYXBwZXIgfHwgZGVmaW5lUHJvcGVydHkoUmVnRXhwV3JhcHBlciwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5hdGl2ZVJlZ0V4cFtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgTmF0aXZlUmVnRXhwW2tleV0gPSBpdDsgfVxuICAgIH0pO1xuICB9O1xuXG4gIGZvciAodmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKE5hdGl2ZVJlZ0V4cCksIGluZGV4ID0gMDsga2V5cy5sZW5ndGggPiBpbmRleDspIHtcbiAgICBwcm94eShrZXlzW2luZGV4KytdKTtcbiAgfVxuXG4gIFJlZ0V4cFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlZ0V4cFdyYXBwZXI7XG4gIFJlZ0V4cFdyYXBwZXIucHJvdG90eXBlID0gUmVnRXhwUHJvdG90eXBlO1xuICByZWRlZmluZShnbG9iYWwsICdSZWdFeHAnLCBSZWdFeHBXcmFwcGVyKTtcbn1cblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLUBAc3BlY2llc1xuc2V0U3BlY2llcygnUmVnRXhwJyk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVTlNVUFBPUlRFRF9ET1RfQUxMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpLmdldDtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5kb3RBbGxgIGdldHRlclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5kb3RhbGxcbmlmIChERVNDUklQVE9SUyAmJiBVTlNVUFBPUlRFRF9ET1RfQUxMKSB7XG4gIGRlZmluZVByb3BlcnR5KFJlZ0V4cFByb3RvdHlwZSwgJ2RvdEFsbCcsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcyA9PT0gUmVnRXhwUHJvdG90eXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgLy8gV2UgY2FuJ3QgdXNlIEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yIGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvbid0IGFkZCBtZXRhZGF0YSBmb3IgcmVnZXhwcyBjcmVhdGVkIGJ5IGEgbGl0ZXJhbC5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiAhIWdldEludGVybmFsU3RhdGUodGhpcykuZG90QWxsO1xuICAgICAgfVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCcpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tZW1wdHktY2FwdHVyaW5nLWdyb3VwLCByZWdleHAvbm8tZW1wdHktZ3JvdXAsIHJlZ2V4cC9uby1sYXp5LWVuZHMgLS0gdGVzdGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVnZXhwL25vLXVzZWxlc3MtcXVhbnRpZmllciAtLSB0ZXN0aW5nICovXG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgc3RpY2t5SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJykuZ2V0O1xudmFyIFVOU1VQUE9SVEVEX0RPVF9BTEwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLWRvdC1hbGwnKTtcbnZhciBVTlNVUFBPUlRFRF9OQ0cgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLW5jZycpO1xuXG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbnZhciBuYXRpdmVSZXBsYWNlID0gc2hhcmVkKCduYXRpdmUtc3RyaW5nLXJlcGxhY2UnLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xuXG52YXIgcGF0Y2hlZEV4ZWMgPSBuYXRpdmVFeGVjO1xuXG52YXIgVVBEQVRFU19MQVNUX0lOREVYX1dST05HID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlMSA9IC9hLztcbiAgdmFyIHJlMiA9IC9iKi9nO1xuICBuYXRpdmVFeGVjLmNhbGwocmUxLCAnYScpO1xuICBuYXRpdmVFeGVjLmNhbGwocmUyLCAnYScpO1xuICByZXR1cm4gcmUxLmxhc3RJbmRleCAhPT0gMCB8fCByZTIubGFzdEluZGV4ICE9PSAwO1xufSkoKTtcblxudmFyIFVOU1VQUE9SVEVEX1kgPSBzdGlja3lIZWxwZXJzLlVOU1VQUE9SVEVEX1kgfHwgc3RpY2t5SGVscGVycy5CUk9LRU5fQ0FSRVQ7XG5cbi8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwLCBjb3BpZWQgZnJvbSBlczUtc2hpbSdzIFN0cmluZyNzcGxpdCBwYXRjaC5cbnZhciBOUENHX0lOQ0xVREVEID0gLygpPz8vLmV4ZWMoJycpWzFdICE9PSB1bmRlZmluZWQ7XG5cbnZhciBQQVRDSCA9IFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyB8fCBOUENHX0lOQ0xVREVEIHx8IFVOU1VQUE9SVEVEX1kgfHwgVU5TVVBQT1JURURfRE9UX0FMTCB8fCBVTlNVUFBPUlRFRF9OQ0c7XG5cbmlmIChQQVRDSCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xuICBwYXRjaGVkRXhlYyA9IGZ1bmN0aW9uIGV4ZWMoc3RyaW5nKSB7XG4gICAgdmFyIHJlID0gdGhpcztcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHJlKTtcbiAgICB2YXIgc3RyID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICB2YXIgcmF3ID0gc3RhdGUucmF3O1xuICAgIHZhciByZXN1bHQsIHJlQ29weSwgbGFzdEluZGV4LCBtYXRjaCwgaSwgb2JqZWN0LCBncm91cDtcblxuICAgIGlmIChyYXcpIHtcbiAgICAgIHJhdy5sYXN0SW5kZXggPSByZS5sYXN0SW5kZXg7XG4gICAgICByZXN1bHQgPSBwYXRjaGVkRXhlYy5jYWxsKHJhdywgc3RyKTtcbiAgICAgIHJlLmxhc3RJbmRleCA9IHJhdy5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHZhciBncm91cHMgPSBzdGF0ZS5ncm91cHM7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IHJlZ2V4cEZsYWdzLmNhbGwocmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKCd5JywgJycpO1xuICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gc3RyLnNsaWNlKHJlLmxhc3RJbmRleCk7XG4gICAgICAvLyBTdXBwb3J0IGFuY2hvcmVkIHN0aWNreSBiZWhhdmlvci5cbiAgICAgIGlmIChyZS5sYXN0SW5kZXggPiAwICYmICghcmUubXVsdGlsaW5lIHx8IHJlLm11bHRpbGluZSAmJiBzdHIuY2hhckF0KHJlLmxhc3RJbmRleCAtIDEpICE9PSAnXFxuJykpIHtcbiAgICAgICAgc291cmNlID0gJyg/OiAnICsgc291cmNlICsgJyknO1xuICAgICAgICBzdHJDb3B5ID0gJyAnICsgc3RyQ29weTtcbiAgICAgICAgY2hhcnNBZGRlZCsrO1xuICAgICAgfVxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIHN0ciBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXig/OicgKyBzb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICB9XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyBzb3VyY2UgKyAnJCg/IVxcXFxzKScsIGZsYWdzKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwoc3RpY2t5ID8gcmVDb3B5IDogcmUsIHN0ckNvcHkpO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoLmlucHV0ID0gbWF0Y2guaW5wdXQuc2xpY2UoY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoLmluZGV4ID0gcmUubGFzdEluZGV4O1xuICAgICAgICByZS5sYXN0SW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgfSBlbHNlIHJlLmxhc3RJbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlLmxhc3RJbmRleCA9IHJlLmdsb2JhbCA/IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIDogbGFzdEluZGV4O1xuICAgIH1cbiAgICBpZiAoTlBDR19JTkNMVURFRCAmJiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYFxuICAgICAgLy8gZm9yIE5QQ0csIGxpa2UgSUU4LiBOT1RFOiBUaGlzIGRvZXNuJyB3b3JrIGZvciAvKC4/KT8vXG4gICAgICBuYXRpdmVSZXBsYWNlLmNhbGwobWF0Y2hbMF0sIHJlQ29weSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCkgbWF0Y2hbaV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXRjaCAmJiBncm91cHMpIHtcbiAgICAgIG1hdGNoLmdyb3VwcyA9IG9iamVjdCA9IGNyZWF0ZShudWxsKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbaV07XG4gICAgICAgIG9iamVjdFtncm91cFswXV0gPSBtYXRjaFtncm91cFsxXV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoZWRFeGVjO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5leGVjYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS5leGVjXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIG9iamVjdERlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciByZWdFeHBGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRk9SQ0VEID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKHsgZG90QWxsOiB0cnVlLCBzdGlja3k6IHRydWUgfSkgIT09ICdzeSc7XG59KTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xuaWYgKEZPUkNFRCkgb2JqZWN0RGVmaW5lUHJvcGVydHlNb2R1bGUuZihSZWdFeHAucHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVTlNVUFBPUlRFRF9ZID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycycpLlVOU1VQUE9SVEVEX1k7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpLmdldDtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5zdGlja3lgIGdldHRlclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5zdGlja3lcbmlmIChERVNDUklQVE9SUyAmJiBVTlNVUFBPUlRFRF9ZKSB7XG4gIGRlZmluZVByb3BlcnR5KFJlZ0V4cFByb3RvdHlwZSwgJ3N0aWNreScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcyA9PT0gUmVnRXhwUHJvdG90eXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgLy8gV2UgY2FuJ3QgdXNlIEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yIGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvbid0IGFkZCBtZXRhZGF0YSBmb3IgcmVnZXhwcyBjcmVhdGVkIGJ5IGEgbGl0ZXJhbC5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiAhIWdldEludGVybmFsU3RhdGUodGhpcykuc3RpY2t5O1xuICAgICAgfVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCcpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIG1vdmVkIHRvIGVudHJ5IHBvaW50c1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5yZWdleHAuZXhlYycpO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBleGVjQ2FsbGVkID0gZmFsc2U7XG4gIHZhciByZSA9IC9bYWNdLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBleGVjQ2FsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gLy4vLmV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHJlLnRlc3QoJ2FiYycpID09PSB0cnVlICYmIGV4ZWNDYWxsZWQ7XG59KCk7XG5cbnZhciBuYXRpdmVUZXN0ID0gLy4vLnRlc3Q7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRlc3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLnRlc3RcbiQoeyB0YXJnZXQ6ICdSZWdFeHAnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhREVMRUdBVEVTX1RPX0VYRUMgfSwge1xuICB0ZXN0OiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgdmFyIGV4ZWMgPSB0aGlzLmV4ZWM7XG4gICAgaWYgKCFpc0NhbGxhYmxlKGV4ZWMpKSByZXR1cm4gbmF0aXZlVGVzdC5jYWxsKHRoaXMsIHN0cik7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbCh0aGlzLCBzdHIpO1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgIWlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiAhIXJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLlBST1BFUjtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xuXG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG5hdGl2ZVRvU3RyaW5nID0gUmVnRXhwUHJvdG90eXBlW1RPX1NUUklOR107XG5cbnZhciBOT1RfR0VORVJJQyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hdGl2ZVRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbnZhciBJTkNPUlJFQ1RfTkFNRSA9IFBST1BFUl9GVU5DVElPTl9OQU1FICYmIG5hdGl2ZVRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChOT1RfR0VORVJJQyB8fCBJTkNPUlJFQ1RfTkFNRSkge1xuICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHAgPSAkdG9TdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciByZiA9IFIuZmxhZ3M7XG4gICAgdmFyIGYgPSAkdG9TdHJpbmcocmYgPT09IHVuZGVmaW5lZCAmJiBSIGluc3RhbmNlb2YgUmVnRXhwICYmICEoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGUpID8gZmxhZ3MuY2FsbChSKSA6IHJmKTtcbiAgICByZXR1cm4gJy8nICsgcCArICcvJyArIGY7XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNvbGxlY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbicpO1xudmFyIGNvbGxlY3Rpb25TdHJvbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1zdHJvbmcnKTtcblxuLy8gYFNldGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2V0LW9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gY29sbGVjdGlvbignU2V0JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGluaXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCBjb2xsZWN0aW9uU3Ryb25nKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICfwoK63Jy5hdCgwKSAhPT0gJ1xcdUQ4NDInO1xufSk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJlbGF0aXZlLWluZGV4aW5nLW1ldGhvZFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIGF0OiBmdW5jdGlvbiBhdChpbmRleCkge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgdmFyIGxlbiA9IFMubGVuZ3RoO1xuICAgIHZhciByZWxhdGl2ZUluZGV4ID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gICAgdmFyIGsgPSByZWxhdGl2ZUluZGV4ID49IDAgPyByZWxhdGl2ZUluZGV4IDogbGVuICsgcmVsYXRpdmVJbmRleDtcbiAgICByZXR1cm4gKGsgPCAwIHx8IGsgPj0gbGVuKSA/IHVuZGVmaW5lZCA6IFMuY2hhckF0KGspO1xuICB9XG59KTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlck9ySW5maW5pdHkocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICAgID8gQ09OVkVSVF9UT19TVFJJTkcgPyBTLmNoYXJBdChwb3NpdGlvbikgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HID8gUy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyAyKSA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjb2RlQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNvZGVBdDtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUgfSwge1xuICBjb2RlUG9pbnRBdDogZnVuY3Rpb24gY29kZVBvaW50QXQocG9zKSB7XG4gICAgcmV0dXJuIGNvZGVBdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsInZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1yZWdleHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzUmVnRXhwKGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9uc1wiKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgTUFUQ0ggPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHZhciByZWdleHAgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgIHRyeSB7XG4gICAgICByZWdleHBbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gICAgfSBjYXRjaCAoZXJyb3IyKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gZmFsc2U7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIG5vdEFSZWdFeHAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbm90LWEtcmVnZXhwJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBjb3JyZWN0SXNSZWdFeHBMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYycpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS1lbmRzd2l0aCAtLSBzYWZlXG52YXIgJGVuZHNXaXRoID0gJycuZW5kc1dpdGg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbnZhciBDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyA9IGNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdlbmRzV2l0aCcpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvcHVsbC83MDJcbnZhciBNRE5fUE9MWUZJTExfQlVHID0gIUlTX1BVUkUgJiYgIUNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDICYmICEhZnVuY3Rpb24gKCkge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAnZW5kc1dpdGgnKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGU7XG59KCk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5lbmRzd2l0aFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFNRE5fUE9MWUZJTExfQlVHICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyB9LCB7XG4gIGVuZHNXaXRoOiBmdW5jdGlvbiBlbmRzV2l0aChzZWFyY2hTdHJpbmcgLyogLCBlbmRQb3NpdGlvbiA9IEBsZW5ndGggKi8pIHtcbiAgICB2YXIgdGhhdCA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgIG5vdEFSZWdFeHAoc2VhcmNoU3RyaW5nKTtcbiAgICB2YXIgZW5kUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbGVuID0gdGhhdC5sZW5ndGg7XG4gICAgdmFyIGVuZCA9IGVuZFBvc2l0aW9uID09PSB1bmRlZmluZWQgPyBsZW4gOiBtaW4odG9MZW5ndGgoZW5kUG9zaXRpb24pLCBsZW4pO1xuICAgIHZhciBzZWFyY2ggPSB0b1N0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiAkZW5kc1dpdGhcbiAgICAgID8gJGVuZHNXaXRoLmNhbGwodGhhdCwgc2VhcmNoLCBlbmQpXG4gICAgICA6IHRoYXQuc2xpY2UoZW5kIC0gc2VhcmNoLmxlbmd0aCwgZW5kKSA9PT0gc2VhcmNoO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zdHJpbmctZnJvbWNvZGVwb2ludCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRmcm9tQ29kZVBvaW50ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQ7XG5cbi8vIGxlbmd0aCBzaG91bGQgYmUgMSwgb2xkIEZGIHByb2JsZW1cbnZhciBJTkNPUlJFQ1RfTEVOR1RIID0gISEkZnJvbUNvZGVQb2ludCAmJiAkZnJvbUNvZGVQb2ludC5sZW5ndGggIT0gMTtcblxuLy8gYFN0cmluZy5mcm9tQ29kZVBvaW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLmZyb21jb2RlcG9pbnRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9MRU5HVEggfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBmcm9tQ29kZVBvaW50OiBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHgpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBbXTtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGNvZGU7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIHtcbiAgICAgIGNvZGUgPSArYXJndW1lbnRzW2krK107XG4gICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBGRkZGKSAhPT0gY29kZSkgdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICBlbGVtZW50cy5wdXNoKGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsIGNvZGUgJSAweDQwMCArIDB4REMwMClcbiAgICAgICk7XG4gICAgfSByZXR1cm4gZWxlbWVudHMuam9pbignJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlc1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFjb3JyZWN0SXNSZWdFeHBMb2dpYygnaW5jbHVkZXMnKSB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICByZXR1cm4gISF+dG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSlcbiAgICAgIC5pbmRleE9mKHRvU3RyaW5nKG5vdEFSZWdFeHAoc2VhcmNoU3RyaW5nKSksIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1pdGVyYXRvcicpO1xuXG52YXIgU1RSSU5HX0lURVJBVE9SID0gJ1N0cmluZyBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihTVFJJTkdfSVRFUkFUT1IpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IHRvU3RyaW5nKGl0ZXJhdGVkKSxcbiAgICBpbmRleDogMFxuICB9KTtcbi8vIGAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lc3RyaW5naXRlcmF0b3Jwcm90b3R5cGUlLm5leHRcbn0sIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciBzdHJpbmcgPSBzdGF0ZS5zdHJpbmc7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4O1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBzdHJpbmcubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBtb3ZlZCB0byBlbnRyeSBwb2ludHNcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEZPUkNFRCwgU0hBTSkge1xuICB2YXIgU1lNQk9MID0gd2VsbEtub3duU3ltYm9sKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgcmVhbCByZWdleCBoZXJlIHNpbmNlIGl0IGNhdXNlcyBkZW9wdGltaXphdGlvblxuICAgICAgLy8gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaW4gVjhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMDZcbiAgICAgIHJlID0ge307XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgICByZS5mbGFncyA9ICcnO1xuICAgICAgcmVbU1lNQk9MXSA9IC8uL1tTWU1CT0xdO1xuICAgIH1cblxuICAgIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IGV4ZWNDYWxsZWQgPSB0cnVlOyByZXR1cm4gbnVsbDsgfTtcblxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSk7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgRk9SQ0VEXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgbWV0aG9kcyA9IGV4ZWMoU1lNQk9MLCAnJ1tLRVldLCBmdW5jdGlvbiAobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgIHZhciAkZXhlYyA9IHJlZ2V4cC5leGVjO1xuICAgICAgaWYgKCRleGVjID09PSByZWdleHBFeGVjIHx8ICRleGVjID09PSBSZWdFeHBQcm90b3R5cGUuZXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9KTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgbWV0aG9kc1swXSk7XG4gICAgcmVkZWZpbmUoUmVnRXhwUHJvdG90eXBlLCBTWU1CT0wsIG1ldGhvZHNbMV0pO1xuICB9XG5cbiAgaWYgKFNIQU0pIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShSZWdFeHBQcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZHZhbmNlc3RyaW5naW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFMsIGluZGV4LCB1bmljb2RlKSB7XG4gIHJldHVybiBpbmRleCArICh1bmljb2RlID8gY2hhckF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKGlzQ2FsbGFibGUoZXhlYykpIHtcbiAgICB2YXIgcmVzdWx0ID0gZXhlYy5jYWxsKFIsIFMpO1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIGFuT2JqZWN0KHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSA9PT0gJ1JlZ0V4cCcpIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG4gIHRocm93IFR5cGVFcnJvcignUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBtYXRjaCBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ21hdGNoJywgZnVuY3Rpb24gKE1BVENILCBuYXRpdmVNYXRjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5tYXRjaFxuICAgIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIG1hdGNoZXIgPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZ2V0TWV0aG9kKHJlZ2V4cCwgTUFUQ0gpO1xuICAgICAgcmV0dXJuIG1hdGNoZXIgPyBtYXRjaGVyLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtNQVRDSF0odG9TdHJpbmcoTykpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQG1hdGNoXG4gICAgZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QodGhpcyk7XG4gICAgICB2YXIgUyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZU1hdGNoLCByeCwgUyk7XG5cbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgaWYgKCFyeC5nbG9iYWwpIHJldHVybiByZWdFeHBFeGVjKHJ4LCBTKTtcblxuICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgdmFyIG4gPSAwO1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICgocmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUykpICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBtYXRjaFN0ciA9IHRvU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIEFbbl0gPSBtYXRjaFN0cjtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgICAgbisrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG4gPT09IDAgPyBudWxsIDogQTtcbiAgICB9XG4gIF07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN0cmluZy1wcm90b3R5cGUtbWF0Y2hhbGwgLS0gc2FmZSAqL1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1yZWdleHAnKTtcbnZhciBnZXRSZWdFeHBGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBNQVRDSF9BTEwgPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoQWxsJyk7XG52YXIgUkVHRVhQX1NUUklORyA9ICdSZWdFeHAgU3RyaW5nJztcbnZhciBSRUdFWFBfU1RSSU5HX0lURVJBVE9SID0gUkVHRVhQX1NUUklORyArICcgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUkVHRVhQX1NUUklOR19JVEVSQVRPUik7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcbnZhciBuYXRpdmVNYXRjaEFsbCA9ICcnLm1hdGNoQWxsO1xuXG52YXIgV09SS1NfV0lUSF9OT05fR0xPQkFMX1JFR0VYID0gISFuYXRpdmVNYXRjaEFsbCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAnYScubWF0Y2hBbGwoLy4vKTtcbn0pO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiAtLSBpZ25vcmVcbnZhciAkUmVnRXhwU3RyaW5nSXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKGZ1bmN0aW9uIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKHJlZ2V4cCwgc3RyaW5nLCBnbG9iYWwsIGZ1bGxVbmljb2RlKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFJFR0VYUF9TVFJJTkdfSVRFUkFUT1IsXG4gICAgcmVnZXhwOiByZWdleHAsXG4gICAgc3RyaW5nOiBzdHJpbmcsXG4gICAgZ2xvYmFsOiBnbG9iYWwsXG4gICAgdW5pY29kZTogZnVsbFVuaWNvZGUsXG4gICAgZG9uZTogZmFsc2VcbiAgfSk7XG59LCBSRUdFWFBfU1RSSU5HLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB2YXIgUiA9IHN0YXRlLnJlZ2V4cDtcbiAgdmFyIFMgPSBzdGF0ZS5zdHJpbmc7XG4gIHZhciBtYXRjaCA9IHJlZ0V4cEV4ZWMoUiwgUyk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogc3RhdGUuZG9uZSA9IHRydWUgfTtcbiAgaWYgKHN0YXRlLmdsb2JhbCkge1xuICAgIGlmICh0b1N0cmluZyhtYXRjaFswXSkgPT09ICcnKSBSLmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChSLmxhc3RJbmRleCksIHN0YXRlLnVuaWNvZGUpO1xuICAgIHJldHVybiB7IHZhbHVlOiBtYXRjaCwgZG9uZTogZmFsc2UgfTtcbiAgfVxuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgcmV0dXJuIHsgdmFsdWU6IG1hdGNoLCBkb25lOiBmYWxzZSB9O1xufSk7XG5cbnZhciAkbWF0Y2hBbGwgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgdmFyIEMsIGZsYWdzVmFsdWUsIGZsYWdzLCBtYXRjaGVyLCBnbG9iYWwsIGZ1bGxVbmljb2RlO1xuICBDID0gc3BlY2llc0NvbnN0cnVjdG9yKFIsIFJlZ0V4cCk7XG4gIGZsYWdzVmFsdWUgPSBSLmZsYWdzO1xuICBpZiAoZmxhZ3NWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgJiYgISgnZmxhZ3MnIGluIFJlZ0V4cFByb3RvdHlwZSkpIHtcbiAgICBmbGFnc1ZhbHVlID0gZ2V0UmVnRXhwRmxhZ3MuY2FsbChSKTtcbiAgfVxuICBmbGFncyA9IGZsYWdzVmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogdG9TdHJpbmcoZmxhZ3NWYWx1ZSk7XG4gIG1hdGNoZXIgPSBuZXcgQyhDID09PSBSZWdFeHAgPyBSLnNvdXJjZSA6IFIsIGZsYWdzKTtcbiAgZ2xvYmFsID0gISF+ZmxhZ3MuaW5kZXhPZignZycpO1xuICBmdWxsVW5pY29kZSA9ICEhfmZsYWdzLmluZGV4T2YoJ3UnKTtcbiAgbWF0Y2hlci5sYXN0SW5kZXggPSB0b0xlbmd0aChSLmxhc3RJbmRleCk7XG4gIHJldHVybiBuZXcgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKG1hdGNoZXIsIFMsIGdsb2JhbCwgZnVsbFVuaWNvZGUpO1xufTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLm1hdGNoYWxsXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogV09SS1NfV0lUSF9OT05fR0xPQkFMX1JFR0VYIH0sIHtcbiAgbWF0Y2hBbGw6IGZ1bmN0aW9uIG1hdGNoQWxsKHJlZ2V4cCkge1xuICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICB2YXIgZmxhZ3MsIFMsIG1hdGNoZXIsIHJ4O1xuICAgIGlmIChyZWdleHAgIT0gbnVsbCkge1xuICAgICAgaWYgKGlzUmVnRXhwKHJlZ2V4cCkpIHtcbiAgICAgICAgZmxhZ3MgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCdmbGFncycgaW4gUmVnRXhwUHJvdG90eXBlXG4gICAgICAgICAgPyByZWdleHAuZmxhZ3NcbiAgICAgICAgICA6IGdldFJlZ0V4cEZsYWdzLmNhbGwocmVnZXhwKVxuICAgICAgICApKTtcbiAgICAgICAgaWYgKCF+ZmxhZ3MuaW5kZXhPZignZycpKSB0aHJvdyBUeXBlRXJyb3IoJ2AubWF0Y2hBbGxgIGRvZXMgbm90IGFsbG93IG5vbi1nbG9iYWwgcmVnZXhlcycpO1xuICAgICAgfVxuICAgICAgaWYgKFdPUktTX1dJVEhfTk9OX0dMT0JBTF9SRUdFWCkgcmV0dXJuIG5hdGl2ZU1hdGNoQWxsLmFwcGx5KE8sIGFyZ3VtZW50cyk7XG4gICAgICBtYXRjaGVyID0gZ2V0TWV0aG9kKHJlZ2V4cCwgTUFUQ0hfQUxMKTtcbiAgICAgIGlmIChtYXRjaGVyID09PSB1bmRlZmluZWQgJiYgSVNfUFVSRSAmJiBjbGFzc29mKHJlZ2V4cCkgPT0gJ1JlZ0V4cCcpIG1hdGNoZXIgPSAkbWF0Y2hBbGw7XG4gICAgICBpZiAobWF0Y2hlcikgcmV0dXJuIG1hdGNoZXIuY2FsbChyZWdleHAsIE8pO1xuICAgIH0gZWxzZSBpZiAoV09SS1NfV0lUSF9OT05fR0xPQkFMX1JFR0VYKSByZXR1cm4gbmF0aXZlTWF0Y2hBbGwuYXBwbHkoTywgYXJndW1lbnRzKTtcbiAgICBTID0gdG9TdHJpbmcoTyk7XG4gICAgcnggPSBuZXcgUmVnRXhwKHJlZ2V4cCwgJ2cnKTtcbiAgICByZXR1cm4gSVNfUFVSRSA/ICRtYXRjaEFsbC5jYWxsKHJ4LCBTKSA6IHJ4W01BVENIX0FMTF0oUyk7XG4gIH1cbn0pO1xuXG5JU19QVVJFIHx8IE1BVENIX0FMTCBpbiBSZWdFeHBQcm90b3R5cGUgfHwgcmVkZWZpbmUoUmVnRXhwUHJvdG90eXBlLCBNQVRDSF9BTEwsICRtYXRjaEFsbCk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL1ZlcnNpb25cXC8xMCg/OlxcLlxcZCspezEsMn0oPzogW1xcdy4vXSspPyg/OiBNb2JpbGVcXC9cXHcrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkcGFkRW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wYWQnKS5lbmQ7XG52YXIgV0VCS0lUX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcGFkLXdlYmtpdC1idWcnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucGFkRW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5wYWRlbmRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBXRUJLSVRfQlVHIH0sIHtcbiAgcGFkRW5kOiBmdW5jdGlvbiBwYWRFbmQobWF4TGVuZ3RoIC8qICwgZmlsbFN0cmluZyA9ICcgJyAqLykge1xuICAgIHJldHVybiAkcGFkRW5kKHRoaXMsIG1heExlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRwYWRTdGFydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcGFkJykuc3RhcnQ7XG52YXIgV0VCS0lUX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcGFkLXdlYmtpdC1idWcnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucGFkU3RhcnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnBhZHN0YXJ0XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogV0VCS0lUX0JVRyB9LCB7XG4gIHBhZFN0YXJ0OiBmdW5jdGlvbiBwYWRTdGFydChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWRTdGFydCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG52YXIgcHVzaCA9IEFycmF5UHJvdG90eXBlLnB1c2g7XG52YXIgam9pbiA9IEFycmF5UHJvdG90eXBlLmpvaW47XG5cbi8vIGBTdHJpbmcucmF3YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnJhd1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHN0YXQ6IHRydWUgfSwge1xuICByYXc6IGZ1bmN0aW9uIHJhdyh0ZW1wbGF0ZSkge1xuICAgIHZhciByYXdUZW1wbGF0ZSA9IHRvSW5kZXhlZE9iamVjdCh0b09iamVjdCh0ZW1wbGF0ZSkucmF3KTtcbiAgICB2YXIgbGl0ZXJhbFNlZ21lbnRzID0gbGVuZ3RoT2ZBcnJheUxpa2UocmF3VGVtcGxhdGUpO1xuICAgIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAobGl0ZXJhbFNlZ21lbnRzID4gaSkge1xuICAgICAgcHVzaC5jYWxsKGVsZW1lbnRzLCB0b1N0cmluZyhyYXdUZW1wbGF0ZVtpKytdKSk7XG4gICAgICBpZiAoaSA9PT0gbGl0ZXJhbFNlZ21lbnRzKSByZXR1cm4gam9pbi5jYWxsKGVsZW1lbnRzLCAnJyk7XG4gICAgICBpZiAoaSA8IGFyZ3VtZW50c0xlbmd0aCkgcHVzaC5jYWxsKGVsZW1lbnRzLCB0b1N0cmluZyhhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1yZXBlYXQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwZWF0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBlYXRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSB9LCB7XG4gIHJlcGVhdDogcmVwZWF0XG59KTtcbiIsInZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciByZXBsYWNlID0gJycucmVwbGFjZTtcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MUyA9IC9cXCQoWyQmJ2BdfFxcZHsxLDJ9fDxbXj5dKj4pL2c7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQgPSAvXFwkKFskJidgXXxcXGR7MSwyfSkvZztcblxuLy8gYEdldFN1YnN0aXR1dGlvbmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldHN1YnN0aXR1dGlvblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VtZW50KSB7XG4gIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgdmFyIG0gPSBjYXB0dXJlcy5sZW5ndGg7XG4gIHZhciBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQ7XG4gIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBuYW1lZENhcHR1cmVzID0gdG9PYmplY3QobmFtZWRDYXB0dXJlcyk7XG4gICAgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTO1xuICB9XG4gIHJldHVybiByZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICB2YXIgY2FwdHVyZTtcbiAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgY2FzZSAnPCc6XG4gICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2guY2hhckF0KDEpIDogY2FwdHVyZXNbZiAtIDFdICsgY2guY2hhckF0KDEpO1xuICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfVxuICAgICAgICBjYXB0dXJlID0gY2FwdHVyZXNbbiAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBnZXRTdWJzdGl0dXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbicpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFJFUExBQ0UgPSB3ZWxsS25vd25TeW1ib2woJ3JlcGxhY2UnKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBJRSA8PSAxMSByZXBsYWNlcyAkMCB3aXRoIHRoZSB3aG9sZSBtYXRjaCwgYXMgaWYgaXQgd2FzICQmXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDI0NjY2L2dldHRpbmctaWUtdG8tcmVwbGFjZS1hLXJlZ2V4LXdpdGgtdGhlLWxpdGVyYWwtc3RyaW5nLTBcbnZhciBSRVBMQUNFX0tFRVBTXyQwID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9wcmVmZXItZXNjYXBlLXJlcGxhY2VtZW50LWRvbGxhci1jaGFyIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiAnYScucmVwbGFjZSgvLi8sICckMCcpID09PSAnJDAnO1xufSkoKTtcblxuLy8gU2FmYXJpIDw9IDEzLjAuMyg/KSBzdWJzdGl0dXRlcyBudGggY2FwdHVyZSB3aGVyZSBuPm0gd2l0aCBhbiBlbXB0eSBzdHJpbmdcbnZhciBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICgvLi9bUkVQTEFDRV0pIHtcbiAgICByZXR1cm4gLy4vW1JFUExBQ0VdKCdhJywgJyQwJykgPT09ICcnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0pKCk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9IC8uLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgcmVzdWx0Lmdyb3VwcyA9IHsgYTogJzcnIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby11c2VsZXNzLWRvbGxhci1yZXBsYWNlbWVudHMgLS0gZmFsc2UgcG9zaXRpdmVcbiAgcmV0dXJuICcnLnJlcGxhY2UocmUsICckPGE+JykgIT09ICc3Jztcbn0pO1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdyZXBsYWNlJywgZnVuY3Rpb24gKF8sIG5hdGl2ZVJlcGxhY2UsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICB2YXIgVU5TQUZFX1NVQlNUSVRVVEUgPSBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA/ICckJyA6ICckMCc7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZVxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHJlcGxhY2VyID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZ2V0TWV0aG9kKHNlYXJjaFZhbHVlLCBSRVBMQUNFKTtcbiAgICAgIHJldHVybiByZXBsYWNlclxuICAgICAgICA/IHJlcGxhY2VyLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiBuYXRpdmVSZXBsYWNlLmNhbGwodG9TdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChzdHJpbmcsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QodGhpcyk7XG4gICAgICB2YXIgUyA9IHRvU3RyaW5nKHN0cmluZyk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgcmVwbGFjZVZhbHVlLmluZGV4T2YoVU5TQUZFX1NVQlNUSVRVVEUpID09PSAtMSAmJlxuICAgICAgICByZXBsYWNlVmFsdWUuaW5kZXhPZignJDwnKSA9PT0gLTFcbiAgICAgICkge1xuICAgICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJ4LCBTLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IGlzQ2FsbGFibGUocmVwbGFjZVZhbHVlKTtcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IHRvU3RyaW5nKHJlcGxhY2VWYWx1ZSk7XG5cbiAgICAgIHZhciBnbG9iYWwgPSByeC5nbG9iYWw7XG4gICAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAgIHZhciBmdWxsVW5pY29kZSA9IHJ4LnVuaWNvZGU7XG4gICAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSBicmVhaztcblxuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuXG4gICAgICAgIHZhciBtYXRjaFN0ciA9IHRvU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IHRvU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyT3JJbmZpbml0eShyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSB0b1N0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xufSwgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTIHx8ICFSRVBMQUNFX0tFRVBTXyQwIHx8IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgZ2V0UmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgZ2V0U3Vic3RpdHV0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zdWJzdGl0dXRpb24nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFJFUExBQ0UgPSB3ZWxsS25vd25TeW1ib2woJ3JlcGxhY2UnKTtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG1heCA9IE1hdGgubWF4O1xuXG52YXIgc3RyaW5nSW5kZXhPZiA9IGZ1bmN0aW9uIChzdHJpbmcsIHNlYXJjaFZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgaWYgKGZyb21JbmRleCA+IHN0cmluZy5sZW5ndGgpIHJldHVybiAtMTtcbiAgaWYgKHNlYXJjaFZhbHVlID09PSAnJykgcmV0dXJuIGZyb21JbmRleDtcbiAgcmV0dXJuIHN0cmluZy5pbmRleE9mKHNlYXJjaFZhbHVlLCBmcm9tSW5kZXgpO1xufTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZWFsbFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlIH0sIHtcbiAgcmVwbGFjZUFsbDogZnVuY3Rpb24gcmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgIHZhciBJU19SRUdfRVhQLCBmbGFncywgcmVwbGFjZXIsIHN0cmluZywgc2VhcmNoU3RyaW5nLCBmdW5jdGlvbmFsUmVwbGFjZSwgc2VhcmNoTGVuZ3RoLCBhZHZhbmNlQnksIHJlcGxhY2VtZW50O1xuICAgIHZhciBwb3NpdGlvbiA9IDA7XG4gICAgdmFyIGVuZE9mTGFzdE1hdGNoID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgaWYgKHNlYXJjaFZhbHVlICE9IG51bGwpIHtcbiAgICAgIElTX1JFR19FWFAgPSBpc1JlZ0V4cChzZWFyY2hWYWx1ZSk7XG4gICAgICBpZiAoSVNfUkVHX0VYUCkge1xuICAgICAgICBmbGFncyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGVcbiAgICAgICAgICA/IHNlYXJjaFZhbHVlLmZsYWdzXG4gICAgICAgICAgOiBnZXRSZWdFeHBGbGFncy5jYWxsKHNlYXJjaFZhbHVlKVxuICAgICAgICApKTtcbiAgICAgICAgaWYgKCF+ZmxhZ3MuaW5kZXhPZignZycpKSB0aHJvdyBUeXBlRXJyb3IoJ2AucmVwbGFjZUFsbGAgZG9lcyBub3QgYWxsb3cgbm9uLWdsb2JhbCByZWdleGVzJyk7XG4gICAgICB9XG4gICAgICByZXBsYWNlciA9IGdldE1ldGhvZChzZWFyY2hWYWx1ZSwgUkVQTEFDRSk7XG4gICAgICBpZiAocmVwbGFjZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VyLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKElTX1BVUkUgJiYgSVNfUkVHX0VYUCkge1xuICAgICAgICByZXR1cm4gdG9TdHJpbmcoTykucmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3RyaW5nID0gdG9TdHJpbmcoTyk7XG4gICAgc2VhcmNoU3RyaW5nID0gdG9TdHJpbmcoc2VhcmNoVmFsdWUpO1xuICAgIGZ1bmN0aW9uYWxSZXBsYWNlID0gaXNDYWxsYWJsZShyZXBsYWNlVmFsdWUpO1xuICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IHRvU3RyaW5nKHJlcGxhY2VWYWx1ZSk7XG4gICAgc2VhcmNoTGVuZ3RoID0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgICBhZHZhbmNlQnkgPSBtYXgoMSwgc2VhcmNoTGVuZ3RoKTtcbiAgICBwb3NpdGlvbiA9IHN0cmluZ0luZGV4T2Yoc3RyaW5nLCBzZWFyY2hTdHJpbmcsIDApO1xuICAgIHdoaWxlIChwb3NpdGlvbiAhPT0gLTEpIHtcbiAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICByZXBsYWNlbWVudCA9IHRvU3RyaW5nKHJlcGxhY2VWYWx1ZShzZWFyY2hTdHJpbmcsIHBvc2l0aW9uLCBzdHJpbmcpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKHNlYXJjaFN0cmluZywgc3RyaW5nLCBwb3NpdGlvbiwgW10sIHVuZGVmaW5lZCwgcmVwbGFjZVZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoZW5kT2ZMYXN0TWF0Y2gsIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgZW5kT2ZMYXN0TWF0Y2ggPSBwb3NpdGlvbiArIHNlYXJjaExlbmd0aDtcbiAgICAgIHBvc2l0aW9uID0gc3RyaW5nSW5kZXhPZihzdHJpbmcsIHNlYXJjaFN0cmluZywgcG9zaXRpb24gKyBhZHZhbmNlQnkpO1xuICAgIH1cbiAgICBpZiAoZW5kT2ZMYXN0TWF0Y2ggPCBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gc3RyaW5nLnNsaWNlKGVuZE9mTGFzdE1hdGNoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgc2FtZVZhbHVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhbWUtdmFsdWUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBzZWFyY2ggbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdzZWFyY2gnLCBmdW5jdGlvbiAoU0VBUkNILCBuYXRpdmVTZWFyY2gsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNlYXJjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnNlYXJjaFxuICAgIGZ1bmN0aW9uIHNlYXJjaChyZWdleHApIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciBzZWFyY2hlciA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBnZXRNZXRob2QocmVnZXhwLCBTRUFSQ0gpO1xuICAgICAgcmV0dXJuIHNlYXJjaGVyID8gc2VhcmNoZXIuY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW1NFQVJDSF0odG9TdHJpbmcoTykpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzZWFyY2hcbiAgICBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlU2VhcmNoLCByeCwgUyk7XG5cbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHByZXZpb3VzTGFzdEluZGV4ID0gcngubGFzdEluZGV4O1xuICAgICAgaWYgKCFzYW1lVmFsdWUocHJldmlvdXNMYXN0SW5kZXgsIDApKSByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgaWYgKCFzYW1lVmFsdWUocngubGFzdEluZGV4LCBwcmV2aW91c0xhc3RJbmRleCkpIHJ4Lmxhc3RJbmRleCA9IHByZXZpb3VzTGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCA/IC0xIDogcmVzdWx0LmluZGV4O1xuICAgIH1cbiAgXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMnKTtcbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1yZWdleHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcbnZhciBzdGlja3lIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5VTlNVUFBPUlRFRF9ZO1xudmFyIGFycmF5UHVzaCA9IFtdLnB1c2g7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgTUFYX1VJTlQzMiA9IDB4RkZGRkZGRkY7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1lbXB0eS1ncm91cCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICB2YXIgcmUgPSAvKD86KS87XG4gIHZhciBvcmlnaW5hbEV4ZWMgPSByZS5leGVjO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH07XG4gIHZhciByZXN1bHQgPSAnYWInLnNwbGl0KHJlKTtcbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggIT09IDIgfHwgcmVzdWx0WzBdICE9PSAnYScgfHwgcmVzdWx0WzFdICE9PSAnYic7XG59KTtcblxuLy8gQEBzcGxpdCBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3NwbGl0JywgZnVuY3Rpb24gKFNQTElULCBuYXRpdmVTcGxpdCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHZhciBpbnRlcm5hbFNwbGl0O1xuICBpZiAoXG4gICAgJ2FiYmMnLnNwbGl0KC8oYikqLylbMV0gPT0gJ2MnIHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1lbXB0eS1ncm91cCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgICd0ZXN0Jy5zcGxpdCgvKD86KS8sIC0xKS5sZW5ndGggIT0gNCB8fFxuICAgICdhYicuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGggIT0gMiB8fFxuICAgICcuJy5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGggIT0gNCB8fFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tZW1wdHktY2FwdHVyaW5nLWdyb3VwLCByZWdleHAvbm8tZW1wdHktZ3JvdXAgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgICAnLicuc3BsaXQoLygpKCkvKS5sZW5ndGggPiAxIHx8XG4gICAgJycuc3BsaXQoLy4/LykubGVuZ3RoXG4gICkge1xuICAgIC8vIGJhc2VkIG9uIGVzNS1zaGltIGltcGxlbWVudGF0aW9uLCBuZWVkIHRvIHJld29yayBpdFxuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQpIHJldHVybiBbc3RyaW5nXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbSk7XG4gICAgICB9XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHkubGFzdEluZGV4O1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nLmxlbmd0aCkgYXJyYXlQdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKSBvdXRwdXQucHVzaCgnJyk7XG4gICAgICB9IGVsc2Ugb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltID8gb3V0cHV0LnNsaWNlKDAsIGxpbSkgOiBvdXRwdXQ7XG4gICAgfTtcbiAgLy8gQ2hha3JhLCBWOFxuICB9IGVsc2UgaWYgKCcwJy5zcGxpdCh1bmRlZmluZWQsIDApLmxlbmd0aCkge1xuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBuYXRpdmVTcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSBpbnRlcm5hbFNwbGl0ID0gbmF0aXZlU3BsaXQ7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnNwbGl0XG4gICAgZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHNwbGl0dGVyID0gc2VwYXJhdG9yID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGdldE1ldGhvZChzZXBhcmF0b3IsIFNQTElUKTtcbiAgICAgIHJldHVybiBzcGxpdHRlclxuICAgICAgICA/IHNwbGl0dGVyLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdClcbiAgICAgICAgOiBpbnRlcm5hbFNwbGl0LmNhbGwodG9TdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNwbGl0XG4gICAgLy9cbiAgICAvLyBOT1RFOiBUaGlzIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIGVuZ2luZXMgdGhhdCBkb24ndCBzdXBwb3J0XG4gICAgLy8gdGhlICd5JyBmbGFnLlxuICAgIGZ1bmN0aW9uIChzdHJpbmcsIGxpbWl0KSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUoaW50ZXJuYWxTcGxpdCwgcngsIFMsIGxpbWl0LCBpbnRlcm5hbFNwbGl0ICE9PSBuYXRpdmVTcGxpdCk7XG5cbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IocngsIFJlZ0V4cCk7XG5cbiAgICAgIHZhciB1bmljb2RlTWF0Y2hpbmcgPSByeC51bmljb2RlO1xuICAgICAgdmFyIGZsYWdzID0gKHJ4Lmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4Lm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoVU5TVVBQT1JURURfWSA/ICdnJyA6ICd5Jyk7XG5cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBTIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICB2YXIgc3BsaXR0ZXIgPSBuZXcgQyhVTlNVUFBPUlRFRF9ZID8gJ14oPzonICsgcnguc291cmNlICsgJyknIDogcngsIGZsYWdzKTtcbiAgICAgIHZhciBsaW0gPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKGxpbSA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgaWYgKFMubGVuZ3RoID09PSAwKSByZXR1cm4gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpID09PSBudWxsID8gW1NdIDogW107XG4gICAgICB2YXIgcCA9IDA7XG4gICAgICB2YXIgcSA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgd2hpbGUgKHEgPCBTLmxlbmd0aCkge1xuICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBVTlNVUFBPUlRFRF9ZID8gMCA6IHE7XG4gICAgICAgIHZhciB6ID0gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFVOU1VQUE9SVEVEX1kgPyBTLnNsaWNlKHEpIDogUyk7XG4gICAgICAgIHZhciBlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgeiA9PT0gbnVsbCB8fFxuICAgICAgICAgIChlID0gbWluKHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCArIChVTlNVUFBPUlRFRF9ZID8gcSA6IDApKSwgUy5sZW5ndGgpKSA9PT0gcFxuICAgICAgICApIHtcbiAgICAgICAgICBxID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQS5wdXNoKFMuc2xpY2UocCwgcSkpO1xuICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSB6Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgQS5wdXNoKHpbaV0pO1xuICAgICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxID0gcCA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucHVzaChTLnNsaWNlKHApKTtcbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgXTtcbn0sICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMsIFVOU1VQUE9SVEVEX1kpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIG5vdEFSZWdFeHAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbm90LWEtcmVnZXhwJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBjb3JyZWN0SXNSZWdFeHBMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYycpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS1zdGFydHN3aXRoIC0tIHNhZmVcbnZhciAkc3RhcnRzV2l0aCA9ICcnLnN0YXJ0c1dpdGg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbnZhciBDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyA9IGNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdzdGFydHNXaXRoJyk7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9wdWxsLzcwMlxudmFyIE1ETl9QT0xZRklMTF9CVUcgPSAhSVNfUFVSRSAmJiAhQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgJiYgISFmdW5jdGlvbiAoKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90b3R5cGUsICdzdGFydHNXaXRoJyk7XG4gIHJldHVybiBkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLndyaXRhYmxlO1xufSgpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zdGFydHN3aXRoXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogIU1ETl9QT0xZRklMTF9CVUcgJiYgIUNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDIH0sIHtcbiAgc3RhcnRzV2l0aDogZnVuY3Rpb24gc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgLyogLCBwb3NpdGlvbiA9IDAgKi8pIHtcbiAgICB2YXIgdGhhdCA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgIG5vdEFSZWdFeHAoc2VhcmNoU3RyaW5nKTtcbiAgICB2YXIgaW5kZXggPSB0b0xlbmd0aChtaW4oYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIHRoYXQubGVuZ3RoKSk7XG4gICAgdmFyIHNlYXJjaCA9IHRvU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRzdGFydHNXaXRoXG4gICAgICA/ICRzdGFydHNXaXRoLmNhbGwodGhhdCwgc2VhcmNoLCBpbmRleClcbiAgICAgIDogdGhhdC5zbGljZShpbmRleCwgaW5kZXggKyBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbnZhciBzbGljZSA9ICcnLnNsaWNlO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItc3RyaW5nLXNsaWNlIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgRk9SQ0VEID0gIScnLnN1YnN0ciB8fCAnYWInLnN1YnN0cigtMSkgIT09ICdiJztcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuc3Vic3RyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zdWJzdHJcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBzdWJzdHI6IGZ1bmN0aW9uIHN1YnN0cihzdGFydCwgbGVuZ3RoKSB7XG4gICAgdmFyIHRoYXQgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgICB2YXIgc2l6ZSA9IHRoYXQubGVuZ3RoO1xuICAgIHZhciBpbnRTdGFydCA9IHRvSW50ZWdlck9ySW5maW5pdHkoc3RhcnQpO1xuICAgIHZhciBpbnRMZW5ndGgsIGludEVuZDtcbiAgICBpZiAoaW50U3RhcnQgPT09IEluZmluaXR5KSBpbnRTdGFydCA9IDA7XG4gICAgaWYgKGludFN0YXJ0IDwgMCkgaW50U3RhcnQgPSBtYXgoc2l6ZSArIGludFN0YXJ0LCAwKTtcbiAgICBpbnRMZW5ndGggPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHNpemUgOiB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aCk7XG4gICAgaWYgKGludExlbmd0aCA8PSAwIHx8IGludExlbmd0aCA9PT0gSW5maW5pdHkpIHJldHVybiAnJztcbiAgICBpbnRFbmQgPSBtaW4oaW50U3RhcnQgKyBpbnRMZW5ndGgsIHNpemUpO1xuICAgIHJldHVybiBpbnRTdGFydCA+PSBpbnRFbmQgPyAnJyA6IHNsaWNlLmNhbGwodGhhdCwgaW50U3RhcnQsIGludEVuZCk7XG4gIH1cbn0pO1xuIiwidmFyIFBST1BFUl9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5QUk9QRVI7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgbm9uID0gJ1xcdTIwMEJcXHUwMDg1XFx1MTgwRSc7XG5cbi8vIGNoZWNrIHRoYXQgYSBtZXRob2Qgd29ya3Mgd2l0aCB0aGUgY29ycmVjdCBsaXN0XG4vLyBvZiB3aGl0ZXNwYWNlcyBhbmQgaGFzIGEgY29ycmVjdCBuYW1lXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICByZXR1cm4gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXSgpXG4gICAgICB8fCBub25bTUVUSE9EX05BTUVdKCkgIT09IG5vblxuICAgICAgfHwgKFBST1BFUl9GVU5DVElPTl9OQU1FICYmIHdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXS5uYW1lICE9PSBNRVRIT0RfTkFNRSk7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICR0cmltID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltJykudHJpbTtcbnZhciBmb3JjZWRTdHJpbmdUcmltTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS50cmltYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCgndHJpbScpIH0sIHtcbiAgdHJpbTogZnVuY3Rpb24gdHJpbSgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRyaW1FbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS5lbmQ7XG52YXIgZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQnKTtcblxudmFyIEZPUkNFRCA9IGZvcmNlZFN0cmluZ1RyaW1NZXRob2QoJ3RyaW1FbmQnKTtcblxudmFyIHRyaW1FbmQgPSBGT1JDRUQgPyBmdW5jdGlvbiB0cmltRW5kKCkge1xuICByZXR1cm4gJHRyaW1FbmQodGhpcyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS10cmltc3RhcnQtdHJpbWVuZCAtLSBzYWZlXG59IDogJycudHJpbUVuZDtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltRW5kLCB0cmltUmlnaHQgfWAgbWV0aG9kc1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1lbmRcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNTdHJpbmcucHJvdG90eXBlLnRyaW1yaWdodFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBuYW1lOiAndHJpbUVuZCcsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgdHJpbUVuZDogdHJpbUVuZCxcbiAgdHJpbVJpZ2h0OiB0cmltRW5kXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICR0cmltU3RhcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0nKS5zdGFydDtcbnZhciBmb3JjZWRTdHJpbmdUcmltTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZCcpO1xuXG52YXIgRk9SQ0VEID0gZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCgndHJpbVN0YXJ0Jyk7XG5cbnZhciB0cmltU3RhcnQgPSBGT1JDRUQgPyBmdW5jdGlvbiB0cmltU3RhcnQoKSB7XG4gIHJldHVybiAkdHJpbVN0YXJ0KHRoaXMpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1wcm90b3R5cGUtdHJpbXN0YXJ0LXRyaW1lbmQgLS0gc2FmZVxufSA6ICcnLnRyaW1TdGFydDtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltU3RhcnQsIHRyaW1MZWZ0IH1gIG1ldGhvZHNcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltc3RhcnRcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNTdHJpbmcucHJvdG90eXBlLnRyaW1sZWZ0XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIG5hbWU6ICd0cmltU3RhcnQnLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIHRyaW1TdGFydDogdHJpbVN0YXJ0LFxuICB0cmltTGVmdDogdHJpbVN0YXJ0XG59KTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xuXG52YXIgcXVvdCA9IC9cIi9nO1xuXG4vLyBgQ3JlYXRlSFRNTGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWh0bWxcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZShzdHJpbmcpKTtcbiAgdmFyIHAxID0gJzwnICsgdGFnO1xuICBpZiAoYXR0cmlidXRlICE9PSAnJykgcDEgKz0gJyAnICsgYXR0cmlidXRlICsgJz1cIicgKyB0b1N0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIG1ldGhvZCwgbG93ZXJjYXNlXG4vLyBvZiBhIHRhZyBhbmQgZXNjYXBpbmcgcXVvdGVzIGluIGFyZ3VtZW50c1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgcmV0dXJuIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW01FVEhPRF9OQU1FXSgnXCInKTtcbiAgICByZXR1cm4gdGVzdCAhPT0gdGVzdC50b0xvd2VyQ2FzZSgpIHx8IHRlc3Quc3BsaXQoJ1wiJykubGVuZ3RoID4gMztcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmFuY2hvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuYW5jaG9yXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnYW5jaG9yJykgfSwge1xuICBhbmNob3I6IGZ1bmN0aW9uIGFuY2hvcihuYW1lKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnbmFtZScsIG5hbWUpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5iaWdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmJpZ1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2JpZycpIH0sIHtcbiAgYmlnOiBmdW5jdGlvbiBiaWcoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2JpZycsICcnLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmJsaW5rYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5ibGlua1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2JsaW5rJykgfSwge1xuICBibGluazogZnVuY3Rpb24gYmxpbmsoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2JsaW5rJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuYm9sZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuYm9sZFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2JvbGQnKSB9LCB7XG4gIGJvbGQ6IGZ1bmN0aW9uIGJvbGQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2InLCAnJywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5maXhlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuZml4ZWRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdmaXhlZCcpIH0sIHtcbiAgZml4ZWQ6IGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmZvbnRjb2xvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnZm9udGNvbG9yJykgfSwge1xuICBmb250Y29sb3I6IGZ1bmN0aW9uIGZvbnRjb2xvcihjb2xvcikge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ2NvbG9yJywgY29sb3IpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuZm9udHNpemVcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdmb250c2l6ZScpIH0sIHtcbiAgZm9udHNpemU6IGZ1bmN0aW9uIGZvbnRzaXplKHNpemUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnZm9udCcsICdzaXplJywgc2l6ZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLml0YWxpY3NgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLml0YWxpY3NcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdpdGFsaWNzJykgfSwge1xuICBpdGFsaWNzOiBmdW5jdGlvbiBpdGFsaWNzKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdpJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUubGlua2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubGlua1xuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ2xpbmsnKSB9LCB7XG4gIGxpbms6IGZ1bmN0aW9uIGxpbmsodXJsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnaHJlZicsIHVybCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnNtYWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zbWFsbFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ3NtYWxsJykgfSwge1xuICBzbWFsbDogZnVuY3Rpb24gc21hbGwoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3NtYWxsJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVIVE1MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1odG1sJyk7XG52YXIgZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuc3RyaWtlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zdHJpa2VcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kKCdzdHJpa2UnKSB9LCB7XG4gIHN0cmlrZTogZnVuY3Rpb24gc3RyaWtlKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdHJpa2UnLCAnJywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5zdWJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnN1YlxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ0hUTUxNZXRob2QoJ3N1YicpIH0sIHtcbiAgc3ViOiBmdW5jdGlvbiBzdWIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3N1YicsICcnLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSFRNTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaHRtbCcpO1xudmFyIGZvcmNlZFN0cmluZ0hUTUxNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLWh0bWwtZm9yY2VkJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnN1cGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3VwXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnc3VwJykgfSwge1xuICBzdXA6IGZ1bmN0aW9uIHN1cCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3VwJywgJycsICcnKTtcbiAgfVxufSk7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJykuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUztcblxudmFyIEFycmF5QnVmZmVyID0gZ2xvYmFsLkFycmF5QnVmZmVyO1xudmFyIEludDhBcnJheSA9IGdsb2JhbC5JbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgSW50OEFycmF5KDEpO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgbmV3IEludDhBcnJheSgtMSk7XG59KSB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBuZXcgSW50OEFycmF5KCk7XG4gIG5ldyBJbnQ4QXJyYXkobnVsbCk7XG4gIG5ldyBJbnQ4QXJyYXkoMS41KTtcbiAgbmV3IEludDhBcnJheShpdGVyYWJsZSk7XG59LCB0cnVlKSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFNhZmFyaSAoMTErKSBidWcgLSBhIHJlYXNvbiB3aHkgZXZlbiBTYWZhcmkgMTMgc2hvdWxkIGxvYWQgYSB0eXBlZCBhcnJheSBwb2x5ZmlsbFxuICByZXR1cm4gbmV3IEludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMiksIDEsIHVuZGVmaW5lZCkubGVuZ3RoICE9PSAxO1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSB0b0ludGVnZXJPckluZmluaXR5KGl0KTtcbiAgaWYgKHJlc3VsdCA8IDApIHRocm93IFJhbmdlRXJyb3IoXCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDBcIik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIHRvUG9zaXRpdmVJbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gIHZhciBvZmZzZXQgPSB0b1Bvc2l0aXZlSW50ZWdlcihpdCk7XG4gIGlmIChvZmZzZXQgJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0Jyk7XG4gIHJldHVybiBvZmZzZXQ7XG59O1xuIiwidmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJykuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcGZuLCB0aGlzQXJnICovKSB7XG4gIHZhciBDID0gYUNvbnN0cnVjdG9yKHRoaXMpO1xuICB2YXIgTyA9IHRvT2JqZWN0KHNvdXJjZSk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgaSwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yLCBuZXh0O1xuICBpZiAoaXRlcmF0b3JNZXRob2QgJiYgIWlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyYXRvck1ldGhvZCkpIHtcbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKE8sIGl0ZXJhdG9yTWV0aG9kKTtcbiAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICBPID0gW107XG4gICAgd2hpbGUgKCEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgIE8ucHVzaChzdGVwLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgaWYgKG1hcHBpbmcgJiYgYXJndW1lbnRzTGVuZ3RoID4gMikge1xuICAgIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgfVxuICBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgcmVzdWx0ID0gbmV3IChhVHlwZWRBcnJheUNvbnN0cnVjdG9yKEMpKShsZW5ndGgpO1xuICBmb3IgKGkgPSAwOyBsZW5ndGggPiBpOyBpKyspIHtcbiAgICByZXN1bHRbaV0gPSBtYXBwaW5nID8gbWFwZm4oT1tpXSwgaSkgOiBPW2ldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycycpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIEFycmF5QnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlcicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaXNJbnRlZ3JhbE51bWJlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1pbnRlZ3JhbC1udW1iZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4Jyk7XG52YXIgdG9PZmZzZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2Zmc2V0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcbnZhciB0eXBlZEFycmF5RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tJyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG52YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbnZhciBBcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyTW9kdWxlLkFycmF5QnVmZmVyO1xudmFyIERhdGFWaWV3ID0gQXJyYXlCdWZmZXJNb2R1bGUuRGF0YVZpZXc7XG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyA9IEFycmF5QnVmZmVyVmlld0NvcmUuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUztcbnZhciBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiA9IEFycmF5QnVmZmVyVmlld0NvcmUuVFlQRURfQVJSQVlfQ09OU1RSVUNUT1I7XG52YXIgVFlQRURfQVJSQVlfVEFHID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UWVBFRF9BUlJBWV9UQUc7XG52YXIgVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuVHlwZWRBcnJheTtcbnZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UeXBlZEFycmF5UHJvdG90eXBlO1xudmFyIGFUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7XG52YXIgaXNUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5pc1R5cGVkQXJyYXk7XG52YXIgQllURVNfUEVSX0VMRU1FTlQgPSAnQllURVNfUEVSX0VMRU1FTlQnO1xudmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGgnO1xuXG52YXIgZnJvbUxpc3QgPSBmdW5jdGlvbiAoQywgbGlzdCkge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgKGFUeXBlZEFycmF5Q29uc3RydWN0b3IoQykpKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgbmF0aXZlRGVmaW5lUHJvcGVydHkoaXQsIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldO1xuICB9IH0pO1xufTtcblxudmFyIGlzQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGtsYXNzO1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGl0KSkgPT0gJ0FycmF5QnVmZmVyJyB8fCBrbGFzcyA9PSAnU2hhcmVkQXJyYXlCdWZmZXInO1xufTtcblxudmFyIGlzVHlwZWRBcnJheUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gIHJldHVybiBpc1R5cGVkQXJyYXkodGFyZ2V0KVxuICAgICYmICFpc1N5bWJvbChrZXkpXG4gICAgJiYga2V5IGluIHRhcmdldFxuICAgICYmIGlzSW50ZWdyYWxOdW1iZXIoK2tleSlcbiAgICAmJiBrZXkgPj0gMDtcbn07XG5cbnZhciB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSB7XG4gIGtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgcmV0dXJuIGlzVHlwZWRBcnJheUluZGV4KHRhcmdldCwga2V5KVxuICAgID8gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDIsIHRhcmdldFtrZXldKVxuICAgIDogbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbn07XG5cbnZhciB3cmFwcGVkRGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcikge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChpc1R5cGVkQXJyYXlJbmRleCh0YXJnZXQsIGtleSlcbiAgICAmJiBpc09iamVjdChkZXNjcmlwdG9yKVxuICAgICYmIGhhc093bihkZXNjcmlwdG9yLCAndmFsdWUnKVxuICAgICYmICFoYXNPd24oZGVzY3JpcHRvciwgJ2dldCcpXG4gICAgJiYgIWhhc093bihkZXNjcmlwdG9yLCAnc2V0JylcbiAgICAvLyBUT0RPOiBhZGQgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIHcvbyBjYWxsaW5nIGFjY2Vzc29yc1xuICAgICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVxuICAgICYmICghaGFzT3duKGRlc2NyaXB0b3IsICd3cml0YWJsZScpIHx8IGRlc2NyaXB0b3Iud3JpdGFibGUpXG4gICAgJiYgKCFoYXNPd24oZGVzY3JpcHRvciwgJ2VudW1lcmFibGUnKSB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUpXG4gICkge1xuICAgIHRhcmdldFtrZXldID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcik7XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYgPSB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSB3cmFwcGVkRGVmaW5lUHJvcGVydHk7XG4gICAgYWRkR2V0dGVyKFR5cGVkQXJyYXlQcm90b3R5cGUsICdidWZmZXInKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVPZmZzZXQnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVMZW5ndGgnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2xlbmd0aCcpO1xuICB9XG5cbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfSwge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogd3JhcHBlZEdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgICBkZWZpbmVQcm9wZXJ0eTogd3JhcHBlZERlZmluZVByb3BlcnR5XG4gIH0pO1xuXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsIHdyYXBwZXIsIENMQU1QRUQpIHtcbiAgICB2YXIgQllURVMgPSBUWVBFLm1hdGNoKC9cXGQrJC8pWzBdIC8gODtcbiAgICB2YXIgQ09OU1RSVUNUT1JfTkFNRSA9IFRZUEUgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSc7XG4gICAgdmFyIEdFVFRFUiA9ICdnZXQnICsgVFlQRTtcbiAgICB2YXIgU0VUVEVSID0gJ3NldCcgKyBUWVBFO1xuICAgIHZhciBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQ09OU1RSVUNUT1JfTkFNRV07XG4gICAgdmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbiAgICB2YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgdmFyIGV4cG9ydGVkID0ge307XG5cbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICB2YXIgZGF0YSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICByZXR1cm4gZGF0YS52aWV3W0dFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEuYnl0ZU9mZnNldCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICBpZiAoQ0xBTVBFRCkgdmFsdWUgPSAodmFsdWUgPSByb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4RkYgPyAweEZGIDogdmFsdWUgJiAweEZGO1xuICAgICAgZGF0YS52aWV3W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEuYnl0ZU9mZnNldCwgdmFsdWUsIHRydWUpO1xuICAgIH07XG5cbiAgICB2YXIgYWRkRWxlbWVudCA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgbmF0aXZlRGVmaW5lUHJvcGVydHkodGhhdCwgaW5kZXgsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlcih0aGlzLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCBvZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGF0LCBUeXBlZEFycmF5Q29uc3RydWN0b3IsIENPTlNUUlVDVE9SX05BTUUpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgYnl0ZU9mZnNldCA9IDA7XG4gICAgICAgIHZhciBidWZmZXIsIGJ5dGVMZW5ndGgsIGxlbmd0aDtcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xuICAgICAgICAgIGxlbmd0aCA9IHRvSW5kZXgoZGF0YSk7XG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5QnVmZmVyKGRhdGEpKSB7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBieXRlT2Zmc2V0ID0gdG9PZmZzZXQob2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYgKCRsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCRsZW4gJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9ICRsZW4gLSBieXRlT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggPCAwKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSB0b0xlbmd0aCgkbGVuZ3RoKSAqIEJZVEVTO1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggKyBieXRlT2Zmc2V0ID4gJGxlbikgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW5ndGggPSBieXRlTGVuZ3RoIC8gQllURVM7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlGcm9tLmNhbGwoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICAgICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgICAgICBieXRlT2Zmc2V0OiBieXRlT2Zmc2V0LFxuICAgICAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICAgICAgdmlldzogbmV3IERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgVHlwZWRBcnJheSk7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKFR5cGVkQXJyYXlQcm90b3R5cGUpO1xuICAgIH0gZWxzZSBpZiAoVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUykge1xuICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gd3JhcHBlcihmdW5jdGlvbiAoZHVtbXksIGRhdGEsIHR5cGVkQXJyYXlPZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZShkdW1teSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRJZlJlcXVpcmVkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSByZXR1cm4gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgICBpZiAoaXNBcnJheUJ1ZmZlcihkYXRhKSkgcmV0dXJuICRsZW5ndGggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGRhdGEsIHRvT2Zmc2V0KHR5cGVkQXJyYXlPZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogdHlwZWRBcnJheU9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhLCB0b09mZnNldCh0eXBlZEFycmF5T2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhKTtcbiAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheUZyb20uY2FsbChUeXBlZEFycmF5Q29uc3RydWN0b3IsIGRhdGEpO1xuICAgICAgICB9KCksIGR1bW15LCBUeXBlZEFycmF5Q29uc3RydWN0b3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBUeXBlZEFycmF5KTtcbiAgICAgIGZvckVhY2goZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3IpKSB7XG4gICAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3Rvciwga2V5LCBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3Jba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yICE9PSBUeXBlZEFycmF5Q29uc3RydWN0b3IpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUsICdjb25zdHJ1Y3RvcicsIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSwgVFlQRURfQVJSQVlfQ09OU1RSVUNUT1IsIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7XG5cbiAgICBpZiAoVFlQRURfQVJSQVlfVEFHKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLCBUWVBFRF9BUlJBWV9UQUcsIENPTlNUUlVDVE9SX05BTUUpO1xuICAgIH1cblxuICAgIGV4cG9ydGVkW0NPTlNUUlVDVE9SX05BTUVdID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG4gICAgJCh7XG4gICAgICBnbG9iYWw6IHRydWUsIGZvcmNlZDogVHlwZWRBcnJheUNvbnN0cnVjdG9yICE9IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvciwgc2hhbTogIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1NcbiAgICB9LCBleHBvcnRlZCk7XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3IpKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuICAgIH1cblxuICAgIGlmICghKEJZVEVTX1BFUl9FTEVNRU5UIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUsIEJZVEVTX1BFUl9FTEVNRU5ULCBCWVRFUyk7XG4gICAgfVxuXG4gICAgc2V0U3BlY2llcyhDT05TVFJVQ1RPUl9OQU1FKTtcbiAgfTtcbn0gZWxzZSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYEZsb2F0MzJBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ0Zsb2F0MzInLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYEZsb2F0NjRBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ0Zsb2F0NjQnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYEludDhBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ0ludDgnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYEludDE2QXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdJbnQxNicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYEludDMyQXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdJbnQzMicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYFVpbnQ4QXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdVaW50OCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3InKTtcblxuLy8gYFVpbnQ4Q2xhbXBlZEFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10eXBlZGFycmF5LW9iamVjdHNcbmNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcignVWludDgnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDhDbGFtcGVkQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0sIHRydWUpO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgVWludDE2QXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdVaW50MTYnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDE2QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwidmFyIGNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgVWludDMyQXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdVaW50MzInLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVsYXRpdmUtaW5kZXhpbmctbWV0aG9kXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdhdCcsIGZ1bmN0aW9uIGF0KGluZGV4KSB7XG4gIHZhciBPID0gYVR5cGVkQXJyYXkodGhpcyk7XG4gIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIHJlbGF0aXZlSW5kZXggPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgdmFyIGsgPSByZWxhdGl2ZUluZGV4ID49IDAgPyByZWxhdGl2ZUluZGV4IDogbGVuICsgcmVsYXRpdmVJbmRleDtcbiAgcmV0dXJuIChrIDwgMCB8fCBrID49IGxlbikgPyB1bmRlZmluZWQgOiBPW2tdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGNvcHlXaXRoaW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktY29weS13aXRoaW4nKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5jb3B5V2l0aGluYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5jb3B5d2l0aGluXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdjb3B5V2l0aGluJywgZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qICwgZW5kICovKSB7XG4gIHJldHVybiAkY29weVdpdGhpbi5jYWxsKGFUeXBlZEFycmF5KHRoaXMpLCB0YXJnZXQsIHN0YXJ0LCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZXZlcnkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZXZlcnk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmV2ZXJ5XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdldmVyeScsIGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZXZlcnkoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmaWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZpbGwnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5maWxsXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmlsbCcsIGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCwgZW5kICovKSB7XG4gIHJldHVybiAkZmlsbC5hcHBseShhVHlwZWRBcnJheSh0aGlzKSwgYXJndW1lbnRzKTtcbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGxpc3QpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gbmV3IENvbnN0cnVjdG9yKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbnZhciBUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiA9IEFycmF5QnVmZmVyVmlld0NvcmUuVFlQRURfQVJSQVlfQ09OU1RSVUNUT1I7XG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxuLy8gYSBwYXJ0IG9mIGBUeXBlZEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jdHlwZWRhcnJheS1zcGVjaWVzLWNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSkge1xuICByZXR1cm4gYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWxBcnJheSwgb3JpZ2luYWxBcnJheVtUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUl0pKTtcbn07XG4iLCJ2YXIgYXJyYXlGcm9tQ29uc3RydWN0b3JBbmRMaXN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZyb20tY29uc3RydWN0b3ItYW5kLWxpc3QnKTtcbnZhciB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGxpc3QpIHtcbiAgcmV0dXJuIGFycmF5RnJvbUNvbnN0cnVjdG9yQW5kTGlzdCh0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKGluc3RhbmNlKSwgbGlzdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyO1xudmFyIGZyb21TcGVjaWVzQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLXNwZWNpZXMtYW5kLWxpc3QnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZpbHRlclxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmlsdGVyJywgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHZhciBsaXN0ID0gJGZpbHRlcihhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICByZXR1cm4gZnJvbVNwZWNpZXNBbmRMaXN0KHRoaXMsIGxpc3QpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5maW5kXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kJywgZnVuY3Rpb24gZmluZChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZmluZChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZEluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbmRJbmRleDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZpbmRpbmRleFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmluZEluZGV4JywgZnVuY3Rpb24gZmluZEluZGV4KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmaW5kSW5kZXgoYVR5cGVkQXJyYXkodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZm9yRWFjaDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5mb3JlYWNoXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmb3JFYWNoJywgZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAkZm9yRWFjaChhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycycpO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpLmV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q7XG52YXIgdHlwZWRBcnJheUZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbScpO1xuXG4vLyBgJVR5cGVkQXJyYXklLmZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUuZnJvbVxuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCgnZnJvbScsIHR5cGVkQXJyYXlGcm9tLCBUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmNsdWRlcztcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuaW5jbHVkZXNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2luY2x1ZGVzJywgZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICByZXR1cm4gJGluY2x1ZGVzKGFUeXBlZEFycmF5KHRoaXMpLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuaW5kZXhvZlxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnaW5kZXhPZicsIGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICByZXR1cm4gJGluZGV4T2YoYVR5cGVkQXJyYXkodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuUFJPUEVSO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIEFycmF5SXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xudmFyIGFycmF5VmFsdWVzID0gQXJyYXlJdGVyYXRvcnMudmFsdWVzO1xudmFyIGFycmF5S2V5cyA9IEFycmF5SXRlcmF0b3JzLmtleXM7XG52YXIgYXJyYXlFbnRyaWVzID0gQXJyYXlJdGVyYXRvcnMuZW50cmllcztcbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciBuYXRpdmVUeXBlZEFycmF5SXRlcmF0b3IgPSBVaW50OEFycmF5ICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlW0lURVJBVE9SXTtcblxudmFyIFBST1BFUl9BUlJBWV9WQUxVRVNfTkFNRSA9ICEhbmF0aXZlVHlwZWRBcnJheUl0ZXJhdG9yICYmIG5hdGl2ZVR5cGVkQXJyYXlJdGVyYXRvci5uYW1lID09PSAndmFsdWVzJztcblxudmFyIHR5cGVkQXJyYXlWYWx1ZXMgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gIHJldHVybiBhcnJheVZhbHVlcy5jYWxsKGFUeXBlZEFycmF5KHRoaXMpKTtcbn07XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmVudHJpZXNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2VudHJpZXMnLCBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICByZXR1cm4gYXJyYXlFbnRyaWVzLmNhbGwoYVR5cGVkQXJyYXkodGhpcykpO1xufSk7XG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5rZXlzXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdrZXlzJywgZnVuY3Rpb24ga2V5cygpIHtcbiAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKGFUeXBlZEFycmF5KHRoaXMpKTtcbn0pO1xuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudmFsdWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS52YWx1ZXNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3ZhbHVlcycsIHR5cGVkQXJyYXlWYWx1ZXMsIFBST1BFUl9GVU5DVElPTl9OQU1FICYmICFQUk9QRVJfQVJSQVlfVkFMVUVTX05BTUUpO1xuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLUBAaXRlcmF0b3JcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoSVRFUkFUT1IsIHR5cGVkQXJyYXlWYWx1ZXMsIFBST1BFUl9GVU5DVElPTl9OQU1FICYmICFQUk9QRVJfQVJSQVlfVkFMVUVTX05BTUUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJGpvaW4gPSBbXS5qb2luO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5qb2luYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5qb2luXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnam9pbicsIGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gIHJldHVybiAkam9pbi5hcHBseShhVHlwZWRBcnJheSh0aGlzKSwgYXJndW1lbnRzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRsYXN0SW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1sYXN0LWluZGV4LW9mJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUubGFzdEluZGV4T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmxhc3RpbmRleG9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnbGFzdEluZGV4T2YnLCBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gIHJldHVybiAkbGFzdEluZGV4T2YuYXBwbHkoYVR5cGVkQXJyYXkodGhpcyksIGFyZ3VtZW50cyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkbWFwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLm1hcDtcbnZhciB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLm1hcFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnbWFwJywgZnVuY3Rpb24gbWFwKG1hcGZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJG1hcChhVHlwZWRBcnJheSh0aGlzKSwgbWFwZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5ldyAodHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3RvcihPKSkobGVuZ3RoKTtcbiAgfSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciBUWVBFRF9BUlJBWVNfQ09OU1RSVUNUT1JTX1JFUVVJUkVTX1dSQVBQRVJTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLXdyYXBwZXJzJyk7XG5cbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUub2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUub2ZcbmV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QoJ29mJywgZnVuY3Rpb24gb2YoLyogLi4uaXRlbXMgKi8pIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgKGFUeXBlZEFycmF5Q29uc3RydWN0b3IodGhpcykpKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0sIFRZUEVEX0FSUkFZU19DT05TVFJVQ1RPUlNfUkVRVUlSRVNfV1JBUFBFUlMpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktcmVkdWNlJykubGVmdDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5yZWR1Y2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnJlZHVjZVxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgncmVkdWNlJywgZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgcmV0dXJuICRyZWR1Y2UoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRyZWR1Y2VSaWdodCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1yZWR1Y2UnKS5yaWdodDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5yZWR1Y2VSaWNodGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3JlZHVjZVJpZ2h0JywgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICByZXR1cm4gJHJlZHVjZVJpZ2h0KGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUucmV2ZXJzZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUucmV2ZXJzZVxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgncmV2ZXJzZScsIGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIGxlbmd0aCA9IGFUeXBlZEFycmF5KHRoYXQpLmxlbmd0aDtcbiAgdmFyIG1pZGRsZSA9IGZsb29yKGxlbmd0aCAvIDIpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgdmFsdWU7XG4gIHdoaWxlIChpbmRleCA8IG1pZGRsZSkge1xuICAgIHZhbHVlID0gdGhhdFtpbmRleF07XG4gICAgdGhhdFtpbmRleCsrXSA9IHRoYXRbLS1sZW5ndGhdO1xuICAgIHRoYXRbbGVuZ3RoXSA9IHZhbHVlO1xuICB9IHJldHVybiB0aGF0O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciB0b09mZnNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vZmZzZXQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby10eXBlZC1hcnJheXMgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgbmV3IEludDhBcnJheSgxKS5zZXQoe30pO1xufSk7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnNldGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc2V0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzZXQnLCBmdW5jdGlvbiBzZXQoYXJyYXlMaWtlIC8qICwgb2Zmc2V0ICovKSB7XG4gIGFUeXBlZEFycmF5KHRoaXMpO1xuICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDEpO1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gIHZhciBzcmMgPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2Uoc3JjKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgaWYgKGxlbiArIG9mZnNldCA+IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3JvbmcgbGVuZ3RoJyk7XG4gIHdoaWxlIChpbmRleCA8IGxlbikgdGhpc1tvZmZzZXQgKyBpbmRleF0gPSBzcmNbaW5kZXgrK107XG59LCBGT1JDRUQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciAkc2xpY2UgPSBbXS5zbGljZTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXR5cGVkLWFycmF5cyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBuZXcgSW50OEFycmF5KDEpLnNsaWNlKCk7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnNsaWNlXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzbGljZScsIGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxpc3QgPSAkc2xpY2UuY2FsbChhVHlwZWRBcnJheSh0aGlzKSwgc3RhcnQsIGVuZCk7XG4gIHZhciBDID0gdHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0sIEZPUkNFRCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuc29tZTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zb21lYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zb21lXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzb21lJywgZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJHNvbWUoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBpbnRlcm5hbFNvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc29ydCcpO1xudmFyIEZGID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1mZi12ZXJzaW9uJyk7XG52YXIgSUVfT1JfRURHRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZScpO1xudmFyIFY4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgV0VCS0lUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS13ZWJraXQtdmVyc2lvbicpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgVWludDE2QXJyYXkgPSBnbG9iYWwuVWludDE2QXJyYXk7XG52YXIgbmF0aXZlU29ydCA9IFVpbnQxNkFycmF5ICYmIFVpbnQxNkFycmF5LnByb3RvdHlwZS5zb3J0O1xuXG4vLyBXZWJLaXRcbnZhciBBQ0NFUFRfSU5DT1JSRUNUX0FSR1VNRU5UUyA9ICEhbmF0aXZlU29ydCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgYXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMik7XG4gIGFycmF5LnNvcnQobnVsbCk7XG4gIGFycmF5LnNvcnQoe30pO1xufSk7XG5cbnZhciBTVEFCTEVfU09SVCA9ICEhbmF0aXZlU29ydCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBmZWF0dXJlIGRldGVjdGlvbiBjYW4gYmUgdG9vIHNsb3csIHNvIGNoZWNrIGVuZ2luZXMgdmVyc2lvbnNcbiAgaWYgKFY4KSByZXR1cm4gVjggPCA3NDtcbiAgaWYgKEZGKSByZXR1cm4gRkYgPCA2NztcbiAgaWYgKElFX09SX0VER0UpIHJldHVybiB0cnVlO1xuICBpZiAoV0VCS0lUKSByZXR1cm4gV0VCS0lUIDwgNjAyO1xuXG4gIHZhciBhcnJheSA9IG5ldyBVaW50MTZBcnJheSg1MTYpO1xuICB2YXIgZXhwZWN0ZWQgPSBBcnJheSg1MTYpO1xuICB2YXIgaW5kZXgsIG1vZDtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA1MTY7IGluZGV4KyspIHtcbiAgICBtb2QgPSBpbmRleCAlIDQ7XG4gICAgYXJyYXlbaW5kZXhdID0gNTE1IC0gaW5kZXg7XG4gICAgZXhwZWN0ZWRbaW5kZXhdID0gaW5kZXggLSAyICogbW9kICsgMztcbiAgfVxuXG4gIGFycmF5LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gKGEgLyA0IHwgMCkgLSAoYiAvIDQgfCAwKTtcbiAgfSk7XG5cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNTE2OyBpbmRleCsrKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSAhPT0gZXhwZWN0ZWRbaW5kZXhdKSByZXR1cm4gdHJ1ZTtcbiAgfVxufSk7XG5cbnZhciBnZXRTb3J0Q29tcGFyZSA9IGZ1bmN0aW9uIChjb21wYXJlZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgaWYgKGNvbXBhcmVmbiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gK2NvbXBhcmVmbih4LCB5KSB8fCAwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKHkgIT09IHkpIHJldHVybiAtMTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmICh4ICE9PSB4KSByZXR1cm4gMTtcbiAgICBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSByZXR1cm4gMSAvIHggPiAwICYmIDEgLyB5IDwgMCA/IDEgOiAtMTtcbiAgICByZXR1cm4geCA+IHk7XG4gIH07XG59O1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zb3J0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zb3J0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzb3J0JywgZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgdmFyIGFycmF5ID0gdGhpcztcbiAgaWYgKGNvbXBhcmVmbiAhPT0gdW5kZWZpbmVkKSBhQ2FsbGFibGUoY29tcGFyZWZuKTtcbiAgaWYgKFNUQUJMRV9TT1JUKSByZXR1cm4gbmF0aXZlU29ydC5jYWxsKGFycmF5LCBjb21wYXJlZm4pO1xuXG4gIGFUeXBlZEFycmF5KGFycmF5KTtcbiAgdmFyIGFycmF5TGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoYXJyYXkpO1xuICB2YXIgaXRlbXMgPSBBcnJheShhcnJheUxlbmd0aCk7XG4gIHZhciBpbmRleDtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGl0ZW1zW2luZGV4XSA9IGFycmF5W2luZGV4XTtcbiAgfVxuXG4gIGl0ZW1zID0gaW50ZXJuYWxTb3J0KGFycmF5LCBnZXRTb3J0Q29tcGFyZShjb21wYXJlZm4pKTtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGFycmF5W2luZGV4XSA9IGl0ZW1zW2luZGV4XTtcbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn0sICFTVEFCTEVfU09SVCB8fCBBQ0NFUFRfSU5DT1JSRUNUX0FSR1VNRU5UUyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuc3ViYXJyYXlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnN1YmFycmF5XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzdWJhcnJheScsIGZ1bmN0aW9uIHN1YmFycmF5KGJlZ2luLCBlbmQpIHtcbiAgdmFyIE8gPSBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IE8ubGVuZ3RoO1xuICB2YXIgYmVnaW5JbmRleCA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgdmFyIEMgPSB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yKE8pO1xuICByZXR1cm4gbmV3IEMoXG4gICAgTy5idWZmZXIsXG4gICAgTy5ieXRlT2Zmc2V0ICsgYmVnaW5JbmRleCAqIE8uQllURVNfUEVSX0VMRU1FTlQsXG4gICAgdG9MZW5ndGgoKGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuZ3RoKSkgLSBiZWdpbkluZGV4KVxuICApO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBJbnQ4QXJyYXkgPSBnbG9iYWwuSW50OEFycmF5O1xudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyICR0b0xvY2FsZVN0cmluZyA9IFtdLnRvTG9jYWxlU3RyaW5nO1xudmFyICRzbGljZSA9IFtdLnNsaWNlO1xuXG4vLyBpT1MgU2FmYXJpIDYueCBmYWlscyBoZXJlXG52YXIgVE9fTE9DQUxFX1NUUklOR19CVUcgPSAhIUludDhBcnJheSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICR0b0xvY2FsZVN0cmluZy5jYWxsKG5ldyBJbnQ4QXJyYXkoMSkpO1xufSk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbMSwgMl0udG9Mb2NhbGVTdHJpbmcoKSAhPSBuZXcgSW50OEFycmF5KFsxLCAyXSkudG9Mb2NhbGVTdHJpbmcoKTtcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIEludDhBcnJheS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwgMl0pO1xufSk7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b2xvY2FsZXN0cmluZ1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndG9Mb2NhbGVTdHJpbmcnLCBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgcmV0dXJuICR0b0xvY2FsZVN0cmluZy5hcHBseShUT19MT0NBTEVfU1RSSU5HX0JVRyA/ICRzbGljZS5jYWxsKGFUeXBlZEFycmF5KHRoaXMpKSA6IGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSwgRk9SQ0VEKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xudmFyIFVpbnQ4QXJyYXlQcm90b3R5cGUgPSBVaW50OEFycmF5ICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlIHx8IHt9O1xudmFyIGFycmF5VG9TdHJpbmcgPSBbXS50b1N0cmluZztcbnZhciBhcnJheUpvaW4gPSBbXS5qb2luO1xuXG5pZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvU3RyaW5nLmNhbGwoe30pOyB9KSkge1xuICBhcnJheVRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRoaXMpO1xuICB9O1xufVxuXG52YXIgSVNfTk9UX0FSUkFZX01FVEhPRCA9IFVpbnQ4QXJyYXlQcm90b3R5cGUudG9TdHJpbmcgIT0gYXJyYXlUb1N0cmluZztcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnRvc3RyaW5nXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCd0b1N0cmluZycsIGFycmF5VG9TdHJpbmcsIElTX05PVF9BUlJBWV9NRVRIT0QpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyIGhleDIgPSAvXltcXGRhLWZdezJ9JC9pO1xudmFyIGhleDQgPSAvXltcXGRhLWZdezR9JC9pO1xuXG4vLyBgdW5lc2NhcGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy11bmVzY2FwZS1zdHJpbmdcbiQoeyBnbG9iYWw6IHRydWUgfSwge1xuICB1bmVzY2FwZTogZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBsZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNociwgc2xpY2U7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaHIgPSBzdHIuY2hhckF0KGluZGV4KyspO1xuICAgICAgaWYgKGNociA9PT0gJyUnKSB7XG4gICAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSA9PT0gJ3UnKSB7XG4gICAgICAgICAgc2xpY2UgPSBzdHIuc2xpY2UoaW5kZXggKyAxLCBpbmRleCArIDUpO1xuICAgICAgICAgIGlmIChoZXg0LnRlc3Qoc2xpY2UpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gZnJvbUNoYXJDb2RlKHBhcnNlSW50KHNsaWNlLCAxNikpO1xuICAgICAgICAgICAgaW5kZXggKz0gNTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGljZSA9IHN0ci5zbGljZShpbmRleCwgaW5kZXggKyAyKTtcbiAgICAgICAgICBpZiAoaGV4Mi50ZXN0KHNsaWNlKSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IGZyb21DaGFyQ29kZShwYXJzZUludChzbGljZSwgMTYpKTtcbiAgICAgICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSBjaHI7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZS1hbGwnKTtcbnZhciBnZXRXZWFrRGF0YSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpLmdldFdlYWtEYXRhO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBBcnJheUl0ZXJhdGlvbk1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBpbnRlcm5hbFN0YXRlR2V0dGVyRm9yID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3I7XG52YXIgZmluZCA9IEFycmF5SXRlcmF0aW9uTW9kdWxlLmZpbmQ7XG52YXIgZmluZEluZGV4ID0gQXJyYXlJdGVyYXRpb25Nb2R1bGUuZmluZEluZGV4O1xudmFyIGlkID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uIChzdG9yZSkge1xuICByZXR1cm4gc3RvcmUuZnJvemVuIHx8IChzdG9yZS5mcm96ZW4gPSBuZXcgVW5jYXVnaHRGcm96ZW5TdG9yZSgpKTtcbn07XG5cbnZhciBVbmNhdWdodEZyb3plblN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVudHJpZXMgPSBbXTtcbn07XG5cbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbiAoc3RvcmUsIGtleSkge1xuICByZXR1cm4gZmluZChzdG9yZS5lbnRyaWVzLCBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaXRbMF0gPT09IGtleTtcbiAgfSk7XG59O1xuXG5VbmNhdWdodEZyb3plblN0b3JlLnByb3RvdHlwZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSByZXR1cm4gZW50cnlbMV07XG4gIH0sXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhIWZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSBlbnRyeVsxXSA9IHZhbHVlO1xuICAgIGVsc2UgdGhpcy5lbnRyaWVzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSxcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXgodGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoaXQpIHtcbiAgICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICAgIH0pO1xuICAgIGlmICh+aW5kZXgpIHRoaXMuZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAhIX5pbmRleDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgQ09OU1RSVUNUT1JfTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgQ09OU1RSVUNUT1JfTkFNRSk7XG4gICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICAgICAgdHlwZTogQ09OU1RSVUNUT1JfTkFNRSxcbiAgICAgICAgaWQ6IGlkKyssXG4gICAgICAgIGZyb3plbjogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGl0ZXJhdGUoaXRlcmFibGUsIHRoYXRbQURERVJdLCB7IHRoYXQ6IHRoYXQsIEFTX0VOVFJJRVM6IElTX01BUCB9KTtcbiAgICB9KTtcblxuICAgIHZhciBnZXRJbnRlcm5hbFN0YXRlID0gaW50ZXJuYWxTdGF0ZUdldHRlckZvcihDT05TVFJVQ1RPUl9OQU1FKTtcblxuICAgIHZhciBkZWZpbmUgPSBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoYW5PYmplY3Qoa2V5KSwgdHJ1ZSk7XG4gICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgdW5jYXVnaHRGcm96ZW5TdG9yZShzdGF0ZSkuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgZWxzZSBkYXRhW3N0YXRlLmlkXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgfTtcblxuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyBgeyBXZWFrTWFwLCBXZWFrU2V0IH0ucHJvdG90eXBlLmRlbGV0ZShrZXkpYCBtZXRob2RzXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWttYXAucHJvdG90eXBlLmRlbGV0ZVxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrc2V0LnByb3RvdHlwZS5kZWxldGVcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWtEYXRhKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZShzdGF0ZSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmIGhhc093bihkYXRhLCBzdGF0ZS5pZCkgJiYgZGVsZXRlIGRhdGFbc3RhdGUuaWRdO1xuICAgICAgfSxcbiAgICAgIC8vIGB7IFdlYWtNYXAsIFdlYWtTZXQgfS5wcm90b3R5cGUuaGFzKGtleSlgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuaGFzXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQucHJvdG90eXBlLmhhc1xuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWtEYXRhKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZShzdGF0ZSkuaGFzKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmIGhhc093bihkYXRhLCBzdGF0ZS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgSVNfTUFQID8ge1xuICAgICAgLy8gYFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuZ2V0XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWtEYXRhKGtleSk7XG4gICAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKS5nZXQoa2V5KTtcbiAgICAgICAgICByZXR1cm4gZGF0YSA/IGRhdGFbc3RhdGUuaWRdIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYFdlYWtNYXAucHJvdG90eXBlLnNldChrZXksIHZhbHVlKWAgbWV0aG9kXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWttYXAucHJvdG90eXBlLnNldFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5lKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gOiB7XG4gICAgICAvLyBgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKWAgbWV0aG9kXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQucHJvdG90eXBlLmFkZFxuICAgICAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZSh0aGlzLCB2YWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gQztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgSW50ZXJuYWxNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YScpO1xudmFyIGNvbGxlY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbicpO1xudmFyIGNvbGxlY3Rpb25XZWFrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24td2VhaycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGVuZm9yY2VJdGVybmFsU3RhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKS5lbmZvcmNlO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcblxudmFyIElTX0lFMTEgPSAhZ2xvYmFsLkFjdGl2ZVhPYmplY3QgJiYgJ0FjdGl2ZVhPYmplY3QnIGluIGdsb2JhbDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaXNleHRlbnNpYmxlIC0tIHNhZmVcbnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlO1xudmFyIEludGVybmFsV2Vha01hcDtcblxudmFyIHdyYXBwZXIgPSBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgfTtcbn07XG5cbi8vIGBXZWFrTWFwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrbWFwLWNvbnN0cnVjdG9yXG52YXIgJFdlYWtNYXAgPSBtb2R1bGUuZXhwb3J0cyA9IGNvbGxlY3Rpb24oJ1dlYWtNYXAnLCB3cmFwcGVyLCBjb2xsZWN0aW9uV2Vhayk7XG5cbi8vIElFMTEgV2Vha01hcCBmcm96ZW4ga2V5cyBmaXhcbi8vIFdlIGNhbid0IHVzZSBmZWF0dXJlIGRldGVjdGlvbiBiZWNhdXNlIGl0IGNyYXNoIHNvbWUgb2xkIElFIGJ1aWxkc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ4NVxuaWYgKE5BVElWRV9XRUFLX01BUCAmJiBJU19JRTExKSB7XG4gIEludGVybmFsV2Vha01hcCA9IGNvbGxlY3Rpb25XZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsICdXZWFrTWFwJywgdHJ1ZSk7XG4gIEludGVybmFsTWV0YWRhdGFNb2R1bGUuZW5hYmxlKCk7XG4gIHZhciBXZWFrTWFwUHJvdG90eXBlID0gJFdlYWtNYXAucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlRGVsZXRlID0gV2Vha01hcFByb3RvdHlwZVsnZGVsZXRlJ107XG4gIHZhciBuYXRpdmVIYXMgPSBXZWFrTWFwUHJvdG90eXBlLmhhcztcbiAgdmFyIG5hdGl2ZUdldCA9IFdlYWtNYXBQcm90b3R5cGUuZ2V0O1xuICB2YXIgbmF0aXZlU2V0ID0gV2Vha01hcFByb3RvdHlwZS5zZXQ7XG4gIHJlZGVmaW5lQWxsKFdlYWtNYXBQcm90b3R5cGUsIHtcbiAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKGlzT2JqZWN0KGtleSkgJiYgIWlzRXh0ZW5zaWJsZShrZXkpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGVuZm9yY2VJdGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghc3RhdGUuZnJvemVuKSBzdGF0ZS5mcm96ZW4gPSBuZXcgSW50ZXJuYWxXZWFrTWFwKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVEZWxldGUuY2FsbCh0aGlzLCBrZXkpIHx8IHN0YXRlLmZyb3plblsnZGVsZXRlJ10oa2V5KTtcbiAgICAgIH0gcmV0dXJuIG5hdGl2ZURlbGV0ZS5jYWxsKHRoaXMsIGtleSk7XG4gICAgfSxcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgIGlmIChpc09iamVjdChrZXkpICYmICFpc0V4dGVuc2libGUoa2V5KSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBlbmZvcmNlSXRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoIXN0YXRlLmZyb3plbikgc3RhdGUuZnJvemVuID0gbmV3IEludGVybmFsV2Vha01hcCgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlSGFzLmNhbGwodGhpcywga2V5KSB8fCBzdGF0ZS5mcm96ZW4uaGFzKGtleSk7XG4gICAgICB9IHJldHVybiBuYXRpdmVIYXMuY2FsbCh0aGlzLCBrZXkpO1xuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgICBpZiAoaXNPYmplY3Qoa2V5KSAmJiAhaXNFeHRlbnNpYmxlKGtleSkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZW5mb3JjZUl0ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFzdGF0ZS5mcm96ZW4pIHN0YXRlLmZyb3plbiA9IG5ldyBJbnRlcm5hbFdlYWtNYXAoKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUhhcy5jYWxsKHRoaXMsIGtleSkgPyBuYXRpdmVHZXQuY2FsbCh0aGlzLCBrZXkpIDogc3RhdGUuZnJvemVuLmdldChrZXkpO1xuICAgICAgfSByZXR1cm4gbmF0aXZlR2V0LmNhbGwodGhpcywga2V5KTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdChrZXkpICYmICFpc0V4dGVuc2libGUoa2V5KSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBlbmZvcmNlSXRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoIXN0YXRlLmZyb3plbikgc3RhdGUuZnJvemVuID0gbmV3IEludGVybmFsV2Vha01hcCgpO1xuICAgICAgICBuYXRpdmVIYXMuY2FsbCh0aGlzLCBrZXkpID8gbmF0aXZlU2V0LmNhbGwodGhpcywga2V5LCB2YWx1ZSkgOiBzdGF0ZS5mcm96ZW4uc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIG5hdGl2ZVNldC5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjb2xsZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24nKTtcbnZhciBjb2xsZWN0aW9uV2VhayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLXdlYWsnKTtcblxuLy8gYFdlYWtTZXRgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQtY29uc3RydWN0b3JcbmNvbGxlY3Rpb24oJ1dlYWtTZXQnLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha1NldCgpIHsgcmV0dXJuIGluaXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCBjb2xsZWN0aW9uV2Vhayk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBVU0VfRlVOQ1RJT05fQ09OU1RSVUNUT1IgPSAnVVNFX0ZVTkNUSU9OX0NPTlNUUlVDVE9SJztcbnZhciBBU1lOQ19JVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnYXN5bmNJdGVyYXRvcicpO1xudmFyIEFzeW5jSXRlcmF0b3IgPSBnbG9iYWwuQXN5bmNJdGVyYXRvcjtcbnZhciBQYXNzZWRBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gc2hhcmVkLkFzeW5jSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgcHJvdG90eXBlO1xuXG5pZiAoUGFzc2VkQXN5bmNJdGVyYXRvclByb3RvdHlwZSkge1xuICBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gUGFzc2VkQXN5bmNJdGVyYXRvclByb3RvdHlwZTtcbn0gZWxzZSBpZiAoaXNDYWxsYWJsZShBc3luY0l0ZXJhdG9yKSkge1xuICBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gQXN5bmNJdGVyYXRvci5wcm90b3R5cGU7XG59IGVsc2UgaWYgKHNoYXJlZFtVU0VfRlVOQ1RJT05fQ09OU1RSVUNUT1JdIHx8IGdsb2JhbFtVU0VfRlVOQ1RJT05fQ09OU1RSVUNUT1JdKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHdlIGhhdmUgbm8gYWx0ZXJuYXRpdmVzIHdpdGhvdXQgdXNhZ2Ugb2YgbW9kZXJuIHN5bnRheFxuICAgIHByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKEZ1bmN0aW9uKCdyZXR1cm4gYXN5bmMgZnVuY3Rpb24qKCl7fSgpJykoKSkpKTtcbiAgICBpZiAoZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gT2JqZWN0LnByb3RvdHlwZSkgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufVxuXG5pZiAoIUFzeW5jSXRlcmF0b3JQcm90b3R5cGUpIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbmVsc2UgaWYgKElTX1BVUkUpIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBjcmVhdGUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSk7XG5cbmlmICghaXNDYWxsYWJsZShBc3luY0l0ZXJhdG9yUHJvdG90eXBlW0FTWU5DX0lURVJBVE9SXSkpIHtcbiAgcmVkZWZpbmUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQVNZTkNfSVRFUkFUT1IsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXN5bmNJdGVyYXRvclByb3RvdHlwZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUnKTtcblxudmFyIFByb21pc2UgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG5cbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xuXG52YXIgYXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29udGludWF0aW9uID0gZnVuY3Rpb24gKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gIHZhciBkb25lID0gcmVzdWx0LmRvbmU7XG4gIFByb21pc2UucmVzb2x2ZShyZXN1bHQudmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmVzb2x2ZSh7IGRvbmU6IGRvbmUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgfSwgcmVqZWN0KTtcbn07XG5cbnZhciBBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGl0ZXJhdG9yKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIGl0ZXJhdG9yOiBhbk9iamVjdChpdGVyYXRvciksXG4gICAgbmV4dDogaXRlcmF0b3IubmV4dFxuICB9KTtcbn07XG5cbkFzeW5jRnJvbVN5bmNJdGVyYXRvci5wcm90b3R5cGUgPSByZWRlZmluZUFsbChjcmVhdGUoQXN5bmNJdGVyYXRvclByb3RvdHlwZSksIHtcbiAgbmV4dDogZnVuY3Rpb24gbmV4dChhcmcpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgIHZhciBoYXNBcmcgPSAhIWFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBhbk9iamVjdChzdGF0ZS5uZXh0LmFwcGx5KHN0YXRlLml0ZXJhdG9yLCBoYXNBcmcgPyBbYXJnXSA6IFtdKSk7XG4gICAgICBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24ocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9LFxuICAncmV0dXJuJzogZnVuY3Rpb24gKGFyZykge1xuICAgIHZhciBpdGVyYXRvciA9IGdldEludGVybmFsU3RhdGUodGhpcykuaXRlcmF0b3I7XG4gICAgdmFyIGhhc0FyZyA9ICEhYXJndW1lbnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyICRyZXR1cm4gPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICAgIGlmICgkcmV0dXJuID09PSB1bmRlZmluZWQpIHJldHVybiByZXNvbHZlKHsgZG9uZTogdHJ1ZSwgdmFsdWU6IGFyZyB9KTtcbiAgICAgIHZhciByZXN1bHQgPSBhbk9iamVjdCgkcmV0dXJuLmFwcGx5KGl0ZXJhdG9yLCBoYXNBcmcgPyBbYXJnXSA6IFtdKSk7XG4gICAgICBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24ocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9LFxuICAndGhyb3cnOiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5pdGVyYXRvcjtcbiAgICB2YXIgaGFzQXJnID0gISFhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgJHRocm93ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAndGhyb3cnKTtcbiAgICAgIGlmICgkdGhyb3cgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlamVjdChhcmcpO1xuICAgICAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KCR0aHJvdy5hcHBseShpdGVyYXRvciwgaGFzQXJnID8gW2FyZ10gOiBbXSkpO1xuICAgICAgYXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29udGludWF0aW9uKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yO1xuIiwidmFyIEFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1mcm9tLXN5bmMtaXRlcmF0b3InKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgQVNZTkNfSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2FzeW5jSXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHVzaW5nSXRlcmF0b3IpIHtcbiAgdmFyIG1ldGhvZCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZ2V0TWV0aG9kKGl0LCBBU1lOQ19JVEVSQVRPUikgOiB1c2luZ0l0ZXJhdG9yO1xuICByZXR1cm4gbWV0aG9kID8gYW5PYmplY3QobWV0aG9kLmNhbGwoaXQpKSA6IG5ldyBBc3luY0Zyb21TeW5jSXRlcmF0b3IoZ2V0SXRlcmF0b3IoaXQpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUikge1xuICByZXR1cm4gZ2xvYmFsW0NPTlNUUlVDVE9SXS5wcm90b3R5cGU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZnJvbS1hc3luY1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7XG5cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfVE9fQVJSQVkgPSBUWVBFID09IDA7XG4gIHZhciBJU19GT1JfRUFDSCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHRhcmdldCkge1xuICAgIGFuT2JqZWN0KGl0ZXJhdG9yKTtcbiAgICB2YXIgUHJvbWlzZSA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKTtcbiAgICB2YXIgbmV4dCA9IGFDYWxsYWJsZShpdGVyYXRvci5uZXh0KTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBNQVBQSU5HID0gZm4gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAoTUFQUElORyB8fCAhSVNfVE9fQVJSQVkpIGFDYWxsYWJsZShmbik7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGNsb3NlSXRlcmF0aW9uID0gZnVuY3Rpb24gKG1ldGhvZCwgYXJndW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgcmV0dXJuTWV0aG9kID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgICAgICAgaWYgKHJldHVybk1ldGhvZCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXR1cm5NZXRob2QuY2FsbChpdGVyYXRvcikpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBtZXRob2QoYXJndW1lbnQpO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IyKTtcbiAgICAgICAgfSBtZXRob2QoYXJndW1lbnQpO1xuICAgICAgfTtcblxuICAgICAgdmFyIG9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgY2xvc2VJdGVyYXRpb24ocmVqZWN0LCBlcnJvcik7XG4gICAgICB9O1xuXG4gICAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoSVNfVE9fQVJSQVkgJiYgKGluZGV4ID4gTUFYX1NBRkVfSU5URUdFUikgJiYgTUFQUElORykge1xuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdUaGUgYWxsb3dlZCBudW1iZXIgb2YgaXRlcmF0aW9ucyBoYXMgYmVlbiBleGNlZWRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoYW5PYmplY3QobmV4dC5jYWxsKGl0ZXJhdG9yKSkpLnRoZW4oZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChhbk9iamVjdChzdGVwKS5kb25lKSB7XG4gICAgICAgICAgICAgICAgaWYgKElTX1RPX0FSUkFZKSB7XG4gICAgICAgICAgICAgICAgICB0YXJnZXQubGVuZ3RoID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHJlc29sdmUoSVNfU09NRSA/IGZhbHNlIDogSVNfRVZFUlkgfHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChNQVBQSU5HKSB7XG4gICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoSVNfVE9fQVJSQVkgPyBmbih2YWx1ZSwgaW5kZXgpIDogZm4odmFsdWUpKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKElTX0ZPUl9FQUNIKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID8gbG9vcCgpIDogY2xvc2VJdGVyYXRpb24ocmVzb2x2ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKElTX1RPX0FSUkFZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2luZGV4KytdID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPyBjbG9zZUl0ZXJhdGlvbihyZXNvbHZlLCBJU19TT01FIHx8IHZhbHVlKSA6IGxvb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSwgb25FcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldFtpbmRleCsrXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgbG9vcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgb25FcnJvcihlcnJvcik7IH1cbiAgICAgICAgICB9LCBvbkVycm9yKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IyKSB7IG9uRXJyb3IoZXJyb3IyKTsgfVxuICAgICAgfTtcblxuICAgICAgbG9vcCgpO1xuICAgIH0pO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHRvQXJyYXk6IGNyZWF0ZU1ldGhvZCgwKSxcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDEpLFxuICBldmVyeTogY3JlYXRlTWV0aG9kKDIpLFxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg0KVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciBnZXRBc3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1hc3luYy1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGdldFZpcnR1YWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWZyb20tc3luYy1pdGVyYXRvcicpO1xudmFyIHRvQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItaXRlcmF0aW9uJykudG9BcnJheTtcblxudmFyIEFTWU5DX0lURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdhc3luY0l0ZXJhdG9yJyk7XG52YXIgYXJyYXlJdGVyYXRvciA9IGdldFZpcnR1YWwoJ0FycmF5JykudmFsdWVzO1xuXG4vLyBgQXJyYXkuZnJvbUFzeW5jYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZyb20tYXN5bmNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZnJvbUFzeW5jKGFzeW5jSXRlbXMgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICB2YXIgQyA9IHRoaXM7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiBuZXcgKGdldEJ1aWx0SW4oJ1Byb21pc2UnKSkoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFzeW5jSXRlbXMpO1xuICAgIGlmIChtYXBmbiAhPT0gdW5kZWZpbmVkKSBtYXBmbiA9IGJpbmQobWFwZm4sIHRoaXNBcmcsIDIpO1xuICAgIHZhciB1c2luZ0FzeW5jSXRlcmF0b3IgPSBnZXRNZXRob2QoTywgQVNZTkNfSVRFUkFUT1IpO1xuICAgIHZhciB1c2luZ1N5bmNJdGVyYXRvciA9IHVzaW5nQXN5bmNJdGVyYXRvciA/IHVuZGVmaW5lZCA6IGdldEl0ZXJhdG9yTWV0aG9kKE8pIHx8IGFycmF5SXRlcmF0b3I7XG4gICAgdmFyIEEgPSBpc0NvbnN0cnVjdG9yKEMpID8gbmV3IEMoKSA6IFtdO1xuICAgIHZhciBpdGVyYXRvciA9IHVzaW5nQXN5bmNJdGVyYXRvclxuICAgICAgPyBnZXRBc3luY0l0ZXJhdG9yKE8sIHVzaW5nQXN5bmNJdGVyYXRvcilcbiAgICAgIDogbmV3IEFzeW5jRnJvbVN5bmNJdGVyYXRvcihnZXRJdGVyYXRvcihPLCB1c2luZ1N5bmNJdGVyYXRvcikpO1xuICAgIHJlc29sdmUodG9BcnJheShpdGVyYXRvciwgbWFwZm4sIEEpKTtcbiAgfSk7XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbUFzeW5jID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZyb20tYXN5bmMnKTtcblxuLy8gYEFycmF5LmZyb21Bc3luY2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1mcm9tLWFzeW5jXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbUFzeW5jOiBmcm9tQXN5bmNcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogcmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaWx0ZXJSZWplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyUmVqZWN0O1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyT3V0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBmaWx0ZXJPdXQ6IGZ1bmN0aW9uIGZpbHRlck91dChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyUmVqZWN0KHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2ZpbHRlck91dCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbHRlclJlamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maWx0ZXJSZWplY3Q7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJSZWplY3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZpbHRlclJlamVjdDogZnVuY3Rpb24gZmlsdGVyUmVqZWN0KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXJSZWplY3QodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuYWRkVG9VbnNjb3BhYmxlcygnZmlsdGVyUmVqZWN0Jyk7XG4iLCJ2YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGZpbmRMYXN0LCBmaW5kTGFzdEluZGV4IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfRklORF9MQVNUX0lOREVYID0gVFlQRSA9PSAxO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgICB2YXIgaW5kZXggPSBsZW5ndGhPZkFycmF5TGlrZShzZWxmKTtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICB3aGlsZSAoaW5kZXgtLSA+IDApIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gdmFsdWU7IC8vIGZpbmRMYXN0XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGluZGV4OyAvLyBmaW5kTGFzdEluZGV4XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0xBU1RfSU5ERVggPyAtMSA6IHVuZGVmaW5lZDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmluZC1mcm9tLWxhc3RcbiAgZmluZExhc3Q6IGNyZWF0ZU1ldGhvZCgwKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kTGFzdEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmluZC1mcm9tLWxhc3RcbiAgZmluZExhc3RJbmRleDogY3JlYXRlTWV0aG9kKDEpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmRMYXN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QnKS5maW5kTGFzdDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbmQtZnJvbS1sYXN0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGZpbmRMYXN0OiBmdW5jdGlvbiBmaW5kTGFzdChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZExhc3QodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuYWRkVG9VbnNjb3BhYmxlcygnZmluZExhc3QnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaW5kTGFzdEluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QnKS5maW5kTGFzdEluZGV4O1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmluZExhc3RJbmRleGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBmaW5kTGFzdEluZGV4OiBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kTGFzdEluZGV4KHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2ZpbmRMYXN0SW5kZXgnKTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgb2JqZWN0Q3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdCcpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NvbnN0cnVjdG9yKSB7XG4gIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgdmFyIHRhcmdldCA9IG9iamVjdENyZWF0ZShudWxsKTtcbiAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgQ29uc3RydWN0b3IsIGtleSwgdmFsdWU7XG4gIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICBrZXkgPSB0b1Byb3BlcnR5S2V5KGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKSk7XG4gICAgLy8gaW4gc29tZSBJRTEwIGJ1aWxkcywgYGhhc093blByb3BlcnR5YCByZXR1cm5zIGluY29ycmVjdCByZXN1bHQgb24gaW50ZWdlciBrZXlzXG4gICAgLy8gYnV0IHNpbmNlIGl0J3MgYSBgbnVsbGAgcHJvdG90eXBlIG9iamVjdCwgd2UgY2FuIHNhZmVseSB1c2UgYGluYFxuICAgIGlmIChrZXkgaW4gdGFyZ2V0KSBwdXNoLmNhbGwodGFyZ2V0W2tleV0sIHZhbHVlKTtcbiAgICBlbHNlIHRhcmdldFtrZXldID0gW3ZhbHVlXTtcbiAgfVxuICBpZiAoc3BlY2lmaWNDb25zdHJ1Y3Rvcikge1xuICAgIENvbnN0cnVjdG9yID0gc3BlY2lmaWNDb25zdHJ1Y3RvcihPKTtcbiAgICBpZiAoQ29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICBmb3IgKGtleSBpbiB0YXJnZXQpIHRhcmdldFtrZXldID0gYXJyYXlGcm9tQ29uc3RydWN0b3JBbmRMaXN0KENvbnN0cnVjdG9yLCB0YXJnZXRba2V5XSk7XG4gICAgfVxuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGdyb3VwQnkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZ3JvdXAtYnknKTtcbnZhciBhcnJheVNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWdyb3VwaW5nXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGdyb3VwQnk6IGZ1bmN0aW9uIGdyb3VwQnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAkZ3JvdXBCeSh0aGlzLCBjYWxsYmFja2ZuLCB0aGlzQXJnLCBhcnJheVNwZWNpZXNDb25zdHJ1Y3Rvcik7XG4gIH1cbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdncm91cEJ5Jyk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaXNmcm96ZW4gLS0gc2FmZVxudmFyIGlzRnJvemVuID0gT2JqZWN0LmlzRnJvemVuO1xuXG52YXIgaXNGcm96ZW5TdHJpbmdBcnJheSA9IGZ1bmN0aW9uIChhcnJheSwgYWxsb3dVbmRlZmluZWQpIHtcbiAgaWYgKCFpc0Zyb3plbiB8fCAhaXNBcnJheShhcnJheSkgfHwgIWlzRnJvemVuKGFycmF5KSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB2YXIgZWxlbWVudDtcbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgZWxlbWVudCA9IGFycmF5W2luZGV4KytdO1xuICAgIGlmICghKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCAoYWxsb3dVbmRlZmluZWQgJiYgdHlwZW9mIGVsZW1lbnQgPT09ICd1bmRlZmluZWQnKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gcmV0dXJuIGxlbmd0aCAhPT0gMDtcbn07XG5cbi8vIGBBcnJheS5pc1RlbXBsYXRlT2JqZWN0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWlzLXRlbXBsYXRlLW9iamVjdFxuJCh7IHRhcmdldDogJ0FycmF5Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGlzVGVtcGxhdGVPYmplY3Q6IGZ1bmN0aW9uIGlzVGVtcGxhdGVPYmplY3QodmFsdWUpIHtcbiAgICBpZiAoIWlzRnJvemVuU3RyaW5nQXJyYXkodmFsdWUsIHRydWUpKSByZXR1cm4gZmFsc2U7XG4gICAgdmFyIHJhdyA9IHZhbHVlLnJhdztcbiAgICBpZiAocmF3Lmxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoIHx8ICFpc0Zyb3plblN0cmluZ0FycmF5KHJhdywgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleGAgZ2V0dGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2VpdGhhbXVzL3Byb3Bvc2FsLWFycmF5LWxhc3RcbmlmIChERVNDUklQVE9SUyAmJiAhKCdsYXN0SW5kZXgnIGluIFtdKSkge1xuICBkZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICdsYXN0SW5kZXgnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gbGFzdEluZGV4KCkge1xuICAgICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICAgIHJldHVybiBsZW4gPT0gMCA/IDAgOiBsZW4gLSAxO1xuICAgIH1cbiAgfSk7XG5cbiAgYWRkVG9VbnNjb3BhYmxlcygnbGFzdEluZGV4Jyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4YCBhY2Nlc3NvclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2tlaXRoYW11cy9wcm9wb3NhbC1hcnJheS1sYXN0XG5pZiAoREVTQ1JJUFRPUlMgJiYgISgnbGFzdEl0ZW0nIGluIFtdKSkge1xuICBkZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICdsYXN0SXRlbScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBsYXN0SXRlbSgpIHtcbiAgICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgICByZXR1cm4gbGVuID09IDAgPyB1bmRlZmluZWQgOiBPW2xlbiAtIDFdO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBsYXN0SXRlbSh2YWx1ZSkge1xuICAgICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICAgIHJldHVybiBPW2xlbiA9PSAwID8gMCA6IGxlbiAtIDFdID0gdmFsdWU7XG4gICAgfVxuICB9KTtcblxuICBhZGRUb1Vuc2NvcGFibGVzKCdsYXN0SXRlbScpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUudW5pcXVlQnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktdW5pcXVlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHVuaXF1ZUJ5KHJlc29sdmVyKSB7XG4gIHZhciB0aGF0ID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZSh0aGF0KTtcbiAgdmFyIHJlc3VsdCA9IGFycmF5U3BlY2llc0NyZWF0ZSh0aGF0LCAwKTtcbiAgdmFyIE1hcCA9IGdldEJ1aWx0SW4oJ01hcCcpO1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgcmVzb2x2ZXJGdW5jdGlvbiwgaW5kZXgsIGl0ZW0sIGtleTtcbiAgaWYgKHJlc29sdmVyICE9IG51bGwpIHJlc29sdmVyRnVuY3Rpb24gPSBhQ2FsbGFibGUocmVzb2x2ZXIpO1xuICBlbHNlIHJlc29sdmVyRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgIGl0ZW0gPSB0aGF0W2luZGV4XTtcbiAgICBrZXkgPSByZXNvbHZlckZ1bmN0aW9uKGl0ZW0pO1xuICAgIGlmICghbWFwLmhhcyhrZXkpKSBtYXAuc2V0KGtleSwgaXRlbSk7XG4gIH1cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcHVzaC5jYWxsKHJlc3VsdCwgdmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHVuaXF1ZUJ5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXVuaXF1ZS1ieScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnVuaXF1ZUJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LXVuaXF1ZVxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICB1bmlxdWVCeTogdW5pcXVlQnlcbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCd1bmlxdWVCeScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItcHJvdG90eXBlJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgQXN5bmNJdGVyYXRvckNvbnN0cnVjdG9yID0gZnVuY3Rpb24gQXN5bmNJdGVyYXRvcigpIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCBBc3luY0l0ZXJhdG9yQ29uc3RydWN0b3IpO1xufTtcblxuQXN5bmNJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IEFzeW5jSXRlcmF0b3JQcm90b3R5cGU7XG5cbmlmICghaGFzT3duKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCAnQXN5bmNJdGVyYXRvcicpO1xufVxuXG5pZiAoSVNfUFVSRSB8fCAhaGFzT3duKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsICdjb25zdHJ1Y3RvcicpIHx8IEFzeW5jSXRlcmF0b3JQcm90b3R5cGUuY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgQXN5bmNJdGVyYXRvckNvbnN0cnVjdG9yKTtcbn1cblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgQXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYXRvckNvbnN0cnVjdG9yXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUnKTtcblxudmFyIFByb21pc2UgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG5cbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmV4dEhhbmRsZXIsIElTX0lURVJBVE9SKSB7XG4gIHZhciBBc3luY0l0ZXJhdG9yUHJveHkgPSBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKHN0YXRlKSB7XG4gICAgc3RhdGUubmV4dCA9IGFDYWxsYWJsZShzdGF0ZS5pdGVyYXRvci5uZXh0KTtcbiAgICBzdGF0ZS5kb25lID0gZmFsc2U7XG4gICAgc3RhdGUuaWdub3JlQXJndW1lbnQgPSAhSVNfSVRFUkFUT1I7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCBzdGF0ZSk7XG4gIH07XG5cbiAgQXN5bmNJdGVyYXRvclByb3h5LnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKGNyZWF0ZShBc3luY0l0ZXJhdG9yUHJvdG90eXBlKSwge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoYXJnKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIgaGFzQXJndW1lbnQgPSAhIWFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgICAgdmFyIGFyZ3MgPSBoYXNBcmd1bWVudCA/IFtzdGF0ZS5pZ25vcmVBcmd1bWVudCA/IHVuZGVmaW5lZCA6IGFyZ10gOiBJU19JVEVSQVRPUiA/IFtdIDogW3VuZGVmaW5lZF07XG4gICAgICAgIHN0YXRlLmlnbm9yZUFyZ3VtZW50ID0gZmFsc2U7XG4gICAgICAgIHJlc29sdmUoc3RhdGUuZG9uZSA/IHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9IDogYW5PYmplY3QobmV4dEhhbmRsZXIuY2FsbChzdGF0ZSwgUHJvbWlzZSwgYXJncykpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgJ3JldHVybic6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gc3RhdGUuaXRlcmF0b3I7XG4gICAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgICB2YXIgJCRyZXR1cm4gPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICAgICAgaWYgKCQkcmV0dXJuID09PSB1bmRlZmluZWQpIHJldHVybiByZXNvbHZlKHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoJCRyZXR1cm4uY2FsbChpdGVyYXRvciwgdmFsdWUpKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICBhbk9iamVjdChyZXN1bHQpO1xuICAgICAgICAgIHJlc29sdmUoeyBkb25lOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgICd0aHJvdyc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gc3RhdGUuaXRlcmF0b3I7XG4gICAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgICB2YXIgJCR0aHJvdyA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3Rocm93Jyk7XG4gICAgICAgIGlmICgkJHRocm93ID09PSB1bmRlZmluZWQpIHJldHVybiByZWplY3QodmFsdWUpO1xuICAgICAgICByZXNvbHZlKCQkdGhyb3cuY2FsbChpdGVyYXRvciwgdmFsdWUpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKCFJU19JVEVSQVRPUikge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShBc3luY0l0ZXJhdG9yUHJveHkucHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCAnR2VuZXJhdG9yJyk7XG4gIH1cblxuICByZXR1cm4gQXN5bmNJdGVyYXRvclByb3h5O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcblxudmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoUHJvbWlzZSwgYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzO1xuICB2YXIgaXRlcmF0b3IgPSBzdGF0ZS5pdGVyYXRvcjtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFuT2JqZWN0KHN0YXRlLm5leHQuYXBwbHkoaXRlcmF0b3IsIGFyZ3MpKSkudGhlbihmdW5jdGlvbiAoc3RlcCkge1xuICAgIGlmIChhbk9iamVjdChzdGVwKS5kb25lKSB7XG4gICAgICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBbc3RhdGUuaW5kZXgrKywgc3RlcC52YWx1ZV0gfTtcbiAgfSk7XG59KTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGFzSW5kZXhlZFBhaXJzOiBmdW5jdGlvbiBhc0luZGV4ZWRQYWlycygpIHtcbiAgICByZXR1cm4gbmV3IEFzeW5jSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICBpbmRleDogMFxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUG9zaXRpdmVJbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXInKTtcbnZhciBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJveHkgPSBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKFByb21pc2UsIGFyZ3MpIHtcbiAgdmFyIHN0YXRlID0gdGhpcztcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIGFuT2JqZWN0KHN0YXRlLm5leHQuYXBwbHkoc3RhdGUuaXRlcmF0b3IsIHN0YXRlLnJlbWFpbmluZyA/IFtdIDogYXJncykpXG4gICAgICAgICkudGhlbihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoYW5PYmplY3Qoc3RlcCkuZG9uZSkge1xuICAgICAgICAgICAgICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnJlbWFpbmluZykge1xuICAgICAgICAgICAgICBzdGF0ZS5yZW1haW5pbmctLTtcbiAgICAgICAgICAgICAgbG9vcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHJlc29sdmUoeyBkb25lOiBmYWxzZSwgdmFsdWU6IHN0ZXAudmFsdWUgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IHJlamVjdChlcnIpOyB9XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyB9XG4gICAgfTtcblxuICAgIGxvb3AoKTtcbiAgfSk7XG59KTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGRyb3A6IGZ1bmN0aW9uIGRyb3AobGltaXQpIHtcbiAgICByZXR1cm4gbmV3IEFzeW5jSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICByZW1haW5pbmc6IHRvUG9zaXRpdmVJbnRlZ2VyKGxpbWl0KVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1pdGVyYXRpb24nKS5ldmVyeTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbikge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgZm4pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xuXG52YXIgQXN5bmNJdGVyYXRvclByb3h5ID0gY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChQcm9taXNlLCBhcmdzKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXM7XG4gIHZhciBmaWx0ZXJlciA9IHN0YXRlLmZpbHRlcmVyO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYW5PYmplY3Qoc3RhdGUubmV4dC5hcHBseShzdGF0ZS5pdGVyYXRvciwgYXJncykpKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChhbk9iamVjdChzdGVwKS5kb25lKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICByZXNvbHZlKHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShmaWx0ZXJlcih2YWx1ZSkpLnRoZW4oZnVuY3Rpb24gKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPyByZXNvbHZlKHsgZG9uZTogZmFsc2UsIHZhbHVlOiB2YWx1ZSB9KSA6IGxvb3AoKTtcbiAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgcmVqZWN0KGVycik7IH1cbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IH1cbiAgICB9O1xuXG4gICAgbG9vcCgpO1xuICB9KTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoZmlsdGVyZXIpIHtcbiAgICByZXR1cm4gbmV3IEFzeW5jSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICBmaWx0ZXJlcjogYUNhbGxhYmxlKGZpbHRlcmVyKVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbicpLmZpbmQ7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGZuKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGZuKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBnZXRBc3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1hc3luYy1pdGVyYXRvcicpO1xuXG52YXIgQXN5bmNJdGVyYXRvclByb3h5ID0gY3JlYXRlQXN5bmNJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChQcm9taXNlKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXM7XG4gIHZhciBtYXBwZXIgPSBzdGF0ZS5tYXBwZXI7XG4gIHZhciBpbm5lckl0ZXJhdG9yO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIG91dGVyTG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChzdGF0ZS5uZXh0LmNhbGwoc3RhdGUuaXRlcmF0b3IpKSkudGhlbihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoYW5PYmplY3Qoc3RlcCkuZG9uZSkge1xuICAgICAgICAgICAgICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobWFwcGVyKHN0ZXAudmFsdWUpKS50aGVuKGZ1bmN0aW9uIChtYXBwZWQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgc3RhdGUuaW5uZXJJdGVyYXRvciA9IGlubmVySXRlcmF0b3IgPSBnZXRBc3luY0l0ZXJhdG9yKG1hcHBlZCk7XG4gICAgICAgICAgICAgICAgICBzdGF0ZS5pbm5lck5leHQgPSBhQ2FsbGFibGUoaW5uZXJJdGVyYXRvci5uZXh0KTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbm5lckxvb3AoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcjIpIHsgcmVqZWN0KGVycm9yMik7IH1cbiAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnJvcjEpIHsgcmVqZWN0KGVycm9yMSk7IH1cbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IH1cbiAgICB9O1xuXG4gICAgdmFyIGlubmVyTG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpbm5lckl0ZXJhdG9yID0gc3RhdGUuaW5uZXJJdGVyYXRvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChzdGF0ZS5pbm5lck5leHQuY2FsbChpbm5lckl0ZXJhdG9yKSkpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGFuT2JqZWN0KHJlc3VsdCkuZG9uZSkge1xuICAgICAgICAgICAgICAgIHN0YXRlLmlubmVySXRlcmF0b3IgPSBzdGF0ZS5pbm5lck5leHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIG91dGVyTG9vcCgpO1xuICAgICAgICAgICAgICB9IGVsc2UgcmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogcmVzdWx0LnZhbHVlIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IxKSB7IHJlamVjdChlcnJvcjEpOyB9XG4gICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgfVxuICAgICAgfSBlbHNlIG91dGVyTG9vcCgpO1xuICAgIH07XG5cbiAgICBpbm5lckxvb3AoKTtcbiAgfSk7XG59KTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGZsYXRNYXA6IGZ1bmN0aW9uIGZsYXRNYXAobWFwcGVyKSB7XG4gICAgcmV0dXJuIG5ldyBBc3luY0l0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgbWFwcGVyOiBhQ2FsbGFibGUobWFwcGVyKSxcbiAgICAgIGlubmVySXRlcmF0b3I6IG51bGwsXG4gICAgICBpbm5lck5leHQ6IG51bGxcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1pdGVyYXRpb24nKS5mb3JFYWNoO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICAgIHJldHVybiAkZm9yRWFjaCh0aGlzLCBmbik7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUnKTtcbnZhciBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG52YXIgZ2V0QXN5bmNJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYXN5bmMtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXN5bmMtZnJvbS1zeW5jLWl0ZXJhdG9yJyk7XG5cbnZhciBBU1lOQ19JVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnYXN5bmNJdGVyYXRvcicpO1xuXG52YXIgaXNQcm90b3R5cGVPZiA9IHt9LmlzUHJvdG90eXBlT2Y7XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJveHkgPSBjcmVhdGVBc3luY0l0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKFByb21pc2UsIGFyZ3MpIHtcbiAgcmV0dXJuIGFuT2JqZWN0KHRoaXMubmV4dC5hcHBseSh0aGlzLml0ZXJhdG9yLCBhcmdzKSk7XG59LCB0cnVlKTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShPKSB7XG4gICAgdmFyIG9iamVjdCA9IHRvT2JqZWN0KE8pO1xuICAgIHZhciB1c2luZ0l0ZXJhdG9yID0gZ2V0TWV0aG9kKG9iamVjdCwgQVNZTkNfSVRFUkFUT1IpO1xuICAgIHZhciBpdGVyYXRvcjtcbiAgICBpZiAodXNpbmdJdGVyYXRvcikge1xuICAgICAgaXRlcmF0b3IgPSBnZXRBc3luY0l0ZXJhdG9yKG9iamVjdCwgdXNpbmdJdGVyYXRvcik7XG4gICAgICBpZiAoaXNQcm90b3R5cGVPZi5jYWxsKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yKSkgcmV0dXJuIGl0ZXJhdG9yO1xuICAgIH1cbiAgICBpZiAoaXRlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXNpbmdJdGVyYXRvciA9IGdldEl0ZXJhdG9yTWV0aG9kKG9iamVjdCk7XG4gICAgICBpZiAodXNpbmdJdGVyYXRvcikgcmV0dXJuIG5ldyBBc3luY0Zyb21TeW5jSXRlcmF0b3IoZ2V0SXRlcmF0b3Iob2JqZWN0LCB1c2luZ0l0ZXJhdG9yKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHsgaXRlcmF0b3I6IGl0ZXJhdG9yICE9PSB1bmRlZmluZWQgPyBpdGVyYXRvciA6IG9iamVjdCB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcblxudmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoUHJvbWlzZSwgYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzO1xuICB2YXIgbWFwcGVyID0gc3RhdGUubWFwcGVyO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoYW5PYmplY3Qoc3RhdGUubmV4dC5hcHBseShzdGF0ZS5pdGVyYXRvciwgYXJncykpKS50aGVuKGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgaWYgKGFuT2JqZWN0KHN0ZXApLmRvbmUpIHtcbiAgICAgIHN0YXRlLmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1hcHBlcihzdGVwLnZhbHVlKSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogdmFsdWUgfTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKG1hcHBlcikge1xuICAgIHJldHVybiBuZXcgQXN5bmNJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIG1hcHBlcjogYUNhbGxhYmxlKG1hcHBlcilcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbnZhciBQcm9taXNlID0gZ2V0QnVpbHRJbignUHJvbWlzZScpO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UocmVkdWNlciAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHZhciBpdGVyYXRvciA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBuZXh0ID0gYUNhbGxhYmxlKGl0ZXJhdG9yLm5leHQpO1xuICAgIHZhciBub0luaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDwgMjtcbiAgICB2YXIgYWNjdW11bGF0b3IgPSBub0luaXRpYWwgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgYUNhbGxhYmxlKHJlZHVjZXIpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShhbk9iamVjdChuZXh0LmNhbGwoaXRlcmF0b3IpKSkudGhlbihmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGFuT2JqZWN0KHN0ZXApLmRvbmUpIHtcbiAgICAgICAgICAgICAgICBub0luaXRpYWwgPyByZWplY3QoVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlJykpIDogcmVzb2x2ZShhY2N1bXVsYXRvcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobm9Jbml0aWFsKSB7XG4gICAgICAgICAgICAgICAgICBub0luaXRpYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICBsb29wKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZWR1Y2VyKGFjY3VtdWxhdG9yLCB2YWx1ZSkpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCgpO1xuICAgICAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeyByZWplY3QoZXJyKTsgfVxuICAgICAgICAgIH0sIHJlamVjdCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IH1cbiAgICAgIH07XG5cbiAgICAgIGxvb3AoKTtcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkc29tZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1pdGVyYXRpb24nKS5zb21lO1xuXG4kKHsgdGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgc29tZTogZnVuY3Rpb24gc29tZShmbikge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBmbik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qb3NpdGl2ZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlcicpO1xudmFyIGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hc3luYy1pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcblxudmFyIEFzeW5jSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoUHJvbWlzZSwgYXJncykge1xuICB2YXIgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yO1xuICB2YXIgcmV0dXJuTWV0aG9kLCByZXN1bHQ7XG4gIGlmICghdGhpcy5yZW1haW5pbmctLSkge1xuICAgIHJlc3VsdCA9IHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xuICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgcmV0dXJuTWV0aG9kID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXR1cm5NZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXR1cm5NZXRob2QuY2FsbChpdGVyYXRvcikpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIHRoaXMubmV4dC5hcHBseShpdGVyYXRvciwgYXJncyk7XG59KTtcblxuJCh7IHRhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIHRha2U6IGZ1bmN0aW9uIHRha2UobGltaXQpIHtcbiAgICByZXR1cm4gbmV3IEFzeW5jSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICByZW1haW5pbmc6IHRvUG9zaXRpdmVJbnRlZ2VyKGxpbWl0KVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICR0b0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FzeW5jLWl0ZXJhdG9yLWl0ZXJhdGlvbicpLnRvQXJyYXk7XG5cbiQoeyB0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICB0b0FycmF5OiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgIHJldHVybiAkdG9BcnJheSh0aGlzLCB1bmRlZmluZWQsIFtdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgSU5DT1JSRUNUX1JBTkdFID0gJ0luY29ycmVjdCBOdW1iZXIucmFuZ2UgYXJndW1lbnRzJztcbnZhciBOVU1FUklDX1JBTkdFX0lURVJBVE9SID0gJ051bWVyaWNSYW5nZUl0ZXJhdG9yJztcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoTlVNRVJJQ19SQU5HRV9JVEVSQVRPUik7XG5cbnZhciAkUmFuZ2VJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gTnVtZXJpY1JhbmdlSXRlcmF0b3Ioc3RhcnQsIGVuZCwgb3B0aW9uLCB0eXBlLCB6ZXJvLCBvbmUpIHtcbiAgaWYgKHR5cGVvZiBzdGFydCAhPSB0eXBlIHx8IChlbmQgIT09IEluZmluaXR5ICYmIGVuZCAhPT0gLUluZmluaXR5ICYmIHR5cGVvZiBlbmQgIT0gdHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKElOQ09SUkVDVF9SQU5HRSk7XG4gIH1cbiAgaWYgKHN0YXJ0ID09PSBJbmZpbml0eSB8fCBzdGFydCA9PT0gLUluZmluaXR5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoSU5DT1JSRUNUX1JBTkdFKTtcbiAgfVxuICB2YXIgaWZJbmNyZWFzZSA9IGVuZCA+IHN0YXJ0O1xuICB2YXIgaW5jbHVzaXZlRW5kID0gZmFsc2U7XG4gIHZhciBzdGVwO1xuICBpZiAob3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGVwID0gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9wdGlvbikpIHtcbiAgICBzdGVwID0gb3B0aW9uLnN0ZXA7XG4gICAgaW5jbHVzaXZlRW5kID0gISFvcHRpb24uaW5jbHVzaXZlO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb24gPT0gdHlwZSkge1xuICAgIHN0ZXAgPSBvcHRpb247XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihJTkNPUlJFQ1RfUkFOR0UpO1xuICB9XG4gIGlmIChzdGVwID09IG51bGwpIHtcbiAgICBzdGVwID0gaWZJbmNyZWFzZSA/IG9uZSA6IC1vbmU7XG4gIH1cbiAgaWYgKHR5cGVvZiBzdGVwICE9IHR5cGUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKElOQ09SUkVDVF9SQU5HRSk7XG4gIH1cbiAgaWYgKHN0ZXAgPT09IEluZmluaXR5IHx8IHN0ZXAgPT09IC1JbmZpbml0eSB8fCAoc3RlcCA9PT0gemVybyAmJiBzdGFydCAhPT0gZW5kKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKElOQ09SUkVDVF9SQU5HRSk7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgdmFyIGhpdHNFbmQgPSBzdGFydCAhPSBzdGFydCB8fCBlbmQgIT0gZW5kIHx8IHN0ZXAgIT0gc3RlcCB8fCAoZW5kID4gc3RhcnQpICE9PSAoc3RlcCA+IHplcm8pO1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBOVU1FUklDX1JBTkdFX0lURVJBVE9SLFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbmQ6IGVuZCxcbiAgICBzdGVwOiBzdGVwLFxuICAgIGluY2x1c2l2ZUVuZDogaW5jbHVzaXZlRW5kLFxuICAgIGhpdHNFbmQ6IGhpdHNFbmQsXG4gICAgY3VycmVudENvdW50OiB6ZXJvLFxuICAgIHplcm86IHplcm9cbiAgfSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgdGhpcy5zdGVwID0gc3RlcDtcbiAgICB0aGlzLmluY2x1c2l2ZSA9IGluY2x1c2l2ZUVuZDtcbiAgfVxufSwgTlVNRVJJQ19SQU5HRV9JVEVSQVRPUiwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgaWYgKHN0YXRlLmhpdHNFbmQpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgdmFyIHN0YXJ0ID0gc3RhdGUuc3RhcnQ7XG4gIHZhciBlbmQgPSBzdGF0ZS5lbmQ7XG4gIHZhciBzdGVwID0gc3RhdGUuc3RlcDtcbiAgdmFyIGN1cnJlbnRZaWVsZGluZ1ZhbHVlID0gc3RhcnQgKyAoc3RlcCAqIHN0YXRlLmN1cnJlbnRDb3VudCsrKTtcbiAgaWYgKGN1cnJlbnRZaWVsZGluZ1ZhbHVlID09PSBlbmQpIHN0YXRlLmhpdHNFbmQgPSB0cnVlO1xuICB2YXIgaW5jbHVzaXZlRW5kID0gc3RhdGUuaW5jbHVzaXZlRW5kO1xuICB2YXIgZW5kQ29uZGl0aW9uO1xuICBpZiAoZW5kID4gc3RhcnQpIHtcbiAgICBlbmRDb25kaXRpb24gPSBpbmNsdXNpdmVFbmQgPyBjdXJyZW50WWllbGRpbmdWYWx1ZSA+IGVuZCA6IGN1cnJlbnRZaWVsZGluZ1ZhbHVlID49IGVuZDtcbiAgfSBlbHNlIHtcbiAgICBlbmRDb25kaXRpb24gPSBpbmNsdXNpdmVFbmQgPyBlbmQgPiBjdXJyZW50WWllbGRpbmdWYWx1ZSA6IGVuZCA+PSBjdXJyZW50WWllbGRpbmdWYWx1ZTtcbiAgfVxuICBpZiAoZW5kQ29uZGl0aW9uKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogc3RhdGUuaGl0c0VuZCA9IHRydWUgfTtcbiAgfSByZXR1cm4geyB2YWx1ZTogY3VycmVudFlpZWxkaW5nVmFsdWUsIGRvbmU6IGZhbHNlIH07XG59KTtcblxudmFyIGdldHRlciA9IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4geyBnZXQ6IGZuLCBzZXQ6IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSB9O1xufTtcblxuaWYgKERFU0NSSVBUT1JTKSB7XG4gIGRlZmluZVByb3BlcnRpZXMoJFJhbmdlSXRlcmF0b3IucHJvdG90eXBlLCB7XG4gICAgc3RhcnQ6IGdldHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdGFydDtcbiAgICB9KSxcbiAgICBlbmQ6IGdldHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5lbmQ7XG4gICAgfSksXG4gICAgaW5jbHVzaXZlOiBnZXR0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGdldEludGVybmFsU3RhdGUodGhpcykuaW5jbHVzaXZlRW5kO1xuICAgIH0pLFxuICAgIHN0ZXA6IGdldHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zdGVwO1xuICAgIH0pXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9ICRSYW5nZUl0ZXJhdG9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYmlnaW50IC0tIHNhZmUgKi9cbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE51bWVyaWNSYW5nZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL251bWVyaWMtcmFuZ2UtaXRlcmF0b3InKTtcblxuLy8gYEJpZ0ludC5yYW5nZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1OdW1iZXIucmFuZ2VcbmlmICh0eXBlb2YgQmlnSW50ID09ICdmdW5jdGlvbicpIHtcbiAgJCh7IHRhcmdldDogJ0JpZ0ludCcsIHN0YXQ6IHRydWUgfSwge1xuICAgIHJhbmdlOiBmdW5jdGlvbiByYW5nZShzdGFydCwgZW5kLCBvcHRpb24pIHtcbiAgICAgIHJldHVybiBuZXcgTnVtZXJpY1JhbmdlSXRlcmF0b3Ioc3RhcnQsIGVuZCwgb3B0aW9uLCAnYmlnaW50JywgQmlnSW50KDApLCBCaWdJbnQoMSkpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIvLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxudmFyIE1hcCA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMubWFwJyk7XG52YXIgV2Vha01hcCA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMud2Vhay1tYXAnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgLy8ga2V5c1xuICB0aGlzLm9iamVjdCA9IG51bGw7XG4gIHRoaXMuc3ltYm9sID0gbnVsbDtcbiAgLy8gY2hpbGQgbm9kZXNcbiAgdGhpcy5wcmltaXRpdmVzID0gbnVsbDtcbiAgdGhpcy5vYmplY3RzQnlJbmRleCA9IGNyZWF0ZShudWxsKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXksIGluaXRpYWxpemVyKSB7XG4gIHJldHVybiB0aGlzW2tleV0gfHwgKHRoaXNba2V5XSA9IGluaXRpYWxpemVyKCkpO1xufTtcblxuTm9kZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uIChpLCBpdCwgSVNfT0JKRUNUKSB7XG4gIHZhciBzdG9yZSA9IElTX09CSkVDVFxuICAgID8gdGhpcy5vYmplY3RzQnlJbmRleFtpXSB8fCAodGhpcy5vYmplY3RzQnlJbmRleFtpXSA9IG5ldyBXZWFrTWFwKCkpXG4gICAgOiB0aGlzLnByaW1pdGl2ZXMgfHwgKHRoaXMucHJpbWl0aXZlcyA9IG5ldyBNYXAoKSk7XG4gIHZhciBlbnRyeSA9IHN0b3JlLmdldChpdCk7XG4gIGlmICghZW50cnkpIHN0b3JlLnNldChpdCwgZW50cnkgPSBuZXcgTm9kZSgpKTtcbiAgcmV0dXJuIGVudHJ5O1xufTtcblxudmFyIHJvb3QgPSBuZXcgTm9kZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFjdGl2ZSA9IHJvb3Q7XG4gIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaSwgaXQ7XG4gIC8vIGZvciBwcmV2ZW50IGxlYWtpbmcsIHN0YXJ0IGZyb20gb2JqZWN0c1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNPYmplY3QoaXQgPSBhcmd1bWVudHNbaV0pKSBhY3RpdmUgPSBhY3RpdmUubmV4dChpLCBpdCwgdHJ1ZSk7XG4gIH1cbiAgaWYgKHRoaXMgPT09IE9iamVjdCAmJiBhY3RpdmUgPT09IHJvb3QpIHRocm93IFR5cGVFcnJvcignQ29tcG9zaXRlIGtleXMgbXVzdCBjb250YWluIGEgbm9uLXByaW1pdGl2ZSBjb21wb25lbnQnKTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFpc09iamVjdChpdCA9IGFyZ3VtZW50c1tpXSkpIGFjdGl2ZSA9IGFjdGl2ZS5uZXh0KGksIGl0LCBmYWxzZSk7XG4gIH0gcmV0dXJuIGFjdGl2ZTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRDb21wb3NpdGVLZXlOb2RlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbXBvc2l0ZS1rZXknKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG5cbnZhciBpbml0aWFsaXplciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGZyZWV6ZSA9IGdldEJ1aWx0SW4oJ09iamVjdCcsICdmcmVlemUnKTtcbiAgcmV0dXJuIGZyZWV6ZSA/IGZyZWV6ZShjcmVhdGUobnVsbCkpIDogY3JlYXRlKG51bGwpO1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmljaGVyLWtleXMvdHJlZS9tYXN0ZXIvY29tcG9zaXRlS2V5XG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgY29tcG9zaXRlS2V5OiBmdW5jdGlvbiBjb21wb3NpdGVLZXkoKSB7XG4gICAgcmV0dXJuIGdldENvbXBvc2l0ZUtleU5vZGUuYXBwbHkoT2JqZWN0LCBhcmd1bWVudHMpLmdldCgnb2JqZWN0JywgaW5pdGlhbGl6ZXIpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldENvbXBvc2l0ZUtleU5vZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29tcG9zaXRlLWtleScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJpY2hlci1rZXlzL3RyZWUvbWFzdGVyL2NvbXBvc2l0ZUtleVxuJCh7IGdsb2JhbDogdHJ1ZSB9LCB7XG4gIGNvbXBvc2l0ZVN5bWJvbDogZnVuY3Rpb24gY29tcG9zaXRlU3ltYm9sKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdzdHJpbmcnKSByZXR1cm4gZ2V0QnVpbHRJbignU3ltYm9sJylbJ2ZvciddKGFyZ3VtZW50c1swXSk7XG4gICAgcmV0dXJuIGdldENvbXBvc2l0ZUtleU5vZGUuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5nZXQoJ3N5bWJvbCcsIGdldEJ1aWx0SW4oJ1N5bWJvbCcpKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJykuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgTmF0aXZlSXRlcmF0b3IgPSBnbG9iYWwuSXRlcmF0b3I7XG5cbi8vIEZGNTYtIGhhdmUgbm9uLXN0YW5kYXJkIGdsb2JhbCBoZWxwZXIgYEl0ZXJhdG9yYFxudmFyIEZPUkNFRCA9IElTX1BVUkVcbiAgfHwgIWlzQ2FsbGFibGUoTmF0aXZlSXRlcmF0b3IpXG4gIHx8IE5hdGl2ZUl0ZXJhdG9yLnByb3RvdHlwZSAhPT0gSXRlcmF0b3JQcm90b3R5cGVcbiAgLy8gRkY0NC0gbm9uLXN0YW5kYXJkIGBJdGVyYXRvcmAgcGFzc2VzIHByZXZpb3VzIHRlc3RzXG4gIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7IE5hdGl2ZUl0ZXJhdG9yKHt9KTsgfSk7XG5cbnZhciBJdGVyYXRvckNvbnN0cnVjdG9yID0gZnVuY3Rpb24gSXRlcmF0b3IoKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgSXRlcmF0b3JDb25zdHJ1Y3Rvcik7XG59O1xuXG5pZiAoIWhhc093bihJdGVyYXRvclByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRykpIHtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCAnSXRlcmF0b3InKTtcbn1cblxuaWYgKEZPUkNFRCB8fCAhaGFzT3duKEl0ZXJhdG9yUHJvdG90eXBlLCAnY29uc3RydWN0b3InKSB8fCBJdGVyYXRvclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYXRvclByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgSXRlcmF0b3JDb25zdHJ1Y3Rvcik7XG59XG5cbkl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gSXRlcmF0b3JQcm90b3R5cGU7XG5cbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgSXRlcmF0b3I6IEl0ZXJhdG9yQ29uc3RydWN0b3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuZXh0SGFuZGxlciwgSVNfSVRFUkFUT1IpIHtcbiAgdmFyIEl0ZXJhdG9yUHJveHkgPSBmdW5jdGlvbiBJdGVyYXRvcihzdGF0ZSkge1xuICAgIHN0YXRlLm5leHQgPSBhQ2FsbGFibGUoc3RhdGUuaXRlcmF0b3IubmV4dCk7XG4gICAgc3RhdGUuZG9uZSA9IGZhbHNlO1xuICAgIHN0YXRlLmlnbm9yZUFyZyA9ICFJU19JVEVSQVRPUjtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHN0YXRlKTtcbiAgfTtcblxuICBJdGVyYXRvclByb3h5LnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSksIHtcbiAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KGFyZykge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA/IFtzdGF0ZS5pZ25vcmVBcmcgPyB1bmRlZmluZWQgOiBhcmddIDogSVNfSVRFUkFUT1IgPyBbXSA6IFt1bmRlZmluZWRdO1xuICAgICAgc3RhdGUuaWdub3JlQXJnID0gZmFsc2U7XG4gICAgICB2YXIgcmVzdWx0ID0gc3RhdGUuZG9uZSA/IHVuZGVmaW5lZCA6IG5leHRIYW5kbGVyLmNhbGwoc3RhdGUsIGFyZ3MpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogc3RhdGUuZG9uZSwgdmFsdWU6IHJlc3VsdCB9O1xuICAgIH0sXG4gICAgJ3JldHVybic6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciBpdGVyYXRvciA9IHN0YXRlLml0ZXJhdG9yO1xuICAgICAgc3RhdGUuZG9uZSA9IHRydWU7XG4gICAgICB2YXIgJCRyZXR1cm4gPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiAkJHJldHVybiA/IGFuT2JqZWN0KCQkcmV0dXJuLmNhbGwoaXRlcmF0b3IsIHZhbHVlKSkudmFsdWUgOiB2YWx1ZSB9O1xuICAgIH0sXG4gICAgJ3Rocm93JzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGl0ZXJhdG9yID0gc3RhdGUuaXRlcmF0b3I7XG4gICAgICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgICAgIHZhciAkJHRocm93ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAndGhyb3cnKTtcbiAgICAgIGlmICgkJHRocm93KSByZXR1cm4gJCR0aHJvdy5jYWxsKGl0ZXJhdG9yLCB2YWx1ZSk7XG4gICAgICB0aHJvdyB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICghSVNfSVRFUkFUT1IpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmF0b3JQcm94eS5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcsICdHZW5lcmF0b3InKTtcbiAgfVxuXG4gIHJldHVybiBJdGVyYXRvclByb3h5O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG5cbnZhciBJdGVyYXRvclByb3h5ID0gY3JlYXRlSXRlcmF0b3JQcm94eShmdW5jdGlvbiAoYXJncykge1xuICB2YXIgcmVzdWx0ID0gYW5PYmplY3QodGhpcy5uZXh0LmFwcGx5KHRoaXMuaXRlcmF0b3IsIGFyZ3MpKTtcbiAgdmFyIGRvbmUgPSB0aGlzLmRvbmUgPSAhIXJlc3VsdC5kb25lO1xuICBpZiAoIWRvbmUpIHJldHVybiBbdGhpcy5pbmRleCsrLCByZXN1bHQudmFsdWVdO1xufSk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgYXNJbmRleGVkUGFpcnM6IGZ1bmN0aW9uIGFzSW5kZXhlZFBhaXJzKCkge1xuICAgIHJldHVybiBuZXcgSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICBpbmRleDogMFxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUG9zaXRpdmVJbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXInKTtcbnZhciBjcmVhdGVJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvcjtcbiAgdmFyIG5leHQgPSB0aGlzLm5leHQ7XG4gIHZhciByZXN1bHQsIGRvbmU7XG4gIHdoaWxlICh0aGlzLnJlbWFpbmluZykge1xuICAgIHRoaXMucmVtYWluaW5nLS07XG4gICAgcmVzdWx0ID0gYW5PYmplY3QobmV4dC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgfVxuICByZXN1bHQgPSBhbk9iamVjdChuZXh0LmFwcGx5KGl0ZXJhdG9yLCBhcmdzKSk7XG4gIGRvbmUgPSB0aGlzLmRvbmUgPSAhIXJlc3VsdC5kb25lO1xuICBpZiAoIWRvbmUpIHJldHVybiByZXN1bHQudmFsdWU7XG59KTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBkcm9wOiBmdW5jdGlvbiBkcm9wKGxpbWl0KSB7XG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIHJlbWFpbmluZzogdG9Qb3NpdGl2ZUludGVnZXIobGltaXQpXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBldmVyeTogZnVuY3Rpb24gZXZlcnkoZm4pIHtcbiAgICBhbk9iamVjdCh0aGlzKTtcbiAgICBhQ2FsbGFibGUoZm4pO1xuICAgIHJldHVybiAhaXRlcmF0ZSh0aGlzLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmICghZm4odmFsdWUpKSByZXR1cm4gc3RvcCgpO1xuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBjcmVhdGVJdGVyYXRvclByb3h5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1wcm94eScpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcblxudmFyIEl0ZXJhdG9yUHJveHkgPSBjcmVhdGVJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBpdGVyYXRvciA9IHRoaXMuaXRlcmF0b3I7XG4gIHZhciBmaWx0ZXJlciA9IHRoaXMuZmlsdGVyZXI7XG4gIHZhciBuZXh0ID0gdGhpcy5uZXh0O1xuICB2YXIgcmVzdWx0LCBkb25lLCB2YWx1ZTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICByZXN1bHQgPSBhbk9iamVjdChuZXh0LmFwcGx5KGl0ZXJhdG9yLCBhcmdzKSk7XG4gICAgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICBpZiAoY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyhpdGVyYXRvciwgZmlsdGVyZXIsIHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICB9XG59KTtcblxuJCh7IHRhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihmaWx0ZXJlcikge1xuICAgIHJldHVybiBuZXcgSXRlcmF0b3JQcm94eSh7XG4gICAgICBpdGVyYXRvcjogYW5PYmplY3QodGhpcyksXG4gICAgICBmaWx0ZXJlcjogYUNhbGxhYmxlKGZpbHRlcmVyKVxuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChmbikge1xuICAgIGFuT2JqZWN0KHRoaXMpO1xuICAgIGFDYWxsYWJsZShmbik7XG4gICAgcmV0dXJuIGl0ZXJhdGUodGhpcywgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoZm4odmFsdWUpKSByZXR1cm4gc3RvcCh2YWx1ZSk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkucmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKCkge1xuICB2YXIgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yO1xuICB2YXIgbWFwcGVyID0gdGhpcy5tYXBwZXI7XG4gIHZhciByZXN1bHQsIG1hcHBlZCwgaXRlcmF0b3JNZXRob2QsIGlubmVySXRlcmF0b3I7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlubmVySXRlcmF0b3IgPSB0aGlzLmlubmVySXRlcmF0b3IpIHtcbiAgICAgICAgcmVzdWx0ID0gYW5PYmplY3QodGhpcy5pbm5lck5leHQuY2FsbChpbm5lckl0ZXJhdG9yKSk7XG4gICAgICAgIGlmICghcmVzdWx0LmRvbmUpIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5uZXJJdGVyYXRvciA9IHRoaXMuaW5uZXJOZXh0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gYW5PYmplY3QodGhpcy5uZXh0LmNhbGwoaXRlcmF0b3IpKTtcblxuICAgICAgaWYgKHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmUpIHJldHVybjtcblxuICAgICAgbWFwcGVkID0gbWFwcGVyKHJlc3VsdC52YWx1ZSk7XG4gICAgICBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKG1hcHBlZCk7XG5cbiAgICAgIGlmICghaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCcuZmxhdE1hcCBjYWxsYmFjayBzaG91bGQgcmV0dXJuIGFuIGl0ZXJhYmxlIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlubmVySXRlcmF0b3IgPSBpbm5lckl0ZXJhdG9yID0gYW5PYmplY3QoaXRlcmF0b3JNZXRob2QuY2FsbChtYXBwZWQpKTtcbiAgICAgIHRoaXMuaW5uZXJOZXh0ID0gYUNhbGxhYmxlKGlubmVySXRlcmF0b3IubmV4dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgICB9XG4gIH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIGZsYXRNYXA6IGZ1bmN0aW9uIGZsYXRNYXAobWFwcGVyKSB7XG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIG1hcHBlcjogYUNhbGxhYmxlKG1hcHBlciksXG4gICAgICBpbm5lckl0ZXJhdG9yOiBudWxsLFxuICAgICAgaW5uZXJOZXh0OiBudWxsXG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICAgIGl0ZXJhdGUoYW5PYmplY3QodGhpcyksIGZuLCB7IElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJykuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlSXRlcmF0b3JQcm94eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtcHJveHknKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbnZhciBpc1Byb3RvdHlwZU9mID0ge30uaXNQcm90b3R5cGVPZjtcblxudmFyIEl0ZXJhdG9yUHJveHkgPSBjcmVhdGVJdGVyYXRvclByb3h5KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciByZXN1bHQgPSBhbk9iamVjdCh0aGlzLm5leHQuYXBwbHkodGhpcy5pdGVyYXRvciwgYXJncykpO1xuICB2YXIgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gIGlmICghZG9uZSkgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn0sIHRydWUpO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShPKSB7XG4gICAgdmFyIG9iamVjdCA9IHRvT2JqZWN0KE8pO1xuICAgIHZhciB1c2luZ0l0ZXJhdG9yID0gZ2V0SXRlcmF0b3JNZXRob2Qob2JqZWN0KTtcbiAgICB2YXIgaXRlcmF0b3I7XG4gICAgaWYgKHVzaW5nSXRlcmF0b3IpIHtcbiAgICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3Iob2JqZWN0LCB1c2luZ0l0ZXJhdG9yKTtcbiAgICAgIGlmIChpc1Byb3RvdHlwZU9mLmNhbGwoSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yKSkgcmV0dXJuIGl0ZXJhdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRvciA9IG9iamVjdDtcbiAgICB9IHJldHVybiBuZXcgSXRlcmF0b3JQcm94eSh7IGl0ZXJhdG9yOiBpdGVyYXRvciB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG52YXIgY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZycpO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvcjtcbiAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KHRoaXMubmV4dC5hcHBseShpdGVyYXRvciwgYXJncykpO1xuICB2YXIgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gIGlmICghZG9uZSkgcmV0dXJuIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIHRoaXMubWFwcGVyLCByZXN1bHQudmFsdWUpO1xufSk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgbWFwOiBmdW5jdGlvbiBtYXAobWFwcGVyKSB7XG4gICAgcmV0dXJuIG5ldyBJdGVyYXRvclByb3h5KHtcbiAgICAgIGl0ZXJhdG9yOiBhbk9iamVjdCh0aGlzKSxcbiAgICAgIG1hcHBlcjogYUNhbGxhYmxlKG1hcHBlcilcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKHJlZHVjZXIgLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICBhbk9iamVjdCh0aGlzKTtcbiAgICBhQ2FsbGFibGUocmVkdWNlcik7XG4gICAgdmFyIG5vSW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyO1xuICAgIHZhciBhY2N1bXVsYXRvciA9IG5vSW5pdGlhbCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpdGVyYXRlKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKG5vSW5pdGlhbCkge1xuICAgICAgICBub0luaXRpYWwgPSBmYWxzZTtcbiAgICAgICAgYWNjdW11bGF0b3IgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gcmVkdWNlcihhY2N1bXVsYXRvciwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUgfSk7XG4gICAgaWYgKG5vSW5pdGlhbCkgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnNcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbiQoeyB0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlIH0sIHtcbiAgc29tZTogZnVuY3Rpb24gc29tZShmbikge1xuICAgIGFuT2JqZWN0KHRoaXMpO1xuICAgIGFDYWxsYWJsZShmbik7XG4gICAgcmV0dXJuIGl0ZXJhdGUodGhpcywgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoZm4odmFsdWUpKSByZXR1cm4gc3RvcCgpO1xuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVyc1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qb3NpdGl2ZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlcicpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yUHJveHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLXByb3h5Jyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgSXRlcmF0b3JQcm94eSA9IGNyZWF0ZUl0ZXJhdG9yUHJveHkoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvcjtcbiAgaWYgKCF0aGlzLnJlbWFpbmluZy0tKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICByZXR1cm4gaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIHVuZGVmaW5lZCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IGFuT2JqZWN0KHRoaXMubmV4dC5hcHBseShpdGVyYXRvciwgYXJncykpO1xuICB2YXIgZG9uZSA9IHRoaXMuZG9uZSA9ICEhcmVzdWx0LmRvbmU7XG4gIGlmICghZG9uZSkgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn0pO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIHRha2U6IGZ1bmN0aW9uIHRha2UobGltaXQpIHtcbiAgICByZXR1cm4gbmV3IEl0ZXJhdG9yUHJveHkoe1xuICAgICAgaXRlcmF0b3I6IGFuT2JqZWN0KHRoaXMpLFxuICAgICAgcmVtYWluaW5nOiB0b1Bvc2l0aXZlSW50ZWdlcihsaW1pdClcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG4kKHsgdGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSB9LCB7XG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGl0ZXJhdGUoYW5PYmplY3QodGhpcyksIHB1c2gsIHsgdGhhdDogcmVzdWx0LCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9jb2xsZWN0aW9uLW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gIHZhciBjb2xsZWN0aW9uID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZW1vdmVyID0gYUNhbGxhYmxlKGNvbGxlY3Rpb25bJ2RlbGV0ZSddKTtcbiAgdmFyIGFsbERlbGV0ZWQgPSB0cnVlO1xuICB2YXIgd2FzRGVsZXRlZDtcbiAgZm9yICh2YXIgayA9IDAsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGsgPCBsZW47IGsrKykge1xuICAgIHdhc0RlbGV0ZWQgPSByZW1vdmVyLmNhbGwoY29sbGVjdGlvbiwgYXJndW1lbnRzW2tdKTtcbiAgICBhbGxEZWxldGVkID0gYWxsRGVsZXRlZCAmJiB3YXNEZWxldGVkO1xuICB9XG4gIHJldHVybiAhIWFsbERlbGV0ZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgY29sbGVjdGlvbkRlbGV0ZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWRlbGV0ZS1hbGwnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUuZGVsZXRlQWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBkZWxldGVBbGw6IGZ1bmN0aW9uIGRlbGV0ZUFsbCgvKiAuLi5lbGVtZW50cyAqLykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uRGVsZXRlQWxsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5lbXBsYWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aHVtYnN1cGVwL3Byb3Bvc2FsLXVwc2VydFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbXBsYWNlKGtleSwgaGFuZGxlcikge1xuICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciB2YWx1ZSA9IChtYXAuaGFzKGtleSkgJiYgJ3VwZGF0ZScgaW4gaGFuZGxlcilcbiAgICA/IGhhbmRsZXIudXBkYXRlKG1hcC5nZXQoa2V5KSwga2V5LCBtYXApXG4gICAgOiBoYW5kbGVyLmluc2VydChrZXksIG1hcCk7XG4gIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciAkZW1wbGFjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXAtZW1wbGFjZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5lbXBsYWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aHVtYnN1cGVwL3Byb3Bvc2FsLXVwc2VydFxuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBlbXBsYWNlOiAkZW1wbGFjZVxufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWFwIC0tIHNhZmVcbiAgcmV0dXJuIE1hcC5wcm90b3R5cGUuZW50cmllcy5jYWxsKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRNYXBJdGVyYXRvcihtYXApO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgcmV0dXJuICFpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKCFib3VuZEZ1bmN0aW9uKHZhbHVlLCBrZXksIG1hcCkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRNYXBJdGVyYXRvcihtYXApO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIG5ld01hcCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG1hcCwgZ2V0QnVpbHRJbignTWFwJykpKSgpO1xuICAgIHZhciBzZXR0ZXIgPSBhQ2FsbGFibGUobmV3TWFwLnNldCk7XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCBrZXksIG1hcCkpIHNldHRlci5jYWxsKG5ld01hcCwga2V5LCB2YWx1ZSk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3TWFwO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICByZXR1cm4gaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGtleSwgdmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCBrZXksIG1hcCkpIHJldHVybiBzdG9wKHZhbHVlKTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5yZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRNYXBJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWFwLWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLmZpbmRLZXlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGZpbmRLZXk6IGZ1bmN0aW9uIGZpbmRLZXkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0TWFwSXRlcmF0b3IobWFwKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKGJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSkgcmV0dXJuIHN0b3Aoa2V5KTtcbiAgICB9LCB7IEFTX0VOVFJJRVM6IHRydWUsIElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5yZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBGbiA9IGxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBtYXBwaW5nLCBhcnJheSwgbiwgYm91bmRGdW5jdGlvbjtcbiAgYUNvbnN0cnVjdG9yKHRoaXMpO1xuICBtYXBwaW5nID0gbWFwRm4gIT09IHVuZGVmaW5lZDtcbiAgaWYgKG1hcHBpbmcpIGFDYWxsYWJsZShtYXBGbik7XG4gIGlmIChzb3VyY2UgPT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IHRoaXMoKTtcbiAgYXJyYXkgPSBbXTtcbiAgaWYgKG1hcHBpbmcpIHtcbiAgICBuID0gMDtcbiAgICBib3VuZEZ1bmN0aW9uID0gYmluZChtYXBGbiwgbGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgaXRlcmF0ZShzb3VyY2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkge1xuICAgICAgYXJyYXkucHVzaChib3VuZEZ1bmN0aW9uKG5leHRJdGVtLCBuKyspKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlKHNvdXJjZSwgYXJyYXkucHVzaCwgeyB0aGF0OiBhcnJheSB9KTtcbiAgfVxuICByZXR1cm4gbmV3IHRoaXMoYXJyYXkpO1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1mcm9tJyk7XG5cbi8vIGBNYXAuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAuZnJvbVxuJCh7IHRhcmdldDogJ01hcCcsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tOiBmcm9tXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAuZ3JvdXBCeWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZ3JvdXBCeTogZnVuY3Rpb24gZ3JvdXBCeShpdGVyYWJsZSwga2V5RGVyaXZhdGl2ZSkge1xuICAgIGFDYWxsYWJsZShrZXlEZXJpdmF0aXZlKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSk7XG4gICAgdmFyIG5ld01hcCA9IG5ldyB0aGlzKCk7XG4gICAgdmFyIGhhcyA9IGFDYWxsYWJsZShuZXdNYXAuaGFzKTtcbiAgICB2YXIgZ2V0ID0gYUNhbGxhYmxlKG5ld01hcC5nZXQpO1xuICAgIHZhciBzZXQgPSBhQ2FsbGFibGUobmV3TWFwLnNldCk7XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHZhciBkZXJpdmVkS2V5ID0ga2V5RGVyaXZhdGl2ZShlbGVtZW50KTtcbiAgICAgIGlmICghaGFzLmNhbGwobmV3TWFwLCBkZXJpdmVkS2V5KSkgc2V0LmNhbGwobmV3TWFwLCBkZXJpdmVkS2V5LCBbZWxlbWVudF0pO1xuICAgICAgZWxzZSBnZXQuY2FsbChuZXdNYXAsIGRlcml2ZWRLZXkpLnB1c2goZWxlbWVudCk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3TWFwO1xuICB9XG59KTtcbiIsIi8vIGBTYW1lVmFsdWVaZXJvYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc2FtZXZhbHVlemVyb1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4geCA9PT0geSB8fCB4ICE9IHggJiYgeSAhPSB5O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBzYW1lVmFsdWVaZXJvID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhbWUtdmFsdWUtemVybycpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQpIHtcbiAgICByZXR1cm4gaXRlcmF0ZShnZXRNYXBJdGVyYXRvcihhbk9iamVjdCh0aGlzKSksIGZ1bmN0aW9uIChrZXksIHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoc2FtZVZhbHVlWmVybyh2YWx1ZSwgc2VhcmNoRWxlbWVudCkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG4vLyBgTWFwLmtleUJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHN0YXQ6IHRydWUgfSwge1xuICBrZXlCeTogZnVuY3Rpb24ga2V5QnkoaXRlcmFibGUsIGtleURlcml2YXRpdmUpIHtcbiAgICB2YXIgbmV3TWFwID0gbmV3IHRoaXMoKTtcbiAgICBhQ2FsbGFibGUoa2V5RGVyaXZhdGl2ZSk7XG4gICAgdmFyIHNldHRlciA9IGFDYWxsYWJsZShuZXdNYXAuc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgc2V0dGVyLmNhbGwobmV3TWFwLCBrZXlEZXJpdmF0aXZlKGVsZW1lbnQpLCBlbGVtZW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3TWFwO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUua2V5T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGtleU9mOiBmdW5jdGlvbiBrZXlPZihzZWFyY2hFbGVtZW50KSB7XG4gICAgcmV0dXJuIGl0ZXJhdGUoZ2V0TWFwSXRlcmF0b3IoYW5PYmplY3QodGhpcykpLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKHZhbHVlID09PSBzZWFyY2hFbGVtZW50KSByZXR1cm4gc3RvcChrZXkpO1xuICAgIH0sIHsgQVNfRU5UUklFUzogdHJ1ZSwgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUubWFwS2V5c2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgbWFwS2V5czogZnVuY3Rpb24gbWFwS2V5cyhjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRNYXBJdGVyYXRvcihtYXApO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIG5ld01hcCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG1hcCwgZ2V0QnVpbHRJbignTWFwJykpKSgpO1xuICAgIHZhciBzZXR0ZXIgPSBhQ2FsbGFibGUobmV3TWFwLnNldCk7XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIHNldHRlci5jYWxsKG5ld01hcCwgYm91bmRGdW5jdGlvbih2YWx1ZSwga2V5LCBtYXApLCB2YWx1ZSk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3TWFwO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS5tYXBWYWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIG1hcFZhbHVlczogZnVuY3Rpb24gbWFwVmFsdWVzKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICB2YXIgbmV3TWFwID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IobWFwLCBnZXRCdWlsdEluKCdNYXAnKSkpKCk7XG4gICAgdmFyIHNldHRlciA9IGFDYWxsYWJsZShuZXdNYXAuc2V0KTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgc2V0dGVyLmNhbGwobmV3TWFwLCBrZXksIGJvdW5kRnVuY3Rpb24odmFsdWUsIGtleSwgbWFwKSk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3TWFwO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLm1lcmdlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UoaXRlcmFibGUgLyogLi4uaXRlcmJsZXMgKi8pIHtcbiAgICB2YXIgbWFwID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHNldHRlciA9IGFDYWxsYWJsZShtYXAuc2V0KTtcbiAgICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmd1bWVudHNMZW5ndGgpIHtcbiAgICAgIGl0ZXJhdGUoYXJndW1lbnRzW2krK10sIHNldHRlciwgeyB0aGF0OiBtYXAsIEFTX0VOVFJJRVM6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBvZigpIHtcbiAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGgtLSkgQVtsZW5ndGhdID0gYXJndW1lbnRzW2xlbmd0aF07XG4gIHJldHVybiBuZXcgdGhpcyhBKTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLW9mJyk7XG5cbi8vIGBNYXAub2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLm9mXG4kKHsgdGFyZ2V0OiAnTWFwJywgc3RhdDogdHJ1ZSB9LCB7XG4gIG9mOiBvZlxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGdldE1hcEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tYXAtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYE1hcC5wcm90b3R5cGUucmVkdWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIG5vSW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyO1xuICAgIHZhciBhY2N1bXVsYXRvciA9IG5vSW5pdGlhbCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBhQ2FsbGFibGUoY2FsbGJhY2tmbik7XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChub0luaXRpYWwpIHtcbiAgICAgICAgbm9Jbml0aWFsID0gZmFsc2U7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2N1bXVsYXRvciA9IGNhbGxiYWNrZm4oYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG1hcCk7XG4gICAgICB9XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICBpZiAobm9Jbml0aWFsKSB0aHJvdyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBtYXAgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgZ2V0TWFwSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1hcC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5zb21lYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBzb21lOiBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldE1hcEl0ZXJhdG9yKG1hcCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICByZXR1cm4gaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKGtleSwgdmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCBrZXksIG1hcCkpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlLCBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS51cGRhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGtleSwgY2FsbGJhY2sgLyogLCB0aHVuayAqLykge1xuICAgIHZhciBtYXAgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhQ2FsbGFibGUoY2FsbGJhY2spO1xuICAgIHZhciBpc1ByZXNlbnRJbk1hcCA9IG1hcC5oYXMoa2V5KTtcbiAgICBpZiAoIWlzUHJlc2VudEluTWFwICYmIGxlbmd0aCA8IDMpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignVXBkYXRpbmcgYWJzZW50IHZhbHVlJyk7XG4gICAgfVxuICAgIHZhciB2YWx1ZSA9IGlzUHJlc2VudEluTWFwID8gbWFwLmdldChrZXkpIDogYUNhbGxhYmxlKGxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpKGtleSwgbWFwKTtcbiAgICBtYXAuc2V0KGtleSwgY2FsbGJhY2sodmFsdWUsIGtleSwgbWFwKSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgTWFwLnByb3RvdHlwZS51cHNlcnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RodW1ic3VwZXAvcHJvcG9zYWwtdXBzZXJ0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHVwc2VydChrZXksIHVwZGF0ZUZuIC8qICwgaW5zZXJ0Rm4gKi8pIHtcbiAgdmFyIG1hcCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgaW5zZXJ0Rm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHZhbHVlO1xuICBpZiAoIWlzQ2FsbGFibGUodXBkYXRlRm4pICYmICFpc0NhbGxhYmxlKGluc2VydEZuKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignQXQgbGVhc3Qgb25lIGNhbGxiYWNrIHJlcXVpcmVkJyk7XG4gIH1cbiAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgIHZhbHVlID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChpc0NhbGxhYmxlKHVwZGF0ZUZuKSkge1xuICAgICAgdmFsdWUgPSB1cGRhdGVGbih2YWx1ZSk7XG4gICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0NhbGxhYmxlKGluc2VydEZuKSkge1xuICAgIHZhbHVlID0gaW5zZXJ0Rm4oKTtcbiAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiByZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgJHVwc2VydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXAtdXBzZXJ0Jyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLnVwZGF0ZU9ySW5zZXJ0YCBtZXRob2QgKHJlcGxhY2VkIGJ5IGBNYXAucHJvdG90eXBlLmVtcGxhY2VgKVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RodW1ic3VwZXAvcHJvcG9zYWwtdXBzZXJ0XG4kKHsgdGFyZ2V0OiAnTWFwJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIG5hbWU6ICd1cHNlcnQnLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICB1cGRhdGVPckluc2VydDogJHVwc2VydFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiByZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgJHVwc2VydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXAtdXBzZXJ0Jyk7XG5cbi8vIGBNYXAucHJvdG90eXBlLnVwc2VydGAgbWV0aG9kIChyZXBsYWNlZCBieSBgTWFwLnByb3RvdHlwZS5lbXBsYWNlYClcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aHVtYnN1cGVwL3Byb3Bvc2FsLXVwc2VydFxuJCh7IHRhcmdldDogJ01hcCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICB1cHNlcnQ6ICR1cHNlcnRcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBtYXggPSBNYXRoLm1heDtcblxuLy8gYE1hdGguY2xhbXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgY2xhbXA6IGZ1bmN0aW9uIGNsYW1wKHgsIGxvd2VyLCB1cHBlcikge1xuICAgIHJldHVybiBtaW4odXBwZXIsIG1heChsb3dlciwgeCkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTWF0aC5ERUdfUEVSX1JBRGAgY29uc3RhbnRcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIERFR19QRVJfUkFEOiBNYXRoLlBJIC8gMTgwXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgUkFEX1BFUl9ERUcgPSAxODAgLyBNYXRoLlBJO1xuXG4vLyBgTWF0aC5kZWdyZWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGRlZ3JlZXM6IGZ1bmN0aW9uIGRlZ3JlZXMocmFkaWFucykge1xuICAgIHJldHVybiByYWRpYW5zICogUkFEX1BFUl9ERUc7XG4gIH1cbn0pO1xuIiwiLy8gYE1hdGguc2NhbGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnNjYWxlIHx8IGZ1bmN0aW9uIHNjYWxlKHgsIGluTG93LCBpbkhpZ2gsIG91dExvdywgb3V0SGlnaCkge1xuICBpZiAoXG4gICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMFxuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVjayAqL1xuICAgICAgfHwgeCAhPSB4XG4gICAgICB8fCBpbkxvdyAhPSBpbkxvd1xuICAgICAgfHwgaW5IaWdoICE9IGluSGlnaFxuICAgICAgfHwgb3V0TG93ICE9IG91dExvd1xuICAgICAgfHwgb3V0SGlnaCAhPSBvdXRIaWdoXG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2sgKi9cbiAgKSByZXR1cm4gTmFOO1xuICBpZiAoeCA9PT0gSW5maW5pdHkgfHwgeCA9PT0gLUluZmluaXR5KSByZXR1cm4geDtcbiAgcmV0dXJuICh4IC0gaW5Mb3cpICogKG91dEhpZ2ggLSBvdXRMb3cpIC8gKGluSGlnaCAtIGluTG93KSArIG91dExvdztcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxudmFyIHNjYWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtc2NhbGUnKTtcbnZhciBmcm91bmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1mcm91bmQnKTtcblxuLy8gYE1hdGguZnNjYWxlYCBtZXRob2Rcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZzY2FsZTogZnVuY3Rpb24gZnNjYWxlKHgsIGluTG93LCBpbkhpZ2gsIG91dExvdywgb3V0SGlnaCkge1xuICAgIHJldHVybiBmcm91bmQoc2NhbGUoeCwgaW5Mb3csIGluSGlnaCwgb3V0TG93LCBvdXRIaWdoKSk7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLmlhZGRoYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaWFkZGg6IGZ1bmN0aW9uIGlhZGRoKHgwLCB4MSwgeTAsIHkxKSB7XG4gICAgdmFyICR4MCA9IHgwID4+PiAwO1xuICAgIHZhciAkeDEgPSB4MSA+Pj4gMDtcbiAgICB2YXIgJHkwID0geTAgPj4+IDA7XG4gICAgcmV0dXJuICR4MSArICh5MSA+Pj4gMCkgKyAoKCR4MCAmICR5MCB8ICgkeDAgfCAkeTApICYgfigkeDAgKyAkeTAgPj4+IDApKSA+Pj4gMzEpIHwgMDtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcblxuLy8gYE1hdGguaW11bGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBpbXVsaDogZnVuY3Rpb24gaW11bGgodSwgdikge1xuICAgIHZhciBVSU5UMTYgPSAweEZGRkY7XG4gICAgdmFyICR1ID0gK3U7XG4gICAgdmFyICR2ID0gK3Y7XG4gICAgdmFyIHUwID0gJHUgJiBVSU5UMTY7XG4gICAgdmFyIHYwID0gJHYgJiBVSU5UMTY7XG4gICAgdmFyIHUxID0gJHUgPj4gMTY7XG4gICAgdmFyIHYxID0gJHYgPj4gMTY7XG4gICAgdmFyIHQgPSAodTEgKiB2MCA+Pj4gMCkgKyAodTAgKiB2MCA+Pj4gMTYpO1xuICAgIHJldHVybiB1MSAqIHYxICsgKHQgPj4gMTYpICsgKCh1MCAqIHYxID4+PiAwKSArICh0ICYgVUlOVDE2KSA+PiAxNik7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLmlzdWJoYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXN1Ymg6IGZ1bmN0aW9uIGlzdWJoKHgwLCB4MSwgeTAsIHkxKSB7XG4gICAgdmFyICR4MCA9IHgwID4+PiAwO1xuICAgIHZhciAkeDEgPSB4MSA+Pj4gMDtcbiAgICB2YXIgJHkwID0geTAgPj4+IDA7XG4gICAgcmV0dXJuICR4MSAtICh5MSA+Pj4gMCkgLSAoKH4keDAgJiAkeTAgfCB+KCR4MCBeICR5MCkgJiAkeDAgLSAkeTAgPj4+IDApID4+PiAzMSkgfCAwO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTWF0aC5SQURfUEVSX0RFR2AgY29uc3RhbnRcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIFJBRF9QRVJfREVHOiAxODAgLyBNYXRoLlBJXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG52YXIgREVHX1BFUl9SQUQgPSBNYXRoLlBJIC8gMTgwO1xuXG4vLyBgTWF0aC5yYWRpYW5zYCBtZXRob2Rcbi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHJhZGlhbnM6IGZ1bmN0aW9uIHJhZGlhbnMoZGVncmVlcykge1xuICAgIHJldHVybiBkZWdyZWVzICogREVHX1BFUl9SQUQ7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgc2NhbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC1zY2FsZScpO1xuXG4vLyBgTWF0aC5zY2FsZWAgbWV0aG9kXG4vLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUgfSwge1xuICBzY2FsZTogc2NhbGVcbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgbnVtYmVySXNGaW5pdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbnVtYmVyLWlzLWZpbml0ZScpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgU0VFREVEX1JBTkRPTSA9ICdTZWVkZWQgUmFuZG9tJztcbnZhciBTRUVERURfUkFORE9NX0dFTkVSQVRPUiA9IFNFRURFRF9SQU5ET00gKyAnIEdlbmVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihTRUVERURfUkFORE9NX0dFTkVSQVRPUik7XG52YXIgU0VFRF9UWVBFX0VSUk9SID0gJ01hdGguc2VlZGVkUFJORygpIGFyZ3VtZW50IHNob3VsZCBoYXZlIGEgXCJzZWVkXCIgZmllbGQgd2l0aCBhIGZpbml0ZSB2YWx1ZS4nO1xuXG52YXIgJFNlZWRlZFJhbmRvbUdlbmVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gU2VlZGVkUmFuZG9tR2VuZXJhdG9yKHNlZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU0VFREVEX1JBTkRPTV9HRU5FUkFUT1IsXG4gICAgc2VlZDogc2VlZCAlIDIxNDc0ODM2NDdcbiAgfSk7XG59LCBTRUVERURfUkFORE9NLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgc2VlZCA9IHN0YXRlLnNlZWQgPSAoc3RhdGUuc2VlZCAqIDExMDM1MTUyNDUgKyAxMjM0NSkgJSAyMTQ3NDgzNjQ3O1xuICByZXR1cm4geyB2YWx1ZTogKHNlZWQgJiAxMDczNzQxODIzKSAvIDEwNzM3NDE4MjMsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuLy8gYE1hdGguc2VlZGVkUFJOR2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZWVkZWQtcmFuZG9tXG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZWVkZWQtcmFuZG9tL2Jsb2IvNzhiODI1ODgzNWI1N2ZjMjEwMGQwNzYxNTFhYjUwNmJjMzIwMmFlNi9kZW1vLmh0bWxcbiQoeyB0YXJnZXQ6ICdNYXRoJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgc2VlZGVkUFJORzogZnVuY3Rpb24gc2VlZGVkUFJORyhpdCkge1xuICAgIHZhciBzZWVkID0gYW5PYmplY3QoaXQpLnNlZWQ7XG4gICAgaWYgKCFudW1iZXJJc0Zpbml0ZShzZWVkKSkgdGhyb3cgVHlwZUVycm9yKFNFRURfVFlQRV9FUlJPUik7XG4gICAgcmV0dXJuIG5ldyAkU2VlZGVkUmFuZG9tR2VuZXJhdG9yKHNlZWQpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuXG4vLyBgTWF0aC5zaWduYml0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLU1hdGguc2lnbmJpdFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2lnbmJpdDogZnVuY3Rpb24gc2lnbmJpdCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpID09IHggJiYgeCA9PSAwID8gMSAvIHggPT0gLUluZmluaXR5IDogeCA8IDA7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBNYXRoLnVtdWxoYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxuJCh7IHRhcmdldDogJ01hdGgnLCBzdGF0OiB0cnVlIH0sIHtcbiAgdW11bGg6IGZ1bmN0aW9uIHVtdWxoKHUsIHYpIHtcbiAgICB2YXIgVUlOVDE2ID0gMHhGRkZGO1xuICAgIHZhciAkdSA9ICt1O1xuICAgIHZhciAkdiA9ICt2O1xuICAgIHZhciB1MCA9ICR1ICYgVUlOVDE2O1xuICAgIHZhciB2MCA9ICR2ICYgVUlOVDE2O1xuICAgIHZhciB1MSA9ICR1ID4+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+Pj4gMTY7XG4gICAgdmFyIHQgPSAodTEgKiB2MCA+Pj4gMCkgKyAodTAgKiB2MCA+Pj4gMTYpO1xuICAgIHJldHVybiB1MSAqIHYxICsgKHQgPj4+IDE2KSArICgodTAgKiB2MSA+Pj4gMCkgKyAodCAmIFVJTlQxNikgPj4+IDE2KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciBwYXJzZUludCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1iZXItcGFyc2UtaW50Jyk7XG5cbnZhciBJTlZBTElEX05VTUJFUl9SRVBSRVNFTlRBVElPTiA9ICdJbnZhbGlkIG51bWJlciByZXByZXNlbnRhdGlvbic7XG52YXIgSU5WQUxJRF9SQURJWCA9ICdJbnZhbGlkIHJhZGl4JztcbnZhciB2YWxpZCA9IC9eW1xcZGEtel0rJC87XG5cbi8vIGBOdW1iZXIuZnJvbVN0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1udW1iZXItZnJvbXN0cmluZ1xuJCh7IHRhcmdldDogJ051bWJlcicsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tU3RyaW5nOiBmdW5jdGlvbiBmcm9tU3RyaW5nKHN0cmluZywgcmFkaXgpIHtcbiAgICB2YXIgc2lnbiA9IDE7XG4gICAgdmFyIFIsIG1hdGhOdW07XG4gICAgaWYgKHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHRocm93IFR5cGVFcnJvcihJTlZBTElEX05VTUJFUl9SRVBSRVNFTlRBVElPTik7XG4gICAgaWYgKCFzdHJpbmcubGVuZ3RoKSB0aHJvdyBTeW50YXhFcnJvcihJTlZBTElEX05VTUJFUl9SRVBSRVNFTlRBVElPTik7XG4gICAgaWYgKHN0cmluZy5jaGFyQXQoMCkgPT0gJy0nKSB7XG4gICAgICBzaWduID0gLTE7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcuc2xpY2UoMSk7XG4gICAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHRocm93IFN5bnRheEVycm9yKElOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OKTtcbiAgICB9XG4gICAgUiA9IHJhZGl4ID09PSB1bmRlZmluZWQgPyAxMCA6IHRvSW50ZWdlck9ySW5maW5pdHkocmFkaXgpO1xuICAgIGlmIChSIDwgMiB8fCBSID4gMzYpIHRocm93IFJhbmdlRXJyb3IoSU5WQUxJRF9SQURJWCk7XG4gICAgaWYgKCF2YWxpZC50ZXN0KHN0cmluZykgfHwgKG1hdGhOdW0gPSBwYXJzZUludChzdHJpbmcsIFIpKS50b1N0cmluZyhSKSAhPT0gc3RyaW5nKSB7XG4gICAgICB0aHJvdyBTeW50YXhFcnJvcihJTlZBTElEX05VTUJFUl9SRVBSRVNFTlRBVElPTik7XG4gICAgfVxuICAgIHJldHVybiBzaWduICogbWF0aE51bTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBOdW1lcmljUmFuZ2VJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9udW1lcmljLXJhbmdlLWl0ZXJhdG9yJyk7XG5cbi8vIGBOdW1iZXIucmFuZ2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtTnVtYmVyLnJhbmdlXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHJhbmdlOiBmdW5jdGlvbiByYW5nZShzdGFydCwgZW5kLCBvcHRpb24pIHtcbiAgICByZXR1cm4gbmV3IE51bWVyaWNSYW5nZUl0ZXJhdG9yKHN0YXJ0LCBlbmQsIG9wdGlvbiwgJ251bWJlcicsIDAsIDEpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIE9CSkVDVF9JVEVSQVRPUiA9ICdPYmplY3QgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoT0JKRUNUX0lURVJBVE9SKTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKGZ1bmN0aW9uIE9iamVjdEl0ZXJhdG9yKHNvdXJjZSwgbW9kZSkge1xuICB2YXIgb2JqZWN0ID0gdG9PYmplY3Qoc291cmNlKTtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogT0JKRUNUX0lURVJBVE9SLFxuICAgIG1vZGU6IG1vZGUsXG4gICAgb2JqZWN0OiBvYmplY3QsXG4gICAga2V5czogb2JqZWN0S2V5cyhvYmplY3QpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xufSwgJ09iamVjdCcsIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciBrZXlzID0gc3RhdGUua2V5cztcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoa2V5cyA9PT0gbnVsbCB8fCBzdGF0ZS5pbmRleCA+PSBrZXlzLmxlbmd0aCkge1xuICAgICAgc3RhdGUub2JqZWN0ID0gc3RhdGUua2V5cyA9IG51bGw7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gICAgfVxuICAgIHZhciBrZXkgPSBrZXlzW3N0YXRlLmluZGV4KytdO1xuICAgIHZhciBvYmplY3QgPSBzdGF0ZS5vYmplY3Q7XG4gICAgaWYgKCFoYXNPd24ob2JqZWN0LCBrZXkpKSBjb250aW51ZTtcbiAgICBzd2l0Y2ggKHN0YXRlLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2tleXMnOiByZXR1cm4geyB2YWx1ZToga2V5LCBkb25lOiBmYWxzZSB9O1xuICAgICAgY2FzZSAndmFsdWVzJzogcmV0dXJuIHsgdmFsdWU6IG9iamVjdFtrZXldLCBkb25lOiBmYWxzZSB9O1xuICAgIH0gLyogZW50cmllcyAqLyByZXR1cm4geyB2YWx1ZTogW2tleSwgb2JqZWN0W2tleV1dLCBkb25lOiBmYWxzZSB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE9iamVjdEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pdGVyYXRvcicpO1xuXG4vLyBgT2JqZWN0Lml0ZXJhdGVFbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC1pdGVyYXRpb25cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXRlcmF0ZUVudHJpZXM6IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzKG9iamVjdCkge1xuICAgIHJldHVybiBuZXcgT2JqZWN0SXRlcmF0b3Iob2JqZWN0LCAnZW50cmllcycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE9iamVjdEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pdGVyYXRvcicpO1xuXG4vLyBgT2JqZWN0Lml0ZXJhdGVLZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC1pdGVyYXRpb25cbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgaXRlcmF0ZUtleXM6IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzKG9iamVjdCkge1xuICAgIHJldHVybiBuZXcgT2JqZWN0SXRlcmF0b3Iob2JqZWN0LCAna2V5cycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIE9iamVjdEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pdGVyYXRvcicpO1xuXG4vLyBgT2JqZWN0Lml0ZXJhdGVWYWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LWl0ZXJhdGlvblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBpdGVyYXRlVmFsdWVzOiBmdW5jdGlvbiBpdGVyYXRlVmFsdWVzKG9iamVjdCkge1xuICAgIHJldHVybiBuZXcgT2JqZWN0SXRlcmF0b3Iob2JqZWN0LCAndmFsdWVzJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgaG9zdFJlcG9ydEVycm9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBPQlNFUlZBQkxFID0gd2VsbEtub3duU3ltYm9sKCdvYnNlcnZhYmxlJyk7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcblxudmFyIGNsZWFudXBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uU3RhdGUpIHtcbiAgdmFyIGNsZWFudXAgPSBzdWJzY3JpcHRpb25TdGF0ZS5jbGVhbnVwO1xuICBpZiAoY2xlYW51cCkge1xuICAgIHN1YnNjcmlwdGlvblN0YXRlLmNsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNsZWFudXAoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaG9zdFJlcG9ydEVycm9ycyhlcnJvcik7XG4gICAgfVxuICB9XG59O1xuXG52YXIgc3Vic2NyaXB0aW9uQ2xvc2VkID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvblN0YXRlKSB7XG4gIHJldHVybiBzdWJzY3JpcHRpb25TdGF0ZS5vYnNlcnZlciA9PT0gdW5kZWZpbmVkO1xufTtcblxudmFyIGNsb3NlID0gZnVuY3Rpb24gKHN1YnNjcmlwdGlvblN0YXRlKSB7XG4gIHZhciBzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb25TdGF0ZS5mYWNhZGU7XG4gIGlmICghREVTQ1JJUFRPUlMpIHtcbiAgICBzdWJzY3JpcHRpb24uY2xvc2VkID0gdHJ1ZTtcbiAgICB2YXIgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb25TdGF0ZS5zdWJzY3JpcHRpb25PYnNlcnZlcjtcbiAgICBpZiAoc3Vic2NyaXB0aW9uT2JzZXJ2ZXIpIHN1YnNjcmlwdGlvbk9ic2VydmVyLmNsb3NlZCA9IHRydWU7XG4gIH0gc3Vic2NyaXB0aW9uU3RhdGUub2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG59O1xuXG52YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKG9ic2VydmVyLCBzdWJzY3JpYmVyKSB7XG4gIHZhciBzdWJzY3JpcHRpb25TdGF0ZSA9IHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIGNsZWFudXA6IHVuZGVmaW5lZCxcbiAgICBvYnNlcnZlcjogYW5PYmplY3Qob2JzZXJ2ZXIpLFxuICAgIHN1YnNjcmlwdGlvbk9ic2VydmVyOiB1bmRlZmluZWRcbiAgfSk7XG4gIHZhciBzdGFydDtcbiAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBpZiAoc3RhcnQgPSBnZXRNZXRob2Qob2JzZXJ2ZXIsICdzdGFydCcpKSBzdGFydC5jYWxsKG9ic2VydmVyLCB0aGlzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBob3N0UmVwb3J0RXJyb3JzKGVycm9yKTtcbiAgfVxuICBpZiAoc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvblN0YXRlKSkgcmV0dXJuO1xuICB2YXIgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb25TdGF0ZS5zdWJzY3JpcHRpb25PYnNlcnZlciA9IG5ldyBTdWJzY3JpcHRpb25PYnNlcnZlcih0aGlzKTtcbiAgdHJ5IHtcbiAgICB2YXIgY2xlYW51cCA9IHN1YnNjcmliZXIoc3Vic2NyaXB0aW9uT2JzZXJ2ZXIpO1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSBjbGVhbnVwO1xuICAgIGlmIChjbGVhbnVwICE9IG51bGwpIHN1YnNjcmlwdGlvblN0YXRlLmNsZWFudXAgPSBpc0NhbGxhYmxlKGNsZWFudXAudW5zdWJzY3JpYmUpXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cbiAgICAgIDogYUNhbGxhYmxlKGNsZWFudXApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHN1YnNjcmlwdGlvbk9ic2VydmVyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm47XG4gIH0gaWYgKHN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb25TdGF0ZSkpIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uU3RhdGUpO1xufTtcblxuU3Vic2NyaXB0aW9uLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIHVuc3Vic2NyaWJlOiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uU3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvblN0YXRlKSkge1xuICAgICAgY2xvc2Uoc3Vic2NyaXB0aW9uU3RhdGUpO1xuICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25TdGF0ZSk7XG4gICAgfVxuICB9XG59KTtcblxuaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eShTdWJzY3JpcHRpb24ucHJvdG90eXBlLCAnY2xvc2VkJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzdWJzY3JpcHRpb25DbG9zZWQoZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKSk7XG4gIH1cbn0pO1xuXG52YXIgU3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywgeyBzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvbiB9KTtcbiAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbn07XG5cblN1YnNjcmlwdGlvbk9ic2VydmVyLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uU3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKGdldEludGVybmFsU3RhdGUodGhpcykuc3Vic2NyaXB0aW9uKTtcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb25TdGF0ZSkpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvblN0YXRlLm9ic2VydmVyO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG5leHRNZXRob2QgPSBnZXRNZXRob2Qob2JzZXJ2ZXIsICduZXh0Jyk7XG4gICAgICAgIGlmIChuZXh0TWV0aG9kKSBuZXh0TWV0aG9kLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhvc3RSZXBvcnRFcnJvcnMoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKHZhbHVlKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvblN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uU3RhdGUpKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb25TdGF0ZS5vYnNlcnZlcjtcbiAgICAgIGNsb3NlKHN1YnNjcmlwdGlvblN0YXRlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBlcnJvck1ldGhvZCA9IGdldE1ldGhvZChvYnNlcnZlciwgJ2Vycm9yJyk7XG4gICAgICAgIGlmIChlcnJvck1ldGhvZCkgZXJyb3JNZXRob2QuY2FsbChvYnNlcnZlciwgdmFsdWUpO1xuICAgICAgICBlbHNlIGhvc3RSZXBvcnRFcnJvcnModmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGhvc3RSZXBvcnRFcnJvcnMoZXJyKTtcbiAgICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25TdGF0ZSk7XG4gICAgfVxuICB9LFxuICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUoKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvblN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uU3RhdGUpKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb25TdGF0ZS5vYnNlcnZlcjtcbiAgICAgIGNsb3NlKHN1YnNjcmlwdGlvblN0YXRlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBjb21wbGV0ZU1ldGhvZCA9IGdldE1ldGhvZChvYnNlcnZlciwgJ2NvbXBsZXRlJyk7XG4gICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkgY29tcGxldGVNZXRob2QuY2FsbChvYnNlcnZlcik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBob3N0UmVwb3J0RXJyb3JzKGVycm9yKTtcbiAgICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb25TdGF0ZSk7XG4gICAgfVxuICB9XG59KTtcblxuaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eShTdWJzY3JpcHRpb25PYnNlcnZlci5wcm90b3R5cGUsICdjbG9zZWQnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbkNsb3NlZChnZXRJbnRlcm5hbFN0YXRlKGdldEludGVybmFsU3RhdGUodGhpcykuc3Vic2NyaXB0aW9uKSk7XG4gIH1cbn0pO1xuXG52YXIgJE9ic2VydmFibGUgPSBmdW5jdGlvbiBPYnNlcnZhYmxlKHN1YnNjcmliZXIpIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCAkT2JzZXJ2YWJsZSwgJ09ic2VydmFibGUnKTtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7IHN1YnNjcmliZXI6IGFDYWxsYWJsZShzdWJzY3JpYmVyKSB9KTtcbn07XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwge1xuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGlzQ2FsbGFibGUob2JzZXJ2ZXIpID8ge1xuICAgICAgbmV4dDogb2JzZXJ2ZXIsXG4gICAgICBlcnJvcjogbGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbXBsZXRlOiBsZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkXG4gICAgfSA6IGlzT2JqZWN0KG9ic2VydmVyKSA/IG9ic2VydmVyIDoge30sIGdldEludGVybmFsU3RhdGUodGhpcykuc3Vic2NyaWJlcik7XG4gIH1cbn0pO1xuXG5yZWRlZmluZUFsbCgkT2JzZXJ2YWJsZSwge1xuICBmcm9tOiBmdW5jdGlvbiBmcm9tKHgpIHtcbiAgICB2YXIgQyA9IGlzQ29uc3RydWN0b3IodGhpcykgPyB0aGlzIDogJE9ic2VydmFibGU7XG4gICAgdmFyIG9ic2VydmFibGVNZXRob2QgPSBnZXRNZXRob2QoYW5PYmplY3QoeCksIE9CU0VSVkFCTEUpO1xuICAgIGlmIChvYnNlcnZhYmxlTWV0aG9kKSB7XG4gICAgICB2YXIgb2JzZXJ2YWJsZSA9IGFuT2JqZWN0KG9ic2VydmFibGVNZXRob2QuY2FsbCh4KSk7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZS5jb25zdHJ1Y3RvciA9PT0gQyA/IG9ic2VydmFibGUgOiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcih4KTtcbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoaXQsIHN0b3ApIHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChpdCk7XG4gICAgICAgIGlmIChvYnNlcnZlci5jbG9zZWQpIHJldHVybiBzdG9wKCk7XG4gICAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH0sXG4gIG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICB2YXIgQyA9IGlzQ29uc3RydWN0b3IodGhpcykgPyB0aGlzIDogJE9ic2VydmFibGU7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGl0ZW1zID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIGl0ZW1zW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoaXRlbXNbaV0pO1xuICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG4gICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG5yZWRlZmluZSgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIE9CU0VSVkFCTEUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgT2JzZXJ2YWJsZTogJE9ic2VydmFibGVcbn0pO1xuXG5zZXRTcGVjaWVzKCdPYnNlcnZhYmxlJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG5cbi8vIGBQcm9taXNlLnRyeWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlIH0sIHtcbiAgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZih0aGlzKTtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgICAocmVzdWx0LmVycm9yID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIvLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxudmFyIE1hcCA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMubWFwJyk7XG52YXIgV2Vha01hcCA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMud2Vhay1tYXAnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG5cbnZhciBtZXRhZGF0YSA9IHNoYXJlZCgnbWV0YWRhdGEnKTtcbnZhciBzdG9yZSA9IG1ldGFkYXRhLnN0b3JlIHx8IChtZXRhZGF0YS5zdG9yZSA9IG5ldyBXZWFrTWFwKCkpO1xuXG52YXIgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgY3JlYXRlKSB7XG4gIHZhciB0YXJnZXRNZXRhZGF0YSA9IHN0b3JlLmdldCh0YXJnZXQpO1xuICBpZiAoIXRhcmdldE1ldGFkYXRhKSB7XG4gICAgaWYgKCFjcmVhdGUpIHJldHVybjtcbiAgICBzdG9yZS5zZXQodGFyZ2V0LCB0YXJnZXRNZXRhZGF0YSA9IG5ldyBNYXAoKSk7XG4gIH1cbiAgdmFyIGtleU1ldGFkYXRhID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KHRhcmdldEtleSk7XG4gIGlmICgha2V5TWV0YWRhdGEpIHtcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuO1xuICAgIHRhcmdldE1ldGFkYXRhLnNldCh0YXJnZXRLZXksIGtleU1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfSByZXR1cm4ga2V5TWV0YWRhdGE7XG59O1xuXG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSk7XG59O1xuXG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IGZ1bmN0aW9uIChNZXRhZGF0YUtleSwgTywgUCkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIGZhbHNlKTtcbiAgcmV0dXJuIG1ldGFkYXRhTWFwID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xufTtcblxudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCB0cnVlKS5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xufTtcblxudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5KSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAodGFyZ2V0LCB0YXJnZXRLZXksIGZhbHNlKTtcbiAgdmFyIGtleXMgPSBbXTtcbiAgaWYgKG1ldGFkYXRhTWFwKSBtZXRhZGF0YU1hcC5mb3JFYWNoKGZ1bmN0aW9uIChfLCBrZXkpIHsga2V5cy5wdXNoKGtleSk7IH0pO1xuICByZXR1cm4ga2V5cztcbn07XG5cbnZhciB0b01ldGFkYXRhS2V5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdG9yZTogc3RvcmUsXG4gIGdldE1hcDogZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCxcbiAgaGFzOiBvcmRpbmFyeUhhc093bk1ldGFkYXRhLFxuICBnZXQ6IG9yZGluYXJ5R2V0T3duTWV0YWRhdGEsXG4gIHNldDogb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSxcbiAga2V5czogb3JkaW5hcnlPd25NZXRhZGF0YUtleXMsXG4gIHRvS2V5OiB0b01ldGFkYXRhS2V5XG59O1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgUmVmbGVjdE1ldGFkYXRhTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZmxlY3QtbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5zZXQ7XG5cbi8vIGBSZWZsZWN0LmRlZmluZU1ldGFkYXRhYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9yZWZsZWN0LW1ldGFkYXRhXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBkZWZpbmVNZXRhZGF0YTogZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICAgIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgNCA/IHVuZGVmaW5lZCA6IHRvTWV0YWRhdGFLZXkoYXJndW1lbnRzWzNdKTtcbiAgICBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCBhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciB0b01ldGFkYXRhS2V5ID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnRvS2V5O1xudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuZ2V0TWFwO1xudmFyIHN0b3JlID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnN0b3JlO1xuXG4vLyBgUmVmbGVjdC5kZWxldGVNZXRhZGF0YWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZGVsZXRlTWV0YWRhdGE6IGZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgICB2YXIgdGFyZ2V0S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFkYXRhS2V5KGFyZ3VtZW50c1syXSk7XG4gICAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXksIGZhbHNlKTtcbiAgICBpZiAobWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCB8fCAhbWV0YWRhdGFNYXBbJ2RlbGV0ZSddKG1ldGFkYXRhS2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChtZXRhZGF0YU1hcC5zaXplKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBzdG9yZS5nZXQodGFyZ2V0KTtcbiAgICB0YXJnZXRNZXRhZGF0YVsnZGVsZXRlJ10odGFyZ2V0S2V5KTtcbiAgICByZXR1cm4gISF0YXJnZXRNZXRhZGF0YS5zaXplIHx8IHN0b3JlWydkZWxldGUnXSh0YXJnZXQpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuaGFzO1xudmFyIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuZ2V0O1xudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG5cbnZhciBvcmRpbmFyeUdldE1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIHJldHVybiBwYXJlbnQgIT09IG51bGwgPyBvcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApIDogdW5kZWZpbmVkO1xufTtcblxuLy8gYFJlZmxlY3QuZ2V0TWV0YWRhdGFgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGdldE1ldGFkYXRhOiBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMl0pO1xuICAgIHJldHVybiBvcmRpbmFyeUdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnZhciBTZXQgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxudmFyIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLmtleXM7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxudmFyIGZyb20gPSBmdW5jdGlvbiAoaXRlcikge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGl0ZXJhdGUoaXRlciwgcmVzdWx0LnB1c2gsIHsgdGhhdDogcmVzdWx0IH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIG9yZGluYXJ5TWV0YWRhdGFLZXlzID0gZnVuY3Rpb24gKE8sIFApIHtcbiAgdmFyIG9LZXlzID0gb3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgaWYgKHBhcmVudCA9PT0gbnVsbCkgcmV0dXJuIG9LZXlzO1xuICB2YXIgcEtleXMgPSBvcmRpbmFyeU1ldGFkYXRhS2V5cyhwYXJlbnQsIFApO1xuICByZXR1cm4gcEtleXMubGVuZ3RoID8gb0tleXMubGVuZ3RoID8gZnJvbShuZXcgU2V0KG9LZXlzLmNvbmNhdChwS2V5cykpKSA6IHBLZXlzIDogb0tleXM7XG59O1xuXG4vLyBgUmVmbGVjdC5nZXRNZXRhZGF0YUtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGdldE1ldGFkYXRhS2V5czogZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICAgIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YWRhdGFLZXkoYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gb3JkaW5hcnlNZXRhZGF0YUtleXMoYW5PYmplY3QodGFyZ2V0KSwgdGFyZ2V0S2V5KTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBSZWZsZWN0TWV0YWRhdGFNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVmbGVjdC1tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5nZXQ7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxuLy8gYFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGdldE93bk1ldGFkYXRhOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMl0pO1xuICAgIHJldHVybiBvcmRpbmFyeUdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5rZXlzO1xudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG5cbi8vIGBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5c2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZ2V0T3duTWV0YWRhdGFLZXlzOiBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMV0pO1xuICAgIHJldHVybiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuaGFzO1xudmFyIHRvTWV0YWRhdGFLZXkgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUudG9LZXk7XG5cbnZhciBvcmRpbmFyeUhhc01ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYgKGhhc093bikgcmV0dXJuIHRydWU7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiBmYWxzZTtcbn07XG5cbi8vIGBSZWZsZWN0Lmhhc01ldGFkYXRhYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9yZWZsZWN0LW1ldGFkYXRhXG4kKHsgdGFyZ2V0OiAnUmVmbGVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBoYXNNZXRhZGF0YTogZnVuY3Rpb24gaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICAgIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YWRhdGFLZXkoYXJndW1lbnRzWzJdKTtcbiAgICByZXR1cm4gb3JkaW5hcnlIYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgdGFyZ2V0S2V5KTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBSZWZsZWN0TWV0YWRhdGFNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVmbGVjdC1tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS5oYXM7XG52YXIgdG9NZXRhZGF0YUtleSA9IFJlZmxlY3RNZXRhZGF0YU1vZHVsZS50b0tleTtcblxuLy8gYFJlZmxlY3QuaGFzT3duTWV0YWRhdGFgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL3JlZmxlY3QtbWV0YWRhdGFcbiQoeyB0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGhhc093bk1ldGFkYXRhOiBmdW5jdGlvbiBoYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gICAgdmFyIHRhcmdldEtleSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhZGF0YUtleShhcmd1bWVudHNbMl0pO1xuICAgIHJldHVybiBvcmRpbmFyeUhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpLCB0YXJnZXRLZXkpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIFJlZmxlY3RNZXRhZGF0YU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWZsZWN0LW1ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciB0b01ldGFkYXRhS2V5ID0gUmVmbGVjdE1ldGFkYXRhTW9kdWxlLnRvS2V5O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBSZWZsZWN0TWV0YWRhdGFNb2R1bGUuc2V0O1xuXG4vLyBgUmVmbGVjdC5tZXRhZGF0YWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmJ1Y2t0b24vcmVmbGVjdC1tZXRhZGF0YVxuJCh7IHRhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgbWV0YWRhdGE6IGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIGtleSkge1xuICAgICAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgYW5PYmplY3QodGFyZ2V0KSwgdG9NZXRhZGF0YUtleShrZXkpKTtcbiAgICB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9jb2xsZWN0aW9uLW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIGFkZGVyID0gYUNhbGxhYmxlKHNldC5hZGQpO1xuICBmb3IgKHZhciBrID0gMCwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgYWRkZXIuY2FsbChzZXQsIGFyZ3VtZW50c1trXSk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBjb2xsZWN0aW9uQWRkQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tYWRkLWFsbCcpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5hZGRBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGFkZEFsbDogZnVuY3Rpb24gYWRkQWxsKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25BZGRBbGwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBjb2xsZWN0aW9uRGVsZXRlQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZGVsZXRlLWFsbCcpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5kZWxldGVBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGRlbGV0ZUFsbDogZnVuY3Rpb24gZGVsZXRlQWxsKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25EZWxldGVBbGwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuZGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBkaWZmZXJlbmNlOiBmdW5jdGlvbiBkaWZmZXJlbmNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBuZXdTZXQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihzZXQsIGdldEJ1aWx0SW4oJ1NldCcpKSkoc2V0KTtcbiAgICB2YXIgcmVtb3ZlciA9IGFDYWxsYWJsZShuZXdTZXRbJ2RlbGV0ZSddKTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJlbW92ZXIuY2FsbChuZXdTZXQsIHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3U2V0O1xuICB9XG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zZXQgLS0gc2FmZVxuICByZXR1cm4gU2V0LnByb3RvdHlwZS52YWx1ZXMuY2FsbChpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRTZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBldmVyeTogZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiAhaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoIWJvdW5kRnVuY3Rpb24odmFsdWUsIHZhbHVlLCBzZXQpKSByZXR1cm4gc3RvcCgpO1xuICAgIH0sIHsgSVNfSVRFUkFUT1I6IHRydWUsIElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBnZXRTZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHZhciBuZXdTZXQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihzZXQsIGdldEJ1aWx0SW4oJ1NldCcpKSkoKTtcbiAgICB2YXIgYWRkZXIgPSBhQ2FsbGFibGUobmV3U2V0LmFkZCk7XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAoYm91bmRGdW5jdGlvbih2YWx1ZSwgdmFsdWUsIHNldCkpIGFkZGVyLmNhbGwobmV3U2V0LCB2YWx1ZSk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3U2V0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgZ2V0U2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIHNldCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHZhciBpdGVyYXRvciA9IGdldFNldEl0ZXJhdG9yKHNldCk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICByZXR1cm4gaXRlcmF0ZShpdGVyYXRvciwgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoYm91bmRGdW5jdGlvbih2YWx1ZSwgdmFsdWUsIHNldCkpIHJldHVybiBzdG9wKHZhbHVlKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5yZXN1bHQ7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWZyb20nKTtcblxuLy8gYFNldC5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5mcm9tXG4kKHsgdGFyZ2V0OiAnU2V0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGZyb206IGZyb21cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBpbnRlcnNlY3Rpb246IGZ1bmN0aW9uIGludGVyc2VjdGlvbihpdGVyYWJsZSkge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgbmV3U2V0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Ioc2V0LCBnZXRCdWlsdEluKCdTZXQnKSkpKCk7XG4gICAgdmFyIGhhc0NoZWNrID0gYUNhbGxhYmxlKHNldC5oYXMpO1xuICAgIHZhciBhZGRlciA9IGFDYWxsYWJsZShuZXdTZXQuYWRkKTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmIChoYXNDaGVjay5jYWxsKHNldCwgdmFsdWUpKSBhZGRlci5jYWxsKG5ld1NldCwgdmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNEaXNqb2ludEZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbVxuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBpc0Rpc2pvaW50RnJvbTogZnVuY3Rpb24gaXNEaXNqb2ludEZyb20oaXRlcmFibGUpIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGhhc0NoZWNrID0gYUNhbGxhYmxlKHNldC5oYXMpO1xuICAgIHJldHVybiAhaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoaGFzQ2hlY2suY2FsbChzZXQsIHZhbHVlKSA9PT0gdHJ1ZSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IElOVEVSUlVQVEVEOiB0cnVlIH0pLnN0b3BwZWQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdWJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzU3Vic2V0T2ZcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgaXNTdWJzZXRPZjogZnVuY3Rpb24gaXNTdWJzZXRPZihpdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKHRoaXMpO1xuICAgIHZhciBvdGhlclNldCA9IGFuT2JqZWN0KGl0ZXJhYmxlKTtcbiAgICB2YXIgaGFzQ2hlY2sgPSBvdGhlclNldC5oYXM7XG4gICAgaWYgKCFpc0NhbGxhYmxlKGhhc0NoZWNrKSkge1xuICAgICAgb3RoZXJTZXQgPSBuZXcgKGdldEJ1aWx0SW4oJ1NldCcpKShpdGVyYWJsZSk7XG4gICAgICBoYXNDaGVjayA9IGFDYWxsYWJsZShvdGhlclNldC5oYXMpO1xuICAgIH1cbiAgICByZXR1cm4gIWl0ZXJhdGUoaXRlcmF0b3IsIGZ1bmN0aW9uICh2YWx1ZSwgc3RvcCkge1xuICAgICAgaWYgKGhhc0NoZWNrLmNhbGwob3RoZXJTZXQsIHZhbHVlKSA9PT0gZmFsc2UpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSwgSU5URVJSVVBURUQ6IHRydWUgfSkuc3RvcHBlZDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1cGVyc2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jU2V0LnByb3RvdHlwZS5pc1N1cGVyc2V0T2ZcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgaXNTdXBlcnNldE9mOiBmdW5jdGlvbiBpc1N1cGVyc2V0T2YoaXRlcmFibGUpIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGhhc0NoZWNrID0gYUNhbGxhYmxlKHNldC5oYXMpO1xuICAgIHJldHVybiAhaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHZhbHVlLCBzdG9wKSB7XG4gICAgICBpZiAoaGFzQ2hlY2suY2FsbChzZXQsIHZhbHVlKSA9PT0gZmFsc2UpIHJldHVybiBzdG9wKCk7XG4gICAgfSwgeyBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldFNldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuam9pbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgc2VwID0gc2VwYXJhdG9yID09PSB1bmRlZmluZWQgPyAnLCcgOiBTdHJpbmcoc2VwYXJhdG9yKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaXRlcmF0ZShpdGVyYXRvciwgcmVzdWx0LnB1c2gsIHsgdGhhdDogcmVzdWx0LCBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oc2VwKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGdldFNldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtaXRlcmF0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUubWFwYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRTZXRJdGVyYXRvcihzZXQpO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIG5ld1NldCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHNldCwgZ2V0QnVpbHRJbignU2V0JykpKSgpO1xuICAgIHZhciBhZGRlciA9IGFDYWxsYWJsZShuZXdTZXQuYWRkKTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGFkZGVyLmNhbGwobmV3U2V0LCBib3VuZEZ1bmN0aW9uKHZhbHVlLCB2YWx1ZSwgc2V0KSk7XG4gICAgfSwgeyBJU19JVEVSQVRPUjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbmV3U2V0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tb2YnKTtcblxuLy8gYFNldC5vZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQub2ZcbiQoeyB0YXJnZXQ6ICdTZXQnLCBzdGF0OiB0cnVlIH0sIHtcbiAgb2Y6IG9mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0U2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1pdGVyYXRvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5yZWR1Y2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgbm9Jbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8IDI7XG4gICAgdmFyIGFjY3VtdWxhdG9yID0gbm9Jbml0aWFsID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGFDYWxsYWJsZShjYWxsYmFja2ZuKTtcbiAgICBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmIChub0luaXRpYWwpIHtcbiAgICAgICAgbm9Jbml0aWFsID0gZmFsc2U7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2N1bXVsYXRvciA9IGNhbGxiYWNrZm4oYWNjdW11bGF0b3IsIHZhbHVlLCB2YWx1ZSwgc2V0KTtcbiAgICAgIH1cbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlIH0pO1xuICAgIGlmIChub0luaXRpYWwpIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IHNldCB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRTZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LWl0ZXJhdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIGl0ZXJhdG9yID0gZ2V0U2V0SXRlcmF0b3Ioc2V0KTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgIHJldHVybiBpdGVyYXRlKGl0ZXJhdG9yLCBmdW5jdGlvbiAodmFsdWUsIHN0b3ApIHtcbiAgICAgIGlmIChib3VuZEZ1bmN0aW9uKHZhbHVlLCB2YWx1ZSwgc2V0KSkgcmV0dXJuIHN0b3AoKTtcbiAgICB9LCB7IElTX0lURVJBVE9SOiB0cnVlLCBJTlRFUlJVUFRFRDogdHJ1ZSB9KS5zdG9wcGVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHN5bW1ldHJpY0RpZmZlcmVuY2U6IGZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgc2V0ID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIG5ld1NldCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHNldCwgZ2V0QnVpbHRJbignU2V0JykpKShzZXQpO1xuICAgIHZhciByZW1vdmVyID0gYUNhbGxhYmxlKG5ld1NldFsnZGVsZXRlJ10pO1xuICAgIHZhciBhZGRlciA9IGFDYWxsYWJsZShuZXdTZXQuYWRkKTtcbiAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJlbW92ZXIuY2FsbChuZXdTZXQsIHZhbHVlKSB8fCBhZGRlci5jYWxsKG5ld1NldCwgdmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdTZXQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnVuaW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIHVuaW9uOiBmdW5jdGlvbiB1bmlvbihpdGVyYWJsZSkge1xuICAgIHZhciBzZXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgbmV3U2V0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Ioc2V0LCBnZXRCdWlsdEluKCdTZXQnKSkpKHNldCk7XG4gICAgaXRlcmF0ZShpdGVyYWJsZSwgYUNhbGxhYmxlKG5ld1NldC5hZGQpLCB7IHRoYXQ6IG5ld1NldCB9KTtcbiAgICByZXR1cm4gbmV3U2V0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNoYXJBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY2hhckF0O1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAn8KCutycuYXQoMCkgIT09ICfwoK63Jztcbn0pO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgYXQ6IGZ1bmN0aW9uIGF0KHBvcykge1xuICAgIHJldHVybiBjaGFyQXQodGhpcywgcG9zKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIFN0cmluZ011bHRpYnl0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJyk7XG5cbnZhciBjb2RlQXQgPSBTdHJpbmdNdWx0aWJ5dGVNb2R1bGUuY29kZUF0O1xudmFyIGNoYXJBdCA9IFN0cmluZ011bHRpYnl0ZU1vZHVsZS5jaGFyQXQ7XG52YXIgU1RSSU5HX0lURVJBVE9SID0gJ1N0cmluZyBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihTVFJJTkdfSVRFUkFUT1IpO1xuXG4vLyBUT0RPOiB1bmlmeSB3aXRoIFN0cmluZyNAQGl0ZXJhdG9yXG52YXIgJFN0cmluZ0l0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBTdHJpbmdJdGVyYXRvcihzdHJpbmcpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogc3RyaW5nLFxuICAgIGluZGV4OiAwXG4gIH0pO1xufSwgJ1N0cmluZycsIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciBzdHJpbmcgPSBzdGF0ZS5zdHJpbmc7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4O1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBzdHJpbmcubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiB7IGNvZGVQb2ludDogY29kZUF0KHBvaW50LCAwKSwgcG9zaXRpb246IGluZGV4IH0sIGRvbmU6IGZhbHNlIH07XG59KTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50c2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcHJvdG90eXBlLWNvZGVwb2ludHNcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGNvZGVQb2ludHM6IGZ1bmN0aW9uIGNvZGVQb2ludHMoKSB7XG4gICAgcmV0dXJuIG5ldyAkU3RyaW5nSXRlcmF0b3IodG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSkpO1xuICB9XG59KTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wuYXN5bmNEaXNwb3NlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdXNpbmctc3RhdGVtZW50XG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2FzeW5jRGlzcG9zZScpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5kaXNwb3NlYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdXNpbmctc3RhdGVtZW50XG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2Rpc3Bvc2UnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wubWF0Y2hlcmAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXBhdHRlcm4tbWF0Y2hpbmdcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnbWF0Y2hlcicpO1xuIiwidmFyIGRlZmluZVdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtd2VsbC1rbm93bi1zeW1ib2wnKTtcblxuLy8gYFN5bWJvbC5tZXRhZGF0YWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWRlY29yYXRvcnNcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnbWV0YWRhdGEnKTtcbiIsInZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wub2JzZXJ2YWJsZWAgd2VsbC1rbm93biBzeW1ib2xcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVcbmRlZmluZVdlbGxLbm93blN5bWJvbCgnb2JzZXJ2YWJsZScpO1xuIiwiLy8gVE9ETzogcmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnZhciBkZWZpbmVXZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLXdlbGwta25vd24tc3ltYm9sJyk7XG5cbi8vIGBTeW1ib2wucGF0dGVybk1hdGNoYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcGF0dGVybi1tYXRjaGluZ1xuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdwYXR0ZXJuTWF0Y2gnKTtcbiIsIi8vIFRPRE86IHJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3JlcGxhY2VBbGwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgYXJyYXlGcm9tQXN5bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbS1hc3luYycpO1xudmFyIFRZUEVEX0FSUkFZU19DT05TVFJVQ1RPUlNfUkVRVUlSRVNfV1JBUFBFUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3JzLXJlcXVpcmUtd3JhcHBlcnMnKTtcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdCcpO1xuXG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbnZhciBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLmZyb21Bc3luY2AgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1mcm9tLWFzeW5jXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgLS0gcmVxdWlyZWQgZm9yIC5sZW5ndGhcbmV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QoJ2Zyb21Bc3luYycsIGZ1bmN0aW9uIGZyb21Bc3luYyhhc3luY0l0ZW1zIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIEMgPSB0aGlzO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcGZuID0gYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IChnZXRCdWlsdEluKCdQcm9taXNlJykpKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgYUNvbnN0cnVjdG9yKEMpO1xuICAgIHJlc29sdmUoYXJyYXlGcm9tQXN5bmMoYXN5bmNJdGVtcywgbWFwZm4sIHRoaXNBcmcpKTtcbiAgfSkudGhlbihmdW5jdGlvbiAobGlzdCkge1xuICAgIHJldHVybiBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QoYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihDKSwgbGlzdCk7XG4gIH0pO1xufSwgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmaWx0ZXJSZWplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyUmVqZWN0O1xudmFyIGZyb21TcGVjaWVzQW5kTGlzdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLXNwZWNpZXMtYW5kLWxpc3QnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maWx0ZXJPdXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaWx0ZXJPdXQnLCBmdW5jdGlvbiBmaWx0ZXJPdXQoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgdmFyIGxpc3QgPSAkZmlsdGVyUmVqZWN0KGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIHJldHVybiBmcm9tU3BlY2llc0FuZExpc3QodGhpcywgbGlzdCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmlsdGVyUmVqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbHRlclJlamVjdDtcbnZhciBmcm9tU3BlY2llc0FuZExpc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbS1zcGVjaWVzLWFuZC1saXN0Jyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmlsdGVyUmVqZWN0YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmlsdGVyUmVqZWN0JywgZnVuY3Rpb24gZmlsdGVyUmVqZWN0KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHZhciBsaXN0ID0gJGZpbHRlclJlamVjdChhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICByZXR1cm4gZnJvbVNwZWNpZXNBbmRMaXN0KHRoaXMsIGxpc3QpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbmRMYXN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QnKS5maW5kTGFzdDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maW5kTGFzdGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmluZExhc3QnLCBmdW5jdGlvbiBmaW5kTGFzdChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZmluZExhc3QoYVR5cGVkQXJyYXkodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbmRMYXN0SW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdCcpLmZpbmRMYXN0SW5kZXg7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmluZExhc3RJbmRleGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmluZExhc3RJbmRleCcsIGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZpbmRMYXN0SW5kZXgoYVR5cGVkQXJyYXkodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGdyb3VwQnkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZ3JvdXAtYnknKTtcbnZhciB0eXBlZEFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5ncm91cEJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWdyb3VwaW5nXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdncm91cEJ5JywgZnVuY3Rpb24gZ3JvdXBCeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gJGdyb3VwQnkoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIHRoaXNBcmcsIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3IpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgYXJyYXlVbmlxdWVCeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS11bmlxdWUtYnknKTtcbnZhciBmcm9tU3BlY2llc0FuZExpc3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbS1zcGVjaWVzLWFuZC1saXN0Jyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudW5pcXVlQnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktdW5pcXVlXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCd1bmlxdWVCeScsIGZ1bmN0aW9uIHVuaXF1ZUJ5KHJlc29sdmVyKSB7XG4gIHJldHVybiBmcm9tU3BlY2llc0FuZExpc3QodGhpcywgYXJyYXlVbmlxdWVCeS5jYWxsKGFUeXBlZEFycmF5KHRoaXMpLCByZXNvbHZlcikpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBjb2xsZWN0aW9uRGVsZXRlQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZGVsZXRlLWFsbCcpO1xuXG4vLyBgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlQWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNvbGxlY3Rpb24tbWV0aG9kc1xuJCh7IHRhcmdldDogJ1dlYWtNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZGVsZXRlQWxsOiBmdW5jdGlvbiBkZWxldGVBbGwoLyogLi4uZWxlbWVudHMgKi8pIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbkRlbGV0ZUFsbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1mcm9tJyk7XG5cbi8vIGBXZWFrTWFwLmZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha21hcC5mcm9tXG4kKHsgdGFyZ2V0OiAnV2Vha01hcCcsIHN0YXQ6IHRydWUgfSwge1xuICBmcm9tOiBmcm9tXG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tb2YnKTtcblxuLy8gYFdlYWtNYXAub2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha21hcC5vZlxuJCh7IHRhcmdldDogJ1dlYWtNYXAnLCBzdGF0OiB0cnVlIH0sIHtcbiAgb2Y6IG9mXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyICRlbXBsYWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hcC1lbXBsYWNlJyk7XG5cbi8vIGBXZWFrTWFwLnByb3RvdHlwZS5lbXBsYWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVwc2VydFxuJCh7IHRhcmdldDogJ1dlYWtNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgZW1wbGFjZTogJGVtcGxhY2Vcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogcmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyICR1cHNlcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFwLXVwc2VydCcpO1xuXG4vLyBgV2Vha01hcC5wcm90b3R5cGUudXBzZXJ0YCBtZXRob2QgKHJlcGxhY2VkIGJ5IGBXZWFrTWFwLnByb3RvdHlwZS5lbXBsYWNlYClcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXVwc2VydFxuJCh7IHRhcmdldDogJ1dlYWtNYXAnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIH0sIHtcbiAgdXBzZXJ0OiAkdXBzZXJ0XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGNvbGxlY3Rpb25BZGRBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi1hZGQtYWxsJyk7XG5cbi8vIGBXZWFrU2V0LnByb3RvdHlwZS5hZGRBbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY29sbGVjdGlvbi1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnV2Vha1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfSwge1xuICBhZGRBbGw6IGZ1bmN0aW9uIGFkZEFsbCgvKiAuLi5lbGVtZW50cyAqLykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uQWRkQWxsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgY29sbGVjdGlvbkRlbGV0ZUFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLWRlbGV0ZS1hbGwnKTtcblxuLy8gYFdlYWtTZXQucHJvdG90eXBlLmRlbGV0ZUFsbGAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1jb2xsZWN0aW9uLW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdXZWFrU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB9LCB7XG4gIGRlbGV0ZUFsbDogZnVuY3Rpb24gZGVsZXRlQWxsKC8qIC4uLmVsZW1lbnRzICovKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25EZWxldGVBbGwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb24tZnJvbScpO1xuXG4vLyBgV2Vha1NldC5mcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQuZnJvbVxuJCh7IHRhcmdldDogJ1dlYWtTZXQnLCBzdGF0OiB0cnVlIH0sIHtcbiAgZnJvbTogZnJvbVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb2xsZWN0aW9uLW9mJyk7XG5cbi8vIGBXZWFrU2V0Lm9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQub2ZcbiQoeyB0YXJnZXQ6ICdXZWFrU2V0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIG9mOiBvZlxufSk7XG4iLCIvLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcbiIsIi8vIGluIG9sZCBXZWJLaXQgdmVyc2lvbnMsIGBlbGVtZW50LmNsYXNzTGlzdGAgaXMgbm90IGFuIGluc3RhbmNlIG9mIGdsb2JhbCBgRE9NVG9rZW5MaXN0YFxudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG52YXIgY2xhc3NMaXN0ID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdzcGFuJykuY2xhc3NMaXN0O1xudmFyIERPTVRva2VuTGlzdFByb3RvdHlwZSA9IGNsYXNzTGlzdCAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IgJiYgY2xhc3NMaXN0LmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Ub2tlbkxpc3RQcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgPyB1bmRlZmluZWQgOiBET01Ub2tlbkxpc3RQcm90b3R5cGU7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZScpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2gnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbnZhciBoYW5kbGVQcm90b3R5cGUgPSBmdW5jdGlvbiAoQ29sbGVjdGlvblByb3RvdHlwZSkge1xuICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGUgJiYgQ29sbGVjdGlvblByb3RvdHlwZS5mb3JFYWNoICE9PSBmb3JFYWNoKSB0cnkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCAnZm9yRWFjaCcsIGZvckVhY2gpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCA9IGZvckVhY2g7XG4gIH1cbn07XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgaWYgKERPTUl0ZXJhYmxlc1tDT0xMRUNUSU9OX05BTUVdKSB7XG4gICAgaGFuZGxlUHJvdG90eXBlKGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdICYmIGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuaGFuZGxlUHJvdG90eXBlKERPTVRva2VuTGlzdFByb3RvdHlwZSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZScpO1xudmFyIEFycmF5SXRlcmF0b3JNZXRob2RzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9yTWV0aG9kcy52YWx1ZXM7XG5cbnZhciBoYW5kbGVQcm90b3R5cGUgPSBmdW5jdGlvbiAoQ29sbGVjdGlvblByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKSB7XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdICE9PSBBcnJheVZhbHVlcykgdHJ5IHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSA9IEFycmF5VmFsdWVzO1xuICAgIH1cbiAgICBpZiAoIUNvbGxlY3Rpb25Qcm90b3R5cGVbVE9fU1RSSU5HX1RBR10pIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCBDT0xMRUNUSU9OX05BTUUpO1xuICAgIH1cbiAgICBpZiAoRE9NSXRlcmFibGVzW0NPTExFQ1RJT05fTkFNRV0pIGZvciAodmFyIE1FVEhPRF9OQU1FIGluIEFycmF5SXRlcmF0b3JNZXRob2RzKSB7XG4gICAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICAgIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSAhPT0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKSB0cnkge1xuICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgTUVUSE9EX05BTUUsIEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSA9IEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgaGFuZGxlUHJvdG90eXBlKGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdICYmIGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdLnByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKTtcbn1cblxuaGFuZGxlUHJvdG90eXBlKERPTVRva2VuTGlzdFByb3RvdHlwZSwgJ0RPTVRva2VuTGlzdCcpO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpO1xuXG52YXIgRk9SQ0VEID0gIWdsb2JhbC5zZXRJbW1lZGlhdGUgfHwgIWdsb2JhbC5jbGVhckltbWVkaWF0ZTtcblxuLy8gaHR0cDovL3czYy5naXRodWIuaW8vc2V0SW1tZWRpYXRlL1xuJCh7IGdsb2JhbDogdHJ1ZSwgYmluZDogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBgc2V0SW1tZWRpYXRlYCBtZXRob2RcbiAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vc2V0SW1tZWRpYXRlLyNzaS1zZXRJbW1lZGlhdGVcbiAgc2V0SW1tZWRpYXRlOiB0YXNrLnNldCxcbiAgLy8gYGNsZWFySW1tZWRpYXRlYCBtZXRob2RcbiAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vc2V0SW1tZWRpYXRlLyNzaS1jbGVhckltbWVkaWF0ZVxuICBjbGVhckltbWVkaWF0ZTogdGFzay5jbGVhclxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcblxuLy8gYHF1ZXVlTWljcm90YXNrYCBtZXRob2Rcbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RpbWVycy1hbmQtdXNlci1wcm9tcHRzLmh0bWwjZG9tLXF1ZXVlbWljcm90YXNrXG4kKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBub1RhcmdldEdldDogdHJ1ZSB9LCB7XG4gIHF1ZXVlTWljcm90YXNrOiBmdW5jdGlvbiBxdWV1ZU1pY3JvdGFzayhmbikge1xuICAgIHZhciBkb21haW4gPSBJU19OT0RFICYmIHByb2Nlc3MuZG9tYWluO1xuICAgIG1pY3JvdGFzayhkb21haW4gPyBkb21haW4uYmluZChmbikgOiBmbik7XG4gIH1cbn0pO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHNsaWNlID0gW10uc2xpY2U7XG52YXIgTVNJRSA9IC9NU0lFIC5cXC4vLnRlc3QodXNlckFnZW50KTsgLy8gPC0gZGlydHkgaWU5LSBjaGVja1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0IC8qICwgLi4uYXJndW1lbnRzICovKSB7XG4gICAgdmFyIGJvdW5kQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICAgIHZhciBhcmdzID0gYm91bmRBcmdzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBzY2hlZHVsZXIoYm91bmRBcmdzID8gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHNwZWMgcmVxdWlyZW1lbnRcbiAgICAgIChpc0NhbGxhYmxlKGhhbmRsZXIpID8gaGFuZGxlciA6IEZ1bmN0aW9uKGhhbmRsZXIpKS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IDogaGFuZGxlciwgdGltZW91dCk7XG4gIH07XG59O1xuXG4vLyBpZTktIHNldFRpbWVvdXQgJiBzZXRJbnRlcnZhbCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgZml4XG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90aW1lcnMtYW5kLXVzZXItcHJvbXB0cy5odG1sI3RpbWVyc1xuJCh7IGdsb2JhbDogdHJ1ZSwgYmluZDogdHJ1ZSwgZm9yY2VkOiBNU0lFIH0sIHtcbiAgLy8gYHNldFRpbWVvdXRgIG1ldGhvZFxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90aW1lcnMtYW5kLXVzZXItcHJvbXB0cy5odG1sI2RvbS1zZXR0aW1lb3V0XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICAvLyBgc2V0SW50ZXJ2YWxgIG1ldGhvZFxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90aW1lcnMtYW5kLXVzZXItcHJvbXB0cy5odG1sI2RvbS1zZXRpbnRlcnZhbFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHVybCA9IG5ldyBVUkwoJ2I/YT0xJmI9MiZjPTMnLCAnaHR0cDovL2EnKTtcbiAgdmFyIHNlYXJjaFBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdXJsLnBhdGhuYW1lID0gJ2MlMjBkJztcbiAgc2VhcmNoUGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBzZWFyY2hQYXJhbXNbJ2RlbGV0ZSddKCdiJyk7XG4gICAgcmVzdWx0ICs9IGtleSArIHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIChJU19QVVJFICYmICF1cmwudG9KU09OKVxuICAgIHx8ICFzZWFyY2hQYXJhbXMuc29ydFxuICAgIHx8IHVybC5ocmVmICE9PSAnaHR0cDovL2EvYyUyMGQ/YT0xJmM9MydcbiAgICB8fCBzZWFyY2hQYXJhbXMuZ2V0KCdjJykgIT09ICczJ1xuICAgIHx8IFN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCc/YT0xJykpICE9PSAnYT0xJ1xuICAgIHx8ICFzZWFyY2hQYXJhbXNbSVRFUkFUT1JdXG4gICAgLy8gdGhyb3dzIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL2FAYicpLnVzZXJuYW1lICE9PSAnYSdcbiAgICB8fCBuZXcgVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9YicpKS5nZXQoJ2EnKSAhPT0gJ2InXG4gICAgLy8gbm90IHB1bnljb2RlZCBpbiBFZGdlXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL9GC0LXRgdGCJykuaG9zdCAhPT0gJ3huLS1lMWF5YmMnXG4gICAgLy8gbm90IGVzY2FwZWQgaW4gQ2hyb21lIDYyLVxuICAgIHx8IG5ldyBVUkwoJ2h0dHA6Ly9hI9CxJykuaGFzaCAhPT0gJyMlRDAlQjEnXG4gICAgLy8gZmFpbHMgaW4gQ2hyb21lIDY2LVxuICAgIHx8IHJlc3VsdCAhPT0gJ2ExYzMnXG4gICAgLy8gdGhyb3dzIGluIFNhZmFyaVxuICAgIHx8IG5ldyBVUkwoJ2h0dHA6Ly94JywgdW5kZWZpbmVkKS5ob3N0ICE9PSAneCc7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qcy9ibG9iL21hc3Rlci9wdW55Y29kZS5qc1xudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcbnZhciBiYXNlID0gMzY7XG52YXIgdE1pbiA9IDE7XG52YXIgdE1heCA9IDI2O1xudmFyIHNrZXcgPSAzODtcbnZhciBkYW1wID0gNzAwO1xudmFyIGluaXRpYWxCaWFzID0gNzI7XG52YXIgaW5pdGlhbE4gPSAxMjg7IC8vIDB4ODBcbnZhciBkZWxpbWl0ZXIgPSAnLSc7IC8vICdcXHgyRCdcbnZhciByZWdleE5vbkFTQ0lJID0gL1teXFwwLVxcdTAwN0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG52YXIgcmVnZXhTZXBhcmF0b3JzID0gL1suXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG52YXIgT1ZFUkZMT1dfRVJST1IgPSAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnO1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKi9cbnZhciB1Y3MyZGVjb2RlID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIHZhciBjb3VudGVyID0gMDtcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuICAgICAgdmFyIGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICAgIGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBMb3cgc3Vycm9nYXRlLlxuICAgICAgICBvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQncyBhbiB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGVcbiAgICAgICAgLy8gbmV4dCBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIuXG4gICAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqL1xudmFyIGRpZ2l0VG9CYXNpYyA9IGZ1bmN0aW9uIChkaWdpdCkge1xuICAvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuICAvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcbiAgcmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKi9cbnZhciBhZGFwdCA9IGZ1bmN0aW9uIChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgdmFyIGsgPSAwO1xuICBkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuICBkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG4gIGZvciAoOyBkZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuICAgIGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcbiAgfVxuICByZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50cyAtLSBUT0RPXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcblxuICAvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuICBpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG4gIC8vIENhY2hlIHRoZSBsZW5ndGguXG4gIHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZS5cbiAgdmFyIG4gPSBpbml0aWFsTjtcbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIGJpYXMgPSBpbml0aWFsQmlhcztcbiAgdmFyIGksIGN1cnJlbnRWYWx1ZTtcblxuICAvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzLlxuICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICBpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7IC8vIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cbiAgdmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7IC8vIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG4gIH1cblxuICAvLyBNYWluIGVuY29kaW5nIGxvb3A6XG4gIHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG4gICAgLy8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dCBsYXJnZXIgb25lOlxuICAgIHZhciBtID0gbWF4SW50O1xuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuICAgICAgICBtID0gY3VycmVudFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPiwgYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG4gICAgdmFyIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcbiAgICBpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuICAgICAgdGhyb3cgUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgfVxuXG4gICAgZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcbiAgICBuID0gbTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIHRocm93IFJhbmdlRXJyb3IoT1ZFUkZMT1dfRVJST1IpO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICB2YXIgcSA9IGRlbHRhO1xuICAgICAgICBmb3IgKHZhciBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcbiAgICAgICAgICB2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG4gICAgICAgICAgaWYgKHEgPCB0KSBicmVhaztcbiAgICAgICAgICB2YXIgcU1pbnVzVCA9IHEgLSB0O1xuICAgICAgICAgIHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QpKSk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICArK2hhbmRsZWRDUENvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICsrZGVsdGE7XG4gICAgKytuO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgZW5jb2RlZCA9IFtdO1xuICB2YXIgbGFiZWxzID0gaW5wdXQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xcdTAwMkUnKS5zcGxpdCgnLicpO1xuICB2YXIgaSwgbGFiZWw7XG4gIGZvciAoaSA9IDA7IGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICBlbmNvZGVkLnB1c2gocmVnZXhOb25BU0NJSS50ZXN0KGxhYmVsKSA/ICd4bi0tJyArIGVuY29kZShsYWJlbCkgOiBsYWJlbCk7XG4gIH1cbiAgcmV0dXJuIGVuY29kZWQuam9pbignLicpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS11cmwnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgbmF0aXZlRmV0Y2ggPSBnZXRCdWlsdEluKCdmZXRjaCcpO1xudmFyIE5hdGl2ZVJlcXVlc3QgPSBnZXRCdWlsdEluKCdSZXF1ZXN0Jyk7XG52YXIgUmVxdWVzdFByb3RvdHlwZSA9IE5hdGl2ZVJlcXVlc3QgJiYgTmF0aXZlUmVxdWVzdC5wcm90b3R5cGU7XG52YXIgSGVhZGVycyA9IGdldEJ1aWx0SW4oJ0hlYWRlcnMnKTtcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBVUkxfU0VBUkNIX1BBUkFNUyA9ICdVUkxTZWFyY2hQYXJhbXMnO1xudmFyIFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SID0gVVJMX1NFQVJDSF9QQVJBTVMgKyAnSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoVVJMX1NFQVJDSF9QQVJBTVMpO1xudmFyIGdldEludGVybmFsSXRlcmF0b3JTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SKTtcblxudmFyIHBsdXMgPSAvXFwrL2c7XG52YXIgc2VxdWVuY2VzID0gQXJyYXkoNCk7XG5cbnZhciBwZXJjZW50U2VxdWVuY2UgPSBmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgcmV0dXJuIHNlcXVlbmNlc1tieXRlcyAtIDFdIHx8IChzZXF1ZW5jZXNbYnl0ZXMgLSAxXSA9IFJlZ0V4cCgnKCg/OiVbXFxcXGRhLWZdezJ9KXsnICsgYnl0ZXMgKyAnfSknLCAnZ2knKSk7XG59O1xuXG52YXIgcGVyY2VudERlY29kZSA9IGZ1bmN0aW9uIChzZXF1ZW5jZSkge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc2VxdWVuY2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBzZXF1ZW5jZTtcbiAgfVxufTtcblxudmFyIGRlc2VyaWFsaXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBpdC5yZXBsYWNlKHBsdXMsICcgJyk7XG4gIHZhciBieXRlcyA9IDQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHdoaWxlIChieXRlcykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocGVyY2VudFNlcXVlbmNlKGJ5dGVzLS0pLCBwZXJjZW50RGVjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGZpbmQgPSAvWyEnKCl+XXwlMjAvZztcblxudmFyIHJlcGxhY2UgPSB7XG4gICchJzogJyUyMScsXG4gIFwiJ1wiOiAnJTI3JyxcbiAgJygnOiAnJTI4JyxcbiAgJyknOiAnJTI5JyxcbiAgJ34nOiAnJTdFJyxcbiAgJyUyMCc6ICcrJ1xufTtcblxudmFyIHJlcGxhY2VyID0gZnVuY3Rpb24gKG1hdGNoKSB7XG4gIHJldHVybiByZXBsYWNlW21hdGNoXTtcbn07XG5cbnZhciBzZXJpYWxpemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChpdCkucmVwbGFjZShmaW5kLCByZXBsYWNlcik7XG59O1xuXG52YXIgcGFyc2VTZWFyY2hQYXJhbXMgPSBmdW5jdGlvbiAocmVzdWx0LCBxdWVyeSkge1xuICBpZiAocXVlcnkpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHF1ZXJ5LnNwbGl0KCcmJyk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgYXR0cmlidXRlLCBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBhdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleCsrXTtcbiAgICAgIGlmIChhdHRyaWJ1dGUubGVuZ3RoKSB7XG4gICAgICAgIGVudHJ5ID0gYXR0cmlidXRlLnNwbGl0KCc9Jyk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBrZXk6IGRlc2VyaWFsaXplKGVudHJ5LnNoaWZ0KCkpLFxuICAgICAgICAgIHZhbHVlOiBkZXNlcmlhbGl6ZShlbnRyeS5qb2luKCc9JykpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIHVwZGF0ZVNlYXJjaFBhcmFtcyA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICB0aGlzLmVudHJpZXMubGVuZ3RoID0gMDtcbiAgcGFyc2VTZWFyY2hQYXJhbXModGhpcy5lbnRyaWVzLCBxdWVyeSk7XG59O1xuXG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IFR5cGVFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKTtcbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gSXRlcmF0b3IocGFyYW1zLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SLFxuICAgIGl0ZXJhdG9yOiBnZXRJdGVyYXRvcihnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHBhcmFtcykuZW50cmllcyksXG4gICAga2luZDoga2luZFxuICB9KTtcbn0sICdJdGVyYXRvcicsIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsSXRlcmF0b3JTdGF0ZSh0aGlzKTtcbiAgdmFyIGtpbmQgPSBzdGF0ZS5raW5kO1xuICB2YXIgc3RlcCA9IHN0YXRlLml0ZXJhdG9yLm5leHQoKTtcbiAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgaWYgKCFzdGVwLmRvbmUpIHtcbiAgICBzdGVwLnZhbHVlID0ga2luZCA9PT0gJ2tleXMnID8gZW50cnkua2V5IDoga2luZCA9PT0gJ3ZhbHVlcycgPyBlbnRyeS52YWx1ZSA6IFtlbnRyeS5rZXksIGVudHJ5LnZhbHVlXTtcbiAgfSByZXR1cm4gc3RlcDtcbn0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtdXJsc2VhcmNocGFyYW1zXG52YXIgVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkxTZWFyY2hQYXJhbXMoLyogaW5pdCAqLykge1xuICBhbkluc3RhbmNlKHRoaXMsIFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLCBVUkxfU0VBUkNIX1BBUkFNUyk7XG4gIHZhciBpbml0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQ7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIGVudHJpZXMgPSBbXTtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kLCBpdGVyYXRvciwgbmV4dCwgc3RlcCwgZW50cnlJdGVyYXRvciwgZW50cnlOZXh0LCBmaXJzdCwgc2Vjb25kLCBrZXk7XG5cbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGF0LCB7XG4gICAgdHlwZTogVVJMX1NFQVJDSF9QQVJBTVMsXG4gICAgZW50cmllczogZW50cmllcyxcbiAgICB1cGRhdGVVUkw6IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSxcbiAgICB1cGRhdGVTZWFyY2hQYXJhbXM6IHVwZGF0ZVNlYXJjaFBhcmFtc1xuICB9KTtcblxuICBpZiAoaW5pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGlzT2JqZWN0KGluaXQpKSB7XG4gICAgICBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKGluaXQpO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaW5pdCwgaXRlcmF0b3JNZXRob2QpO1xuICAgICAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgICAgICBlbnRyeUl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoYW5PYmplY3Qoc3RlcC52YWx1ZSkpO1xuICAgICAgICAgIGVudHJ5TmV4dCA9IGVudHJ5SXRlcmF0b3IubmV4dDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZmlyc3QgPSBlbnRyeU5leHQuY2FsbChlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgICAgKHNlY29uZCA9IGVudHJ5TmV4dC5jYWxsKGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgICAhZW50cnlOZXh0LmNhbGwoZW50cnlJdGVyYXRvcikuZG9uZVxuICAgICAgICAgICkgdGhyb3cgVHlwZUVycm9yKCdFeHBlY3RlZCBzZXF1ZW5jZSB3aXRoIGxlbmd0aCAyJyk7XG4gICAgICAgICAgZW50cmllcy5wdXNoKHsga2V5OiAkdG9TdHJpbmcoZmlyc3QudmFsdWUpLCB2YWx1ZTogJHRvU3RyaW5nKHNlY29uZC52YWx1ZSkgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBmb3IgKGtleSBpbiBpbml0KSBpZiAoaGFzT3duKGluaXQsIGtleSkpIGVudHJpZXMucHVzaCh7IGtleToga2V5LCB2YWx1ZTogJHRvU3RyaW5nKGluaXRba2V5XSkgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlU2VhcmNoUGFyYW1zKFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICB0eXBlb2YgaW5pdCA9PT0gJ3N0cmluZycgPyBpbml0LmNoYXJBdCgwKSA9PT0gJz8nID8gaW5pdC5zbGljZSgxKSA6IGluaXQgOiAkdG9TdHJpbmcoaW5pdClcbiAgICAgICk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5yZWRlZmluZUFsbChVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsIHtcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuYXBwZW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWFwcGVuZFxuICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDIpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgc3RhdGUuZW50cmllcy5wdXNoKHsga2V5OiAkdG9TdHJpbmcobmFtZSksIHZhbHVlOiAkdG9TdHJpbmcodmFsdWUpIH0pO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5kZWxldGVgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZGVsZXRlXG4gICdkZWxldGUnOiBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFyIGVudHJpZXMgPSBzdGF0ZS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBlbHNlIGluZGV4Kys7XG4gICAgfVxuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0XG4gIGdldDogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChlbnRyaWVzW2luZGV4XS5rZXkgPT09IGtleSkgcmV0dXJuIGVudHJpZXNbaW5kZXhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZ2V0QWxsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldGFsbFxuICBnZXRBbGw6IGZ1bmN0aW9uIGdldEFsbChuYW1lKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSByZXN1bHQucHVzaChlbnRyaWVzW2luZGV4XS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmhhc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1oYXNcbiAgaGFzOiBmdW5jdGlvbiBoYXMobmFtZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXgrK10ua2V5ID09PSBrZXkpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zZXRcbiAgc2V0OiBmdW5jdGlvbiBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciB2YWwgPSAkdG9TdHJpbmcodmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGlmIChmb3VuZCkgZW50cmllcy5zcGxpY2UoaW5kZXgtLSwgMSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBlbnRyeS52YWx1ZSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSBlbnRyaWVzLnB1c2goeyBrZXk6IGtleSwgdmFsdWU6IHZhbCB9KTtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zb3J0XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgLy8gQXJyYXkjc29ydCBpcyBub3Qgc3RhYmxlIGluIHNvbWUgZW5naW5lc1xuICAgIHZhciBzbGljZSA9IGVudHJpZXMuc2xpY2UoKTtcbiAgICB2YXIgZW50cnksIGVudHJpZXNJbmRleCwgc2xpY2VJbmRleDtcbiAgICBlbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgZm9yIChzbGljZUluZGV4ID0gMDsgc2xpY2VJbmRleCA8IHNsaWNlLmxlbmd0aDsgc2xpY2VJbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IHNsaWNlW3NsaWNlSW5kZXhdO1xuICAgICAgZm9yIChlbnRyaWVzSW5kZXggPSAwOyBlbnRyaWVzSW5kZXggPCBzbGljZUluZGV4OyBlbnRyaWVzSW5kZXgrKykge1xuICAgICAgICBpZiAoZW50cmllc1tlbnRyaWVzSW5kZXhdLmtleSA+IGVudHJ5LmtleSkge1xuICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGVudHJpZXNJbmRleCwgMCwgZW50cnkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cmllc0luZGV4ID09PSBzbGljZUluZGV4KSBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGJvdW5kRnVuY3Rpb24oZW50cnkudmFsdWUsIGVudHJ5LmtleSwgdGhpcyk7XG4gICAgfVxuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5rZXlzYCBtZXRob2RcbiAga2V5czogZnVuY3Rpb24ga2V5cygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdrZXlzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ3ZhbHVlcycpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2RcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdlbnRyaWVzJyk7XG4gIH1cbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxucmVkZWZpbmUoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCBJVEVSQVRPUiwgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmVudHJpZXMsIHsgbmFtZTogJ2VudHJpZXMnIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHNlYXJjaHBhcmFtcy1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbnJlZGVmaW5lKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBlbnRyeTtcbiAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgcmVzdWx0LnB1c2goc2VyaWFsaXplKGVudHJ5LmtleSkgKyAnPScgKyBzZXJpYWxpemUoZW50cnkudmFsdWUpKTtcbiAgfSByZXR1cm4gcmVzdWx0LmpvaW4oJyYnKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuc2V0VG9TdHJpbmdUYWcoVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsIFVSTF9TRUFSQ0hfUEFSQU1TKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwgfSwge1xuICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yXG59KTtcblxuLy8gV3JhcCBgZmV0Y2hgIGFuZCBgUmVxdWVzdGAgZm9yIGNvcnJlY3Qgd29yayB3aXRoIHBvbHlmaWxsZWQgYFVSTFNlYXJjaFBhcmFtc2BcbmlmICghVVNFX05BVElWRV9VUkwgJiYgaXNDYWxsYWJsZShIZWFkZXJzKSkge1xuICB2YXIgd3JhcFJlcXVlc3RPcHRpb25zID0gZnVuY3Rpb24gKGluaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaW5pdCkpIHtcbiAgICAgIHZhciBib2R5ID0gaW5pdC5ib2R5O1xuICAgICAgdmFyIGhlYWRlcnM7XG4gICAgICBpZiAoY2xhc3NvZihib2R5KSA9PT0gVVJMX1NFQVJDSF9QQVJBTVMpIHtcbiAgICAgICAgaGVhZGVycyA9IGluaXQuaGVhZGVycyA/IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycykgOiBuZXcgSGVhZGVycygpO1xuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgICAgIGhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlKGluaXQsIHtcbiAgICAgICAgICBib2R5OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgU3RyaW5nKGJvZHkpKSxcbiAgICAgICAgICBoZWFkZXJzOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgaGVhZGVycylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSByZXR1cm4gaW5pdDtcbiAgfTtcblxuICBpZiAoaXNDYWxsYWJsZShuYXRpdmVGZXRjaCkpIHtcbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgZmV0Y2g6IGZ1bmN0aW9uIGZldGNoKGlucHV0IC8qICwgaW5pdCAqLykge1xuICAgICAgICByZXR1cm4gbmF0aXZlRmV0Y2goaW5wdXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gd3JhcFJlcXVlc3RPcHRpb25zKGFyZ3VtZW50c1sxXSkgOiB7fSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoaXNDYWxsYWJsZShOYXRpdmVSZXF1ZXN0KSkge1xuICAgIHZhciBSZXF1ZXN0Q29uc3RydWN0b3IgPSBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0IC8qICwgaW5pdCAqLykge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCBSZXF1ZXN0Q29uc3RydWN0b3IsICdSZXF1ZXN0Jyk7XG4gICAgICByZXR1cm4gbmV3IE5hdGl2ZVJlcXVlc3QoaW5wdXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gd3JhcFJlcXVlc3RPcHRpb25zKGFyZ3VtZW50c1sxXSkgOiB7fSk7XG4gICAgfTtcblxuICAgIFJlcXVlc3RQcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZXF1ZXN0Q29uc3RydWN0b3I7XG4gICAgUmVxdWVzdENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFJlcXVlc3RQcm90b3R5cGU7XG5cbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgUmVxdWVzdDogUmVxdWVzdENvbnN0cnVjdG9yXG4gICAgfSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsXG4gIGdldFN0YXRlOiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS11cmwnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG52YXIgYXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZyb20nKTtcbnZhciBjb2RlQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNvZGVBdDtcbnZhciB0b0FTQ0lJID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaScpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIFVSTFNlYXJjaFBhcmFtc01vZHVsZSA9IHJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgTmF0aXZlVVJMID0gZ2xvYmFsLlVSTDtcbnZhciBVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuVVJMU2VhcmNoUGFyYW1zO1xudmFyIGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuZ2V0U3RhdGU7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsVVJMU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcignVVJMJyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHBvdyA9IE1hdGgucG93O1xuXG52YXIgSU5WQUxJRF9BVVRIT1JJVFkgPSAnSW52YWxpZCBhdXRob3JpdHknO1xudmFyIElOVkFMSURfU0NIRU1FID0gJ0ludmFsaWQgc2NoZW1lJztcbnZhciBJTlZBTElEX0hPU1QgPSAnSW52YWxpZCBob3N0JztcbnZhciBJTlZBTElEX1BPUlQgPSAnSW52YWxpZCBwb3J0JztcblxudmFyIEFMUEhBID0gL1thLXpdL2k7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLW9ic2N1cmUtcmFuZ2UgLS0gc2FmZVxudmFyIEFMUEhBTlVNRVJJQyA9IC9bXFxkKy0uYS16XS9pO1xudmFyIERJR0lUID0gL1xcZC87XG52YXIgSEVYX1NUQVJUID0gL14weC9pO1xudmFyIE9DVCA9IC9eWzAtN10rJC87XG52YXIgREVDID0gL15cXGQrJC87XG52YXIgSEVYID0gL15bXFxkYS1mXSskL2k7XG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlQgPSAvW1xcMFxcdFxcblxcciAjJS86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5UID0gL1tcXDBcXHRcXG5cXHIgIy86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBMRUFESU5HX0FORF9UUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFID0gL15bXFx1MDAwMC1cXHUwMDIwXSt8W1xcdTAwMDAtXFx1MDAyMF0rJC9nO1xudmFyIFRBQl9BTkRfTkVXX0xJTkUgPSAvW1xcdFxcblxccl0vZztcbi8qIGVzbGludC1lbmFibGUgcmVnZXhwL25vLWNvbnRyb2wtY2hhcmFjdGVyIC0tIHNhZmUgKi9cbnZhciBFT0Y7XG5cbnZhciBwYXJzZUhvc3QgPSBmdW5jdGlvbiAodXJsLCBpbnB1dCkge1xuICB2YXIgcmVzdWx0LCBjb2RlUG9pbnRzLCBpbmRleDtcbiAgaWYgKGlucHV0LmNoYXJBdCgwKSA9PSAnWycpIHtcbiAgICBpZiAoaW5wdXQuY2hhckF0KGlucHV0Lmxlbmd0aCAtIDEpICE9ICddJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICByZXN1bHQgPSBwYXJzZUlQdjYoaW5wdXQuc2xpY2UoMSwgLTEpKTtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgLy8gb3BhcXVlIGhvc3RcbiAgfSBlbHNlIGlmICghaXNTcGVjaWFsKHVybCkpIHtcbiAgICBpZiAoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVC50ZXN0KGlucHV0KSkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICByZXN1bHQgPSAnJztcbiAgICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb2RlUG9pbnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgcmVzdWx0ICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpbmRleF0sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgIH1cbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dCA9IHRvQVNDSUkoaW5wdXQpO1xuICAgIGlmIChGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5ULnRlc3QoaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHJlc3VsdCA9IHBhcnNlSVB2NChpbnB1dCk7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgfVxufTtcblxudmFyIHBhcnNlSVB2NCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgcGFydHMgPSBpbnB1dC5zcGxpdCgnLicpO1xuICB2YXIgcGFydHNMZW5ndGgsIG51bWJlcnMsIGluZGV4LCBwYXJ0LCByYWRpeCwgbnVtYmVyLCBpcHY0O1xuICBpZiAocGFydHMubGVuZ3RoICYmIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09ICcnKSB7XG4gICAgcGFydHMucG9wKCk7XG4gIH1cbiAgcGFydHNMZW5ndGggPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChwYXJ0c0xlbmd0aCA+IDQpIHJldHVybiBpbnB1dDtcbiAgbnVtYmVycyA9IFtdO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIHBhcnQgPSBwYXJ0c1tpbmRleF07XG4gICAgaWYgKHBhcnQgPT0gJycpIHJldHVybiBpbnB1dDtcbiAgICByYWRpeCA9IDEwO1xuICAgIGlmIChwYXJ0Lmxlbmd0aCA+IDEgJiYgcGFydC5jaGFyQXQoMCkgPT0gJzAnKSB7XG4gICAgICByYWRpeCA9IEhFWF9TVEFSVC50ZXN0KHBhcnQpID8gMTYgOiA4O1xuICAgICAgcGFydCA9IHBhcnQuc2xpY2UocmFkaXggPT0gOCA/IDEgOiAyKTtcbiAgICB9XG4gICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICBudW1iZXIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIShyYWRpeCA9PSAxMCA/IERFQyA6IHJhZGl4ID09IDggPyBPQ1QgOiBIRVgpLnRlc3QocGFydCkpIHJldHVybiBpbnB1dDtcbiAgICAgIG51bWJlciA9IHBhcnNlSW50KHBhcnQsIHJhZGl4KTtcbiAgICB9XG4gICAgbnVtYmVycy5wdXNoKG51bWJlcik7XG4gIH1cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcGFydHNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBudW1iZXIgPSBudW1iZXJzW2luZGV4XTtcbiAgICBpZiAoaW5kZXggPT0gcGFydHNMZW5ndGggLSAxKSB7XG4gICAgICBpZiAobnVtYmVyID49IHBvdygyNTYsIDUgLSBwYXJ0c0xlbmd0aCkpIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyID4gMjU1KSByZXR1cm4gbnVsbDtcbiAgfVxuICBpcHY0ID0gbnVtYmVycy5wb3AoKTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpcHY0ICs9IG51bWJlcnNbaW5kZXhdICogcG93KDI1NiwgMyAtIGluZGV4KTtcbiAgfVxuICByZXR1cm4gaXB2NDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50cyAtLSBUT0RPXG52YXIgcGFyc2VJUHY2ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBhZGRyZXNzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICB2YXIgcGllY2VJbmRleCA9IDA7XG4gIHZhciBjb21wcmVzcyA9IG51bGw7XG4gIHZhciBwb2ludGVyID0gMDtcbiAgdmFyIHZhbHVlLCBsZW5ndGgsIG51bWJlcnNTZWVuLCBpcHY0UGllY2UsIG51bWJlciwgc3dhcHMsIHN3YXA7XG5cbiAgdmFyIGNociA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaW5wdXQuY2hhckF0KHBvaW50ZXIpO1xuICB9O1xuXG4gIGlmIChjaHIoKSA9PSAnOicpIHtcbiAgICBpZiAoaW5wdXQuY2hhckF0KDEpICE9ICc6JykgcmV0dXJuO1xuICAgIHBvaW50ZXIgKz0gMjtcbiAgICBwaWVjZUluZGV4Kys7XG4gICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICB9XG4gIHdoaWxlIChjaHIoKSkge1xuICAgIGlmIChwaWVjZUluZGV4ID09IDgpIHJldHVybjtcbiAgICBpZiAoY2hyKCkgPT0gJzonKSB7XG4gICAgICBpZiAoY29tcHJlc3MgIT09IG51bGwpIHJldHVybjtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIHBpZWNlSW5kZXgrKztcbiAgICAgIGNvbXByZXNzID0gcGllY2VJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YWx1ZSA9IGxlbmd0aCA9IDA7XG4gICAgd2hpbGUgKGxlbmd0aCA8IDQgJiYgSEVYLnRlc3QoY2hyKCkpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICogMTYgKyBwYXJzZUludChjaHIoKSwgMTYpO1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgbGVuZ3RoKys7XG4gICAgfVxuICAgIGlmIChjaHIoKSA9PSAnLicpIHtcbiAgICAgIGlmIChsZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgICAgcG9pbnRlciAtPSBsZW5ndGg7XG4gICAgICBpZiAocGllY2VJbmRleCA+IDYpIHJldHVybjtcbiAgICAgIG51bWJlcnNTZWVuID0gMDtcbiAgICAgIHdoaWxlIChjaHIoKSkge1xuICAgICAgICBpcHY0UGllY2UgPSBudWxsO1xuICAgICAgICBpZiAobnVtYmVyc1NlZW4gPiAwKSB7XG4gICAgICAgICAgaWYgKGNocigpID09ICcuJyAmJiBudW1iZXJzU2VlbiA8IDQpIHBvaW50ZXIrKztcbiAgICAgICAgICBlbHNlIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIURJR0lULnRlc3QoY2hyKCkpKSByZXR1cm47XG4gICAgICAgIHdoaWxlIChESUdJVC50ZXN0KGNocigpKSkge1xuICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KGNocigpLCAxMCk7XG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA9PT0gbnVsbCkgaXB2NFBpZWNlID0gbnVtYmVyO1xuICAgICAgICAgIGVsc2UgaWYgKGlwdjRQaWVjZSA9PSAwKSByZXR1cm47XG4gICAgICAgICAgZWxzZSBpcHY0UGllY2UgPSBpcHY0UGllY2UgKiAxMCArIG51bWJlcjtcbiAgICAgICAgICBpZiAoaXB2NFBpZWNlID4gMjU1KSByZXR1cm47XG4gICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICB9XG4gICAgICAgIGFkZHJlc3NbcGllY2VJbmRleF0gPSBhZGRyZXNzW3BpZWNlSW5kZXhdICogMjU2ICsgaXB2NFBpZWNlO1xuICAgICAgICBudW1iZXJzU2VlbisrO1xuICAgICAgICBpZiAobnVtYmVyc1NlZW4gPT0gMiB8fCBudW1iZXJzU2VlbiA9PSA0KSBwaWVjZUluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAobnVtYmVyc1NlZW4gIT0gNCkgcmV0dXJuO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaHIoKSA9PSAnOicpIHtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIGlmICghY2hyKCkpIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGNocigpKSByZXR1cm47XG4gICAgYWRkcmVzc1twaWVjZUluZGV4KytdID0gdmFsdWU7XG4gIH1cbiAgaWYgKGNvbXByZXNzICE9PSBudWxsKSB7XG4gICAgc3dhcHMgPSBwaWVjZUluZGV4IC0gY29tcHJlc3M7XG4gICAgcGllY2VJbmRleCA9IDc7XG4gICAgd2hpbGUgKHBpZWNlSW5kZXggIT0gMCAmJiBzd2FwcyA+IDApIHtcbiAgICAgIHN3YXAgPSBhZGRyZXNzW3BpZWNlSW5kZXhdO1xuICAgICAgYWRkcmVzc1twaWVjZUluZGV4LS1dID0gYWRkcmVzc1tjb21wcmVzcyArIHN3YXBzIC0gMV07XG4gICAgICBhZGRyZXNzW2NvbXByZXNzICsgLS1zd2Fwc10gPSBzd2FwO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwaWVjZUluZGV4ICE9IDgpIHJldHVybjtcbiAgcmV0dXJuIGFkZHJlc3M7XG59O1xuXG52YXIgZmluZExvbmdlc3RaZXJvU2VxdWVuY2UgPSBmdW5jdGlvbiAoaXB2Nikge1xuICB2YXIgbWF4SW5kZXggPSBudWxsO1xuICB2YXIgbWF4TGVuZ3RoID0gMTtcbiAgdmFyIGN1cnJTdGFydCA9IG51bGw7XG4gIHZhciBjdXJyTGVuZ3RoID0gMDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgZm9yICg7IGluZGV4IDwgODsgaW5kZXgrKykge1xuICAgIGlmIChpcHY2W2luZGV4XSAhPT0gMCkge1xuICAgICAgaWYgKGN1cnJMZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgbWF4SW5kZXggPSBjdXJyU3RhcnQ7XG4gICAgICAgIG1heExlbmd0aCA9IGN1cnJMZW5ndGg7XG4gICAgICB9XG4gICAgICBjdXJyU3RhcnQgPSBudWxsO1xuICAgICAgY3Vyckxlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyU3RhcnQgPT09IG51bGwpIGN1cnJTdGFydCA9IGluZGV4O1xuICAgICAgKytjdXJyTGVuZ3RoO1xuICAgIH1cbiAgfVxuICBpZiAoY3Vyckxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIG1heEluZGV4ID0gY3VyclN0YXJ0O1xuICAgIG1heExlbmd0aCA9IGN1cnJMZW5ndGg7XG4gIH1cbiAgcmV0dXJuIG1heEluZGV4O1xufTtcblxudmFyIHNlcmlhbGl6ZUhvc3QgPSBmdW5jdGlvbiAoaG9zdCkge1xuICB2YXIgcmVzdWx0LCBpbmRleCwgY29tcHJlc3MsIGlnbm9yZTA7XG4gIC8vIGlwdjRcbiAgaWYgKHR5cGVvZiBob3N0ID09ICdudW1iZXInKSB7XG4gICAgcmVzdWx0ID0gW107XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDsgaW5kZXgrKykge1xuICAgICAgcmVzdWx0LnVuc2hpZnQoaG9zdCAlIDI1Nik7XG4gICAgICBob3N0ID0gZmxvb3IoaG9zdCAvIDI1Nik7XG4gICAgfSByZXR1cm4gcmVzdWx0LmpvaW4oJy4nKTtcbiAgLy8gaXB2NlxuICB9IGVsc2UgaWYgKHR5cGVvZiBob3N0ID09ICdvYmplY3QnKSB7XG4gICAgcmVzdWx0ID0gJyc7XG4gICAgY29tcHJlc3MgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShob3N0KTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoaWdub3JlMCAmJiBob3N0W2luZGV4XSA9PT0gMCkgY29udGludWU7XG4gICAgICBpZiAoaWdub3JlMCkgaWdub3JlMCA9IGZhbHNlO1xuICAgICAgaWYgKGNvbXByZXNzID09PSBpbmRleCkge1xuICAgICAgICByZXN1bHQgKz0gaW5kZXggPyAnOicgOiAnOjonO1xuICAgICAgICBpZ25vcmUwID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBob3N0W2luZGV4XS50b1N0cmluZygxNik7XG4gICAgICAgIGlmIChpbmRleCA8IDcpIHJlc3VsdCArPSAnOic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnWycgKyByZXN1bHQgKyAnXSc7XG4gIH0gcmV0dXJuIGhvc3Q7XG59O1xuXG52YXIgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCA9IHt9O1xudmFyIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCwge1xuICAnICc6IDEsICdcIic6IDEsICc8JzogMSwgJz4nOiAxLCAnYCc6IDFcbn0pO1xudmFyIHBhdGhQZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyMnOiAxLCAnPyc6IDEsICd7JzogMSwgJ30nOiAxXG59KTtcbnZhciB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIHBhdGhQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcvJzogMSwgJzonOiAxLCAnOyc6IDEsICc9JzogMSwgJ0AnOiAxLCAnWyc6IDEsICdcXFxcJzogMSwgJ10nOiAxLCAnXic6IDEsICd8JzogMVxufSk7XG5cbnZhciBwZXJjZW50RW5jb2RlID0gZnVuY3Rpb24gKGNociwgc2V0KSB7XG4gIHZhciBjb2RlID0gY29kZUF0KGNociwgMCk7XG4gIHJldHVybiBjb2RlID4gMHgyMCAmJiBjb2RlIDwgMHg3RiAmJiAhaGFzT3duKHNldCwgY2hyKSA/IGNociA6IGVuY29kZVVSSUNvbXBvbmVudChjaHIpO1xufTtcblxudmFyIHNwZWNpYWxTY2hlbWVzID0ge1xuICBmdHA6IDIxLFxuICBmaWxlOiBudWxsLFxuICBodHRwOiA4MCxcbiAgaHR0cHM6IDQ0MyxcbiAgd3M6IDgwLFxuICB3c3M6IDQ0M1xufTtcblxudmFyIGlzU3BlY2lhbCA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgcmV0dXJuIGhhc093bihzcGVjaWFsU2NoZW1lcywgdXJsLnNjaGVtZSk7XG59O1xuXG52YXIgaW5jbHVkZXNDcmVkZW50aWFscyA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgcmV0dXJuIHVybC51c2VybmFtZSAhPSAnJyB8fCB1cmwucGFzc3dvcmQgIT0gJyc7XG59O1xuXG52YXIgY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0ID0gZnVuY3Rpb24gKHVybCkge1xuICByZXR1cm4gIXVybC5ob3N0IHx8IHVybC5jYW5ub3RCZUFCYXNlVVJMIHx8IHVybC5zY2hlbWUgPT0gJ2ZpbGUnO1xufTtcblxudmFyIGlzV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZywgbm9ybWFsaXplZCkge1xuICB2YXIgc2Vjb25kO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA9PSAyICYmIEFMUEhBLnRlc3Qoc3RyaW5nLmNoYXJBdCgwKSlcbiAgICAmJiAoKHNlY29uZCA9IHN0cmluZy5jaGFyQXQoMSkpID09ICc6JyB8fCAoIW5vcm1hbGl6ZWQgJiYgc2Vjb25kID09ICd8JykpO1xufTtcblxudmFyIHN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciB0aGlyZDtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPiAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKHN0cmluZy5zbGljZSgwLCAyKSkgJiYgKFxuICAgIHN0cmluZy5sZW5ndGggPT0gMiB8fFxuICAgICgodGhpcmQgPSBzdHJpbmcuY2hhckF0KDIpKSA9PT0gJy8nIHx8IHRoaXJkID09PSAnXFxcXCcgfHwgdGhpcmQgPT09ICc/JyB8fCB0aGlyZCA9PT0gJyMnKVxuICApO1xufTtcblxudmFyIHNob3J0ZW5VUkxzUGF0aCA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgdmFyIHBhdGggPSB1cmwucGF0aDtcbiAgdmFyIHBhdGhTaXplID0gcGF0aC5sZW5ndGg7XG4gIGlmIChwYXRoU2l6ZSAmJiAodXJsLnNjaGVtZSAhPSAnZmlsZScgfHwgcGF0aFNpemUgIT0gMSB8fCAhaXNXaW5kb3dzRHJpdmVMZXR0ZXIocGF0aFswXSwgdHJ1ZSkpKSB7XG4gICAgcGF0aC5wb3AoKTtcbiAgfVxufTtcblxudmFyIGlzU2luZ2xlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuJyB8fCBzZWdtZW50LnRvTG93ZXJDYXNlKCkgPT09ICclMmUnO1xufTtcblxudmFyIGlzRG91YmxlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgc2VnbWVudCA9IHNlZ21lbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuLicgfHwgc2VnbWVudCA9PT0gJyUyZS4nIHx8IHNlZ21lbnQgPT09ICcuJTJlJyB8fCBzZWdtZW50ID09PSAnJTJlJTJlJztcbn07XG5cbi8vIFN0YXRlczpcbnZhciBTQ0hFTUVfU1RBUlQgPSB7fTtcbnZhciBTQ0hFTUUgPSB7fTtcbnZhciBOT19TQ0hFTUUgPSB7fTtcbnZhciBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFBBVEhfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUkVMQVRJVkUgPSB7fTtcbnZhciBSRUxBVElWRV9TTEFTSCA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMgPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyA9IHt9O1xudmFyIEFVVEhPUklUWSA9IHt9O1xudmFyIEhPU1QgPSB7fTtcbnZhciBIT1NUTkFNRSA9IHt9O1xudmFyIFBPUlQgPSB7fTtcbnZhciBGSUxFID0ge307XG52YXIgRklMRV9TTEFTSCA9IHt9O1xudmFyIEZJTEVfSE9TVCA9IHt9O1xudmFyIFBBVEhfU1RBUlQgPSB7fTtcbnZhciBQQVRIID0ge307XG52YXIgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCA9IHt9O1xudmFyIFFVRVJZID0ge307XG52YXIgRlJBR01FTlQgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbnZhciBwYXJzZVVSTCA9IGZ1bmN0aW9uICh1cmwsIGlucHV0LCBzdGF0ZU92ZXJyaWRlLCBiYXNlKSB7XG4gIHZhciBzdGF0ZSA9IHN0YXRlT3ZlcnJpZGUgfHwgU0NIRU1FX1NUQVJUO1xuICB2YXIgcG9pbnRlciA9IDA7XG4gIHZhciBidWZmZXIgPSAnJztcbiAgdmFyIHNlZW5BdCA9IGZhbHNlO1xuICB2YXIgc2VlbkJyYWNrZXQgPSBmYWxzZTtcbiAgdmFyIHNlZW5QYXNzd29yZFRva2VuID0gZmFsc2U7XG4gIHZhciBjb2RlUG9pbnRzLCBjaHIsIGJ1ZmZlckNvZGVQb2ludHMsIGZhaWx1cmU7XG5cbiAgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgdXJsLnNjaGVtZSA9ICcnO1xuICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgIHVybC5wYXNzd29yZCA9ICcnO1xuICAgIHVybC5ob3N0ID0gbnVsbDtcbiAgICB1cmwucG9ydCA9IG51bGw7XG4gICAgdXJsLnBhdGggPSBbXTtcbiAgICB1cmwucXVlcnkgPSBudWxsO1xuICAgIHVybC5mcmFnbWVudCA9IG51bGw7XG4gICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSBmYWxzZTtcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoTEVBRElOR19BTkRfVFJBSUxJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSwgJycpO1xuICB9XG5cbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKFRBQl9BTkRfTkVXX0xJTkUsICcnKTtcblxuICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcblxuICB3aGlsZSAocG9pbnRlciA8PSBjb2RlUG9pbnRzLmxlbmd0aCkge1xuICAgIGNociA9IGNvZGVQb2ludHNbcG9pbnRlcl07XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBTQ0hFTUVfU1RBUlQ6XG4gICAgICAgIGlmIChjaHIgJiYgQUxQSEEudGVzdChjaHIpKSB7XG4gICAgICAgICAgYnVmZmVyICs9IGNoci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHN0YXRlID0gU0NIRU1FO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNDSEVNRTpcbiAgICAgICAgaWYgKGNociAmJiAoQUxQSEFOVU1FUklDLnRlc3QoY2hyKSB8fCBjaHIgPT0gJysnIHx8IGNociA9PSAnLScgfHwgY2hyID09ICcuJykpIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2hyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc6Jykge1xuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIChcbiAgICAgICAgICAgIChpc1NwZWNpYWwodXJsKSAhPSBoYXNPd24oc3BlY2lhbFNjaGVtZXMsIGJ1ZmZlcikpIHx8XG4gICAgICAgICAgICAoYnVmZmVyID09ICdmaWxlJyAmJiAoaW5jbHVkZXNDcmVkZW50aWFscyh1cmwpIHx8IHVybC5wb3J0ICE9PSBudWxsKSkgfHxcbiAgICAgICAgICAgICh1cmwuc2NoZW1lID09ICdmaWxlJyAmJiAhdXJsLmhvc3QpXG4gICAgICAgICAgKSkgcmV0dXJuO1xuICAgICAgICAgIHVybC5zY2hlbWUgPSBidWZmZXI7XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGlmIChpc1NwZWNpYWwodXJsKSAmJiBzcGVjaWFsU2NoZW1lc1t1cmwuc2NoZW1lXSA9PSB1cmwucG9ydCkgdXJsLnBvcnQgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHN0YXRlID0gRklMRTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzU3BlY2lhbCh1cmwpICYmIGJhc2UgJiYgYmFzZS5zY2hlbWUgPT0gdXJsLnNjaGVtZSkge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzU3BlY2lhbCh1cmwpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVM7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9PUl9BVVRIT1JJVFk7XG4gICAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTtcbiAgICAgICAgICAgIHVybC5wYXRoLnB1c2goJycpO1xuICAgICAgICAgICAgc3RhdGUgPSBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gTk9fU0NIRU1FO1xuICAgICAgICAgIHBvaW50ZXIgPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOT19TQ0hFTUU6XG4gICAgICAgIGlmICghYmFzZSB8fCAoYmFzZS5jYW5ub3RCZUFCYXNlVVJMICYmIGNociAhPSAnIycpKSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgIGlmIChiYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgY2hyID09ICcjJykge1xuICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBiYXNlLnNjaGVtZSA9PSAnZmlsZScgPyBGSUxFIDogUkVMQVRJVkU7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlIFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZOlxuICAgICAgICBpZiAoY2hyID09ICcvJyAmJiBjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PSAnLycpIHtcbiAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFJFTEFUSVZFO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIFBBVEhfT1JfQVVUSE9SSVRZOlxuICAgICAgICBpZiAoY2hyID09ICcvJykge1xuICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFTEFUSVZFOlxuICAgICAgICB1cmwuc2NoZW1lID0gYmFzZS5zY2hlbWU7XG4gICAgICAgIGlmIChjaHIgPT0gRU9GKSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJy8nIHx8IChjaHIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSkge1xuICAgICAgICAgIHN0YXRlID0gUkVMQVRJVkVfU0xBU0g7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc/Jykge1xuICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcjJykge1xuICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgdXJsLnBhdGggPSBiYXNlLnBhdGguc2xpY2UoKTtcbiAgICAgICAgICB1cmwucGF0aC5wb3AoKTtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUkVMQVRJVkVfU0xBU0g6XG4gICAgICAgIGlmIChpc1NwZWNpYWwodXJsKSAmJiAoY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnKSkge1xuICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcvJykge1xuICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUzpcbiAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgaWYgKGNociAhPSAnLycgfHwgYnVmZmVyLmNoYXJBdChwb2ludGVyICsgMSkgIT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUzpcbiAgICAgICAgaWYgKGNociAhPSAnLycgJiYgY2hyICE9ICdcXFxcJykge1xuICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIEFVVEhPUklUWTpcbiAgICAgICAgaWYgKGNociA9PSAnQCcpIHtcbiAgICAgICAgICBpZiAoc2VlbkF0KSBidWZmZXIgPSAnJTQwJyArIGJ1ZmZlcjtcbiAgICAgICAgICBzZWVuQXQgPSB0cnVlO1xuICAgICAgICAgIGJ1ZmZlckNvZGVQb2ludHMgPSBhcnJheUZyb20oYnVmZmVyKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlckNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjb2RlUG9pbnQgPSBidWZmZXJDb2RlUG9pbnRzW2ldO1xuICAgICAgICAgICAgaWYgKGNvZGVQb2ludCA9PSAnOicgJiYgIXNlZW5QYXNzd29yZFRva2VuKSB7XG4gICAgICAgICAgICAgIHNlZW5QYXNzd29yZFRva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZW5jb2RlZENvZGVQb2ludHMgPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludCwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICAgIGlmIChzZWVuUGFzc3dvcmRUb2tlbikgdXJsLnBhc3N3b3JkICs9IGVuY29kZWRDb2RlUG9pbnRzO1xuICAgICAgICAgICAgZWxzZSB1cmwudXNlcm5hbWUgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fCBjaHIgPT0gJz8nIHx8IGNociA9PSAnIycgfHxcbiAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHNlZW5BdCAmJiBidWZmZXIgPT0gJycpIHJldHVybiBJTlZBTElEX0FVVEhPUklUWTtcbiAgICAgICAgICBwb2ludGVyIC09IGFycmF5RnJvbShidWZmZXIpLmxlbmd0aCArIDE7XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBIT1NUO1xuICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNocjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgSE9TVDpcbiAgICAgIGNhc2UgSE9TVE5BTUU6XG4gICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIHVybC5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgc3RhdGUgPSBGSUxFX0hPU1Q7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc6JyAmJiAhc2VlbkJyYWNrZXQpIHtcbiAgICAgICAgICBpZiAoYnVmZmVyID09ICcnKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgICAgIGZhaWx1cmUgPSBwYXJzZUhvc3QodXJsLCBidWZmZXIpO1xuICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IFBPUlQ7XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgPT0gSE9TVE5BTUUpIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjaHIgPT0gRU9GIHx8IGNociA9PSAnLycgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnIHx8XG4gICAgICAgICAgKGNociA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChpc1NwZWNpYWwodXJsKSAmJiBidWZmZXIgPT0gJycpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgYnVmZmVyID09ICcnICYmIChpbmNsdWRlc0NyZWRlbnRpYWxzKHVybCkgfHwgdXJsLnBvcnQgIT09IG51bGwpKSByZXR1cm47XG4gICAgICAgICAgZmFpbHVyZSA9IHBhcnNlSG9zdCh1cmwsIGJ1ZmZlcik7XG4gICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChjaHIgPT0gJ1snKSBzZWVuQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgZWxzZSBpZiAoY2hyID09ICddJykgc2VlbkJyYWNrZXQgPSBmYWxzZTtcbiAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIFBPUlQ6XG4gICAgICAgIGlmIChESUdJVC50ZXN0KGNocikpIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fCBjaHIgPT0gJz8nIHx8IGNociA9PSAnIycgfHxcbiAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSkgfHxcbiAgICAgICAgICBzdGF0ZU92ZXJyaWRlXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChidWZmZXIgIT0gJycpIHtcbiAgICAgICAgICAgIHZhciBwb3J0ID0gcGFyc2VJbnQoYnVmZmVyLCAxMCk7XG4gICAgICAgICAgICBpZiAocG9ydCA+IDB4RkZGRikgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gKGlzU3BlY2lhbCh1cmwpICYmIHBvcnQgPT09IHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdKSA/IG51bGwgOiBwb3J0O1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRklMRTpcbiAgICAgICAgdXJsLnNjaGVtZSA9ICdmaWxlJztcbiAgICAgICAgaWYgKGNociA9PSAnLycgfHwgY2hyID09ICdcXFxcJykgc3RhdGUgPSBGSUxFX1NMQVNIO1xuICAgICAgICBlbHNlIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09ICdmaWxlJykge1xuICAgICAgICAgIGlmIChjaHIgPT0gRU9GKSB7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc/Jykge1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcjJykge1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyKGNvZGVQb2ludHMuc2xpY2UocG9pbnRlcikuam9pbignJykpKSB7XG4gICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgICAgICBzaG9ydGVuVVJMc1BhdGgodXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgRklMRV9TTEFTSDpcbiAgICAgICAgaWYgKGNociA9PSAnLycgfHwgY2hyID09ICdcXFxcJykge1xuICAgICAgICAgIHN0YXRlID0gRklMRV9IT1NUO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09ICdmaWxlJyAmJiAhc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcihjb2RlUG9pbnRzLnNsaWNlKHBvaW50ZXIpLmpvaW4oJycpKSkge1xuICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihiYXNlLnBhdGhbMF0sIHRydWUpKSB1cmwucGF0aC5wdXNoKGJhc2UucGF0aFswXSk7XG4gICAgICAgICAgZWxzZSB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlIEZJTEVfSE9TVDpcbiAgICAgICAgaWYgKGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnIHx8IGNociA9PSAnPycgfHwgY2hyID09ICcjJykge1xuICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgfSBlbHNlIGlmIChidWZmZXIgPT0gJycpIHtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmYWlsdXJlID0gcGFyc2VIb3N0KHVybCwgYnVmZmVyKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICAgIGlmICh1cmwuaG9zdCA9PSAnbG9jYWxob3N0JykgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICB9IGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNocjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUEFUSF9TVEFSVDpcbiAgICAgICAgaWYgKGlzU3BlY2lhbCh1cmwpKSB7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmIGNociAhPSAnXFxcXCcpIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PSAnPycpIHtcbiAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PSAnIycpIHtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICB9IGVsc2UgaWYgKGNociAhPSBFT0YpIHtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgaWYgKGNociAhPSAnLycpIGNvbnRpbnVlO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIFBBVEg6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjaHIgPT0gRU9GIHx8IGNociA9PSAnLycgfHxcbiAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSkgfHxcbiAgICAgICAgICAoIXN0YXRlT3ZlcnJpZGUgJiYgKGNociA9PSAnPycgfHwgY2hyID09ICcjJykpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChpc0RvdWJsZURvdChidWZmZXIpKSB7XG4gICAgICAgICAgICBzaG9ydGVuVVJMc1BhdGgodXJsKTtcbiAgICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmICEoY2hyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSkpIHtcbiAgICAgICAgICAgICAgdXJsLnBhdGgucHVzaCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1NpbmdsZURvdChidWZmZXIpKSB7XG4gICAgICAgICAgICBpZiAoY2hyICE9ICcvJyAmJiAhKGNociA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpKSB7XG4gICAgICAgICAgICAgIHVybC5wYXRoLnB1c2goJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PSAnZmlsZScgJiYgIXVybC5wYXRoLmxlbmd0aCAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICAgIGlmICh1cmwuaG9zdCkgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgYnVmZmVyID0gYnVmZmVyLmNoYXJBdCgwKSArICc6JzsgLy8gbm9ybWFsaXplIHdpbmRvd3MgZHJpdmUgbGV0dGVyXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwucGF0aC5wdXNoKGJ1ZmZlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09ICdmaWxlJyAmJiAoY2hyID09IEVPRiB8fCBjaHIgPT0gJz8nIHx8IGNociA9PSAnIycpKSB7XG4gICAgICAgICAgICB3aGlsZSAodXJsLnBhdGgubGVuZ3RoID4gMSAmJiB1cmwucGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgdXJsLnBhdGguc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNociA9PSAnPycpIHtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmZmVyICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBwYXRoUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDpcbiAgICAgICAgaWYgKGNociA9PSAnPycpIHtcbiAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnIycpIHtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICB9IGVsc2UgaWYgKGNociAhPSBFT0YpIHtcbiAgICAgICAgICB1cmwucGF0aFswXSArPSBwZXJjZW50RW5jb2RlKGNociwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUVVFUlk6XG4gICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgfSBlbHNlIGlmIChjaHIgIT0gRU9GKSB7XG4gICAgICAgICAgaWYgKGNociA9PSBcIidcIiAmJiBpc1NwZWNpYWwodXJsKSkgdXJsLnF1ZXJ5ICs9ICclMjcnO1xuICAgICAgICAgIGVsc2UgaWYgKGNociA9PSAnIycpIHVybC5xdWVyeSArPSAnJTIzJztcbiAgICAgICAgICBlbHNlIHVybC5xdWVyeSArPSBwZXJjZW50RW5jb2RlKGNociwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgRlJBR01FTlQ6XG4gICAgICAgIGlmIChjaHIgIT0gRU9GKSB1cmwuZnJhZ21lbnQgKz0gcGVyY2VudEVuY29kZShjaHIsIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBvaW50ZXIrKztcbiAgfVxufTtcblxuLy8gYFVSTGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLWNsYXNzXG52YXIgVVJMQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkwodXJsIC8qICwgYmFzZSAqLykge1xuICB2YXIgdGhhdCA9IGFuSW5zdGFuY2UodGhpcywgVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcbiAgdmFyIGJhc2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHVybFN0cmluZyA9ICR0b1N0cmluZyh1cmwpO1xuICB2YXIgc3RhdGUgPSBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHsgdHlwZTogJ1VSTCcgfSk7XG4gIHZhciBiYXNlU3RhdGUsIGZhaWx1cmU7XG4gIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoYmFzZSBpbnN0YW5jZW9mIFVSTENvbnN0cnVjdG9yKSBiYXNlU3RhdGUgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKGJhc2UpO1xuICAgIGVsc2Uge1xuICAgICAgZmFpbHVyZSA9IHBhcnNlVVJMKGJhc2VTdGF0ZSA9IHt9LCAkdG9TdHJpbmcoYmFzZSkpO1xuICAgICAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB9XG4gIH1cbiAgZmFpbHVyZSA9IHBhcnNlVVJMKHN0YXRlLCB1cmxTdHJpbmcsIG51bGwsIGJhc2VTdGF0ZSk7XG4gIGlmIChmYWlsdXJlKSB0aHJvdyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gIHZhciBzZWFyY2hQYXJhbXMgPSBzdGF0ZS5zZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIHZhciBzZWFyY2hQYXJhbXNTdGF0ZSA9IGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUoc2VhcmNoUGFyYW1zKTtcbiAgc2VhcmNoUGFyYW1zU3RhdGUudXBkYXRlU2VhcmNoUGFyYW1zKHN0YXRlLnF1ZXJ5KTtcbiAgc2VhcmNoUGFyYW1zU3RhdGUudXBkYXRlVVJMID0gZnVuY3Rpb24gKCkge1xuICAgIHN0YXRlLnF1ZXJ5ID0gU3RyaW5nKHNlYXJjaFBhcmFtcykgfHwgbnVsbDtcbiAgfTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHRoYXQuaHJlZiA9IHNlcmlhbGl6ZVVSTC5jYWxsKHRoYXQpO1xuICAgIHRoYXQub3JpZ2luID0gZ2V0T3JpZ2luLmNhbGwodGhhdCk7XG4gICAgdGhhdC5wcm90b2NvbCA9IGdldFByb3RvY29sLmNhbGwodGhhdCk7XG4gICAgdGhhdC51c2VybmFtZSA9IGdldFVzZXJuYW1lLmNhbGwodGhhdCk7XG4gICAgdGhhdC5wYXNzd29yZCA9IGdldFBhc3N3b3JkLmNhbGwodGhhdCk7XG4gICAgdGhhdC5ob3N0ID0gZ2V0SG9zdC5jYWxsKHRoYXQpO1xuICAgIHRoYXQuaG9zdG5hbWUgPSBnZXRIb3N0bmFtZS5jYWxsKHRoYXQpO1xuICAgIHRoYXQucG9ydCA9IGdldFBvcnQuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnBhdGhuYW1lID0gZ2V0UGF0aG5hbWUuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnNlYXJjaCA9IGdldFNlYXJjaC5jYWxsKHRoYXQpO1xuICAgIHRoYXQuc2VhcmNoUGFyYW1zID0gZ2V0U2VhcmNoUGFyYW1zLmNhbGwodGhhdCk7XG4gICAgdGhhdC5oYXNoID0gZ2V0SGFzaC5jYWxsKHRoYXQpO1xuICB9XG59O1xuXG52YXIgVVJMUHJvdG90eXBlID0gVVJMQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG52YXIgc2VyaWFsaXplVVJMID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIHNjaGVtZSA9IHVybC5zY2hlbWU7XG4gIHZhciB1c2VybmFtZSA9IHVybC51c2VybmFtZTtcbiAgdmFyIHBhc3N3b3JkID0gdXJsLnBhc3N3b3JkO1xuICB2YXIgaG9zdCA9IHVybC5ob3N0O1xuICB2YXIgcG9ydCA9IHVybC5wb3J0O1xuICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICB2YXIgcXVlcnkgPSB1cmwucXVlcnk7XG4gIHZhciBmcmFnbWVudCA9IHVybC5mcmFnbWVudDtcbiAgdmFyIG91dHB1dCA9IHNjaGVtZSArICc6JztcbiAgaWYgKGhvc3QgIT09IG51bGwpIHtcbiAgICBvdXRwdXQgKz0gJy8vJztcbiAgICBpZiAoaW5jbHVkZXNDcmVkZW50aWFscyh1cmwpKSB7XG4gICAgICBvdXRwdXQgKz0gdXNlcm5hbWUgKyAocGFzc3dvcmQgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJztcbiAgICB9XG4gICAgb3V0cHV0ICs9IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gICAgaWYgKHBvcnQgIT09IG51bGwpIG91dHB1dCArPSAnOicgKyBwb3J0O1xuICB9IGVsc2UgaWYgKHNjaGVtZSA9PSAnZmlsZScpIG91dHB1dCArPSAnLy8nO1xuICBvdXRwdXQgKz0gdXJsLmNhbm5vdEJlQUJhc2VVUkwgPyBwYXRoWzBdIDogcGF0aC5sZW5ndGggPyAnLycgKyBwYXRoLmpvaW4oJy8nKSA6ICcnO1xuICBpZiAocXVlcnkgIT09IG51bGwpIG91dHB1dCArPSAnPycgKyBxdWVyeTtcbiAgaWYgKGZyYWdtZW50ICE9PSBudWxsKSBvdXRwdXQgKz0gJyMnICsgZnJhZ21lbnQ7XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG52YXIgZ2V0T3JpZ2luID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIHNjaGVtZSA9IHVybC5zY2hlbWU7XG4gIHZhciBwb3J0ID0gdXJsLnBvcnQ7XG4gIGlmIChzY2hlbWUgPT0gJ2Jsb2InKSB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMQ29uc3RydWN0b3Ioc2NoZW1lLnBhdGhbMF0pLm9yaWdpbjtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9XG4gIGlmIChzY2hlbWUgPT0gJ2ZpbGUnIHx8ICFpc1NwZWNpYWwodXJsKSkgcmV0dXJuICdudWxsJztcbiAgcmV0dXJuIHNjaGVtZSArICc6Ly8nICsgc2VyaWFsaXplSG9zdCh1cmwuaG9zdCkgKyAocG9ydCAhPT0gbnVsbCA/ICc6JyArIHBvcnQgOiAnJyk7XG59O1xuXG52YXIgZ2V0UHJvdG9jb2wgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnNjaGVtZSArICc6Jztcbn07XG5cbnZhciBnZXRVc2VybmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykudXNlcm5hbWU7XG59O1xuXG52YXIgZ2V0UGFzc3dvcmQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnBhc3N3b3JkO1xufTtcblxudmFyIGdldEhvc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICB2YXIgaG9zdCA9IHVybC5ob3N0O1xuICB2YXIgcG9ydCA9IHVybC5wb3J0O1xuICByZXR1cm4gaG9zdCA9PT0gbnVsbCA/ICcnXG4gICAgOiBwb3J0ID09PSBudWxsID8gc2VyaWFsaXplSG9zdChob3N0KVxuICAgIDogc2VyaWFsaXplSG9zdChob3N0KSArICc6JyArIHBvcnQ7XG59O1xuXG52YXIgZ2V0SG9zdG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBob3N0ID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5ob3N0O1xuICByZXR1cm4gaG9zdCA9PT0gbnVsbCA/ICcnIDogc2VyaWFsaXplSG9zdChob3N0KTtcbn07XG5cbnZhciBnZXRQb3J0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcG9ydCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcykucG9ydDtcbiAgcmV0dXJuIHBvcnQgPT09IG51bGwgPyAnJyA6IFN0cmluZyhwb3J0KTtcbn07XG5cbnZhciBnZXRQYXRobmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gIHZhciBwYXRoID0gdXJsLnBhdGg7XG4gIHJldHVybiB1cmwuY2Fubm90QmVBQmFzZVVSTCA/IHBhdGhbMF0gOiBwYXRoLmxlbmd0aCA/ICcvJyArIHBhdGguam9pbignLycpIDogJyc7XG59O1xuXG52YXIgZ2V0U2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcXVlcnkgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnF1ZXJ5O1xuICByZXR1cm4gcXVlcnkgPyAnPycgKyBxdWVyeSA6ICcnO1xufTtcblxudmFyIGdldFNlYXJjaFBhcmFtcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2VhcmNoUGFyYW1zO1xufTtcblxudmFyIGdldEhhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBmcmFnbWVudCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcykuZnJhZ21lbnQ7XG4gIHJldHVybiBmcmFnbWVudCA/ICcjJyArIGZyYWdtZW50IDogJyc7XG59O1xuXG52YXIgYWNjZXNzb3JEZXNjcmlwdG9yID0gZnVuY3Rpb24gKGdldHRlciwgc2V0dGVyKSB7XG4gIHJldHVybiB7IGdldDogZ2V0dGVyLCBzZXQ6IHNldHRlciwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlIH07XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgZGVmaW5lUHJvcGVydGllcyhVUkxQcm90b3R5cGUsIHtcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5ocmVmYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ocmVmXG4gICAgaHJlZjogYWNjZXNzb3JEZXNjcmlwdG9yKHNlcmlhbGl6ZVVSTCwgZnVuY3Rpb24gKGhyZWYpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIHVybFN0cmluZyA9ICR0b1N0cmluZyhocmVmKTtcbiAgICAgIHZhciBmYWlsdXJlID0gcGFyc2VVUkwodXJsLCB1cmxTdHJpbmcpO1xuICAgICAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICAgIGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUodXJsLnNlYXJjaFBhcmFtcykudXBkYXRlU2VhcmNoUGFyYW1zKHVybC5xdWVyeSk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUub3JpZ2luYCBnZXR0ZXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtb3JpZ2luXG4gICAgb3JpZ2luOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0T3JpZ2luKSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5wcm90b2NvbGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcHJvdG9jb2xcbiAgICBwcm90b2NvbDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFByb3RvY29sLCBmdW5jdGlvbiAocHJvdG9jb2wpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgcGFyc2VVUkwodXJsLCAkdG9TdHJpbmcocHJvdG9jb2wpICsgJzonLCBTQ0hFTUVfU1RBUlQpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnVzZXJuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC11c2VybmFtZVxuICAgIHVzZXJuYW1lOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0VXNlcm5hbWUsIGZ1bmN0aW9uICh1c2VybmFtZSkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICB2YXIgY29kZVBvaW50cyA9IGFycmF5RnJvbSgkdG9TdHJpbmcodXNlcm5hbWUpKTtcbiAgICAgIGlmIChjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQodXJsKSkgcmV0dXJuO1xuICAgICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXJsLnVzZXJuYW1lICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpXSwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5wYXNzd29yZGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmRcbiAgICBwYXNzd29yZDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFBhc3N3b3JkLCBmdW5jdGlvbiAocGFzc3dvcmQpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGNvZGVQb2ludHMgPSBhcnJheUZyb20oJHRvU3RyaW5nKHBhc3N3b3JkKSk7XG4gICAgICBpZiAoY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KHVybCkpIHJldHVybjtcbiAgICAgIHVybC5wYXNzd29yZCA9ICcnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHVybC5wYXNzd29yZCArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgICB9XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUuaG9zdGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICAgIGhvc3Q6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRIb3N0LCBmdW5jdGlvbiAoaG9zdCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICAgIHBhcnNlVVJMKHVybCwgJHRvU3RyaW5nKGhvc3QpLCBIT1NUKTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0bmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdG5hbWVcbiAgICBob3N0bmFtZTogYWNjZXNzb3JEZXNjcmlwdG9yKGdldEhvc3RuYW1lLCBmdW5jdGlvbiAoaG9zdG5hbWUpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgICBwYXJzZVVSTCh1cmwsICR0b1N0cmluZyhob3N0bmFtZSksIEhPU1ROQU1FKTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5wb3J0YCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wb3J0XG4gICAgcG9ydDogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFBvcnQsIGZ1bmN0aW9uIChwb3J0KSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIGlmIChjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQodXJsKSkgcmV0dXJuO1xuICAgICAgcG9ydCA9ICR0b1N0cmluZyhwb3J0KTtcbiAgICAgIGlmIChwb3J0ID09ICcnKSB1cmwucG9ydCA9IG51bGw7XG4gICAgICBlbHNlIHBhcnNlVVJMKHVybCwgcG9ydCwgUE9SVCk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUucGF0aG5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhdGhuYW1lXG4gICAgcGF0aG5hbWU6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRQYXRobmFtZSwgZnVuY3Rpb24gKHBhdGhuYW1lKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgICAgdXJsLnBhdGggPSBbXTtcbiAgICAgIHBhcnNlVVJMKHVybCwgJHRvU3RyaW5nKHBhdGhuYW1lKSwgUEFUSF9TVEFSVCk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hcbiAgICBzZWFyY2g6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRTZWFyY2gsIGZ1bmN0aW9uIChzZWFyY2gpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgc2VhcmNoID0gJHRvU3RyaW5nKHNlYXJjaCk7XG4gICAgICBpZiAoc2VhcmNoID09ICcnKSB7XG4gICAgICAgIHVybC5xdWVyeSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoJz8nID09IHNlYXJjaC5jaGFyQXQoMCkpIHNlYXJjaCA9IHNlYXJjaC5zbGljZSgxKTtcbiAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgIHBhcnNlVVJMKHVybCwgc2VhcmNoLCBRVUVSWSk7XG4gICAgICB9XG4gICAgICBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlKHVybC5zZWFyY2hQYXJhbXMpLnVwZGF0ZVNlYXJjaFBhcmFtcyh1cmwucXVlcnkpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnNlYXJjaFBhcmFtc2AgZ2V0dGVyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaHBhcmFtc1xuICAgIHNlYXJjaFBhcmFtczogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFNlYXJjaFBhcmFtcyksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUuaGFzaGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaGFzaFxuICAgIGhhc2g6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRIYXNoLCBmdW5jdGlvbiAoaGFzaCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBoYXNoID0gJHRvU3RyaW5nKGhhc2gpO1xuICAgICAgaWYgKGhhc2ggPT0gJycpIHtcbiAgICAgICAgdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCcjJyA9PSBoYXNoLmNoYXJBdCgwKSkgaGFzaCA9IGhhc2guc2xpY2UoMSk7XG4gICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgIHBhcnNlVVJMKHVybCwgaGFzaCwgRlJBR01FTlQpO1xuICAgIH0pXG4gIH0pO1xufVxuXG4vLyBgVVJMLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXRvanNvblxucmVkZWZpbmUoVVJMUHJvdG90eXBlLCAndG9KU09OJywgZnVuY3Rpb24gdG9KU09OKCkge1xuICByZXR1cm4gc2VyaWFsaXplVVJMLmNhbGwodGhpcyk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jVVJMLXN0cmluZ2lmaWNhdGlvbi1iZWhhdmlvclxucmVkZWZpbmUoVVJMUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZVVSTC5jYWxsKHRoaXMpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG5pZiAoTmF0aXZlVVJMKSB7XG4gIHZhciBuYXRpdmVDcmVhdGVPYmplY3RVUkwgPSBOYXRpdmVVUkwuY3JlYXRlT2JqZWN0VVJMO1xuICB2YXIgbmF0aXZlUmV2b2tlT2JqZWN0VVJMID0gTmF0aXZlVVJMLnJldm9rZU9iamVjdFVSTDtcbiAgLy8gYFVSTC5jcmVhdGVPYmplY3RVUkxgIG1ldGhvZFxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML2NyZWF0ZU9iamVjdFVSTFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBpZiAobmF0aXZlQ3JlYXRlT2JqZWN0VVJMKSByZWRlZmluZShVUkxDb25zdHJ1Y3RvciwgJ2NyZWF0ZU9iamVjdFVSTCcsIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTChibG9iKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZU9iamVjdFVSTC5hcHBseShOYXRpdmVVUkwsIGFyZ3VtZW50cyk7XG4gIH0pO1xuICAvLyBgVVJMLnJldm9rZU9iamVjdFVSTGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvcmV2b2tlT2JqZWN0VVJMXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGlmIChuYXRpdmVSZXZva2VPYmplY3RVUkwpIHJlZGVmaW5lKFVSTENvbnN0cnVjdG9yLCAncmV2b2tlT2JqZWN0VVJMJywgZnVuY3Rpb24gcmV2b2tlT2JqZWN0VVJMKHVybCkge1xuICAgIHJldHVybiBuYXRpdmVSZXZva2VPYmplY3RVUkwuYXBwbHkoTmF0aXZlVVJMLCBhcmd1bWVudHMpO1xuICB9KTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIFVSTDogVVJMQ29uc3RydWN0b3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvSlNPTmAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdG9qc29uXG4kKHsgdGFyZ2V0OiAnVVJMJywgcHJvdG86IHRydWUsIGVudW1lcmFibGU6IHRydWUgfSwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4gVVJMLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpO1xuICB9XG59KTtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cblxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIDogMHhlYWM3O1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJykgOiAweGVhY2E7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50JykgOiAweGVhY2I7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJykgOiAweGVhY2M7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJykgOiAweGVhZDI7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJykgOiAweGVhY2Q7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpIDogMHhlYWNlOyAvLyBUT0RPOiBXZSBkb24ndCB1c2UgQXN5bmNNb2RlIG9yIENvbmN1cnJlbnRNb2RlIGFueW1vcmUuIFRoZXkgd2VyZSB0ZW1wb3Jhcnlcbi8vICh1bnN0YWJsZSkgQVBJcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiBDYW4gd2UgcmVtb3ZlIHRoZSBzeW1ib2xzP1xuXG52YXIgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYXN5bmNfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29uY3VycmVudF9tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJykgOiAweGVhZDA7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJykgOiAweGVhZDE7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpIDogMHhlYWQ4O1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKSA6IDB4ZWFkMztcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5JykgOiAweGVhZDQ7XG52YXIgUkVBQ1RfQkxPQ0tfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmJsb2NrJykgOiAweGVhZDk7XG52YXIgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZ1bmRhbWVudGFsJykgOiAweGVhZDU7XG52YXIgUkVBQ1RfUkVTUE9OREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5yZXNwb25kZXInKSA6IDB4ZWFkNjtcbnZhciBSRUFDVF9TQ09QRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc2NvcGUnKSA6IDB4ZWFkNztcblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCAvLyBOb3RlOiBpdHMgdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgaWYgaXQncyBhIHBvbHlmaWxsLlxuICB0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUkVTUE9OREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfU0NPUEVfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9CTE9DS19UWVBFKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YXIgJCR0eXBlb2ZUeXBlID0gdHlwZSAmJiB0eXBlLiQkdHlwZW9mO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCQkdHlwZW9mVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59IC8vIEFzeW5jTW9kZSBpcyBkZXByZWNhdGVkIGFsb25nIHdpdGggaXNBc3luY01vZGVcblxudmFyIEFzeW5jTW9kZSA9IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbnZhciBDb25jdXJyZW50TW9kZSA9IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xudmFyIENvbnRleHRDb25zdW1lciA9IFJFQUNUX0NPTlRFWFRfVFlQRTtcbnZhciBDb250ZXh0UHJvdmlkZXIgPSBSRUFDVF9QUk9WSURFUl9UWVBFO1xudmFyIEVsZW1lbnQgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG52YXIgRm9yd2FyZFJlZiA9IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG52YXIgRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xudmFyIExhenkgPSBSRUFDVF9MQVpZX1RZUEU7XG52YXIgTWVtbyA9IFJFQUNUX01FTU9fVFlQRTtcbnZhciBQb3J0YWwgPSBSRUFDVF9QT1JUQUxfVFlQRTtcbnZhciBQcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG52YXIgU3RyaWN0TW9kZSA9IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG52YXIgU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7IC8vIEFzeW5jTW9kZSBzaG91bGQgYmUgZGVwcmVjYXRlZFxuXG5mdW5jdGlvbiBpc0FzeW5jTW9kZShvYmplY3QpIHtcbiAge1xuICAgIGlmICghaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gdHJ1ZTsgLy8gVXNpbmcgY29uc29sZVsnd2FybiddIHRvIGV2YWRlIEJhYmVsIGFuZCBFU0xpbnRcblxuICAgICAgY29uc29sZVsnd2FybiddKCdUaGUgUmVhY3RJcy5pc0FzeW5jTW9kZSgpIGFsaWFzIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCAxNysuIFVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlICcgKyAnUmVhY3RJcy5pc0NvbmN1cnJlbnRNb2RlKCkgaW5zdGVhZC4gSXQgaGFzIHRoZSBleGFjdCBzYW1lIEFQSS4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHx8IHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0Q29uc3VtZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0UHJvdmlkZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRm9yd2FyZFJlZihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xufVxuZnVuY3Rpb24gaXNGcmFnbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNMYXp5KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0xBWllfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTWVtbyhvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9NRU1PX1RZUEU7XG59XG5mdW5jdGlvbiBpc1BvcnRhbChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QT1JUQUxfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUHJvZmlsZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3RyaWN0TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdXNwZW5zZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xufVxuXG5leHBvcnRzLkFzeW5jTW9kZSA9IEFzeW5jTW9kZTtcbmV4cG9ydHMuQ29uY3VycmVudE1vZGUgPSBDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuQ29udGV4dENvbnN1bWVyID0gQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5Db250ZXh0UHJvdmlkZXIgPSBDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLkVsZW1lbnQgPSBFbGVtZW50O1xuZXhwb3J0cy5Gb3J3YXJkUmVmID0gRm9yd2FyZFJlZjtcbmV4cG9ydHMuRnJhZ21lbnQgPSBGcmFnbWVudDtcbmV4cG9ydHMuTGF6eSA9IExhenk7XG5leHBvcnRzLk1lbW8gPSBNZW1vO1xuZXhwb3J0cy5Qb3J0YWwgPSBQb3J0YWw7XG5leHBvcnRzLlByb2ZpbGVyID0gUHJvZmlsZXI7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBTdHJpY3RNb2RlO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFN1c3BlbnNlO1xuZXhwb3J0cy5pc0FzeW5jTW9kZSA9IGlzQXN5bmNNb2RlO1xuZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlID0gaXNDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXIgPSBpc0NvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXIgPSBpc0NvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuZXhwb3J0cy5pc0ZvcndhcmRSZWYgPSBpc0ZvcndhcmRSZWY7XG5leHBvcnRzLmlzRnJhZ21lbnQgPSBpc0ZyYWdtZW50O1xuZXhwb3J0cy5pc0xhenkgPSBpc0xhenk7XG5leHBvcnRzLmlzTWVtbyA9IGlzTWVtbztcbmV4cG9ydHMuaXNQb3J0YWwgPSBpc1BvcnRhbDtcbmV4cG9ydHMuaXNQcm9maWxlciA9IGlzUHJvZmlsZXI7XG5leHBvcnRzLmlzU3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZTtcbmV4cG9ydHMuaXNTdXNwZW5zZSA9IGlzU3VzcGVuc2U7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZTtcbmV4cG9ydHMudHlwZU9mID0gdHlwZU9mO1xuICB9KSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG4gIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuXG4gKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHs/RnVuY3Rpb259IGdldFN0YWNrIFJldHVybnMgdGhlIGNvbXBvbmVudCBzdGFjay5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZ2V0U3RhY2spIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoXG4gICAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArXG4gICAgICAgICAgICAgICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciAmJiAhKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJyArXG4gICAgICAgICAgICBsb2NhdGlvbiArICcgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgK1xuICAgICAgICAgICAgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICcgKyB0eXBlb2YgZXJyb3IgKyAnLiAnICtcbiAgICAgICAgICAgICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICtcbiAgICAgICAgICAgICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgK1xuICAgICAgICAgICAgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICAgJ0ZhaWxlZCAnICsgbG9jYXRpb24gKyAnIHR5cGU6ICcgKyBlcnJvci5tZXNzYWdlICsgKHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNldHMgd2FybmluZyBjYWNoZSB3aGVuIHRlc3RpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2hlY2tQcm9wVHlwZXMucmVzZXRXYXJuaW5nQ2FjaGUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbnZhciBoYXMgPSBGdW5jdGlvbi5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG52YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24odGV4dCkge1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyB0ZXh0O1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gIC8qIGdsb2JhbCBTeW1ib2wgKi9cbiAgdmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xuICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICAgKlxuICAgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAgICpcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcbiAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAgICogICAgICAgLi4uXG4gICAqICAgICB9XG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gICAqIHN1cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XG4gICAqXG4gICAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcbiAgICogICB2YXIgTXlBcnRpY2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAgICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZyxcbiAgICpcbiAgICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuICAgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsXG4gICAqXG4gICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuICAgKiAgICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXG4gICAqICAgICB9LFxuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuICAgKlxuICAgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLilcbiAgICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG4gICAqXG4gICAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcbiAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwiaHJlZlwiLlxuICAgKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgKiAgICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgKiAgICAgICAgICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArXG4gICAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgKiAgICAgICAgICApO1xuICAgKiAgICAgICAgfVxuICAgKiAgICAgIH1cbiAgICogICAgfSxcbiAgICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59XG4gICAqICB9KTtcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG4gIHZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5cbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksXG4gICAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSxcbiAgICBmdW5jOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcbiAgICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSxcbiAgICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzdHJpbmcnKSxcbiAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblxuICAgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSxcbiAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXG4gICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksXG4gICAgZWxlbWVudFR5cGU6IGNyZWF0ZUVsZW1lbnRUeXBlVHlwZUNoZWNrZXIoKSxcbiAgICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuICAgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksXG4gICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIsXG4gICAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcbiAgICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsXG4gICAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIsXG4gICAgZXhhY3Q6IGNyZWF0ZVN0cmljdFNoYXBlVHlwZUNoZWNrZXIsXG4gIH07XG5cbiAgLyoqXG4gICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSovXG4gIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG4gICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICdVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uICcgK1xuICAgICAgICAgICAgICAnZnVuY3Rpb24gZm9yIHRoZSBgJyArIHByb3BGdWxsTmFtZSArICdgIHByb3Agb24gYCcgKyBjb21wb25lbnROYW1lICArICdgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQgdHlwZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLiAnICtcbiAgICAgICAgICAgICdBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHdyaXRlIG9uZU9mKHgsIHksIHopIGluc3RlYWQgb2Ygb25lT2YoW3gsIHksIHpdKS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGFycmF5LicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgU3RyaW5nKHByb3BWYWx1ZSkgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGhhcyhwcm9wVmFsdWUsIGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICcgKyBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlcikgKyAnIGF0IGluZGV4ICcgKyBpICsgJy4nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVN0cmljdFNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBlcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBvYmplY3RgLicpKTtcbiAgICAgIH1cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgYWxsIGtleXMgaW4gY2FzZSBzb21lIGFyZSByZXF1aXJlZCBidXQgbWlzc2luZyBmcm9tXG4gICAgICAvLyBwcm9wcy5cbiAgICAgIHZhciBhbGxLZXlzID0gYXNzaWduKHt9LCBwcm9wc1twcm9wTmFtZV0sIHNoYXBlVHlwZXMpO1xuICAgICAgZm9yICh2YXIga2V5IGluIGFsbEtleXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcbiAgICAgICAgICAgICdcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXG4gICAgICAgICAgICAnXFxuVmFsaWQga2V5czogJyArICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhzaGFwZVR5cGVzKSwgbnVsbCwgJyAgJylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gbnVsbCB8fCBpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVlKTtcbiAgICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHtcbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSB7XG4gICAgLy8gTmF0aXZlIFN5bWJvbC5cbiAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBmYWxzeSB2YWx1ZSBjYW4ndCBiZSBhIFN5bWJvbFxuICAgIGlmICghcHJvcFZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCdcbiAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJlIHBvbHlmaWxsZWQuXG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuXG4gIGZ1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkge1xuICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdhcnJheSc7XG4gICAgfVxuICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIE9sZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0aGVyIHRoYW5cbiAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuXG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdzeW1ib2wnO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gIC8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuICBmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJycgKyBwcm9wVmFsdWU7XG4gICAgfVxuICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgaWYgKHByb3BUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuICdkYXRlJztcbiAgICAgIH0gZWxzZSBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiAncmVnZXhwJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHBvc3RmaXhlZCB0byBhIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCB0eXBlLlxuICAvLyBGb3IgZXhhbXBsZSwgXCJ1bmRlZmluZWRcIiBvciBcIm9mIHR5cGUgYXJyYXlcIlxuICBmdW5jdGlvbiBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcodmFsdWUpIHtcbiAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiAnYW4gJyArIHR5cGU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAncmVnZXhwJzpcbiAgICAgICAgcmV0dXJuICdhICcgKyB0eXBlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJucyBjbGFzcyBuYW1lIG9mIHRoZSBvYmplY3QsIGlmIGFueS5cbiAgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHByb3BWYWx1ZSkge1xuICAgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xuICAgICAgcmV0dXJuIEFOT05ZTU9VUztcbiAgICB9XG4gICAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG5cbiAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBjaGVja1Byb3BUeXBlcztcbiAgUmVhY3RQcm9wVHlwZXMucmVzZXRXYXJuaW5nQ2FjaGUgPSBjaGVja1Byb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZTtcbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIlxuXG4vKjo6IHR5cGUgQXR0ciA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0gKi9cbi8qOjogdHlwZSBPcHRzID0geyBwcmVzZXJ2ZU51bWJlcnM6ID9ib29sZWFuIH0gKi9cblxuLypcblxuc3R5bGUtYXR0clxuPT09PVxuXG5WZXJ5IHNpbXBsZSBwYXJzaW5nIGFuZCBzdHJpbmdpZnlpbmcgb2Ygc3R5bGUgYXR0cmlidXRlcy5cblxuYHBhcnNlYFxuLS0tLVxuXG5Db252ZXJ0IGEgc3R5bGUgYXR0cmlidXRlIHN0cmluZyB0byBhbiBvYmplY3QuXG5cbiovXG5cbi8qOjogZGVjbGFyZSBmdW5jdGlvbiBwYXJzZSAocmF3OiBzdHJpbmcsIG9wdHM6ID9PcHRzKTogQXR0ciAqL1xuZnVuY3Rpb24gcGFyc2UocmF3LCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuXG4gIHZhciBwcmVzZXJ2ZU51bWJlcnMgPSBvcHRzLnByZXNlcnZlTnVtYmVycztcbiAgdmFyIHRyaW0gPSBmdW5jdGlvbiAocykge1xuICAgIHJldHVybiBzLnRyaW0oKTtcbiAgfTtcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGdldEtleVZhbHVlQ2h1bmtzKHJhdykubWFwKHRyaW0pLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgLy8gc3BsaXQgd2l0aCBgLmluZGV4T2ZgIHJhdGhlciB0aGFuIGAuc3BsaXRgIGJlY2F1c2UgdGhlIHZhbHVlIG1heSBhbHNvIGNvbnRhaW4gY29sb25zLlxuICAgIHZhciBwb3MgPSBpdGVtLmluZGV4T2YoJzonKTtcbiAgICB2YXIga2V5ID0gaXRlbS5zdWJzdHIoMCwgcG9zKS50cmltKCk7XG4gICAgdmFyIHZhbCA9IGl0ZW0uc3Vic3RyKHBvcyArIDEpLnRyaW0oKTtcbiAgICBpZiAocHJlc2VydmVOdW1iZXJzICYmIGlzTnVtZXJpYyh2YWwpKSB7XG4gICAgICB2YWwgPSBOdW1iZXIodmFsKTtcbiAgICB9XG5cbiAgICBvYmpba2V5XSA9IHZhbDtcbiAgfSk7XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuLypcblxuYGlzTnVtZXJpY2Bcbi0tLS1cblxuQ2hlY2sgaWYgYSB2YWx1ZSBpcyBudW1lcmljLlxuVmlhOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTgzMDg0NC85MzI0XG5cbiovXG5cbi8qOjogZGVjbGFyZSBmdW5jdGlvbiBpc051bWVyaWMgKG46IGFueSk6IGJvb2xlYW4gKi9cblxuZnVuY3Rpb24gaXNOdW1lcmljKG4pIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KG4pKSAmJiBpc0Zpbml0ZShuKTtcbn1cblxuLypcblxuYGdldEtleVZhbHVlQ2h1bmtzYFxuLS0tLVxuXG5TcGxpdCBhIHN0cmluZyBpbnRvIGNodW5rcyBtYXRjaGluZyBgPGtleT46IDx2YWx1ZT5gXG5cbiovXG4vKjo6IGRlY2xhcmUgZnVuY3Rpb24gZ2V0S2V5VmFsdWVDaHVua3MgKHJhdzogc3RyaW5nKTogQXJyYXk8c3RyaW5nPiAqL1xuZnVuY3Rpb24gZ2V0S2V5VmFsdWVDaHVua3MocmF3KSB7XG4gIHZhciBjaHVua3MgPSBbXTtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBzZXAgPSAnOyc7XG4gIHZhciBoYXNVbmNsb3NlZFVybCA9IC91cmxcXChbXlxcKV0rJC87XG4gIHZhciBjaHVuayA9ICcnO1xuICB2YXIgbmV4dFNwbGl0O1xuICB3aGlsZSAob2Zmc2V0IDwgcmF3Lmxlbmd0aCkge1xuICAgIG5leHRTcGxpdCA9IHJhdy5pbmRleE9mKHNlcCwgb2Zmc2V0KTtcbiAgICBpZiAobmV4dFNwbGl0ID09PSAtMSkge1xuICAgICAgbmV4dFNwbGl0ID0gcmF3Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBjaHVuayArPSByYXcuc3Vic3RyaW5nKG9mZnNldCwgbmV4dFNwbGl0KTtcblxuICAgIC8vIGRhdGEgVVJJcyBjYW4gY29udGFpbiBzZW1pY29sb25zLCBzbyBtYWtlIHN1cmUgd2UgZ2V0IHRoZSB3aG9sZSB0aGluZ1xuICAgIGlmIChoYXNVbmNsb3NlZFVybC50ZXN0KGNodW5rKSkge1xuICAgICAgY2h1bmsgKz0gJzsnO1xuICAgICAgb2Zmc2V0ID0gbmV4dFNwbGl0ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICBjaHVuayA9ICcnO1xuICAgIG9mZnNldCA9IG5leHRTcGxpdCArIDE7XG4gIH1cblxuICByZXR1cm4gY2h1bmtzO1xufVxuXG4vKlxuXG5gc3RyaW5naWZ5YFxuLS0tLVxuXG5Db252ZXJ0IGFuIG9iamVjdCBpbnRvIGFuIGF0dHJpYnV0ZSBzdHJpbmdcblxuKi9cbi8qOjogZGVjbGFyZSBmdW5jdGlvbiBzdHJpbmdpZnkgKG9iajogQXR0cik6IHN0cmluZyAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5KG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkgKyAnOicgKyBvYmpba2V5XTtcbiAgfSkuam9pbignOycpO1xufVxuXG4vKlxuXG5gbm9ybWFsaXplYFxuLS0tLVxuXG5Ob3JtYWxpemUgYW4gYXR0cmlidXRlIHN0cmluZyAoZWcuIGNvbGxhcHNlIGR1cGxpY2F0ZXMpXG5cbiovXG4vKjo6IGRlY2xhcmUgZnVuY3Rpb24gbm9ybWFsaXplIChzdHI6IHN0cmluZywgb3B0czogP09wdHMpOiBzdHJpbmcgKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZShzdHIsIG9wdHMpIHtcbiAgcmV0dXJuIHN0cmluZ2lmeShwYXJzZShzdHIsIG9wdHMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbm1vZHVsZS5leHBvcnRzLnN0cmluZ2lmeSA9IHN0cmluZ2lmeTtcbm1vZHVsZS5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTsiLCIvKipcbiAqIGF0dHIgZml4IGZvciBvbGQgaWVcbiAqIEBhdXRob3IgeWltaW5naGVAZ21haWwuY29tXG4gKi9cbnZhciBSX0JPT0xFQU4gPSAvXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSxcbiAgUl9GT0NVU0FCTEUgPSAvXig/OmJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKSQvaSxcbiAgUl9DTElDS0FCTEUgPSAvXmEoPzpyZWEpPyQvaSxcbiAgUl9JTlZBTElEX0NIQVIgPSAvOnxeb24vO1xuXG52YXIgYXR0ckZpeCA9IHt9LFxuICBwcm9wRml4LFxuICBhdHRySG9va3MgPSB7XG4gICAgLy8gaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC9cbiAgICB0YWJpbmRleDoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgLy8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldFxuICAgICAgICB2YXIgYXR0cmlidXRlTm9kZSA9IGVsLmdldEF0dHJpYnV0ZU5vZGUoJ3RhYmluZGV4Jyk7XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVOb2RlICYmIGF0dHJpYnV0ZU5vZGUuc3BlY2lmaWVkID9cbiAgICAgICAgICBwYXJzZUludChhdHRyaWJ1dGVOb2RlLnZhbHVlLCAxMCkgOlxuICAgICAgICAgIFJfRk9DVVNBQkxFLnRlc3QoZWwubm9kZU5hbWUpIHx8XG4gICAgICAgICAgUl9DTElDS0FCTEUudGVzdChlbC5ub2RlTmFtZSkgJiYgZWwuaHJlZiA/XG4gICAgICAgICAgICAwIDpcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGJvb2xIb29rID0ge1xuICAgIGdldDogZnVuY3Rpb24gKGVsZW0sIG5hbWUpIHtcbiAgICAgIC8vIOi9rOWPkeWIsCBwcm9wIOaWueazlVxuICAgICAgcmV0dXJuIGVsZW1bcHJvcEZpeFtuYW1lXSB8fCBuYW1lXSA/XG4gICAgICAgIC8vIOagueaNriB3M2MgYXR0cmlidXRlICwgdHJ1ZSDml7bov5Tlm57lsZ7mgKflkI3lrZfnrKbkuLJcbiAgICAgICAgbmFtZS50b0xvd2VyQ2FzZSgpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuICAgIH1cbiAgfSxcbiAgYXR0ck5vZGVIb29rID0ge307XG5cbmF0dHJIb29rcy5zdHlsZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gZWwuc3R5bGUuY3NzVGV4dDtcbiAgfVxufTtcblxucHJvcEZpeCA9IHtcbiAgaGlkZWZvY3VzOiAnaGlkZUZvY3VzJyxcbiAgdGFiaW5kZXg6ICd0YWJJbmRleCcsXG4gIHJlYWRvbmx5OiAncmVhZE9ubHknLFxuICAnZm9yJzogJ2h0bWxGb3InLFxuICAnY2xhc3MnOiAnY2xhc3NOYW1lJyxcbiAgbWF4bGVuZ3RoOiAnbWF4TGVuZ3RoJyxcbiAgY2VsbHNwYWNpbmc6ICdjZWxsU3BhY2luZycsXG4gIGNlbGxwYWRkaW5nOiAnY2VsbFBhZGRpbmcnLFxuICByb3dzcGFuOiAncm93U3BhbicsXG4gIGNvbHNwYW46ICdjb2xTcGFuJyxcbiAgdXNlbWFwOiAndXNlTWFwJyxcbiAgZnJhbWVib3JkZXI6ICdmcmFtZUJvcmRlcicsXG4gIGNvbnRlbnRlZGl0YWJsZTogJ2NvbnRlbnRFZGl0YWJsZSdcbn07XG5cbnZhciB1YSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnID8gbmF2aWdhdG9yLnVzZXJBZ2VudCA6ICcnO1xudmFyIGRvYyA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IHt9O1xuXG5mdW5jdGlvbiBudW1iZXJpZnkocykge1xuICB2YXIgYyA9IDA7XG4gIC8vIGNvbnZlcnQgJzEuMi4zLjQnIHRvIDEuMjM0XG4gIHJldHVybiBwYXJzZUZsb2F0KHMucmVwbGFjZSgvXFwuL2csIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKGMrKyA9PT0gMCkgPyAnLicgOiAnJztcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBpZVZlcnNpb24oKSB7XG4gIHZhciBtLCB2O1xuICBpZiAoKG0gPSB1YS5tYXRjaCgvTVNJRSAoW147XSopfFRyaWRlbnQuKjsgcnYoPzpcXHN8Oik/KFswLTkuXSspLykpICYmXG4gICAgKHYgPSAobVsxXSB8fCBtWzJdKSkpIHtcbiAgICByZXR1cm4gZG9jLmRvY3VtZW50TW9kZSB8fCBudW1iZXJpZnkodik7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWl4KHMsIHQpIHtcbiAgZm9yICh2YXIgcCBpbiB0KSB7XG4gICAgc1twXSA9IHRbcF07XG4gIH1cbn1cblxuZnVuY3Rpb24gZWFjaChhcnIsIGZuKSB7XG4gIHZhciBpID0gMCwgbCA9IGFyci5sZW5ndGg7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGZuKGFycltpXSwgaSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbnZhciBpZSA9IGllVmVyc2lvbigpO1xuXG5pZiAoaWUgJiYgaWUgPCA4KSB7XG4gIGF0dHJIb29rcy5zdHlsZS5zZXQgPSBmdW5jdGlvbiAoZWwsIHZhbCkge1xuICAgIGVsLnN0eWxlLmNzc1RleHQgPSB2YWw7XG4gIH07XG5cbiAgLy8gZ2V0IGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIGF0dHJpYnV0ZSBub2RlIGZvciBpZVxuICBtaXgoYXR0ck5vZGVIb29rLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoZWxlbSwgbmFtZSkge1xuICAgICAgdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtcbiAgICAgIC8vIFJldHVybiB1bmRlZmluZWQgaWYgYXR0cmlidXRlIG5vZGUgc3BlY2lmaWVkIGJ5IHVzZXJcbiAgICAgIHJldHVybiByZXQgJiYgKFxuICAgICAgICAvLyBmaXggIzEwMFxuICAgICAgcmV0LnNwZWNpZmllZCB8fCByZXQubm9kZVZhbHVlKSA/XG4gICAgICAgIHJldC5ub2RlVmFsdWUgOlxuICAgICAgICB1bmRlZmluZWQ7XG4gICAgfVxuICB9KTtcblxuICAvLyBpZTYsNyDkuI3ljLrliIYgYXR0cmlidXRlIOS4jiBwcm9wZXJ0eVxuICBtaXgoYXR0ckZpeCwgcHJvcEZpeCk7XG5cbiAgLy8gaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC9cbiAgYXR0ckhvb2tzLnRhYkluZGV4ID0gYXR0ckhvb2tzLnRhYmluZGV4O1xuXG4gIC8vIOS4jeWFieaYryBocmVmLCBzcmMsIOi/mOaciSByb3dzcGFuIOetiemdniBtYXBwaW5nIOWxnuaAp++8jOS5n+mcgOimgeeUqOesrCAyIOS4quWPguaVsOadpeiOt+WPluWOn+Wni+WAvFxuICAvLyDms6jmhI8gY29sU3BhbiByb3dTcGFuIOW3sue7j+eUsSBwcm9wRml4IOi9rOS4uuWkp+WGmVxuICBlYWNoKFsnaHJlZicsICdzcmMnLCAnd2lkdGgnLCAnaGVpZ2h0JywgJ2NvbFNwYW4nLCAncm93U3BhbiddLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGF0dHJIb29rc1tuYW1lXSA9IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKGVsZW0pIHtcbiAgICAgICAgdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlKG5hbWUsIDIpO1xuICAgICAgICByZXR1cm4gcmV0ID09PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuXG4gIGF0dHJIb29rcy5wbGFjZWhvbGRlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uIChlbGVtLCBuYW1lKSB7XG4gICAgICByZXR1cm4gZWxlbVtuYW1lXSB8fCBhdHRyTm9kZUhvb2suZ2V0KGVsZW0sIG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cblxuaWYgKGllKSB7XG4gIHZhciBocmVmRml4ID0gYXR0ckhvb2tzLmhyZWYgPSBhdHRySG9va3MuaHJlZiB8fCB7fTtcbiAgaHJlZkZpeC5zZXQgPSBmdW5jdGlvbiAoZWwsIHZhbCwgbmFtZSkge1xuICAgIHZhciBjaGlsZE5vZGVzID0gZWwuY2hpbGROb2RlcyxcbiAgICAgIGIsXG4gICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgIGFsbFRleHQgPSBsZW4gPiAwO1xuICAgIGZvciAobGVuID0gbGVuIC0gMTsgbGVuID49IDA7IGxlbi0tKSB7XG4gICAgICBpZiAoY2hpbGROb2Rlc1tsZW5dLm5vZGVUeXBlICE9PSAzKSB7XG4gICAgICAgIGFsbFRleHQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWxsVGV4dCkge1xuICAgICAgYiA9IGVsLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpO1xuICAgICAgYi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQoYik7XG4gICAgfVxuICAgIGVsLnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbCk7XG4gICAgaWYgKGIpIHtcbiAgICAgIGVsLnJlbW92ZUNoaWxkKGIpO1xuICAgIH1cbiAgfTtcbn1cblxudmFyIFJFX1RSSU0gPSAvXltcXHNcXHhhMF0rfFtcXHNcXHhhMF0rJC9nLFxuICB0cmltID0gU3RyaW5nLnByb3RvdHlwZS50cmltO1xudmFyIFNQQUNFID0gJyAnO1xuXG52YXIgZ2V0RWxlbWVudHNCeVRhZ05hbWU7XG5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBjb250ZXh0KSB7XG4gIHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpO1xufTtcblxuaWYgKGRvYy5jcmVhdGVFbGVtZW50KSB7XG4gIHZhciBkaXYgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKSk7XG4gIGlmIChkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKS5sZW5ndGgpIHtcbiAgICBnZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBjb250ZXh0KSB7XG4gICAgICB2YXIgbm9kZXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLFxuICAgICAgICBuZWVkc0ZpbHRlciA9IG5hbWUgPT09ICcqJztcbiAgICAgIC8vIDxpbnB1dCBpZD0nbGVuZ3RoJz5cbiAgICAgIGlmIChuZWVkc0ZpbHRlciB8fCB0eXBlb2Ygbm9kZXMubGVuZ3RoICE9PSAnbnVtYmVyJykge1xuICAgICAgICB2YXIgcmV0ID0gW10sXG4gICAgICAgICAgaSA9IDAsXG4gICAgICAgICAgZWw7XG4gICAgICAgIHdoaWxlICgoZWwgPSBub2Rlc1tpKytdKSkge1xuICAgICAgICAgIGlmICghbmVlZHNGaWx0ZXIgfHwgZWwubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKGVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbnZhciBjb21wYXJlTm9kZU9yZGVyID0gKCdzb3VyY2VJbmRleCcgaW4gKGRvYyAmJiBkb2MuZG9jdW1lbnRFbGVtZW50IHx8IHt9KSkgPyBmdW5jdGlvbiAoYSwgYikge1xuICByZXR1cm4gYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG59IDogZnVuY3Rpb24gKGEsIGIpIHtcbiAgaWYgKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAtMSA6IDE7XG4gIH1cbiAgdmFyIGJpdCA9IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikgJiA0O1xuICByZXR1cm4gYml0ID8gLTEgOiAxO1xufTtcblxudmFyIHV0aWwgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaWU6IGllLFxuXG4gIHVuaXF1ZTogKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFzRHVwbGljYXRlLFxuICAgICAgYmFzZUhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cbiAgICAvLyBIZXJlIHdlIGNoZWNrIGlmIHRoZSBKYXZhU2NyaXB0IGVuZ2luZSBpcyB1c2luZyBzb21lIHNvcnQgb2ZcbiAgICAvLyBvcHRpbWl6YXRpb24gd2hlcmUgaXQgZG9lcyBub3QgYWx3YXlzIGNhbGwgb3VyIGNvbXBhcmlzb25cbiAgICAvLyBmdW5jdGlvbi4gSWYgdGhhdCBpcyB0aGUgY2FzZSwgZGlzY2FyZCB0aGUgaGFzRHVwbGljYXRlIHZhbHVlLlxuICAgIC8vIFRodXMgZmFyIHRoYXQgaW5jbHVkZXMgR29vZ2xlIENocm9tZS5cbiAgICBbMCwgMF0uc29ydChmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlSGFzRHVwbGljYXRlID0gZmFsc2U7XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHNvcnRPcmRlcihhLCBiKSB7XG4gICAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICBoYXNEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbXBhcmVOb2RlT3JkZXIoYSwgYik7XG4gICAgfVxuXG4gICAgLy8g5o6S5bqP5Y676YeNXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50cykge1xuICAgICAgaGFzRHVwbGljYXRlID0gYmFzZUhhc0R1cGxpY2F0ZTtcbiAgICAgIGVsZW1lbnRzLnNvcnQoc29ydE9yZGVyKTtcblxuICAgICAgaWYgKGhhc0R1cGxpY2F0ZSkge1xuICAgICAgICB2YXIgaSA9IDEsIGxlbiA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgICAgICBpZiAoZWxlbWVudHNbaV0gPT09IGVsZW1lbnRzW2kgLSAxXSkge1xuICAgICAgICAgICAgZWxlbWVudHMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgLS1sZW47XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9O1xuICB9KSgpLFxuXG4gIGdldEVsZW1lbnRzQnlUYWdOYW1lOiBnZXRFbGVtZW50c0J5VGFnTmFtZSxcblxuICBnZXRTaW1wbGVBdHRyOiBmdW5jdGlvbiAoZWwsIG5hbWUpIHtcbiAgICB2YXIgcmV0ID0gZWwgJiYgZWwuZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtcbiAgICBpZiAocmV0ICYmIHJldC5zcGVjaWZpZWQpIHtcbiAgICAgIHJldHVybiAndmFsdWUnIGluIHJldCA/IHJldC52YWx1ZSA6IHJldC5ub2RlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgY29udGFpbnM6IGllID8gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICBpZiAoYS5ub2RlVHlwZSA9PT0gOSkge1xuICAgICAgYSA9IGEuZG9jdW1lbnRFbGVtZW50O1xuICAgIH1cbiAgICAvLyAhYS5jb250YWlucyA9PiBhPT09ZG9jdW1lbnQgfHwgdGV4dFxuICAgIC8vIOazqOaEj+WOn+eUnyBjb250YWlucyDliKTmlq3ml7YgYT09PWIg5Lmf6L+U5ZueIHRydWVcbiAgICBiID0gYi5wYXJlbnROb2RlO1xuXG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIHdoZW4gYiBpcyBkb2N1bWVudCwgYS5jb250YWlucyhiKSDkuI3mlK/mjIHnmoTmjqXlj6MgaW4gaWVcbiAgICBpZiAoYiAmJiBiLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICByZXR1cm4gYS5jb250YWlucyAmJiBhLmNvbnRhaW5zKGIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IDogZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSAmIDE2KTtcbiAgfSxcblxuICBpc1RhZzogZnVuY3Rpb24gKGVsLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJyonIHx8IGVsLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gIH0sXG5cbiAgaGFzU2luZ2xlQ2xhc3M6IGZ1bmN0aW9uIChlbCwgY2xzKSB7XG4gICAgLy8gY29uc2lkZXIgeG1sXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2tpc3N5dGVhbS9raXNzeS9pc3N1ZXMvNTMyXG4gICAgdmFyIGNsYXNzTmFtZSA9IGVsICYmIHV0aWwuZ2V0U2ltcGxlQXR0cihlbCwgJ2NsYXNzJyk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZSAmJiAoY2xhc3NOYW1lID0gY2xhc3NOYW1lLnJlcGxhY2UoL1tcXHJcXHRcXG5dL2csIFNQQUNFKSkgJiZcbiAgICAgIChTUEFDRSArIGNsYXNzTmFtZSArIFNQQUNFKS5pbmRleE9mKFNQQUNFICsgY2xzICsgU1BBQ0UpID4gLTE7XG4gIH0sXG5cbiAgc3RhcnRzV2l0aDogZnVuY3Rpb24gKHN0ciwgcHJlZml4KSB7XG4gICAgcmV0dXJuIHN0ci5sYXN0SW5kZXhPZihwcmVmaXgsIDApID09PSAwO1xuICB9LFxuXG4gIGVuZHNXaXRoOiBmdW5jdGlvbiAoc3RyLCBzdWZmaXgpIHtcbiAgICB2YXIgaW5kID0gc3RyLmxlbmd0aCAtIHN1ZmZpeC5sZW5ndGg7XG4gICAgcmV0dXJuIGluZCA+PSAwICYmIHN0ci5pbmRleE9mKHN1ZmZpeCwgaW5kKSA9PT0gaW5kO1xuICB9LFxuXG4gIHRyaW06IHRyaW0gP1xuICAgIGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIgPT0gbnVsbCA/ICcnIDogdHJpbS5jYWxsKHN0cik7XG4gICAgfSA6XG4gICAgZnVuY3Rpb24gKHN0cikge1xuICAgICAgcmV0dXJuIHN0ciA9PSBudWxsID8gJycgOiAoc3RyICsgJycpLnJlcGxhY2UoUkVfVFJJTSwgJycpO1xuICAgIH0sXG5cbiAgYXR0cjogZnVuY3Rpb24gKGVsLCBuYW1lKSB7XG4gICAgdmFyIGF0dHJOb3JtYWxpemVyLCByZXQ7XG4gICAgLy8gc2Nyb2xsTGVmdFxuICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgLy8gY3VzdG9tIGF0dHJzXG4gICAgbmFtZSA9IGF0dHJGaXhbbmFtZV0gfHwgbmFtZTtcbiAgICBpZiAoUl9CT09MRUFOLnRlc3QobmFtZSkpIHtcbiAgICAgIGF0dHJOb3JtYWxpemVyID0gYm9vbEhvb2s7XG4gICAgfSBlbHNlIGlmIChSX0lOVkFMSURfQ0hBUi50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBvbmx5IG9sZCBpZT9cbiAgICAgIGF0dHJOb3JtYWxpemVyID0gYXR0ck5vZGVIb29rO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRyTm9ybWFsaXplciA9IGF0dHJIb29rc1tuYW1lXTtcbiAgICB9XG4gICAgaWYgKGVsICYmIGVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAvLyBicm93c2VycyBpbmRleCBlbGVtZW50cyBieSBpZC9uYW1lIG9uIGZvcm1zLCBnaXZlIHByaW9yaXR5IHRvIGF0dHJpYnV0ZXMuXG4gICAgICBpZiAoZWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICAgIGF0dHJOb3JtYWxpemVyID0gYXR0ck5vZGVIb29rO1xuICAgICAgfVxuICAgICAgaWYgKGF0dHJOb3JtYWxpemVyICYmIGF0dHJOb3JtYWxpemVyLmdldCkge1xuICAgICAgICByZXR1cm4gYXR0ck5vcm1hbGl6ZXIuZ2V0KGVsLCBuYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldCA9IGVsLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIGlmIChyZXQgPT09ICcnKSB7XG4gICAgICAgIHZhciBhdHRyTm9kZSA9IGVsLmdldEF0dHJpYnV0ZU5vZGUobmFtZSk7XG4gICAgICAgIGlmICghYXR0ck5vZGUgfHwgIWF0dHJOb2RlLnNwZWNpZmllZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHN0YW5kYXJkIGJyb3dzZXIgbm9uLWV4aXN0aW5nIGF0dHJpYnV0ZSByZXR1cm4gbnVsbFxuICAgICAgLy8gaWU8OCB3aWxsIHJldHVybiB1bmRlZmluZWQgLCBiZWNhdXNlIGl0IHJldHVybiBwcm9wZXJ0eVxuICAgICAgLy8gc28gbm9ybSB0byB1bmRlZmluZWRcbiAgICAgIHJldHVybiByZXQgPT09IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7XG4gICAgfVxuICB9XG59OyIsIi8qXG4gIEdlbmVyYXRlZCBieSBraXNvbi4qL1xudmFyIHBhcnNlciA9IChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG4gICAgLypqc2hpbnQgcXVvdG1hcms6ZmFsc2UsIGxvb3BmdW5jOnRydWUsIGluZGVudDpmYWxzZSwgdW51c2VkOmZhbHNlLCBhc2k6dHJ1ZSwgYm9zczp0cnVlKi9cbiAgICAvKiBHZW5lcmF0ZWQgYnkga2lzb24gKi9cbiAgICB2YXIgcGFyc2VyID0ge30sXG4gICAgICAgIEdyYW1tYXJDb25zdCA9IHtcbiAgICAgICAgICAgICdTSElGVF9UWVBFJzogMSxcbiAgICAgICAgICAgICdSRURVQ0VfVFlQRSc6IDIsXG4gICAgICAgICAgICAnQUNDRVBUX1RZUEUnOiAwLFxuICAgICAgICAgICAgJ1RZUEVfSU5ERVgnOiAwLFxuICAgICAgICAgICAgJ1BST0RVQ1RJT05fSU5ERVgnOiAxLFxuICAgICAgICAgICAgJ1RPX0lOREVYJzogMlxuICAgICAgICB9O1xuICAgIC8qanNsaW50IHF1b3RtYXJrOiBmYWxzZSovXG4gICAgZnVuY3Rpb24gbWl4KHRvLCBmcm9tKSB7XG4gICAgICAgIGZvciAodmFyIGYgaW4gZnJvbSkge1xuICAgICAgICAgICAgdG9bZl0gPSBmcm9tW2ZdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICAgICAgcmV0dXJuICdbb2JqZWN0IEFycmF5XScgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVhY2gob2JqZWN0LCBmbiwgY29udGV4dCkge1xuICAgICAgICBpZiAob2JqZWN0KSB7XG4gICAgICAgICAgICB2YXIga2V5LFxuICAgICAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgICAgICAgaSA9IDA7XG5cbiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghaXNBcnJheShvYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbiBub3QgdXNlIGhhc093blByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChmbi5jYWxsKGNvbnRleHQsIG9iamVjdFtrZXldLCBrZXksIG9iamVjdCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhbCA9IG9iamVjdFswXTsgaSA8IGxlbmd0aDsgdmFsID0gb2JqZWN0WysraV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZuLmNhbGwoY29udGV4dCwgdmFsLCBpLCBvYmplY3QpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbkFycmF5KGl0ZW0sIGFycikge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhcnJbaV0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBMZXhlciA9IGZ1bmN0aW9uIExleGVyKGNmZykge1xuXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgICAvKlxuICAgICBsZXggcnVsZXMuXG4gICAgIEB0eXBlIHtPYmplY3RbXX1cbiAgICAgQGV4YW1wbGVcbiAgICAgW1xuICAgICB7XG4gICAgIHJlZ2V4cDonXFxcXHcrJyxcbiAgICAgc3RhdGU6Wyd4eCddLFxuICAgICB0b2tlbjonYycsXG4gICAgIC8vIHRoaXMgPT4gbGV4XG4gICAgIGFjdGlvbjpmdW5jdGlvbigpe31cbiAgICAgfVxuICAgICBdXG4gICAgICovXG4gICAgICAgIHNlbGYucnVsZXMgPSBbXTtcblxuICAgICAgICBtaXgoc2VsZiwgY2ZnKTtcblxuICAgICAgICAvKlxuICAgICBJbnB1dCBsYW5ndWFnZXNcbiAgICAgQHR5cGUge1N0cmluZ31cbiAgICAgKi9cblxuICAgICAgICBzZWxmLnJlc2V0SW5wdXQoc2VsZi5pbnB1dCk7XG4gICAgfTtcbiAgICBMZXhlci5wcm90b3R5cGUgPSB7XG4gICAgICAgICdyZXNldElucHV0JzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICBtaXgodGhpcywge1xuICAgICAgICAgICAgICAgIGlucHV0OiBpbnB1dCxcbiAgICAgICAgICAgICAgICBtYXRjaGVkOiAnJyxcbiAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrOiBbTGV4ZXIuU1RBVElDLklOSVRJQUxdLFxuICAgICAgICAgICAgICAgIG1hdGNoOiAnJyxcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICBmaXJzdExpbmU6IDEsXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogMSxcbiAgICAgICAgICAgICAgICBsYXN0TGluZTogMSxcbiAgICAgICAgICAgICAgICBmaXJzdENvbHVtbjogMSxcbiAgICAgICAgICAgICAgICBsYXN0Q29sdW1uOiAxXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgJ2dldEN1cnJlbnRSdWxlcyc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBzZWxmLnN0YXRlU3RhY2tbc2VsZi5zdGF0ZVN0YWNrLmxlbmd0aCAtIDFdLFxuICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0lGXG4gICAgICAgICAgICBpZiAoc2VsZi5tYXBTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IHNlbGYubWFwU3RhdGUoY3VycmVudFN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVhY2goc2VsZi5ydWxlcywgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSByLnN0YXRlIHx8IHJbM107XG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0YXRlID09PSBMZXhlci5TVEFUSUMuSU5JVElBTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5BcnJheShjdXJyZW50U3RhdGUsIHN0YXRlKSkge1xuICAgICAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgICAgICB9LFxuICAgICAgICAncHVzaFN0YXRlJzogZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgICdwb3BTdGF0ZSc6IGZ1bmN0aW9uIChudW0pIHtcbiAgICAgICAgICAgIG51bSA9IG51bSB8fCAxO1xuICAgICAgICAgICAgdmFyIHJldDtcbiAgICAgICAgICAgIHdoaWxlIChudW0tLSkge1xuICAgICAgICAgICAgICAgIHJldCA9IHRoaXMuc3RhdGVTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0sXG4gICAgICAgICdzaG93RGVidWdJbmZvJzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgICAgIERFQlVHX0NPTlRFWFRfTElNSVQgPSBMZXhlci5TVEFUSUMuREVCVUdfQ09OVEVYVF9MSU1JVCxcbiAgICAgICAgICAgICAgICBtYXRjaGVkID0gc2VsZi5tYXRjaGVkLFxuICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5tYXRjaCxcbiAgICAgICAgICAgICAgICBpbnB1dCA9IHNlbGYuaW5wdXQ7XG4gICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2hlZC5zbGljZSgwLCBtYXRjaGVkLmxlbmd0aCAtIG1hdGNoLmxlbmd0aCk7XG4gICAgICAgICAgICAvLyNKU0NPVkVSQUdFX0lGIDBcbiAgICAgICAgICAgIHZhciBwYXN0ID0gKG1hdGNoZWQubGVuZ3RoID4gREVCVUdfQ09OVEVYVF9MSU1JVCA/ICcuLi4nIDogJycpICtcbiAgICAgICAgICAgICAgICBtYXRjaGVkLnNsaWNlKDAgLSBERUJVR19DT05URVhUX0xJTUlUKS5yZXBsYWNlKC9cXG4vLCAnICcpLFxuICAgICAgICAgICAgICAgIG5leHQgPSBtYXRjaCArIGlucHV0O1xuICAgICAgICAgICAgLy8jSlNDT1ZFUkFHRV9FTkRJRlxuICAgICAgICAgICAgbmV4dCA9IG5leHQuc2xpY2UoMCwgREVCVUdfQ09OVEVYVF9MSU1JVCkgK1xuICAgICAgICAgICAgICAgIChuZXh0Lmxlbmd0aCA+IERFQlVHX0NPTlRFWFRfTElNSVQgPyAnLi4uJyA6ICcnKTtcbiAgICAgICAgICAgIHJldHVybiBwYXN0ICsgbmV4dCArICdcXG4nICsgbmV3IEFycmF5KHBhc3QubGVuZ3RoICsgMSkuam9pbignLScpICsgJ14nO1xuICAgICAgICB9LFxuICAgICAgICAnbWFwU3ltYm9sJzogZnVuY3Rpb24gbWFwU3ltYm9sRm9yQ29kZUdlbih0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zeW1ib2xNYXBbdF07XG4gICAgICAgIH0sXG4gICAgICAgICdtYXBSZXZlcnNlU3ltYm9sJzogZnVuY3Rpb24gKHJzKSB7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgICAgICAgICAgc3ltYm9sTWFwID0gc2VsZi5zeW1ib2xNYXAsXG4gICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICByZXZlcnNlU3ltYm9sTWFwID0gc2VsZi5yZXZlcnNlU3ltYm9sTWFwO1xuICAgICAgICAgICAgaWYgKCFyZXZlcnNlU3ltYm9sTWFwICYmIHN5bWJvbE1hcCkge1xuICAgICAgICAgICAgICAgIHJldmVyc2VTeW1ib2xNYXAgPSBzZWxmLnJldmVyc2VTeW1ib2xNYXAgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gc3ltYm9sTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmVyc2VTeW1ib2xNYXBbc3ltYm9sTWFwW2ldXSA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8jSlNDT1ZFUkFHRV9JRlxuICAgICAgICAgICAgaWYgKHJldmVyc2VTeW1ib2xNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV2ZXJzZVN5bWJvbE1hcFtyc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ2xleCc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgICAgICAgICBpbnB1dCA9IHNlbGYuaW5wdXQsXG4gICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICBydWxlLFxuICAgICAgICAgICAgICAgIG0sXG4gICAgICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAgICAgIGxpbmVzLFxuICAgICAgICAgICAgICAgIHJ1bGVzID0gc2VsZi5nZXRDdXJyZW50UnVsZXMoKTtcblxuICAgICAgICAgICAgc2VsZi5tYXRjaCA9IHNlbGYudGV4dCA9ICcnO1xuXG4gICAgICAgICAgICBpZiAoIWlucHV0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWFwU3ltYm9sKExleGVyLlNUQVRJQy5FTkRfVEFHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcnVsZSA9IHJ1bGVzW2ldO1xuICAgICAgICAgICAgICAgIC8vI0pTQ09WRVJBR0VfSUYgMFxuICAgICAgICAgICAgICAgIHZhciByZWdleHAgPSBydWxlLnJlZ2V4cCB8fCBydWxlWzFdLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHJ1bGUudG9rZW4gfHwgcnVsZVswXSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gcnVsZS5hY3Rpb24gfHwgcnVsZVsyXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgLy8jSlNDT1ZFUkFHRV9FTkRJRlxuICAgICAgICAgICAgICAgIGlmICgobSA9IGlucHV0Lm1hdGNoKHJlZ2V4cCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbVswXS5tYXRjaCgvXFxuLiovZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lTnVtYmVyICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtaXgoc2VsZiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lOiBzZWxmLmxhc3RMaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdExpbmU6IHNlbGYubGluZU51bWJlciArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENvbHVtbjogc2VsZi5sYXN0Q29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIDEgOiBzZWxmLmxhc3RDb2x1bW4gKyBtWzBdLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZXJyb3IgcmVwb3J0XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5tYXRjaCA9IG1bMF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG1hdGNoZXNcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzID0gbTtcbiAgICAgICAgICAgICAgICAgICAgLy8gbWF5IGNoYW5nZSBieSB1c2VyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYudGV4dCA9IG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGVkIGNvbnRlbnQgdXRpbHMgbm93XG4gICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2hlZCArPSBtYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgcmV0ID0gYWN0aW9uICYmIGFjdGlvbi5jYWxsKHNlbGYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc2VsZi5tYXBTeW1ib2wocmV0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKG1hdGNoLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQgPSBpbnB1dDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgTGV4ZXIuU1RBVElDID0ge1xuICAgICAgICAnSU5JVElBTCc6ICdJJyxcbiAgICAgICAgJ0RFQlVHX0NPTlRFWFRfTElNSVQnOiAyMCxcbiAgICAgICAgJ0VORF9UQUcnOiAnJEVPRidcbiAgICB9O1xuICAgIHZhciBsZXhlciA9IG5ldyBMZXhlcih7XG4gICAgICAgICdydWxlcyc6IFtcbiAgICAgICAgICAgIFsnYicsIC9eXFxbKD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2MnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcXS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydkJywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKil+PSg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydlJywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKilcXHw9KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2YnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcXj0oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnZycsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFwkPSg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydoJywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKilcXCo9KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ2knLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcPSg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydqJywgL14oPzooPzpbXFx3XXxbXlxceDAwLVxceGEwXXwoPzpcXFxcW15cXG5cXHJcXGYwLTlhLWZdKSkoPzpbXFx3XFxkLV18W15cXHgwMC1cXHhhMF18KD86XFxcXFteXFxuXFxyXFxmMC05YS1mXSkpKilcXCgvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCkuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZSgnZm4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydrJywgL15bXlxcKV0qLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFsnZm4nXVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnbCcsIC9eKD86W1xcdFxcclxcblxcZlxceDIwXSopXFwpLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ20nLCAvXjpub3RcXCgoPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvaSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ24nLCAvXig/Oig/OltcXHddfFteXFx4MDAtXFx4YTBdfCg/OlxcXFxbXlxcblxcclxcZjAtOWEtZl0pKSg/OltcXHdcXGQtXXxbXlxceDAwLVxceGEwXXwoPzpcXFxcW15cXG5cXHJcXGYwLTlhLWZdKSkqKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnVuRXNjYXBlKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnbycsIC9eXCIoXFxcXFwifFteXCJdKSpcIi8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnVuRXNjYXBlU3RyKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsnbycsIC9eJyhcXFxcJ3xbXiddKSonLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudW5Fc2NhcGVTdHIodGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydwJywgL14jKD86KD86W1xcd1xcZC1dfFteXFx4MDAtXFx4YTBdfCg/OlxcXFxbXlxcblxcclxcZjAtOWEtZl0pKSspLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudW5Fc2NhcGUodGhpcy50ZXh0LnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWydxJywgL15cXC4oPzooPzpbXFx3XXxbXlxceDAwLVxceGEwXXwoPzpcXFxcW15cXG5cXHJcXGYwLTlhLWZdKSkoPzpbXFx3XFxkLV18W15cXHgwMC1cXHhhMF18KD86XFxcXFteXFxuXFxyXFxmMC05YS1mXSkpKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS51bkVzY2FwZSh0aGlzLnRleHQuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ3InLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKSwoPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsncycsIC9eOjo/LywgMF0sXG4gICAgICAgICAgICBbJ3QnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKVxcKyg/OltcXHRcXHJcXG5cXGZcXHgyMF0qKS8sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPSB0aGlzLnl5LnRyaW0odGhpcy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWyd1JywgL14oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKik+KD86W1xcdFxcclxcblxcZlxceDIwXSopLyxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMueXkudHJpbSh0aGlzLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbJ3YnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0qKX4oPzpbXFx0XFxyXFxuXFxmXFx4MjBdKikvLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy55eS50cmltKHRoaXMudGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsndycsIC9eXFwqLywgMF0sXG4gICAgICAgICAgICBbJ3gnLCAvXig/OltcXHRcXHJcXG5cXGZcXHgyMF0rKS8sIDBdLFxuICAgICAgICAgICAgWyd5JywgL14uLywgMF1cbiAgICAgICAgXVxuICAgIH0pO1xuICAgIHBhcnNlci5sZXhlciA9IGxleGVyO1xuICAgIGxleGVyLnN5bWJvbE1hcCA9IHtcbiAgICAgICAgJyRFT0YnOiAnYScsXG4gICAgICAgICdMRUZUX0JSQUNLRVQnOiAnYicsXG4gICAgICAgICdSSUdIVF9CUkFDS0VUJzogJ2MnLFxuICAgICAgICAnSU5DTFVERVMnOiAnZCcsXG4gICAgICAgICdEQVNIX01BVENIJzogJ2UnLFxuICAgICAgICAnUFJFRklYX01BVENIJzogJ2YnLFxuICAgICAgICAnU1VGRklYX01BVENIJzogJ2cnLFxuICAgICAgICAnU1VCU1RSSU5HX01BVENIJzogJ2gnLFxuICAgICAgICAnQUxMX01BVENIJzogJ2knLFxuICAgICAgICAnRlVOQ1RJT04nOiAnaicsXG4gICAgICAgICdQQVJBTUVURVInOiAnaycsXG4gICAgICAgICdSSUdIVF9QQVJFTlRIRVNFUyc6ICdsJyxcbiAgICAgICAgJ05PVCc6ICdtJyxcbiAgICAgICAgJ0lERU5UJzogJ24nLFxuICAgICAgICAnU1RSSU5HJzogJ28nLFxuICAgICAgICAnSEFTSCc6ICdwJyxcbiAgICAgICAgJ0NMQVNTJzogJ3EnLFxuICAgICAgICAnQ09NTUEnOiAncicsXG4gICAgICAgICdDT0xPTic6ICdzJyxcbiAgICAgICAgJ1BMVVMnOiAndCcsXG4gICAgICAgICdHUkVBVEVSJzogJ3UnLFxuICAgICAgICAnVElMREUnOiAndicsXG4gICAgICAgICdVTklWRVJTQUwnOiAndycsXG4gICAgICAgICdTJzogJ3gnLFxuICAgICAgICAnSU5WQUxJRCc6ICd5JyxcbiAgICAgICAgJyRTVEFSVCc6ICd6JyxcbiAgICAgICAgJ3NlbGVjdG9yc19ncm91cCc6ICdhYScsXG4gICAgICAgICdzZWxlY3Rvcic6ICdhYicsXG4gICAgICAgICdzaW1wbGVfc2VsZWN0b3Jfc2VxdWVuY2UnOiAnYWMnLFxuICAgICAgICAnY29tYmluYXRvcic6ICdhZCcsXG4gICAgICAgICd0eXBlX3NlbGVjdG9yJzogJ2FlJyxcbiAgICAgICAgJ2lkX3NlbGVjdG9yJzogJ2FmJyxcbiAgICAgICAgJ2NsYXNzX3NlbGVjdG9yJzogJ2FnJyxcbiAgICAgICAgJ2F0dHJpYl9tYXRjaCc6ICdhaCcsXG4gICAgICAgICdhdHRyaWInOiAnYWknLFxuICAgICAgICAnYXR0cmliX3ZhbCc6ICdhaicsXG4gICAgICAgICdwc2V1ZG8nOiAnYWsnLFxuICAgICAgICAnbmVnYXRpb24nOiAnYWwnLFxuICAgICAgICAnbmVnYXRpb25fYXJnJzogJ2FtJyxcbiAgICAgICAgJ3N1ZmZpeF9zZWxlY3Rvcic6ICdhbicsXG4gICAgICAgICdzdWZmaXhfc2VsZWN0b3JzJzogJ2FvJ1xuICAgIH07XG4gICAgcGFyc2VyLnByb2R1Y3Rpb25zID0gW1xuICAgICAgICBbJ3onLCBbJ2FhJ11dLFxuICAgICAgICBbJ2FhJywgWydhYiddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy4kMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWEnLCBbJ2FhJywgJ3InLCAnYWInXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiQxLnB1c2godGhpcy4kMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWInLCBbJ2FjJ11dLFxuICAgICAgICBbJ2FiJywgWydhYicsICdhZCcsICdhYyddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIExpbmtlZExpc3RcblxuICAgICAgICAgICAgICAgIHRoaXMuJDEubmV4dENvbWJpbmF0b3IgPSB0aGlzLiQzLnByZXZDb21iaW5hdG9yID0gdGhpcy4kMjtcbiAgICAgICAgICAgICAgICB2YXIgb3JkZXI7XG4gICAgICAgICAgICAgICAgb3JkZXIgPSB0aGlzLiQxLm9yZGVyID0gdGhpcy4kMS5vcmRlciB8fCAwO1xuICAgICAgICAgICAgICAgIHRoaXMuJDMub3JkZXIgPSBvcmRlciArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy4kMy5wcmV2ID0gdGhpcy4kMTtcbiAgICAgICAgICAgICAgICB0aGlzLiQxLm5leHQgPSB0aGlzLiQzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiQzO1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FkJywgWyd0J11dLFxuICAgICAgICBbJ2FkJywgWyd1J11dLFxuICAgICAgICBbJ2FkJywgWyd2J11dLFxuICAgICAgICBbJ2FkJywgWyd4J10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhZScsIFsnbiddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHQ6ICd0YWcnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy4kMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWUnLCBbJ3cnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAndGFnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuJDFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FmJywgWydwJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuJDFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FnJywgWydxJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ2NscycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLiQxXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhaCcsIFsnZiddXSxcbiAgICAgICAgWydhaCcsIFsnZyddXSxcbiAgICAgICAgWydhaCcsIFsnaCddXSxcbiAgICAgICAgWydhaCcsIFsnaSddXSxcbiAgICAgICAgWydhaCcsIFsnZCddXSxcbiAgICAgICAgWydhaCcsIFsnZSddXSxcbiAgICAgICAgWydhaScsIFsnYicsICduJywgJ2MnXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0OiAnYXR0cmliJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50OiB0aGlzLiQyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FqJywgWyduJ11dLFxuICAgICAgICBbJ2FqJywgWydvJ11dLFxuICAgICAgICBbJ2FpJywgWydiJywgJ24nLCAnYWgnLCAnYWonLCAnYyddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHQ6ICdhdHRyaWInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQ6IHRoaXMuJDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDogdGhpcy4kMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLiQ0XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbJ2FrJywgWydzJywgJ2onLCAnaycsICdsJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ3BzZXVkbycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbjogdGhpcy4kMi50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW06IHRoaXMuJDNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWsnLCBbJ3MnLCAnbiddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHQ6ICdwc2V1ZG8nLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQ6IHRoaXMuJDIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhbCcsIFsnbScsICdhbScsICdsJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ3BzZXVkbycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbjogJ25vdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbTogdGhpcy4kMlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhbScsIFsnYWUnXV0sXG4gICAgICAgIFsnYW0nLCBbJ2FmJ11dLFxuICAgICAgICBbJ2FtJywgWydhZyddXSxcbiAgICAgICAgWydhbScsIFsnYWknXV0sXG4gICAgICAgIFsnYW0nLCBbJ2FrJ11dLFxuICAgICAgICBbJ2FuJywgWydhZiddXSxcbiAgICAgICAgWydhbicsIFsnYWcnXV0sXG4gICAgICAgIFsnYW4nLCBbJ2FpJ11dLFxuICAgICAgICBbJ2FuJywgWydhayddXSxcbiAgICAgICAgWydhbicsIFsnYWwnXV0sXG4gICAgICAgIFsnYW8nLCBbJ2FuJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLiQxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgWydhbycsIFsnYW8nLCAnYW4nXSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiQxLnB1c2godGhpcy4kMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWMnLCBbJ2FlJ11dLFxuICAgICAgICBbJ2FjJywgWydhbyddLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogdGhpcy4kMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFsnYWMnLCBbJ2FlJywgJ2FvJ10sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdDogJ3RhZycsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLiQxLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBzdWZmaXg6IHRoaXMuJDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgXTtcbiAgICBwYXJzZXIudGFibGUgPSB7XG4gICAgICAgICdnb3Rvcyc6IHtcbiAgICAgICAgICAgICcwJzoge1xuICAgICAgICAgICAgICAgICdhYSc6IDgsXG4gICAgICAgICAgICAgICAgJ2FiJzogOSxcbiAgICAgICAgICAgICAgICAnYWUnOiAxMCxcbiAgICAgICAgICAgICAgICAnYWYnOiAxMSxcbiAgICAgICAgICAgICAgICAnYWcnOiAxMixcbiAgICAgICAgICAgICAgICAnYWknOiAxMyxcbiAgICAgICAgICAgICAgICAnYWsnOiAxNCxcbiAgICAgICAgICAgICAgICAnYWwnOiAxNSxcbiAgICAgICAgICAgICAgICAnYW4nOiAxNixcbiAgICAgICAgICAgICAgICAnYW8nOiAxNyxcbiAgICAgICAgICAgICAgICAnYWMnOiAxOFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyJzoge1xuICAgICAgICAgICAgICAgICdhZSc6IDIwLFxuICAgICAgICAgICAgICAgICdhZic6IDIxLFxuICAgICAgICAgICAgICAgICdhZyc6IDIyLFxuICAgICAgICAgICAgICAgICdhaSc6IDIzLFxuICAgICAgICAgICAgICAgICdhayc6IDI0LFxuICAgICAgICAgICAgICAgICdhbSc6IDI1XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzknOiB7XG4gICAgICAgICAgICAgICAgJ2FkJzogMzNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTAnOiB7XG4gICAgICAgICAgICAgICAgJ2FmJzogMTEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMTIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMTMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMTQsXG4gICAgICAgICAgICAgICAgJ2FsJzogMTUsXG4gICAgICAgICAgICAgICAgJ2FuJzogMTYsXG4gICAgICAgICAgICAgICAgJ2FvJzogMzRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTcnOiB7XG4gICAgICAgICAgICAgICAgJ2FmJzogMTEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMTIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMTMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMTQsXG4gICAgICAgICAgICAgICAgJ2FsJzogMTUsXG4gICAgICAgICAgICAgICAgJ2FuJzogMzVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTknOiB7XG4gICAgICAgICAgICAgICAgJ2FoJzogNDNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjgnOiB7XG4gICAgICAgICAgICAgICAgJ2FiJzogNDYsXG4gICAgICAgICAgICAgICAgJ2FlJzogMTAsXG4gICAgICAgICAgICAgICAgJ2FmJzogMTEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMTIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMTMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMTQsXG4gICAgICAgICAgICAgICAgJ2FsJzogMTUsXG4gICAgICAgICAgICAgICAgJ2FuJzogMTYsXG4gICAgICAgICAgICAgICAgJ2FvJzogMTcsXG4gICAgICAgICAgICAgICAgJ2FjJzogMThcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzMnOiB7XG4gICAgICAgICAgICAgICAgJ2FlJzogMTAsXG4gICAgICAgICAgICAgICAgJ2FmJzogMTEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMTIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMTMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMTQsXG4gICAgICAgICAgICAgICAgJ2FsJzogMTUsXG4gICAgICAgICAgICAgICAgJ2FuJzogMTYsXG4gICAgICAgICAgICAgICAgJ2FvJzogMTcsXG4gICAgICAgICAgICAgICAgJ2FjJzogNDdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzQnOiB7XG4gICAgICAgICAgICAgICAgJ2FmJzogMTEsXG4gICAgICAgICAgICAgICAgJ2FnJzogMTIsXG4gICAgICAgICAgICAgICAgJ2FpJzogMTMsXG4gICAgICAgICAgICAgICAgJ2FrJzogMTQsXG4gICAgICAgICAgICAgICAgJ2FsJzogMTUsXG4gICAgICAgICAgICAgICAgJ2FuJzogMzVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDMnOiB7XG4gICAgICAgICAgICAgICAgJ2FqJzogNTBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDYnOiB7XG4gICAgICAgICAgICAgICAgJ2FkJzogMzNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ2FjdGlvbic6IHtcbiAgICAgICAgICAgICcwJzoge1xuICAgICAgICAgICAgICAgICdiJzogWzEsIHVuZGVmaW5lZCwgMV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMSwgdW5kZWZpbmVkLCAyXSxcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDNdLFxuICAgICAgICAgICAgICAgICdwJzogWzEsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMSwgdW5kZWZpbmVkLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsxLCB1bmRlZmluZWQsIDZdLFxuICAgICAgICAgICAgICAgICd3JzogWzEsIHVuZGVmaW5lZCwgN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMSc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDE5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyJzoge1xuICAgICAgICAgICAgICAgICdiJzogWzEsIHVuZGVmaW5lZCwgMV0sXG4gICAgICAgICAgICAgICAgJ24nOiBbMSwgdW5kZWZpbmVkLCAzXSxcbiAgICAgICAgICAgICAgICAncCc6IFsxLCB1bmRlZmluZWQsIDRdLFxuICAgICAgICAgICAgICAgICdxJzogWzEsIHVuZGVmaW5lZCwgNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMSwgdW5kZWZpbmVkLCA2XSxcbiAgICAgICAgICAgICAgICAndyc6IFsxLCB1bmRlZmluZWQsIDddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzMnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgOV0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgOV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNCc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDExXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAxMV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMTFdLFxuICAgICAgICAgICAgICAgICdsJzogWzIsIDExXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc1Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMTJdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDEyXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAxMl0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMTJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzYnOiB7XG4gICAgICAgICAgICAgICAgJ2onOiBbMSwgdW5kZWZpbmVkLCAyNl0sXG4gICAgICAgICAgICAgICAgJ24nOiBbMSwgdW5kZWZpbmVkLCAyN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNyc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDEwXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAxMF0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMTBdLFxuICAgICAgICAgICAgICAgICdsJzogWzIsIDEwXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc4Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzBdLFxuICAgICAgICAgICAgICAgICdyJzogWzEsIHVuZGVmaW5lZCwgMjhdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzknOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMSwgdW5kZWZpbmVkLCAyOV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMSwgdW5kZWZpbmVkLCAzMF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMSwgdW5kZWZpbmVkLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMSwgdW5kZWZpbmVkLCAzMl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTAnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzhdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDM4XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzOF0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzhdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDM4XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzOF0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsxLCB1bmRlZmluZWQsIDJdLFxuICAgICAgICAgICAgICAgICdwJzogWzEsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMSwgdW5kZWZpbmVkLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsxLCB1bmRlZmluZWQsIDZdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzExJzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAzMV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMzFdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDMxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAzMV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTInOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDMyXSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAzMl0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMzJdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDMyXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxMyc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMzNdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDMzXSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAzM10sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMzNdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzE0Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAzNF0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMzRdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDM0XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAzNF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMTUnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDM1XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAzNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMzVdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDM1XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxNic6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMzZdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDM2XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAzNl0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMzZdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzE3Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDM5XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzOV0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMzldLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDM5XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzOV0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMzldLFxuICAgICAgICAgICAgICAgICdiJzogWzEsIHVuZGVmaW5lZCwgMV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMSwgdW5kZWZpbmVkLCAyXSxcbiAgICAgICAgICAgICAgICAncCc6IFsxLCB1bmRlZmluZWQsIDRdLFxuICAgICAgICAgICAgICAgICdxJzogWzEsIHVuZGVmaW5lZCwgNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMSwgdW5kZWZpbmVkLCA2XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxOCc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAzXSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAzXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAzXSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAzXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcxOSc6IHtcbiAgICAgICAgICAgICAgICAnYyc6IFsxLCB1bmRlZmluZWQsIDM2XSxcbiAgICAgICAgICAgICAgICAnZCc6IFsxLCB1bmRlZmluZWQsIDM3XSxcbiAgICAgICAgICAgICAgICAnZSc6IFsxLCB1bmRlZmluZWQsIDM4XSxcbiAgICAgICAgICAgICAgICAnZic6IFsxLCB1bmRlZmluZWQsIDM5XSxcbiAgICAgICAgICAgICAgICAnZyc6IFsxLCB1bmRlZmluZWQsIDQwXSxcbiAgICAgICAgICAgICAgICAnaCc6IFsxLCB1bmRlZmluZWQsIDQxXSxcbiAgICAgICAgICAgICAgICAnaSc6IFsxLCB1bmRlZmluZWQsIDQyXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyMCc6IHtcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyNl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjEnOiB7XG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMjddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzIyJzoge1xuICAgICAgICAgICAgICAgICdsJzogWzIsIDI4XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcyMyc6IHtcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyOV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjQnOiB7XG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMzBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzI1Jzoge1xuICAgICAgICAgICAgICAgICdsJzogWzEsIHVuZGVmaW5lZCwgNDRdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzI2Jzoge1xuICAgICAgICAgICAgICAgICdrJzogWzEsIHVuZGVmaW5lZCwgNDVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzI3Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAncic6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ3QnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAndic6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ3gnOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICdwJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgMjRdLFxuICAgICAgICAgICAgICAgICdzJzogWzIsIDI0XSxcbiAgICAgICAgICAgICAgICAnbSc6IFsyLCAyNF0sXG4gICAgICAgICAgICAgICAgJ2wnOiBbMiwgMjRdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzI4Jzoge1xuICAgICAgICAgICAgICAgICdiJzogWzEsIHVuZGVmaW5lZCwgMV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMSwgdW5kZWZpbmVkLCAyXSxcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDNdLFxuICAgICAgICAgICAgICAgICdwJzogWzEsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMSwgdW5kZWZpbmVkLCA1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsxLCB1bmRlZmluZWQsIDZdLFxuICAgICAgICAgICAgICAgICd3JzogWzEsIHVuZGVmaW5lZCwgN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMjknOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgNV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgNV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzAnOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgNl0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgNl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzEnOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgN10sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgN11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzInOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ2InOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgOF0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgOF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzMnOiB7XG4gICAgICAgICAgICAgICAgJ2InOiBbMSwgdW5kZWZpbmVkLCAxXSxcbiAgICAgICAgICAgICAgICAnbSc6IFsxLCB1bmRlZmluZWQsIDJdLFxuICAgICAgICAgICAgICAgICduJzogWzEsIHVuZGVmaW5lZCwgM10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMSwgdW5kZWZpbmVkLCA0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsxLCB1bmRlZmluZWQsIDVdLFxuICAgICAgICAgICAgICAgICdzJzogWzEsIHVuZGVmaW5lZCwgNl0sXG4gICAgICAgICAgICAgICAgJ3cnOiBbMSwgdW5kZWZpbmVkLCA3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczNCc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCA0MF0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgNDBdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDQwXSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCA0MF0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgNDBdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDQwXSxcbiAgICAgICAgICAgICAgICAnYic6IFsxLCB1bmRlZmluZWQsIDFdLFxuICAgICAgICAgICAgICAgICdtJzogWzEsIHVuZGVmaW5lZCwgMl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMSwgdW5kZWZpbmVkLCA0XSxcbiAgICAgICAgICAgICAgICAncSc6IFsxLCB1bmRlZmluZWQsIDVdLFxuICAgICAgICAgICAgICAgICdzJzogWzEsIHVuZGVmaW5lZCwgNl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzUnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDM3XSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAzN10sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMzddLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDM3XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczNic6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDE5XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAxOV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMTldLFxuICAgICAgICAgICAgICAgICdsJzogWzIsIDE5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICczNyc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCAxN10sXG4gICAgICAgICAgICAgICAgJ28nOiBbMiwgMTddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzM4Jzoge1xuICAgICAgICAgICAgICAgICduJzogWzIsIDE4XSxcbiAgICAgICAgICAgICAgICAnbyc6IFsyLCAxOF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnMzknOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgMTNdLFxuICAgICAgICAgICAgICAgICdvJzogWzIsIDEzXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0MCc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsyLCAxNF0sXG4gICAgICAgICAgICAgICAgJ28nOiBbMiwgMTRdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQxJzoge1xuICAgICAgICAgICAgICAgICduJzogWzIsIDE1XSxcbiAgICAgICAgICAgICAgICAnbyc6IFsyLCAxNV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNDInOiB7XG4gICAgICAgICAgICAgICAgJ24nOiBbMiwgMTZdLFxuICAgICAgICAgICAgICAgICdvJzogWzIsIDE2XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0Myc6IHtcbiAgICAgICAgICAgICAgICAnbic6IFsxLCB1bmRlZmluZWQsIDQ4XSxcbiAgICAgICAgICAgICAgICAnbyc6IFsxLCB1bmRlZmluZWQsIDQ5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0NCc6IHtcbiAgICAgICAgICAgICAgICAnYSc6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ3InOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAndSc6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ3YnOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAncCc6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ3EnOiBbMiwgMjVdLFxuICAgICAgICAgICAgICAgICdiJzogWzIsIDI1XSxcbiAgICAgICAgICAgICAgICAncyc6IFsyLCAyNV0sXG4gICAgICAgICAgICAgICAgJ20nOiBbMiwgMjVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ1Jzoge1xuICAgICAgICAgICAgICAgICdsJzogWzEsIHVuZGVmaW5lZCwgNTFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ2Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDJdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDJdLFxuICAgICAgICAgICAgICAgICd0JzogWzEsIHVuZGVmaW5lZCwgMjldLFxuICAgICAgICAgICAgICAgICd1JzogWzEsIHVuZGVmaW5lZCwgMzBdLFxuICAgICAgICAgICAgICAgICd2JzogWzEsIHVuZGVmaW5lZCwgMzFdLFxuICAgICAgICAgICAgICAgICd4JzogWzEsIHVuZGVmaW5lZCwgMzJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ3Jzoge1xuICAgICAgICAgICAgICAgICdhJzogWzIsIDRdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDRdLFxuICAgICAgICAgICAgICAgICd0JzogWzIsIDRdLFxuICAgICAgICAgICAgICAgICd1JzogWzIsIDRdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDRdLFxuICAgICAgICAgICAgICAgICd4JzogWzIsIDRdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJzQ4Jzoge1xuICAgICAgICAgICAgICAgICdjJzogWzIsIDIwXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc0OSc6IHtcbiAgICAgICAgICAgICAgICAnYyc6IFsyLCAyMV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNTAnOiB7XG4gICAgICAgICAgICAgICAgJ2MnOiBbMSwgdW5kZWZpbmVkLCA1Ml1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNTEnOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAyM10sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMjNdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDIzXSxcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyM11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnNTInOiB7XG4gICAgICAgICAgICAgICAgJ2EnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICdyJzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAndCc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3UnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICd2JzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAneCc6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3AnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICdxJzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAnYic6IFsyLCAyMl0sXG4gICAgICAgICAgICAgICAgJ3MnOiBbMiwgMjJdLFxuICAgICAgICAgICAgICAgICdtJzogWzIsIDIyXSxcbiAgICAgICAgICAgICAgICAnbCc6IFsyLCAyMl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcGFyc2VyLnBhcnNlID0gZnVuY3Rpb24gcGFyc2UoaW5wdXQsIGZpbGVuYW1lKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgICAgIGxleGVyID0gc2VsZi5sZXhlcixcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgc3ltYm9sLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgdGFibGUgPSBzZWxmLnRhYmxlLFxuICAgICAgICAgICAgZ290b3MgPSB0YWJsZS5nb3RvcyxcbiAgICAgICAgICAgIHRhYmxlQWN0aW9uID0gdGFibGUuYWN0aW9uLFxuICAgICAgICAgICAgcHJvZHVjdGlvbnMgPSBzZWxmLnByb2R1Y3Rpb25zLFxuICAgICAgICAgICAgdmFsdWVTdGFjayA9IFtudWxsXSxcbiAgICAgICAgICAgIC8vIGZvciBkZWJ1ZyBpbmZvXG4gICAgICAgICAgICBwcmVmaXggPSBmaWxlbmFtZSA/ICgnaW4gZmlsZTogJyArIGZpbGVuYW1lICsgJyAnKSA6ICcnLFxuICAgICAgICAgICAgc3RhY2sgPSBbMF07XG5cbiAgICAgICAgbGV4ZXIucmVzZXRJbnB1dChpbnB1dCk7XG5cbiAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIC8vIHJldHJpZXZlIHN0YXRlIG51bWJlciBmcm9tIHRvcCBvZiBzdGFja1xuICAgICAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgaWYgKCFzeW1ib2wpIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXhlci5sZXgoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN5bWJvbCkge1xuICAgICAgICAgICAgICAgIC8vIHJlYWQgYWN0aW9uIGZvciBjdXJyZW50IHN0YXRlIGFuZCBmaXJzdCBpbnB1dFxuICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRhYmxlQWN0aW9uW3N0YXRlXSAmJiB0YWJsZUFjdGlvbltzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I7XG4gICAgICAgICAgICAgICAgLy8jSlNDT1ZFUkFHRV9JRlxuICAgICAgICAgICAgICAgIGlmICh0YWJsZUFjdGlvbltzdGF0ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc3ltYm9sRm9yU3RhdGUgaW4gdGFibGVBY3Rpb25bc3RhdGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKHNlbGYubGV4ZXIubWFwUmV2ZXJzZVN5bWJvbChzeW1ib2xGb3JTdGF0ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVycm9yID0gcHJlZml4ICsgJ3N5bnRheCBlcnJvciBhdCBsaW5lICcgKyBsZXhlci5saW5lTnVtYmVyICtcbiAgICAgICAgICAgICAgICAgICAgJzpcXG4nICsgbGV4ZXIuc2hvd0RlYnVnSW5mbygpICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgKyAnZXhwZWN0ICcgKyBleHBlY3RlZC5qb2luKCcsICcpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uW0dyYW1tYXJDb25zdC5UWVBFX0lOREVYXSkge1xuICAgICAgICAgICAgY2FzZSBHcmFtbWFyQ29uc3QuU0hJRlRfVFlQRTpcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG5cbiAgICAgICAgICAgICAgICB2YWx1ZVN0YWNrLnB1c2gobGV4ZXIudGV4dCk7XG5cbiAgICAgICAgICAgICAgICAvLyBwdXNoIHN0YXRlXG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bR3JhbW1hckNvbnN0LlRPX0lOREVYXSk7XG5cbiAgICAgICAgICAgICAgICAvLyBhbGxvdyB0byByZWFkIG1vcmVcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgR3JhbW1hckNvbnN0LlJFRFVDRV9UWVBFOlxuICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0aW9uID0gcHJvZHVjdGlvbnNbYWN0aW9uW0dyYW1tYXJDb25zdC5QUk9EVUNUSU9OX0lOREVYXV0sXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjZWRTeW1ib2wgPSBwcm9kdWN0aW9uLnN5bWJvbCB8fCBwcm9kdWN0aW9uWzBdLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2VkQWN0aW9uID0gcHJvZHVjdGlvbi5hY3Rpb24gfHwgcHJvZHVjdGlvblsyXSxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNlZFJocyA9IHByb2R1Y3Rpb24ucmhzIHx8IHByb2R1Y3Rpb25bMV0sXG4gICAgICAgICAgICAgICAgICAgIGxlbiA9IHJlZHVjZWRSaHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBpID0gMCxcbiAgICAgICAgICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAgICAgICAgICAkJCA9IHZhbHVlU3RhY2tbdmFsdWVTdGFjay5sZW5ndGggLSBsZW5dOyAvLyBkZWZhdWx0IHRvICQkID0gJDFcblxuICAgICAgICAgICAgICAgIHJldCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgIHNlbGYuJCQgPSAkJDtcblxuICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZlsnJCcgKyAobGVuIC0gaSldID0gdmFsdWVTdGFja1t2YWx1ZVN0YWNrLmxlbmd0aCAtIDEgLSBpXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVkdWNlZEFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXQgPSByZWR1Y2VkQWN0aW9uLmNhbGwoc2VsZik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICQkID0gcmV0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQkID0gc2VsZi4kJDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgICAgdmFsdWVTdGFjayA9IHZhbHVlU3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuXG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChyZWR1Y2VkU3ltYm9sKTtcblxuICAgICAgICAgICAgICAgIHZhbHVlU3RhY2sucHVzaCgkJCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbmV3U3RhdGUgPSBnb3Rvc1tzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuXG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBHcmFtbWFyQ29uc3QuQUNDRVBUX1RZUEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcGFyc2VyO1xufSkoKTtcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gcGFyc2VyO1xufSIsIi8qKlxuICogQGlnbm9yZVxuICogY3NzMyBzZWxlY3RvciBlbmdpbmUgZm9yIGllNi04XG4gKiBAYXV0aG9yIHlpbWluZ2hlQGdtYWlsLmNvbVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi9xdWVyeS1zZWxlY3Rvci91dGlsJyk7XG52YXIgcGFyc2VyID0gcmVxdWlyZSgnLi9xdWVyeS1zZWxlY3Rvci9wYXJzZXInKTtcblxudmFyIEVYUEFORE9fU0VMRUNUT1JfS0VZID0gJ19rc19kYXRhX3NlbGVjdG9yX2lkXycsXG4gIGNhY2hlcyA9IHt9LFxuICBpc0NvbnRleHRYTUwsXG4gIHV1aWQgPSAwLFxuICBzdWJNYXRjaGVzQ2FjaGUgPSB7fSxcbiAgZ2V0QXR0ciA9IGZ1bmN0aW9uIChlbCwgbmFtZSkge1xuICAgIGlmIChpc0NvbnRleHRYTUwpIHtcbiAgICAgIHJldHVybiB1dGlsLmdldFNpbXBsZUF0dHIoZWwsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdXRpbC5hdHRyKGVsLCBuYW1lKTtcbiAgICB9XG4gIH0sXG4gIGhhc1NpbmdsZUNsYXNzID0gdXRpbC5oYXNTaW5nbGVDbGFzcyxcbiAgaXNUYWcgPSB1dGlsLmlzVGFnLFxuICBhTlBsdXNCID0gL14oKFsrLV0/KD86XFxkKyk/KT9uKT8oWystXT9cXGQrKT8kLztcblxuLy8gQ1NTIGVzY2FwZXMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xudmFyIHVuZXNjYXBlID0gL1xcXFwoW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0/fC4pL2csXG4gIHVuZXNjYXBlRm4gPSBmdW5jdGlvbiAoXywgZXNjYXBlZCkge1xuICAgIHZhciBoaWdoID0gJzB4JyArIGVzY2FwZWQgLSAweDEwMDAwO1xuICAgIC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG4gICAgcmV0dXJuIGlzTmFOKGhpZ2gpID9cbiAgICAgIGVzY2FwZWQgOlxuICAgICAgLy8gQk1QIGNvZGVwb2ludFxuICAgICAgaGlnaCA8IDAgP1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGhpZ2ggKyAweDEwMDAwKSA6XG4gICAgICAgIC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKVxuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCk7XG4gIH07XG5cbnZhciBtYXRjaEV4cHI7XG5cbnZhciBwc2V1ZG9GbkV4cHIgPSB7XG4gICdudGgtY2hpbGQnOiBmdW5jdGlvbiAoZWwsIHBhcmFtKSB7XG4gICAgdmFyIGFiID0gZ2V0QWIocGFyYW0pLFxuICAgICAgYSA9IGFiLmEsXG4gICAgICBiID0gYWIuYjtcbiAgICBpZiAoYSA9PT0gMCAmJiBiID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gMCxcbiAgICAgIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkTm9kZXMgPSBwYXJlbnQuY2hpbGROb2RlcyxcbiAgICAgICAgY291bnQgPSAwLFxuICAgICAgICBjaGlsZCxcbiAgICAgICAgcmV0LFxuICAgICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGZvciAoOyBjb3VudCA8IGxlbjsgY291bnQrKykge1xuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbY291bnRdO1xuICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgIHJldCA9IG1hdGNoSW5kZXhCeUFiKGluZGV4LCBhLCBiLCBjaGlsZCA9PT0gZWwpO1xuICAgICAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gICdudGgtbGFzdC1jaGlsZCc6IGZ1bmN0aW9uIChlbCwgcGFyYW0pIHtcbiAgICB2YXIgYWIgPSBnZXRBYihwYXJhbSksXG4gICAgICBhID0gYWIuYSxcbiAgICAgIGIgPSBhYi5iO1xuICAgIGlmIChhID09PSAwICYmIGIgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHBhcmVudC5jaGlsZE5vZGVzLFxuICAgICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgY291bnQgPSBsZW4gLSAxLFxuICAgICAgICBjaGlsZCxcbiAgICAgICAgcmV0O1xuICAgICAgZm9yICg7IGNvdW50ID49IDA7IGNvdW50LS0pIHtcbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2NvdW50XTtcbiAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICByZXQgPSBtYXRjaEluZGV4QnlBYihpbmRleCwgYSwgYiwgY2hpbGQgPT09IGVsKTtcbiAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICAnbnRoLW9mLXR5cGUnOiBmdW5jdGlvbiAoZWwsIHBhcmFtKSB7XG4gICAgdmFyIGFiID0gZ2V0QWIocGFyYW0pLFxuICAgICAgYSA9IGFiLmEsXG4gICAgICBiID0gYWIuYjtcbiAgICBpZiAoYSA9PT0gMCAmJiBiID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gMCxcbiAgICAgIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkTm9kZXMgPSBwYXJlbnQuY2hpbGROb2RlcyxcbiAgICAgICAgZWxUeXBlID0gZWwudGFnTmFtZSxcbiAgICAgICAgY291bnQgPSAwLFxuICAgICAgICBjaGlsZCxcbiAgICAgICAgcmV0LFxuICAgICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGZvciAoOyBjb3VudCA8IGxlbjsgY291bnQrKykge1xuICAgICAgICBjaGlsZCA9IGNoaWxkTm9kZXNbY291bnRdO1xuICAgICAgICBpZiAoY2hpbGQudGFnTmFtZSA9PT0gZWxUeXBlKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICByZXQgPSBtYXRjaEluZGV4QnlBYihpbmRleCwgYSwgYiwgY2hpbGQgPT09IGVsKTtcbiAgICAgICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICAnbnRoLWxhc3Qtb2YtdHlwZSc6IGZ1bmN0aW9uIChlbCwgcGFyYW0pIHtcbiAgICB2YXIgYWIgPSBnZXRBYihwYXJhbSksXG4gICAgICBhID0gYWIuYSxcbiAgICAgIGIgPSBhYi5iO1xuICAgIGlmIChhID09PSAwICYmIGIgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB2YXIgY2hpbGROb2RlcyA9IHBhcmVudC5jaGlsZE5vZGVzLFxuICAgICAgICBsZW4gPSBjaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgZWxUeXBlID0gZWwudGFnTmFtZSxcbiAgICAgICAgY291bnQgPSBsZW4gLSAxLFxuICAgICAgICBjaGlsZCxcbiAgICAgICAgcmV0O1xuICAgICAgZm9yICg7IGNvdW50ID49IDA7IGNvdW50LS0pIHtcbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2NvdW50XTtcbiAgICAgICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09IGVsVHlwZSkge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgcmV0ID0gbWF0Y2hJbmRleEJ5QWIoaW5kZXgsIGEsIGIsIGNoaWxkID09PSBlbCk7XG4gICAgICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgbGFuZzogZnVuY3Rpb24gKGVsLCBsYW5nKSB7XG4gICAgdmFyIGVsTGFuZztcbiAgICBsYW5nID0gdW5Fc2NhcGUobGFuZy50b0xvd2VyQ2FzZSgpKTtcbiAgICBkbyB7XG4gICAgICBpZiAoKGVsTGFuZyA9IChpc0NvbnRleHRYTUwgP1xuICAgICAgICBlbC5nZXRBdHRyaWJ1dGUoJ3htbDpsYW5nJykgfHwgZWwuZ2V0QXR0cmlidXRlKCdsYW5nJykgOlxuICAgICAgICAgIGVsLmxhbmcpKSkge1xuICAgICAgICBlbExhbmcgPSBlbExhbmcudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGVsTGFuZyA9PT0gbGFuZyB8fCBlbExhbmcuaW5kZXhPZihsYW5nICsgJy0nKSA9PT0gMDtcbiAgICAgIH1cbiAgICB9IHdoaWxlICgoZWwgPSBlbC5wYXJlbnROb2RlKSAmJiBlbC5ub2RlVHlwZSA9PT0gMSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBub3Q6IGZ1bmN0aW9uIChlbCwgbmVnYXRpb25BcmcpIHtcbiAgICByZXR1cm4gIW1hdGNoRXhwcltuZWdhdGlvbkFyZy50XShlbCwgbmVnYXRpb25BcmcudmFsdWUpO1xuICB9XG59O1xuXG52YXIgcHNldWRvSWRlbnRFeHByID0ge1xuICBlbXB0eTogZnVuY3Rpb24gKGVsKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBlbC5jaGlsZE5vZGVzLFxuICAgICAgaW5kZXggPSAwLFxuICAgICAgbGVuID0gY2hpbGROb2Rlcy5sZW5ndGggLSAxLFxuICAgICAgY2hpbGQsXG4gICAgICBub2RlVHlwZTtcbiAgICBmb3IgKDsgaW5kZXggPCBsZW47IGluZGV4KyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGROb2Rlc1tpbmRleF07XG4gICAgICBub2RlVHlwZSA9IGNoaWxkLm5vZGVUeXBlO1xuICAgICAgLy8gb25seSBlbGVtZW50IG5vZGVzIGFuZCBjb250ZW50IG5vZGVzXG4gICAgICAvLyAoc3VjaCBhcyBEb20gW0RvbS1MRVZFTC0zLUNPUkVdIHRleHQgbm9kZXMsXG4gICAgICAvLyBDREFUQSBub2RlcywgYW5kIGVudGl0eSByZWZlcmVuY2VzXG4gICAgICBpZiAobm9kZVR5cGUgPT09IDEgfHwgbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgfHwgbm9kZVR5cGUgPT09IDUpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9LFxuICByb290OiBmdW5jdGlvbiAoZWwpIHtcbiAgICBpZiAoZWwubm9kZVR5cGUgPT09IDkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZWwub3duZXJEb2N1bWVudCAmJlxuICAgICAgZWwgPT09IGVsLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB9LFxuICAnZmlyc3QtY2hpbGQnOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gcHNldWRvRm5FeHByWydudGgtY2hpbGQnXShlbCwgMSk7XG4gIH0sXG4gICdsYXN0LWNoaWxkJzogZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIHBzZXVkb0ZuRXhwclsnbnRoLWxhc3QtY2hpbGQnXShlbCwgMSk7XG4gIH0sXG4gICdmaXJzdC1vZi10eXBlJzogZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIHBzZXVkb0ZuRXhwclsnbnRoLW9mLXR5cGUnXShlbCwgMSk7XG4gIH0sXG4gICdsYXN0LW9mLXR5cGUnOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gcHNldWRvRm5FeHByWydudGgtbGFzdC1vZi10eXBlJ10oZWwsIDEpO1xuICB9LFxuICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBwc2V1ZG9JZGVudEV4cHJbJ2ZpcnN0LWNoaWxkJ10oZWwpICYmXG4gICAgICBwc2V1ZG9JZGVudEV4cHJbJ2xhc3QtY2hpbGQnXShlbCk7XG4gIH0sXG4gICdvbmx5LW9mLXR5cGUnOiBmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gcHNldWRvSWRlbnRFeHByWydmaXJzdC1vZi10eXBlJ10oZWwpICYmXG4gICAgICBwc2V1ZG9JZGVudEV4cHJbJ2xhc3Qtb2YtdHlwZSddKGVsKTtcbiAgfSxcbiAgZm9jdXM6IGZ1bmN0aW9uIChlbCkge1xuICAgIHZhciBkb2MgPSBlbC5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBkb2MgJiYgZWwgPT09IGRvYy5hY3RpdmVFbGVtZW50ICYmXG4gICAgICAoIWRvYy5oYXNGb2N1cyB8fCBkb2MuaGFzRm9jdXMoKSkgJiYgISEoZWwudHlwZSB8fCBlbC5ocmVmIHx8IGVsLnRhYkluZGV4ID49IDApO1xuICB9LFxuICB0YXJnZXQ6IGZ1bmN0aW9uIChlbCkge1xuICAgIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgICByZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKDEpID09PSBnZXRBdHRyKGVsLCAnaWQnKTtcbiAgfSxcbiAgZW5hYmxlZDogZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuICFlbC5kaXNhYmxlZDtcbiAgfSxcbiAgZGlzYWJsZWQ6IGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBlbC5kaXNhYmxlZDtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKGVsKSB7XG4gICAgdmFyIG5vZGVOYW1lID0gZWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsLmNoZWNrZWQpIHx8XG4gICAgICAobm9kZU5hbWUgPT09ICdvcHRpb24nICYmIGVsLnNlbGVjdGVkKTtcbiAgfVxufTtcblxudmFyIGF0dHJpYnV0ZUV4cHIgPSB7XG4gICd+PSc6IGZ1bmN0aW9uIChlbFZhbHVlLCB2YWx1ZSkge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gKCcgJyArIGVsVmFsdWUgKyAnICcpLmluZGV4T2YoJyAnICsgdmFsdWUgKyAnICcpICE9PSAtMTtcbiAgfSxcbiAgJ3w9JzogZnVuY3Rpb24gKGVsVmFsdWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuICgnICcgKyBlbFZhbHVlKS5pbmRleE9mKCcgJyArIHZhbHVlICsgJy0nKSAhPT0gLTE7XG4gIH0sXG4gICdePSc6IGZ1bmN0aW9uIChlbFZhbHVlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB1dGlsLnN0YXJ0c1dpdGgoZWxWYWx1ZSwgdmFsdWUpO1xuICB9LFxuICAnJD0nOiBmdW5jdGlvbiAoZWxWYWx1ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdXRpbC5lbmRzV2l0aChlbFZhbHVlLCB2YWx1ZSk7XG4gIH0sXG4gICcqPSc6IGZ1bmN0aW9uIChlbFZhbHVlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBlbFZhbHVlLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbiAgfSxcbiAgJz0nOiBmdW5jdGlvbiAoZWxWYWx1ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gZWxWYWx1ZSA9PT0gdmFsdWU7XG4gIH1cbn07XG5cbnZhciByZWxhdGl2ZUV4cHIgPSB7XG4gICc+Jzoge1xuICAgIGRpcjogJ3BhcmVudE5vZGUnLFxuICAgIGltbWVkaWF0ZTogMVxuICB9LFxuICAnICc6IHtcbiAgICBkaXI6ICdwYXJlbnROb2RlJ1xuICB9LFxuICAnKyc6IHtcbiAgICBkaXI6ICdwcmV2aW91c1NpYmxpbmcnLFxuICAgIGltbWVkaWF0ZTogMVxuICB9LFxuICAnfic6IHtcbiAgICBkaXI6ICdwcmV2aW91c1NpYmxpbmcnXG4gIH1cbn07XG5cbm1hdGNoRXhwciA9IHtcbiAgdGFnOiBpc1RhZyxcbiAgY2xzOiBoYXNTaW5nbGVDbGFzcyxcbiAgaWQ6IGZ1bmN0aW9uIChlbCwgdmFsdWUpIHtcbiAgICByZXR1cm4gZ2V0QXR0cihlbCwgJ2lkJykgPT09IHZhbHVlO1xuICB9LFxuICBhdHRyaWI6IGZ1bmN0aW9uIChlbCwgdmFsdWUpIHtcbiAgICB2YXIgbmFtZSA9IHZhbHVlLmlkZW50O1xuICAgIGlmICghaXNDb250ZXh0WE1MKSB7XG4gICAgICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICB2YXIgZWxWYWx1ZSA9IGdldEF0dHIoZWwsIG5hbWUpO1xuICAgIHZhciBtYXRjaCA9IHZhbHVlLm1hdGNoO1xuICAgIGlmICghbWF0Y2ggJiYgZWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKG1hdGNoKSB7XG4gICAgICBpZiAoZWxWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgdmFyIG1hdGNoRm4gPSBhdHRyaWJ1dGVFeHByW21hdGNoXTtcbiAgICAgIGlmIChtYXRjaEZuKSB7XG4gICAgICAgIHJldHVybiBtYXRjaEZuKGVsVmFsdWUgKyAnJywgdmFsdWUudmFsdWUgKyAnJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICBwc2V1ZG86IGZ1bmN0aW9uIChlbCwgdmFsdWUpIHtcbiAgICB2YXIgZm4sIGZuU3RyLCBpZGVudDtcbiAgICBpZiAoKGZuU3RyID0gdmFsdWUuZm4pKSB7XG4gICAgICBpZiAoIShmbiA9IHBzZXVkb0ZuRXhwcltmblN0cl0pKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignU3ludGF4IGVycm9yOiBub3Qgc3VwcG9ydCBwc2V1ZG86ICcgKyBmblN0cik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm4oZWwsIHZhbHVlLnBhcmFtKTtcbiAgICB9XG4gICAgaWYgKChpZGVudCA9IHZhbHVlLmlkZW50KSkge1xuICAgICAgaWYgKCFwc2V1ZG9JZGVudEV4cHJbaWRlbnRdKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignU3ludGF4IGVycm9yOiBub3Qgc3VwcG9ydCBwc2V1ZG86ICcgKyBpZGVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHNldWRvSWRlbnRFeHByW2lkZW50XShlbCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1bkVzY2FwZShzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKHVuZXNjYXBlLCB1bmVzY2FwZUZuKTtcbn1cblxucGFyc2VyLmxleGVyLnl5ID0ge1xuICB0cmltOiB1dGlsLnRyaW0sXG4gIHVuRXNjYXBlOiB1bkVzY2FwZSxcbiAgdW5Fc2NhcGVTdHI6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdGhpcy51bkVzY2FwZShzdHIuc2xpY2UoMSwgLTEpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVzZXRTdGF0dXMoKSB7XG4gIHN1Yk1hdGNoZXNDYWNoZSA9IHt9O1xufVxuXG5mdW5jdGlvbiBkaXIoZWwsIGRpcmVjdGlvbikge1xuICBkbyB7XG4gICAgZWwgPSBlbFtkaXJlY3Rpb25dO1xuICB9IHdoaWxlIChlbCAmJiBlbC5ub2RlVHlwZSAhPT0gMSk7XG4gIHJldHVybiBlbDtcbn1cblxuZnVuY3Rpb24gZ2V0QWIocGFyYW0pIHtcbiAgdmFyIGEgPSAwLFxuICAgIG1hdGNoLFxuICAgIGIgPSAwO1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnbnVtYmVyJykge1xuICAgIGIgPSBwYXJhbTtcbiAgfSBlbHNlIGlmIChwYXJhbSA9PT0gJ29kZCcpIHtcbiAgICBhID0gMjtcbiAgICBiID0gMTtcbiAgfSBlbHNlIGlmIChwYXJhbSA9PT0gJ2V2ZW4nKSB7XG4gICAgYSA9IDI7XG4gICAgYiA9IDA7XG4gIH0gZWxzZSBpZiAoKG1hdGNoID0gcGFyYW0ucmVwbGFjZSgvXFxzL2csICcnKS5tYXRjaChhTlBsdXNCKSkpIHtcbiAgICBpZiAobWF0Y2hbMV0pIHtcbiAgICAgIGEgPSBwYXJzZUludChtYXRjaFsyXSwgMTApO1xuICAgICAgaWYgKGlzTmFOKGEpKSB7XG4gICAgICAgIGlmIChtYXRjaFsyXSA9PT0gJy0nKSB7XG4gICAgICAgICAgYSA9IC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGEgPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSAwO1xuICAgIH1cbiAgICBiID0gcGFyc2VJbnQobWF0Y2hbM10sIDEwKSB8fCAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgYTogYSxcbiAgICBiOiBiXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hdGNoSW5kZXhCeUFiKGluZGV4LCBhLCBiLCBlcSkge1xuICBpZiAoYSA9PT0gMCkge1xuICAgIGlmIChpbmRleCA9PT0gYikge1xuICAgICAgcmV0dXJuIGVxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoKGluZGV4IC0gYikgLyBhID49IDAgJiYgKGluZGV4IC0gYikgJSBhID09PSAwICYmIGVxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNYTUwoZWxlbSkge1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcbiAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnaHRtbCcgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlcyhzdHIsIHNlZWRzKSB7XG4gIHJldHVybiBzZWxlY3Qoc3RyLCBudWxsLCBzZWVkcyk7XG59XG5cbmZ1bmN0aW9uIHNpbmdsZU1hdGNoKGVsLCBtYXRjaCkge1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCFlbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChlbC5ub2RlVHlwZSA9PT0gOSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBtYXRjaGVkID0gMSxcbiAgICBtYXRjaFN1ZmZpeCA9IG1hdGNoLnN1ZmZpeCxcbiAgICBtYXRjaFN1ZmZpeExlbixcbiAgICBtYXRjaFN1ZmZpeEluZGV4O1xuXG4gIGlmIChtYXRjaC50ID09PSAndGFnJykge1xuICAgIG1hdGNoZWQgJj0gbWF0Y2hFeHByLnRhZyhlbCwgbWF0Y2gudmFsdWUpO1xuICB9XG5cbiAgaWYgKG1hdGNoZWQgJiYgbWF0Y2hTdWZmaXgpIHtcbiAgICBtYXRjaFN1ZmZpeExlbiA9IG1hdGNoU3VmZml4Lmxlbmd0aDtcbiAgICBtYXRjaFN1ZmZpeEluZGV4ID0gMDtcbiAgICBmb3IgKDsgbWF0Y2hlZCAmJiBtYXRjaFN1ZmZpeEluZGV4IDwgbWF0Y2hTdWZmaXhMZW47IG1hdGNoU3VmZml4SW5kZXgrKykge1xuICAgICAgdmFyIHNpbmdsZU1hdGNoU3VmZml4ID0gbWF0Y2hTdWZmaXhbbWF0Y2hTdWZmaXhJbmRleF0sXG4gICAgICAgIHNpbmdsZU1hdGNoU3VmZml4VHlwZSA9IHNpbmdsZU1hdGNoU3VmZml4LnQ7XG4gICAgICBpZiAobWF0Y2hFeHByW3NpbmdsZU1hdGNoU3VmZml4VHlwZV0pIHtcbiAgICAgICAgbWF0Y2hlZCAmPSBtYXRjaEV4cHJbc2luZ2xlTWF0Y2hTdWZmaXhUeXBlXShlbCwgc2luZ2xlTWF0Y2hTdWZmaXgudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXRjaGVkO1xufVxuXG4vLyBtYXRjaCBieSBhZGphY2VudCBpbW1lZGlhdGUgc2luZ2xlIHNlbGVjdG9yIG1hdGNoXG5mdW5jdGlvbiBtYXRjaEltbWVkaWF0ZShlbCwgbWF0Y2gpIHtcbiAgdmFyIG1hdGNoZWQgPSAxLFxuICAgIHN0YXJ0RWwgPSBlbCxcbiAgICByZWxhdGl2ZU9wLFxuICAgIHN0YXJ0TWF0Y2ggPSBtYXRjaDtcblxuICBkbyB7XG4gICAgbWF0Y2hlZCAmPSBzaW5nbGVNYXRjaChlbCwgbWF0Y2gpO1xuICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAvLyBhZHZhbmNlXG4gICAgICBtYXRjaCA9IG1hdGNoICYmIG1hdGNoLnByZXY7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmVsYXRpdmVPcCA9IHJlbGF0aXZlRXhwclttYXRjaC5uZXh0Q29tYmluYXRvcl07XG4gICAgICBlbCA9IGRpcihlbCwgcmVsYXRpdmVPcC5kaXIpO1xuICAgICAgaWYgKCFyZWxhdGl2ZU9wLmltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIGFkdmFuY2UgZm9yIG5vbi1pbW1lZGlhdGVcbiAgICAgICAgICBlbDogZWwsXG4gICAgICAgICAgbWF0Y2g6IG1hdGNoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGF0aXZlT3AgPSByZWxhdGl2ZUV4cHJbbWF0Y2gubmV4dENvbWJpbmF0b3JdO1xuICAgICAgaWYgKHJlbGF0aXZlT3AuaW1tZWRpYXRlKSB7XG4gICAgICAgIC8vIHJldHJlYXQgYnV0IGFkdmFuY2Ugc3RhcnRFbFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVsOiBkaXIoc3RhcnRFbCwgcmVsYXRpdmVFeHByW3N0YXJ0TWF0Y2gubmV4dENvbWJpbmF0b3JdLmRpciksXG4gICAgICAgICAgbWF0Y2g6IHN0YXJ0TWF0Y2hcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFkdmFuY2UgKGJlZm9yZSBpbW1lZGlhdGUgbWF0Y2ggKyBqdW1wIHVubWF0Y2hlZClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbDogZWwgJiYgZGlyKGVsLCByZWxhdGl2ZU9wLmRpciksXG4gICAgICAgICAgbWF0Y2g6IG1hdGNoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChlbCk7XG5cbiAgLy8gb25seSBvY2N1ciB3aGVuIG1hdGNoIGltbWVkaWF0ZVxuICByZXR1cm4ge1xuICAgIGVsOiBkaXIoc3RhcnRFbCwgcmVsYXRpdmVFeHByW3N0YXJ0TWF0Y2gubmV4dENvbWJpbmF0b3JdLmRpciksXG4gICAgbWF0Y2g6IHN0YXJ0TWF0Y2hcbiAgfTtcbn1cblxuLy8gZmluZCBmaXhlZCBwYXJ0LCBmaXhlZCB3aXRoIHNlZWRzXG5mdW5jdGlvbiBmaW5kRml4ZWRNYXRjaEZyb21IZWFkKGVsLCBoZWFkKSB7XG4gIHZhciByZWxhdGl2ZU9wLFxuICAgIGN1ciA9IGhlYWQ7XG5cbiAgZG8ge1xuICAgIGlmICghc2luZ2xlTWF0Y2goZWwsIGN1cikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXIgPSBjdXIucHJldjtcbiAgICBpZiAoIWN1cikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJlbGF0aXZlT3AgPSByZWxhdGl2ZUV4cHJbY3VyLm5leHRDb21iaW5hdG9yXTtcbiAgICBlbCA9IGRpcihlbCwgcmVsYXRpdmVPcC5kaXIpO1xuICB9IHdoaWxlIChlbCAmJiByZWxhdGl2ZU9wLmltbWVkaWF0ZSk7XG4gIGlmICghZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVsOiBlbCxcbiAgICBtYXRjaDogY3VyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbklkKGVsKSB7XG4gIHZhciBzZWxlY3RvcklkO1xuXG4gIGlmIChpc0NvbnRleHRYTUwpIHtcbiAgICBpZiAoIShzZWxlY3RvcklkID0gZWwuZ2V0QXR0cmlidXRlKEVYUEFORE9fU0VMRUNUT1JfS0VZKSkpIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShFWFBBTkRPX1NFTEVDVE9SX0tFWSwgc2VsZWN0b3JJZCA9ICgrbmV3IERhdGUoKSArICdfJyArICgrK3V1aWQpKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghKHNlbGVjdG9ySWQgPSBlbFtFWFBBTkRPX1NFTEVDVE9SX0tFWV0pKSB7XG4gICAgICBzZWxlY3RvcklkID0gZWxbRVhQQU5ET19TRUxFQ1RPUl9LRVldID0gKCtuZXcgRGF0ZSgpKSArICdfJyArICgrK3V1aWQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RvcklkO1xufVxuXG5mdW5jdGlvbiBtYXRjaFN1YihlbCwgbWF0Y2gpIHtcbiAgdmFyIHNlbGVjdG9ySWQgPSBnZW5JZChlbCksXG4gICAgbWF0Y2hLZXk7XG4gIG1hdGNoS2V5ID0gc2VsZWN0b3JJZCArICdfJyArIChtYXRjaC5vcmRlciB8fCAwKTtcbiAgaWYgKG1hdGNoS2V5IGluIHN1Yk1hdGNoZXNDYWNoZSkge1xuICAgIHJldHVybiBzdWJNYXRjaGVzQ2FjaGVbbWF0Y2hLZXldO1xuICB9XG4gIHN1Yk1hdGNoZXNDYWNoZVttYXRjaEtleV0gPSBtYXRjaFN1YkludGVybmFsKGVsLCBtYXRjaCk7XG4gIHJldHVybiBzdWJNYXRjaGVzQ2FjaGVbbWF0Y2hLZXldO1xufVxuXG4vLyByZWN1cnNpdmUgbWF0Y2ggYnkgc3ViIHNlbGVjdG9yIHN0cmluZyBmcm9tIHJpZ2h0IHRvIGxlZnRcbi8vIGdyb3VwZWQgYnkgaW1tZWRpYXRlIHNlbGVjdG9yc1xuZnVuY3Rpb24gbWF0Y2hTdWJJbnRlcm5hbChlbCwgbWF0Y2gpIHtcbiAgdmFyIG1hdGNoSW1tZWRpYXRlUmV0ID0gbWF0Y2hJbW1lZGlhdGUoZWwsIG1hdGNoKTtcbiAgaWYgKG1hdGNoSW1tZWRpYXRlUmV0ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgZWwgPSBtYXRjaEltbWVkaWF0ZVJldC5lbDtcbiAgICBtYXRjaCA9IG1hdGNoSW1tZWRpYXRlUmV0Lm1hdGNoO1xuICAgIHdoaWxlIChlbCkge1xuICAgICAgaWYgKG1hdGNoU3ViKGVsLCBtYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBlbCA9IGRpcihlbCwgcmVsYXRpdmVFeHByW21hdGNoLm5leHRDb21iaW5hdG9yXS5kaXIpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VsZWN0KHN0ciwgY29udGV4dCwgc2VlZHMpIHtcbiAgaWYgKCFjYWNoZXNbc3RyXSkge1xuICAgIGNhY2hlc1tzdHJdID0gcGFyc2VyLnBhcnNlKHN0cik7XG4gIH1cblxuICB2YXIgc2VsZWN0b3IgPSBjYWNoZXNbc3RyXSxcbiAgICBncm91cEluZGV4ID0gMCxcbiAgICBncm91cExlbiA9IHNlbGVjdG9yLmxlbmd0aCxcbiAgICBjb250ZXh0RG9jdW1lbnQsXG4gICAgZ3JvdXAsXG4gICAgcmV0ID0gW107XG5cbiAgaWYgKHNlZWRzKSB7XG4gICAgY29udGV4dCA9IGNvbnRleHQgfHwgc2VlZHNbMF0ub3duZXJEb2N1bWVudDtcbiAgfVxuXG4gIGNvbnRleHREb2N1bWVudCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50IHx8IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQ7XG5cbiAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiAhY29udGV4dERvY3VtZW50KSB7XG4gICAgY29udGV4dERvY3VtZW50ID0gY29udGV4dDtcbiAgfVxuXG4gIGNvbnRleHQgPSBjb250ZXh0IHx8IGNvbnRleHREb2N1bWVudDtcblxuICBpc0NvbnRleHRYTUwgPSBpc1hNTChjb250ZXh0KTtcblxuICBmb3IgKDsgZ3JvdXBJbmRleCA8IGdyb3VwTGVuOyBncm91cEluZGV4KyspIHtcbiAgICByZXNldFN0YXR1cygpO1xuXG4gICAgZ3JvdXAgPSBzZWxlY3Rvcltncm91cEluZGV4XTtcblxuICAgIHZhciBzdWZmaXggPSBncm91cC5zdWZmaXgsXG4gICAgICBzdWZmaXhJbmRleCxcbiAgICAgIHN1ZmZpeExlbixcbiAgICAgIHNlZWRzSW5kZXgsXG4gICAgICBteVNlZWRzID0gc2VlZHMsXG4gICAgICBzZWVkc0xlbixcbiAgICAgIGlkID0gbnVsbDtcblxuICAgIGlmICghbXlTZWVkcykge1xuICAgICAgaWYgKHN1ZmZpeCAmJiAhaXNDb250ZXh0WE1MKSB7XG4gICAgICAgIHN1ZmZpeEluZGV4ID0gMDtcbiAgICAgICAgc3VmZml4TGVuID0gc3VmZml4Lmxlbmd0aDtcbiAgICAgICAgZm9yICg7IHN1ZmZpeEluZGV4IDwgc3VmZml4TGVuOyBzdWZmaXhJbmRleCsrKSB7XG4gICAgICAgICAgdmFyIHNpbmdsZVN1ZmZpeCA9IHN1ZmZpeFtzdWZmaXhJbmRleF07XG4gICAgICAgICAgaWYgKHNpbmdsZVN1ZmZpeC50ID09PSAnaWQnKSB7XG4gICAgICAgICAgICBpZCA9IHNpbmdsZVN1ZmZpeC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgLy8gaHR0cDovL3lpbWluZ2hlLmdpdGh1Yi5pby9sYWIvcGxheWdyb3VuZC9mcmFnbWVudC1zZWxlY3Rvci9zZWxlY3Rvci5odG1sXG4gICAgICAgIHZhciBkb2VzTm90SGFzQnlJZCA9ICFjb250ZXh0LmdldEVsZW1lbnRCeUlkLFxuICAgICAgICAgIGNvbnRleHRJbkRvbSA9IHV0aWwuY29udGFpbnMoY29udGV4dERvY3VtZW50LCBjb250ZXh0KSxcbiAgICAgICAgICB0bXAgPSBkb2VzTm90SGFzQnlJZCA/IChcbiAgICAgICAgICAgIGNvbnRleHRJbkRvbSA/XG4gICAgICAgICAgICAgIGNvbnRleHREb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgOlxuICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgKSA6IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICAvLyBpZCBidWdcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2tpc3N5dGVhbS9raXNzeS9pc3N1ZXMvNjdcbiAgICAgICAgaWYgKCF0bXAgJiYgZG9lc05vdEhhc0J5SWQgfHwgdG1wICYmIGdldEF0dHIodG1wLCAnaWQnKSAhPT0gaWQpIHtcbiAgICAgICAgICB2YXIgdG1wcyA9IHV0aWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHRtcExlbiA9IHRtcHMubGVuZ3RoLFxuICAgICAgICAgICAgdG1wSSA9IDA7XG4gICAgICAgICAgZm9yICg7IHRtcEkgPCB0bXBMZW47IHRtcEkrKykge1xuICAgICAgICAgICAgdG1wID0gdG1wc1t0bXBJXTtcbiAgICAgICAgICAgIGlmIChnZXRBdHRyKHRtcCwgJ2lkJykgPT09IGlkKSB7XG4gICAgICAgICAgICAgIG15U2VlZHMgPSBbdG1wXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0bXBJID09PSB0bXBMZW4pIHtcbiAgICAgICAgICAgIG15U2VlZHMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNvbnRleHRJbkRvbSAmJiB0bXAgJiYgY29udGV4dCAhPT0gY29udGV4dERvY3VtZW50KSB7XG4gICAgICAgICAgICB0bXAgPSB1dGlsLmNvbnRhaW5zKGNvbnRleHQsIHRtcCkgPyB0bXAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBteVNlZWRzID0gdG1wID8gW3RtcF0gOiBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXlTZWVkcyA9IHV0aWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZ3JvdXAudmFsdWUgfHwgJyonLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWVkc0luZGV4ID0gMDtcbiAgICBzZWVkc0xlbiA9IG15U2VlZHMubGVuZ3RoO1xuXG4gICAgaWYgKCFzZWVkc0xlbikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yICg7IHNlZWRzSW5kZXggPCBzZWVkc0xlbjsgc2VlZHNJbmRleCsrKSB7XG4gICAgICB2YXIgc2VlZCA9IG15U2VlZHNbc2VlZHNJbmRleF07XG4gICAgICB2YXIgbWF0Y2hIZWFkID0gZmluZEZpeGVkTWF0Y2hGcm9tSGVhZChzZWVkLCBncm91cCk7XG4gICAgICBpZiAobWF0Y2hIZWFkID09PSB0cnVlKSB7XG4gICAgICAgIHJldC5wdXNoKHNlZWQpO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaEhlYWQpIHtcbiAgICAgICAgaWYgKG1hdGNoU3ViKG1hdGNoSGVhZC5lbCwgbWF0Y2hIZWFkLm1hdGNoKSkge1xuICAgICAgICAgIHJldC5wdXNoKHNlZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGdyb3VwTGVuID4gMSkge1xuICAgIHJldCA9IHV0aWwudW5pcXVlKHJldCk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbGVjdDtcblxuc2VsZWN0LnBhcnNlID0gZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gcGFyc2VyLnBhcnNlKHN0cik7XG59O1xuXG5zZWxlY3QubWF0Y2hlcyA9IG1hdGNoZXM7XG5cbnNlbGVjdC51dGlsID0gdXRpbDtcblxuc2VsZWN0LnZlcnNpb24gPSAnQFZFUlNJT05AJztcbi8qKlxuICogQGlnbm9yZVxuICogbm90ZSAyMDEzLTAzLTI4XG4gKiAgLSB1c2UgcmVjdXJzaXZlIGNhbGwgdG8gcmVwbGFjZSBiYWNrdHJhY2tpbmcgYWxnb3JpdGhtXG4gKlxuICogcmVmZXJcbiAqICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy9cbiAqICAtIGh0dHA6Ly93d3cuaW1wcmVzc2l2ZXdlYnMuY29tL2Jyb3dzZXItc3VwcG9ydC1jc3MzLXNlbGVjdG9ycy9cbiAqICAtIGh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9pZS9hcmNoaXZlLzIwMTAvMDUvMTMvdGhlLWNzcy1jb3JuZXItY3NzMy1zZWxlY3RvcnMuYXNweFxuICogIC0gaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqLyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcXVlcnktc2VsZWN0b3InKTsiLCJ2YXIgaHlwaGVuRXhwcmVzc2lvbiA9IC8tKyhbYS16XSkvZ2lcblxuZnVuY3Rpb24gdXBwZXJDYXNlRmlyc3RNYXRjaCAobWF0Y2gsIGMsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgcmV0dXJuIGMudG9VcHBlckNhc2UoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjXG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtZWxDYXNlIChzdHIpIHtcbiAgdmFyIGNhbWVsQ2FzZWQgPSBzdHIucmVwbGFjZShoeXBoZW5FeHByZXNzaW9uLCB1cHBlckNhc2VGaXJzdE1hdGNoKVxuICBoeXBoZW5FeHByZXNzaW9uLmxhc3RJbmRleCA9IDBcbiAgcmV0dXJuIGNhbWVsQ2FzZWRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW1lbENhc2VcbiIsImZ1bmN0aW9uIGlzU3RyaW5nICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nXG4iLCJmdW5jdGlvbiBpc1VuZGVmaW5lZCAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCdcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZFxuIiwiZnVuY3Rpb24gYXNzaWduIChkZXN0KSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzXG4gIHZhciBzb3VyY2VcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBzb3VyY2UgPSBhcmdzW2ldXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICBkZXN0W2tleV0gPSBzb3VyY2Vba2V5XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXN0XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduXG4iLCJmdW5jdGlvbiBtYXBWYWx1ZXMgKHNvdXJjZSwgZm4pIHtcbiAgdmFyIGRlc3RpbmF0aW9uID0ge31cblxuICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBkZXN0aW5hdGlvbltrZXldID0gZm4oc291cmNlW2tleV0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlc3RpbmF0aW9uXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVmFsdWVzXG4iLCJ2YXIgY2FtZWxDYXNlID0gcmVxdWlyZSgnLi9jYW1lbENhc2UnKVxuXG5mdW5jdGlvbiBzdHlsZUNhbWVsQ2FzZSAobmFtZSkge1xuICB2YXIgY2FtZWwgPSBjYW1lbENhc2UobmFtZSlcblxuICAvLyBEZXRlY3QgaWYgdGhlIHN0eWxlIHByb3BlcnR5IGlzIGFscmVhZHkgY2FtZWxDYXNlZFxuICAvLyBUbyBub3QgY29udmVydCBXZWJraXQqLCBNb3oqIGFuZCBPKiB0byBsb3dlcmNhc2VcbiAgaWYgKGNhbWVsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpID09PSBuYW1lLmNoYXJBdCgwKSkge1xuICAgIHJldHVybiBuYW1lLmNoYXJBdCgwKSArIGNhbWVsLnNsaWNlKDEpXG4gIH1cblxuICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICctJykge1xuICAgIHJldHVybiBjYW1lbC5pbmRleE9mKCdtcycpID09PSAwID8gY2FtZWxcbiAgICAgIDogY2FtZWwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbC5zbGljZSgxKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYW1lbFxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVDYW1lbENhc2VcbiIsInZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0JylcbnZhciBzdHlsZUF0dHIgPSByZXF1aXJlKCdzdHlsZS1hdHRyJylcbnZhciBxdWVyeVNlbGVjdG9yQWxsID0gcmVxdWlyZSgncXVlcnktc2VsZWN0b3InKVxudmFyIGNhbWVsQ2FzZSA9IHJlcXVpcmUoJy4vdXRpbHMvY2FtZWxDYXNlJylcbnZhciBpc1N0cmluZyA9IHJlcXVpcmUoJy4vdXRpbHMvaXNTdHJpbmcnKVxudmFyIGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnLi91dGlscy9pc1VuZGVmaW5lZCcpXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi91dGlscy9hc3NpZ24nKVxudmFyIG1hcFZhbHVlcyA9IHJlcXVpcmUoJy4vdXRpbHMvbWFwVmFsdWVzJylcbnZhciBzdHlsZUNhbWVsQ2FzZSA9IHJlcXVpcmUoJy4vdXRpbHMvc3R5bGVDYW1lbENhc2UnKVxuXG5mdW5jdGlvbiBlbGVtZW50ICgpIHtcbiAgZnVuY3Rpb24gRWxlbWVudCAobm9kZU5hbWUsIHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLm5vZGVOYW1lID0gbm9kZU5hbWVcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0ge31cbiAgICB0aGlzLnRleHQgPSAnJ1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHMgPSB7XG4gICAgICByZWY6IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgICAgc2VsZi5jb21wb25lbnQgPSBjb21wb25lbnRcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBzZXRQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgcHJvcHMuc3R5bGVbc3R5bGVDYW1lbENhc2UobmFtZSldID0gdmFsdWVcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0UHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLnN0eWxlW3N0eWxlQ2FtZWxDYXNlKG5hbWUpXSB8fCAnJ1xuICAgICAgICB9LFxuICAgICAgICBnZXRQcm9wZXJ0eVZhbHVlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5zdHlsZS5nZXRQcm9wZXJ0eShuYW1lKVxuICAgICAgICB9LFxuICAgICAgICByZW1vdmVQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICBkZWxldGUgcHJvcHMuc3R5bGVbc3R5bGVDYW1lbENhc2UobmFtZSldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlID0gcHJvcHMuc3R5bGVcbiAgfVxuXG4gIEVsZW1lbnQuRUxFTUVOVF9OT0RFID0gMVxuICBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCA9IDFcbiAgRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcgPSAyXG4gIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HID0gNFxuICBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TID0gOFxuICBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSA9IDE2XG5cbiAgRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbiAgLy8gVGhpcyB3YXMgZWFzeSB0byBkbyB3aXRoIFZpbS5cbiAgLy8gSnVzdCBzYXlpbmcuXG4gIEVsZW1lbnQucHJvdG90eXBlLmV2ZW50TmFtZU1hcHBpbmdzID0ge1xuICAgICdibHVyJzogJ29uQmx1cicsXG4gICAgJ2NoYW5nZSc6ICdvbkNoYW5nZScsXG4gICAgJ2NsaWNrJzogJ29uQ2xpY2snLFxuICAgICdjb250ZXh0bWVudSc6ICdvbkNvbnRleHRNZW51JyxcbiAgICAnY29weSc6ICdvbkNvcHknLFxuICAgICdjdXQnOiAnb25DdXQnLFxuICAgICdkb3VibGVjbGljayc6ICdvbkRvdWJsZUNsaWNrJyxcbiAgICAnZHJhZyc6ICdvbkRyYWcnLFxuICAgICdkcmFnZW5kJzogJ29uRHJhZ0VuZCcsXG4gICAgJ2RyYWdlbnRlcic6ICdvbkRyYWdFbnRlcicsXG4gICAgJ2RyYWdleGl0JzogJ29uRHJhZ0V4aXQnLFxuICAgICdkcmFnbGVhdmUnOiAnb25EcmFnTGVhdmUnLFxuICAgICdkcmFnb3Zlcic6ICdvbkRyYWdPdmVyJyxcbiAgICAnZHJhZ3N0YXJ0JzogJ29uRHJhZ1N0YXJ0JyxcbiAgICAnZHJvcCc6ICdvbkRyb3AnLFxuICAgICdlcnJvcic6ICdvbkVycm9yJyxcbiAgICAnZm9jdXMnOiAnb25Gb2N1cycsXG4gICAgJ2lucHV0JzogJ29uSW5wdXQnLFxuICAgICdrZXlkb3duJzogJ29uS2V5RG93bicsXG4gICAgJ2tleXByZXNzJzogJ29uS2V5UHJlc3MnLFxuICAgICdrZXl1cCc6ICdvbktleVVwJyxcbiAgICAnbG9hZCc6ICdvbkxvYWQnLFxuICAgICdtb3VzZWRvd24nOiAnb25Nb3VzZURvd24nLFxuICAgICdtb3VzZWVudGVyJzogJ29uTW91c2VFbnRlcicsXG4gICAgJ21vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAnbW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAnbW91c2VvdXQnOiAnb25Nb3VzZU91dCcsXG4gICAgJ21vdXNlb3Zlcic6ICdvbk1vdXNlT3ZlcicsXG4gICAgJ21vdXNldXAnOiAnb25Nb3VzZVVwJyxcbiAgICAncGFzdGUnOiAnb25QYXN0ZScsXG4gICAgJ3Njcm9sbCc6ICdvblNjcm9sbCcsXG4gICAgJ3N1Ym1pdCc6ICdvblN1Ym1pdCcsXG4gICAgJ3RvdWNoY2FuY2VsJzogJ29uVG91Y2hDYW5jZWwnLFxuICAgICd0b3VjaGVuZCc6ICdvblRvdWNoRW5kJyxcbiAgICAndG91Y2htb3ZlJzogJ29uVG91Y2hNb3ZlJyxcbiAgICAndG91Y2hzdGFydCc6ICdvblRvdWNoU3RhcnQnLFxuICAgICd3aGVlbCc6ICdvbldoZWVsJ1xuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuc2tpcE5hbWVUcmFuc2Zvcm1hdGlvbkV4cHJlc3Npb25zID0gW1xuICAgIC9eZGF0YS0vLFxuICAgIC9eYXJpYS0vXG4gIF1cblxuICBFbGVtZW50LnByb3RvdHlwZS5hdHRyaWJ1dGVOYW1lTWFwcGluZ3MgPSB7XG4gICAgJ2NsYXNzJzogJ2NsYXNzTmFtZSdcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmF0dHJpYnV0ZVRvUHJvcE5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBza2lwVHJhbnNmb3JtTWF0Y2hlcyA9IHRoaXMuc2tpcE5hbWVUcmFuc2Zvcm1hdGlvbkV4cHJlc3Npb25zLm1hcChmdW5jdGlvbiAoZXhwcikge1xuICAgICAgcmV0dXJuIGV4cHIudGVzdChuYW1lKVxuICAgIH0pXG5cbiAgICBpZiAoc2tpcFRyYW5zZm9ybU1hdGNoZXMuc29tZShCb29sZWFuKSkge1xuICAgICAgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlTmFtZU1hcHBpbmdzW25hbWVdIHx8IGNhbWVsQ2FzZShuYW1lKVxuICAgIH1cbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlmIChuYW1lID09PSAnc3R5bGUnICYmIGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgdmFyIHN0eWxlcyA9IHN0eWxlQXR0ci5wYXJzZSh2YWx1ZSlcblxuICAgICAgZm9yICh2YXIga2V5IGluIHN0eWxlcykge1xuICAgICAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KGtleSwgc3R5bGVzW2tleV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHNbdGhpcy5hdHRyaWJ1dGVUb1Byb3BOYW1lKG5hbWUpXSA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wc1t0aGlzLmF0dHJpYnV0ZVRvUHJvcE5hbWUobmFtZSldXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKVxuXG4gICAgaWYgKCFpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgc3BlY2lmaWVkOiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wcm9wc1t0aGlzLmF0dHJpYnV0ZVRvUHJvcE5hbWUobmFtZSldXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5ldmVudFRvUHJvcE5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50TmFtZU1hcHBpbmdzW25hbWVdIHx8IG5hbWVcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAobmFtZSwgZm4pIHtcbiAgICB2YXIgcHJvcCA9IHRoaXMuZXZlbnRUb1Byb3BOYW1lKG5hbWUpXG4gICAgdGhpcy5ldmVudExpc3RlbmVyc1twcm9wXSA9IHRoaXMuZXZlbnRMaXN0ZW5lcnNbcHJvcF0gfHwgW11cbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzW3Byb3BdLnB1c2goZm4pXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gKG5hbWUsIGZuKSB7XG4gICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnNbdGhpcy5ldmVudFRvUHJvcE5hbWUobmFtZSldXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBsaXN0ZW5lcnMuaW5kZXhPZihmbilcblxuICAgICAgaWYgKG1hdGNoICE9PSAtMSkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKG1hdGNoLCAxKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gKGVsKSB7XG4gICAgaWYgKGVsIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgZWwucGFyZW50Tm9kZSA9IHRoaXNcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbClcbiAgICByZXR1cm4gZWxcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmluc2VydEJlZm9yZSA9IGZ1bmN0aW9uIChlbCwgYmVmb3JlKSB7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoYmVmb3JlKVxuICAgIGVsLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHZhciB0YXJnZXQgPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZClcbiAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKHRhcmdldCwgMSlcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpWzBdIHx8IG51bGxcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBlbm91Z2ggYXJndW1lbnRzJylcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzZWxlY3RvciwgdGhpcylcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblxuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXRjaGVzXG5cbiAgICAgIGlmIChub2RlTmFtZSAhPT0gJyonKSB7XG4gICAgICAgIG1hdGNoZXMgPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVsLm5vZGVOYW1lID09PSBub2RlTmFtZVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlcyA9IGNoaWxkcmVuXG4gICAgICB9XG5cbiAgICAgIHZhciBjaGlsZE1hdGNoZXMgPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC5nZXRFbGVtZW50c0J5VGFnTmFtZShub2RlTmFtZSlcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBtYXRjaGVzLmNvbmNhdC5hcHBseShtYXRjaGVzLCBjaGlsZE1hdGNoZXMpXG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuXG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbWF0Y2ggPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09IGlkXG4gICAgICB9KVswXVxuXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2hpbGRNYXRjaGVzID0gY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgIHJldHVybiBlbC5nZXRFbGVtZW50QnlJZChpZClcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gY2hpbGRNYXRjaGVzLmZpbHRlcihmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2ggIT09IG51bGxcbiAgICAgICAgfSlbMF0gfHwgbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIH1cblxuICBFbGVtZW50LnByb3RvdHlwZS5jbG9uZU5vZGUgPSBmdW5jdGlvbiAoZGVlcCkge1xuICAgIC8vIGlmIGRlZXAgaXMgbm90IHByb3ZpZGVkLCBpdCBkZWZhdWx0IHRvIHRydWVcbiAgICBpZiAoZGVlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWVwID0gdHJ1ZVxuICAgIH1cbiAgICB2YXIgZWwgPSBuZXcgRWxlbWVudCh0aGlzLm5vZGVOYW1lLCB0aGlzLnBhcmVudE5vZGUpXG4gICAgLy8gY29weSBub2RlVHlwZVxuICAgIGlmICh0aGlzLm5vZGVUeXBlKSB7XG4gICAgICBlbC5ub2RlVHlwZSA9IHRoaXMubm9kZVR5cGVcbiAgICB9XG5cbiAgICB2YXIga1xuXG4gICAgLy8gY29weSB0aGUgcHJvcHNcbiAgICBmb3IgKGsgaW4gdGhpcy5wcm9wcykge1xuICAgICAgaWYgKHRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoaykgJiYgayAhPT0gJ3JlZicgJiYgayAhPT0gJ3N0eWxlJykge1xuICAgICAgICBlbC5wcm9wc1trXSA9IHRoaXMucHJvcHNba11cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY29weSB0aGUgc3R5bGVzXG4gICAgZm9yIChrIGluIHRoaXMuc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLnN0eWxlLmhhc093blByb3BlcnR5KGspICYmIFtcbiAgICAgICAgJ3NldFByb3BlcnR5JyxcbiAgICAgICAgJ2dldFByb3BlcnR5JyxcbiAgICAgICAgJ2dldFByb3BlcnR5VmFsdWUnLFxuICAgICAgICAncmVtb3ZlUHJvcGVydHknXG4gICAgICBdLmluZGV4T2YoaykgPT09IC0xKSB7XG4gICAgICAgIGVsLnN0eWxlW2tdID0gdGhpcy5zdHlsZVtrXVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVlcCkge1xuICAgICAgZWwuY2hpbGROb2RlcyA9IHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKGNoaWxkRWwpIHtcbiAgICAgICAgaWYgKCFjaGlsZEVsLm5vZGVUeXBlKSB7XG4gICAgICAgICAgLy8gSXQncyBhIFJlYWN0IGVsZW1lbnQsIGxldCBSZWFjdCBjbG9uZSBpdFxuICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRFbClcbiAgICAgICAgfVxuICAgICAgICAvLyBlaXRoZXIgRWxlbWVudCBvciB0cnVlIGRvbSBlbGVtZW50XG4gICAgICAgIGNoaWxkRWwgPSBjaGlsZEVsLmNsb25lTm9kZSh0cnVlKVxuICAgICAgICAvLyBpZiBhIGZhdXggZG9tIGVsZW1lbnQsIG1vZGlmeSBwYXJlbnROb2RlXG4gICAgICAgIGlmIChjaGlsZEVsIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgIGNoaWxkRWwucGFyZW50Tm9kZSA9IGVsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoaWxkRWxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBlbFxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUudG9SZWFjdCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGluZGV4ID0gaW5kZXggfHwgMFxuICAgIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgdGhpcy5wcm9wcylcbiAgICBwcm9wcy5zdHlsZSA9IGFzc2lnbih7fSwgcHJvcHMuc3R5bGUpXG5cbiAgICB2YXIgb3JpZ2luYWxFbGVtZW50ID0gdGhpc1xuXG4gICAgZnVuY3Rpb24gdW5pcXVlS2V5ICgpIHtcbiAgICAgIHJldHVybiAnZmF1eC1kb20tJyArIGluZGV4XG4gICAgfVxuXG4gICAgaWYgKGlzVW5kZWZpbmVkKHByb3BzLmtleSkpIHtcbiAgICAgIHByb3BzLmtleSA9IHVuaXF1ZUtleSgpXG4gICAgfVxuXG4gICAgZGVsZXRlIHByb3BzLnN0eWxlLnNldFByb3BlcnR5XG4gICAgZGVsZXRlIHByb3BzLnN0eWxlLmdldFByb3BlcnR5XG4gICAgZGVsZXRlIHByb3BzLnN0eWxlLmdldFByb3BlcnR5VmFsdWVcbiAgICBkZWxldGUgcHJvcHMuc3R5bGUucmVtb3ZlUHJvcGVydHlcblxuICAgIGFzc2lnbihwcm9wcywgbWFwVmFsdWVzKHRoaXMuZXZlbnRMaXN0ZW5lcnMsIGZ1bmN0aW9uIChsaXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoc3ludGhldGljRXZlbnQpIHtcbiAgICAgICAgdmFyIGV2ZW50XG5cbiAgICAgICAgaWYgKHN5bnRoZXRpY0V2ZW50KSB7XG4gICAgICAgICAgZXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudFxuICAgICAgICAgIGV2ZW50LnN5bnRoZXRpY0V2ZW50ID0gc3ludGhldGljRXZlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcFZhbHVlcyhsaXN0ZW5lcnMsIGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICAgIGxpc3RlbmVyLmNhbGwob3JpZ2luYWxFbGVtZW50LCBldmVudClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KSlcblxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHRoaXMubm9kZU5hbWUsIHByb3BzLCB0aGlzLnRleHQgfHwgdGhpcy5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7XG4gICAgICBpZiAoZWwgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbC50b1JlYWN0KGkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZWxcbiAgICAgIH1cbiAgICB9KSlcbiAgfVxuXG4gIEVsZW1lbnQucHJvdG90eXBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgZnVuY3Rpb24gZ2V0Rmlyc3ROb2RlQnlPcmRlciAobm9kZXMsIG5vZGVPbmUsIG5vZGVUd28pIHtcbiAgICAgIHJldHVybiBub2Rlcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgbm9kZSkge1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSBlbHNlIGlmIChub2RlID09PSBub2RlT25lKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGVPbmVcbiAgICAgICAgfSBlbHNlIGlmIChub2RlID09PSBub2RlVHdvKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGVUd29cbiAgICAgICAgfSBlbHNlIGlmIChub2RlLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0Rmlyc3ROb2RlQnlPcmRlcihub2RlLmNoaWxkTm9kZXMsIG5vZGVPbmUsIG5vZGVUd28pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sIGZhbHNlKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQW5jZXN0b3IgKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgICB3aGlsZSAodGFyZ2V0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGVcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gc291cmNlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZWl0aGVyQ29udGFpbnMgKGxlZnQsIHJpZ2h0KSB7XG4gICAgICByZXR1cm4gaXNBbmNlc3RvcihsZWZ0LCByaWdodClcbiAgICAgICAgPyBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSArIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HXG4gICAgICAgIDogaXNBbmNlc3RvcihyaWdodCwgbGVmdClcbiAgICAgICAgICA/IEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgKyBFbGVtZW50LkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElOR1xuICAgICAgICAgIDogZmFsc2VcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRSb290Tm9kZSAobm9kZSkge1xuICAgICAgd2hpbGUgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlXG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIGlmICh0aGlzID09PSBvdGhlcikge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICB2YXIgcmVmZXJlbmNlUm9vdCA9IGdldFJvb3ROb2RlKHRoaXMpXG4gICAgdmFyIG90aGVyUm9vdCA9IGdldFJvb3ROb2RlKG90aGVyKVxuXG4gICAgaWYgKHJlZmVyZW5jZVJvb3QgIT09IG90aGVyUm9vdCkge1xuICAgICAgcmV0dXJuIEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEXG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IGVpdGhlckNvbnRhaW5zKHRoaXMsIG90aGVyKVxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICB2YXIgZmlyc3QgPSBnZXRGaXJzdE5vZGVCeU9yZGVyKFtyZWZlcmVuY2VSb290XSwgdGhpcywgb3RoZXIpXG4gICAgcmV0dXJuIGZpcnN0ID09PSB0aGlzXG4gICAgICA/IEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HXG4gICAgICA6IGZpcnN0ID09PSBvdGhlclxuICAgICAgICA/IEVsZW1lbnQuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HXG4gICAgICAgIDogRWxlbWVudC5ET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURURcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEVsZW1lbnQucHJvdG90eXBlLCB7XG4gICAgbmV4dFNpYmxpbmc6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2libGluZ3MgPSB0aGlzLnBhcmVudE5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIG1lID0gc2libGluZ3MuaW5kZXhPZih0aGlzKVxuICAgICAgICByZXR1cm4gc2libGluZ3NbbWUgKyAxXVxuICAgICAgfVxuICAgIH0sXG4gICAgcHJldmlvdXNTaWJsaW5nOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNpYmxpbmdzID0gdGhpcy5wYXJlbnROb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBtZSA9IHNpYmxpbmdzLmluZGV4T2YodGhpcylcbiAgICAgICAgcmV0dXJuIHNpYmxpbmdzW21lIC0gMV1cbiAgICAgIH1cbiAgICB9LFxuICAgIGlubmVySFRNTDoge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgICAgIHRoaXMudGV4dCA9IHRleHRcbiAgICAgIH1cbiAgICB9LFxuICAgIHRleHRDb250ZW50OiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dFxuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dFxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRyZW46IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBTbyBmYXIgbm9kZXMgY3JlYXRlZCBieSB0aGlzIGxpYnJhcnkgYXJlIGFsbCBvZiBub2RlVHlwZSAxIChlbGVtZW50cyksXG4gICAgICAgIC8vIGJ1dCB0aGlzIGNvdWxkIGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICBpZiAoIWVsLm5vZGVUeXBlKSB7XG4gICAgICAgICAgICAvLyBJdCdzIGEgUmVhY3QgZWxlbWVudCwgd2UgYWx3YXlzIGFkZCBpdFxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJdCdzIGEgSFRNTCBub2RlLiBXZSB3YW50IHRvIGZpbHRlciB0byBoYXZlIG9ubHkgbm9kZXMgd2l0aCB0eXBlIDFcbiAgICAgICAgICByZXR1cm4gZWwubm9kZVR5cGUgPT09IDFcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgLy8gVGhlc2UgTlMgbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoaW5ncyBsaWtlIEQzIGlmIGl0IHNwb3RzIGEgbmFtZXNwYWNlLlxuICAvLyBMaWtlIHhsaW5rOmhyZWYuIEkgZG9uJ3QgY2FyZSBhYm91dCBuYW1lc3BhY2VzLCBzbyB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBOUyBhbGlhc2VzIGNyZWF0ZWQuXG4gIHZhciBuYW1lc3BhY2VNZXRob2RzID0gW1xuICAgICdzZXRBdHRyaWJ1dGUnLFxuICAgICdnZXRBdHRyaWJ1dGUnLFxuICAgICdnZXRBdHRyaWJ1dGVOb2RlJyxcbiAgICAncmVtb3ZlQXR0cmlidXRlJyxcbiAgICAnZ2V0RWxlbWVudHNCeVRhZ05hbWUnLFxuICAgICdnZXRFbGVtZW50QnlJZCdcbiAgXVxuXG4gIG5hbWVzcGFjZU1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBmbiA9IEVsZW1lbnQucHJvdG90eXBlW25hbWVdXG4gICAgRWxlbWVudC5wcm90b3R5cGVbbmFtZSArICdOUyddID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBFbGVtZW50XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZWxlbWVudFxuIiwiZnVuY3Rpb24gd2luZG93ICgpIHtcbiAgdmFyIFdpbmRvdyA9IHtcbiAgICBnZXRDb21wdXRlZFN0eWxlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0UHJvcGVydHlWYWx1ZTogbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBXaW5kb3dcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbi8vIC0tIElubGluZWQgZnJvbSBmYmpzIC0tXG5cbnZhciBlbXB0eU9iamVjdCA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTtcbn1cblxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9pbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFsaWRhdGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxudmFyIHdhcm5pbmcgPSBmdW5jdGlvbigpe307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcblxuICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7XG4gICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suXG4gICAgfVxuXG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbi8vIC8tLSBJbmxpbmVkIGZyb20gZmJqcyAtLVxuXG52YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XG4vLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5mdW5jdGlvbiBpZGVudGl0eShmbikge1xuICByZXR1cm4gZm47XG59XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn0gZWxzZSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG59XG5cbmZ1bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuICAvKipcbiAgICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAgICovXG5cbiAgdmFyIGluamVjdGVkTWl4aW5zID0gW107XG5cbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG4gICAqIG9yIGhvc3QgY29tcG9uZW50cy5cbiAgICpcbiAgICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gICAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuICAgKlxuICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICAgKiAgICAgfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG4gICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG4gICAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAqXG4gICAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIG1peGluczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuICAgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4gICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWRcbiAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG4gICAgICpcbiAgICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHJldHVybiB7XG4gICAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAgICogICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cbiAgICAgKlxuICAgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG4gICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+O1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gICAgICogQHJlcXVpcmVkXG4gICAgICovXG4gICAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxuICAgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICAgKlxuICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VDb3VudFxuICAgICAqICAgICB9KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG4gICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcbiAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAgICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAgICogdXBkYXRlLlxuICAgICAqXG4gICAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdERUZJTkVfT05DRScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgICAqIGFuZCBgbmV4dENvbnRleHRgLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZW1lbnQgZm9yIChkZXByZWNhdGVkKSBgY29tcG9uZW50V2lsbE1vdW50YC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlbWVudCBmb3IgKGRlcHJlY2F0ZWQpIGBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzYC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZW1lbnQgZm9yIChkZXByZWNhdGVkKSBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAb3ZlcnJpZGFibGVcbiAgICAgKi9cbiAgICB1cGRhdGVDb21wb25lbnQ6ICdPVkVSUklERV9CQVNFJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIFJlYWN0Q2xhc3NJbnRlcmZhY2UgYnV0IGZvciBzdGF0aWMgbWV0aG9kcy5cbiAgICovXG4gIHZhciBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFuZCB3aGVuIGl0XG4gICAgICogcmVjZWl2ZXMgbmV3IHByb3BzLiBSZXR1cm4gYW4gb2JqZWN0IHRvIHVwZGF0ZSBzdGF0ZSBpbiByZXNwb25zZSB0b1xuICAgICAqIHByb3AgY2hhbmdlcy4gUmV0dXJuIG51bGwgdG8gaW5kaWNhdGUgbm8gY2hhbmdlIHRvIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgYW4gb2JqZWN0IGlzIHJldHVybmVkLCBpdHMga2V5cyB3aWxsIGJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge29iamVjdCB8fCBudWxsfVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCdcbiAgfTtcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXG4gICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcbiAgICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcbiAgICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBcInN0YXRpY3NcIiBrZXkgdW5kZXJcbiAgICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxuICAgKi9cbiAgdmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHtcbiAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgIH0sXG4gICAgbWl4aW5zOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG4gICAgICBpZiAobWl4aW5zKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuICAgICAgICBjaGlsZENvbnRleHRUeXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIGNvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxuICAgICAgICBjb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcbiAgICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cbiAgICAgKi9cbiAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oXG4gICAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLFxuICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3Byb3AnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcbiAgICB9LFxuICAgIHN0YXRpY3M6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG4gICAgfSxcbiAgICBhdXRvYmluZDogZnVuY3Rpb24oKSB7fVxuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG4gICAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIF9pbnZhcmlhbnQgc28gY29tcG9uZW50c1xuICAgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4gX19ERVZfX1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICB0eXBlb2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcbiAgICAgICAgICAgICAgJ1JlYWN0LlByb3BUeXBlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLFxuICAgICAgICAgICAgcHJvcE5hbWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKSB7XG4gICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICA/IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV1cbiAgICAgIDogbnVsbDtcblxuICAgIC8vIERpc2FsbG93IG92ZXJyaWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ09WRVJSSURFX0JBU0UnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcgK1xuICAgICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcbiAgICAgICAgICAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlICcgK1xuICAgICAgICAgICd0byBhIG1peGluLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1peGluIGhlbHBlciB3aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZFxuICAgKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc2VzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHtcbiAgICBpZiAoIXNwZWMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7XG4gICAgICAgIHZhciBpc01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09PSAnb2JqZWN0JyAmJiBzcGVjICE9PSBudWxsO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIGlzTWl4aW5WYWxpZCxcbiAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcbiAgICAgICAgICAgICAgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArXG4gICAgICAgICAgICAgICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgK1xuICAgICAgICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICB0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJyxcbiAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgJyArXG4gICAgICAgICdyZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcbiAgICBfaW52YXJpYW50KFxuICAgICAgIWlzVmFsaWRFbGVtZW50KHNwZWMpLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcblxuICAgIHZhciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xuXG4gICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG4gICAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG4gICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG4gICAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkpIHtcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAgICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcbiAgICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpO1xuXG4gICAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgICB2YXIgaXNSZWFjdENsYXNzTWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9XG4gICAgICAgICAgaXNGdW5jdGlvbiAmJlxuICAgICAgICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAmJlxuICAgICAgICAgIHNwZWMuYXV0b2JpbmQgIT09IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xuICAgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXG4gICAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAgICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICAgICAgIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8fFxuICAgICAgICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG4gICAgICAgICAgICAgICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArXG4gICAgICAgICAgICAgICAgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLFxuICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAgIC8vIG1ldGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3ByaWF0ZS5cbiAgICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIC8vIEFkZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29raW5nXG4gICAgICAgICAgICAgIC8vIGF0IHByb2ZpbGluZyB0b29scy5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1lICsgJ18nICsgbmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgaWYgKCFzdGF0aWNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzUmVzZXJ2ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXG4gICAgICAgICAgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cXCd0IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICtcbiAgICAgICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICtcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcblxuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBuYW1lIGluIENvbnN0cnVjdG9yO1xuICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAgICAgPyBSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlW25hbWVdXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgJyArXG4gICAgICAgICAgICAnZHVlIHRvIGEgbWl4aW4uJyxcbiAgICAgICAgICBuYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihDb25zdHJ1Y3RvcltuYW1lXSwgcHJvcGVydHkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJzdCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3RcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAgIF9pbnZhcmlhbnQoXG4gICAgICBvbmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0d28gPT09ICdvYmplY3QnLFxuICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLidcbiAgICApO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHR3bykge1xuICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcbiAgICAgICAgICAgICdUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCAnICtcbiAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG4gICAgICAgICAgICAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICtcbiAgICAgICAgICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcbiAgICAgICAgICBrZXlcbiAgICAgICAgKTtcbiAgICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgpIHtcbiAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgICAgdmFyIGMgPSB7fTtcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkge1xuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAgICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxuICAgICAgICAgICAgX2tleSA9IDE7XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAgICAgICAgX2tleSsrXG4gICAgICAgICkge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG4gICAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICtcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAgICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kUGFpcnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2YXIgbWV0aG9kID0gcGFpcnNbaSArIDFdO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIElzTW91bnRlZFByZU1peGluID0ge1xuICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgSXNNb3VudGVkUG9zdE1peGluID0ge1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcbiAgICAvKipcbiAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQuXG4gICAgICovXG4gICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlLCBjYWxsYmFjayk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQGZpbmFsXG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQsXG4gICAgICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwICcgK1xuICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gY29tcG9uZW50V2lsbFVubW91bnQgdG8gJyArXG4gICAgICAgICAgICAncHJldmVudCBtZW1vcnkgbGVha3MuJyxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgdGhpcy5uYW1lIHx8XG4gICAgICAgICAgICAnQ29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVkO1xuICAgIH1cbiAgfTtcblxuICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uKCkge307XG4gIF9hc3NpZ24oXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q2xhc3NNaXhpblxuICApO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzc1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVyYCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rpb24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNsYXNzKHNwZWMpIHtcbiAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0XG4gICAgLy8gdW5uZWNlc3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy5cbiAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLFxuICAgICAgICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICtcbiAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG4gICAgICAgICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxuICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH0pO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XG5cbiAgICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQcmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQb3N0TWl4aW4pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyLFxuICAgICAgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJ1xuICAgICk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICtcbiAgICAgICAgICAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xuICAgICAgICAgICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gJyArXG4gICAgICAgICAgJ0RpZCB5b3UgbWVhbiBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUNsYXNzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJy4vZmFjdG9yeScpO1xuXG5pZiAodHlwZW9mIFJlYWN0ID09PSAndW5kZWZpbmVkJykge1xuICB0aHJvdyBFcnJvcihcbiAgICAnY3JlYXRlLXJlYWN0LWNsYXNzIGNvdWxkIG5vdCBmaW5kIHRoZSBSZWFjdCBvYmplY3QuIElmIHlvdSBhcmUgdXNpbmcgc2NyaXB0IHRhZ3MsICcgK1xuICAgICAgJ21ha2Ugc3VyZSB0aGF0IFJlYWN0IGlzIGJlaW5nIGxvYWRlZCBiZWZvcmUgY3JlYXRlLXJlYWN0LWNsYXNzLidcbiAgKTtcbn1cblxuLy8gSGFjayB0byBncmFiIE5vb3BVcGRhdGVRdWV1ZSBmcm9tIGlzb21vcnBoaWMgUmVhY3RcbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IG5ldyBSZWFjdC5Db21wb25lbnQoKS51cGRhdGVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoXG4gIFJlYWN0LkNvbXBvbmVudCxcbiAgUmVhY3QuaXNWYWxpZEVsZW1lbnQsXG4gIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iLCJ2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpXG52YXIgY3JlYXRlUmVhY3RDbGFzcyA9IHJlcXVpcmUoJ2NyZWF0ZS1yZWFjdC1jbGFzcycpXG52YXIgbWFwVmFsdWVzID0gcmVxdWlyZSgnLi91dGlscy9tYXBWYWx1ZXMnKVxudmFyIGhvaXN0Tm9uUmVhY3RTdGF0aWNzID0gcmVxdWlyZSgnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnKVxuXG5mdW5jdGlvbiB3aXRoRmF1eERPTUZhY3RvcnkgKEVsZW1lbnQpIHtcbiAgZnVuY3Rpb24gd2l0aEZhdXhET00gKFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICB2YXIgV2l0aEZhdXhET00gPSBjcmVhdGVSZWFjdENsYXNzKHtcbiAgICAgIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNvbm5lY3RlZEZhdXhET00gPSB7fVxuICAgICAgICB0aGlzLmFuaW1hdGVGYXV4RE9NVW50aWwgPSAwXG4gICAgICB9LFxuICAgICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zdG9wQW5pbWF0aW5nRmF1eERPTSgpXG4gICAgICAgIHRoaXMuc3RvcERyYXdGYXV4RE9NKClcbiAgICAgIH0sXG4gICAgICBjb25uZWN0RmF1eERPTTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIGRpc2NhcmROb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25uZWN0ZWRGYXV4RE9NW25hbWVdIHx8IGRpc2NhcmROb2RlKSB7XG4gICAgICAgICAgdGhpcy5jb25uZWN0ZWRGYXV4RE9NW25hbWVdID0gdHlwZW9mIG5vZGUgIT09ICdzdHJpbmcnID8gbm9kZSA6IG5ldyBFbGVtZW50KG5vZGUpXG4gICAgICAgICAgdGhpcy5kcmF3RmF1eERPTVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuZHJhd0ZhdXhET00pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkRmF1eERPTVtuYW1lXVxuICAgICAgfSxcbiAgICAgIGRyYXdGYXV4RE9NOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2aXJ0dWFsRE9NID0gbWFwVmFsdWVzKHRoaXMuY29ubmVjdGVkRmF1eERPTSwgZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gbi50b1JlYWN0KClcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh2aXJ0dWFsRE9NKVxuICAgICAgfSxcbiAgICAgIGFuaW1hdGVGYXV4RE9NOiBmdW5jdGlvbiAoZHVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5hbmltYXRlRmF1eERPTVVudGlsID0gTWF0aC5tYXgoRGF0ZS5ub3coKSArIGR1cmF0aW9uLCB0aGlzLmFuaW1hdGVGYXV4RE9NVW50aWwpXG4gICAgICAgIGlmICghdGhpcy5mYXV4RE9NQW5pbWF0aW9uSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLmZhdXhET01BbmltYXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIDwgdGhpcy5hbmltYXRlRmF1eERPTVVudGlsKSB7XG4gICAgICAgICAgICAgIHRoaXMuZHJhd0ZhdXhET00oKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zdG9wQW5pbWF0aW5nRmF1eERPTSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfS5iaW5kKHRoaXMpLCAxNilcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHN0b3BBbmltYXRpbmdGYXV4RE9NOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuZmF1eERPTUFuaW1hdGlvbkludGVydmFsID0gY2xlYXJJbnRlcnZhbCh0aGlzLmZhdXhET01BbmltYXRpb25JbnRlcnZhbClcbiAgICAgICAgdGhpcy5hbmltYXRlRmF1eERPTVVudGlsID0gMFxuICAgICAgfSxcbiAgICAgIHN0b3BEcmF3RmF1eERPTTogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRyYXdGYXV4RE9NVGltZW91dCA9IGNsZWFyVGltZW91dCh0aGlzLmRyYXdGYXV4RE9NVGltZW91dClcbiAgICAgIH0sXG4gICAgICBpc0FuaW1hdGluZ0ZhdXhET006IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mYXV4RE9NQW5pbWF0aW9uSW50ZXJ2YWxcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wcm9wcywgdGhpcy5zdGF0ZSwge1xuICAgICAgICAgIGNvbm5lY3RGYXV4RE9NOiB0aGlzLmNvbm5lY3RGYXV4RE9NLFxuICAgICAgICAgIGRyYXdGYXV4RE9NOiB0aGlzLmRyYXdGYXV4RE9NLFxuICAgICAgICAgIGFuaW1hdGVGYXV4RE9NOiB0aGlzLmFuaW1hdGVGYXV4RE9NLFxuICAgICAgICAgIHN0b3BBbmltYXRpbmdGYXV4RE9NOiB0aGlzLnN0b3BBbmltYXRpbmdGYXV4RE9NLFxuICAgICAgICAgIGlzQW5pbWF0aW5nRmF1eERPTTogdGhpcy5pc0FuaW1hdGluZ0ZhdXhET01cbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgcHJvcHMpXG4gICAgICB9XG4gICAgfSlcbiAgICBXaXRoRmF1eERPTS5kaXNwbGF5TmFtZSA9ICdXaXRoRmF1eERPTSgnICsgZ2V0RGlzcGxheU5hbWUoV3JhcHBlZENvbXBvbmVudCkgKyAnKSdcbiAgICBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoRmF1eERPTSwgV3JhcHBlZENvbXBvbmVudClcbiAgICByZXR1cm4gV2l0aEZhdXhET01cbiAgfVxuXG4gIHJldHVybiB3aXRoRmF1eERPTVxufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZSAoV3JhcHBlZENvbXBvbmVudCkge1xuICByZXR1cm4gV3JhcHBlZENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCdcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoRmF1eERPTUZhY3RvcnlcbiIsInZhciBlbGVtZW50ID0gcmVxdWlyZSgnLi9fZWxlbWVudCcpXG52YXIgd2luZG93ID0gcmVxdWlyZSgnLi9fd2luZG93JylcbnZhciB3aXRoRmF1eERPTSA9IHJlcXVpcmUoJy4vX3dpdGhGYXV4RE9NJylcblxuZnVuY3Rpb24gZmFjdG9yeSAoKSB7XG4gIHZhciBFbGVtZW50ID0gZWxlbWVudCgpXG4gIHZhciBXaW5kb3cgPSB3aW5kb3coKVxuICB2YXIgUmVhY3RGYXV4RE9NID0ge1xuICAgIEVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgZGVmYXVsdFZpZXc6IFdpbmRvdyxcbiAgICB3aXRoRmF1eERPTTogd2l0aEZhdXhET00oRWxlbWVudCksXG4gICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4gICAgICByZXR1cm4gbmV3IEVsZW1lbnQobm9kZU5hbWUpXG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50TlM6IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG5vZGVOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVFbGVtZW50KG5vZGVOYW1lKVxuICAgIH0sXG4gICAgY29tcGFyZURvY3VtZW50UG9zaXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRoZSBzZWxlY3RvciBlbmdpbmUgdHJpZXMgdG8gdmFsaWRhdGUgd2l0aCB0aGlzLCBidXQgd2UgZG9uJ3QgY2FyZS5cbiAgICAgIC8vIDggPSBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUywgc28gd2Ugc2F5IGFsbCBub2RlcyBhcmUgaW4gdGhpcyBkb2N1bWVudC5cbiAgICAgIHJldHVybiA4XG4gICAgfVxuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUub3duZXJEb2N1bWVudCA9IFJlYWN0RmF1eERPTVxuICByZXR1cm4gUmVhY3RGYXV4RE9NXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeVxuIiwidmFyIGZhY3RvcnkgPSByZXF1aXJlKCcuL2ZhY3RvcnknKVxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KClcbiIsInZhciBub29wID0ge3ZhbHVlOiBmdW5jdGlvbigpIHt9fTtcblxuZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aCwgXyA9IHt9LCB0OyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEodCA9IGFyZ3VtZW50c1tpXSArIFwiXCIpIHx8ICh0IGluIF8pIHx8IC9bXFxzLl0vLnRlc3QodCkpIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgdHlwZTogXCIgKyB0KTtcbiAgICBfW3RdID0gW107XG4gIH1cbiAgcmV0dXJuIG5ldyBEaXNwYXRjaChfKTtcbn1cblxuZnVuY3Rpb24gRGlzcGF0Y2goXykge1xuICB0aGlzLl8gPSBfO1xufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZXMsIHR5cGVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICBpZiAodCAmJiAhdHlwZXMuaGFzT3duUHJvcGVydHkodCkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0KTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuRGlzcGF0Y2gucHJvdG90eXBlID0gZGlzcGF0Y2gucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRGlzcGF0Y2gsXG4gIG9uOiBmdW5jdGlvbih0eXBlbmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgXyA9IHRoaXMuXyxcbiAgICAgICAgVCA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiwgXyksXG4gICAgICAgIHQsXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IFQubGVuZ3RoO1xuXG4gICAgLy8gSWYgbm8gY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmV0dXJuIHRoZSBjYWxsYmFjayBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSAmJiAodCA9IGdldChfW3RdLCB0eXBlbmFtZS5uYW1lKSkpIHJldHVybiB0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIGEgdHlwZSB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICAvLyBPdGhlcndpc2UsIGlmIGEgbnVsbCBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZW1vdmUgY2FsbGJhY2tzIG9mIHRoZSBnaXZlbiBuYW1lLlxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsICYmIHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrOiBcIiArIGNhbGxiYWNrKTtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIGVsc2UgaWYgKGNhbGxiYWNrID09IG51bGwpIGZvciAodCBpbiBfKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBjb3B5OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY29weSA9IHt9LCBfID0gdGhpcy5fO1xuICAgIGZvciAodmFyIHQgaW4gXykgY29weVt0XSA9IF9bdF0uc2xpY2UoKTtcbiAgICByZXR1cm4gbmV3IERpc3BhdGNoKGNvcHkpO1xuICB9LFxuICBjYWxsOiBmdW5jdGlvbih0eXBlLCB0aGF0KSB7XG4gICAgaWYgKChuID0gYXJndW1lbnRzLmxlbmd0aCAtIDIpID4gMCkgZm9yICh2YXIgYXJncyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIG4sIHQ7IGkgPCBuOyArK2kpIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9LFxuICBhcHBseTogZnVuY3Rpb24odHlwZSwgdGhhdCwgYXJncykge1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh2YXIgdCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0KHR5cGUsIG5hbWUpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aCwgYzsgaSA8IG47ICsraSkge1xuICAgIGlmICgoYyA9IHR5cGVbaV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBjLnZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQodHlwZSwgbmFtZSwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGlmICh0eXBlW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHR5cGVbaV0gPSBub29wLCB0eXBlID0gdHlwZS5zbGljZSgwLCBpKS5jb25jYXQodHlwZS5zbGljZShpICsgMSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChjYWxsYmFjayAhPSBudWxsKSB0eXBlLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiBjYWxsYmFja30pO1xuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGlzcGF0Y2g7XG4iLCIvLyBXb3JkIGNsb3VkIGxheW91dCBieSBKYXNvbiBEYXZpZXMsIGh0dHBzOi8vd3d3Lmphc29uZGF2aWVzLmNvbS93b3JkY2xvdWQvXG4vLyBBbGdvcml0aG0gZHVlIHRvIEpvbmF0aGFuIEZlaW5iZXJnLCBodHRwOi8vc3RhdGljLm1yZmVpbmJlcmcuY29tL2J2X2NoMDMucGRmXG5cbnZhciBkaXNwYXRjaCA9IHJlcXVpcmUoXCJkMy1kaXNwYXRjaFwiKS5kaXNwYXRjaDtcblxudmFyIGNsb3VkUmFkaWFucyA9IE1hdGguUEkgLyAxODAsXG4gICAgY3cgPSAxIDw8IDExID4+IDUsXG4gICAgY2ggPSAxIDw8IDExO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2l6ZSA9IFsyNTYsIDI1Nl0sXG4gICAgICB0ZXh0ID0gY2xvdWRUZXh0LFxuICAgICAgZm9udCA9IGNsb3VkRm9udCxcbiAgICAgIGZvbnRTaXplID0gY2xvdWRGb250U2l6ZSxcbiAgICAgIGZvbnRTdHlsZSA9IGNsb3VkRm9udE5vcm1hbCxcbiAgICAgIGZvbnRXZWlnaHQgPSBjbG91ZEZvbnROb3JtYWwsXG4gICAgICByb3RhdGUgPSBjbG91ZFJvdGF0ZSxcbiAgICAgIHBhZGRpbmcgPSBjbG91ZFBhZGRpbmcsXG4gICAgICBzcGlyYWwgPSBhcmNoaW1lZGVhblNwaXJhbCxcbiAgICAgIHdvcmRzID0gW10sXG4gICAgICB0aW1lSW50ZXJ2YWwgPSBJbmZpbml0eSxcbiAgICAgIGV2ZW50ID0gZGlzcGF0Y2goXCJ3b3JkXCIsIFwiZW5kXCIpLFxuICAgICAgdGltZXIgPSBudWxsLFxuICAgICAgcmFuZG9tID0gTWF0aC5yYW5kb20sXG4gICAgICBjbG91ZCA9IHt9LFxuICAgICAgY2FudmFzID0gY2xvdWRDYW52YXM7XG5cbiAgY2xvdWQuY2FudmFzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNhbnZhcyA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IGNhbnZhcztcbiAgfTtcblxuICBjbG91ZC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb250ZXh0QW5kUmF0aW8gPSBnZXRDb250ZXh0KGNhbnZhcygpKSxcbiAgICAgICAgYm9hcmQgPSB6ZXJvQXJyYXkoKHNpemVbMF0gPj4gNSkgKiBzaXplWzFdKSxcbiAgICAgICAgYm91bmRzID0gbnVsbCxcbiAgICAgICAgbiA9IHdvcmRzLmxlbmd0aCxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICB0YWdzID0gW10sXG4gICAgICAgIGRhdGEgPSB3b3Jkcy5tYXAoZnVuY3Rpb24oZCwgaSkge1xuICAgICAgICAgIGQudGV4dCA9IHRleHQuY2FsbCh0aGlzLCBkLCBpKTtcbiAgICAgICAgICBkLmZvbnQgPSBmb250LmNhbGwodGhpcywgZCwgaSk7XG4gICAgICAgICAgZC5zdHlsZSA9IGZvbnRTdHlsZS5jYWxsKHRoaXMsIGQsIGkpO1xuICAgICAgICAgIGQud2VpZ2h0ID0gZm9udFdlaWdodC5jYWxsKHRoaXMsIGQsIGkpO1xuICAgICAgICAgIGQucm90YXRlID0gcm90YXRlLmNhbGwodGhpcywgZCwgaSk7XG4gICAgICAgICAgZC5zaXplID0gfn5mb250U2l6ZS5jYWxsKHRoaXMsIGQsIGkpO1xuICAgICAgICAgIGQucGFkZGluZyA9IHBhZGRpbmcuY2FsbCh0aGlzLCBkLCBpKTtcbiAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgfSkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiLnNpemUgLSBhLnNpemU7IH0pO1xuXG4gICAgaWYgKHRpbWVyKSBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICB0aW1lciA9IHNldEludGVydmFsKHN0ZXAsIDApO1xuICAgIHN0ZXAoKTtcblxuICAgIHJldHVybiBjbG91ZDtcblxuICAgIGZ1bmN0aW9uIHN0ZXAoKSB7XG4gICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydCA8IHRpbWVJbnRlcnZhbCAmJiArK2kgPCBuICYmIHRpbWVyKSB7XG4gICAgICAgIHZhciBkID0gZGF0YVtpXTtcbiAgICAgICAgZC54ID0gKHNpemVbMF0gKiAocmFuZG9tKCkgKyAuNSkpID4+IDE7XG4gICAgICAgIGQueSA9IChzaXplWzFdICogKHJhbmRvbSgpICsgLjUpKSA+PiAxO1xuICAgICAgICBjbG91ZFNwcml0ZShjb250ZXh0QW5kUmF0aW8sIGQsIGRhdGEsIGkpO1xuICAgICAgICBpZiAoZC5oYXNUZXh0ICYmIHBsYWNlKGJvYXJkLCBkLCBib3VuZHMpKSB7XG4gICAgICAgICAgdGFncy5wdXNoKGQpO1xuICAgICAgICAgIGV2ZW50LmNhbGwoXCJ3b3JkXCIsIGNsb3VkLCBkKTtcbiAgICAgICAgICBpZiAoYm91bmRzKSBjbG91ZEJvdW5kcyhib3VuZHMsIGQpO1xuICAgICAgICAgIGVsc2UgYm91bmRzID0gW3t4OiBkLnggKyBkLngwLCB5OiBkLnkgKyBkLnkwfSwge3g6IGQueCArIGQueDEsIHk6IGQueSArIGQueTF9XTtcbiAgICAgICAgICAvLyBUZW1wb3JhcnkgaGFja1xuICAgICAgICAgIGQueCAtPSBzaXplWzBdID4+IDE7XG4gICAgICAgICAgZC55IC09IHNpemVbMV0gPj4gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGkgPj0gbikge1xuICAgICAgICBjbG91ZC5zdG9wKCk7XG4gICAgICAgIGV2ZW50LmNhbGwoXCJlbmRcIiwgY2xvdWQsIHRhZ3MsIGJvdW5kcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xvdWQuc3RvcCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjbG91ZDtcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRDb250ZXh0KGNhbnZhcykge1xuICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhcy5oZWlnaHQgPSAxO1xuICAgIHZhciByYXRpbyA9IE1hdGguc3FydChjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKS5kYXRhLmxlbmd0aCA+PiAyKTtcbiAgICBjYW52YXMud2lkdGggPSAoY3cgPDwgNSkgLyByYXRpbztcbiAgICBjYW52YXMuaGVpZ2h0ID0gY2ggLyByYXRpbztcblxuICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBcInJlZFwiO1xuICAgIGNvbnRleHQudGV4dEFsaWduID0gXCJjZW50ZXJcIjtcblxuICAgIHJldHVybiB7Y29udGV4dDogY29udGV4dCwgcmF0aW86IHJhdGlvfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBsYWNlKGJvYXJkLCB0YWcsIGJvdW5kcykge1xuICAgIHZhciBwZXJpbWV0ZXIgPSBbe3g6IDAsIHk6IDB9LCB7eDogc2l6ZVswXSwgeTogc2l6ZVsxXX1dLFxuICAgICAgICBzdGFydFggPSB0YWcueCxcbiAgICAgICAgc3RhcnRZID0gdGFnLnksXG4gICAgICAgIG1heERlbHRhID0gTWF0aC5zcXJ0KHNpemVbMF0gKiBzaXplWzBdICsgc2l6ZVsxXSAqIHNpemVbMV0pLFxuICAgICAgICBzID0gc3BpcmFsKHNpemUpLFxuICAgICAgICBkdCA9IHJhbmRvbSgpIDwgLjUgPyAxIDogLTEsXG4gICAgICAgIHQgPSAtZHQsXG4gICAgICAgIGR4ZHksXG4gICAgICAgIGR4LFxuICAgICAgICBkeTtcblxuICAgIHdoaWxlIChkeGR5ID0gcyh0ICs9IGR0KSkge1xuICAgICAgZHggPSB+fmR4ZHlbMF07XG4gICAgICBkeSA9IH5+ZHhkeVsxXTtcblxuICAgICAgaWYgKE1hdGgubWluKE1hdGguYWJzKGR4KSwgTWF0aC5hYnMoZHkpKSA+PSBtYXhEZWx0YSkgYnJlYWs7XG5cbiAgICAgIHRhZy54ID0gc3RhcnRYICsgZHg7XG4gICAgICB0YWcueSA9IHN0YXJ0WSArIGR5O1xuXG4gICAgICBpZiAodGFnLnggKyB0YWcueDAgPCAwIHx8IHRhZy55ICsgdGFnLnkwIDwgMCB8fFxuICAgICAgICAgIHRhZy54ICsgdGFnLngxID4gc2l6ZVswXSB8fCB0YWcueSArIHRhZy55MSA+IHNpemVbMV0pIGNvbnRpbnVlO1xuICAgICAgLy8gVE9ETyBvbmx5IGNoZWNrIGZvciBjb2xsaXNpb25zIHdpdGhpbiBjdXJyZW50IGJvdW5kcy5cbiAgICAgIGlmICghYm91bmRzIHx8ICFjbG91ZENvbGxpZGUodGFnLCBib2FyZCwgc2l6ZVswXSkpIHtcbiAgICAgICAgaWYgKCFib3VuZHMgfHwgY29sbGlkZVJlY3RzKHRhZywgYm91bmRzKSkge1xuICAgICAgICAgIHZhciBzcHJpdGUgPSB0YWcuc3ByaXRlLFxuICAgICAgICAgICAgICB3ID0gdGFnLndpZHRoID4+IDUsXG4gICAgICAgICAgICAgIHN3ID0gc2l6ZVswXSA+PiA1LFxuICAgICAgICAgICAgICBseCA9IHRhZy54IC0gKHcgPDwgNCksXG4gICAgICAgICAgICAgIHN4ID0gbHggJiAweDdmLFxuICAgICAgICAgICAgICBtc3ggPSAzMiAtIHN4LFxuICAgICAgICAgICAgICBoID0gdGFnLnkxIC0gdGFnLnkwLFxuICAgICAgICAgICAgICB4ID0gKHRhZy55ICsgdGFnLnkwKSAqIHN3ICsgKGx4ID4+IDUpLFxuICAgICAgICAgICAgICBsYXN0O1xuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaDsgaisrKSB7XG4gICAgICAgICAgICBsYXN0ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHc7IGkrKykge1xuICAgICAgICAgICAgICBib2FyZFt4ICsgaV0gfD0gKGxhc3QgPDwgbXN4KSB8IChpIDwgdyA/IChsYXN0ID0gc3ByaXRlW2ogKiB3ICsgaV0pID4+PiBzeCA6IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeCArPSBzdztcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIHRhZy5zcHJpdGU7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2xvdWQudGltZUludGVydmFsID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpbWVJbnRlcnZhbCA9IF8gPT0gbnVsbCA/IEluZmluaXR5IDogXywgY2xvdWQpIDogdGltZUludGVydmFsO1xuICB9O1xuXG4gIGNsb3VkLndvcmRzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHdvcmRzID0gXywgY2xvdWQpIDogd29yZHM7XG4gIH07XG5cbiAgY2xvdWQuc2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzaXplID0gWytfWzBdLCArX1sxXV0sIGNsb3VkKSA6IHNpemU7XG4gIH07XG5cbiAgY2xvdWQuZm9udCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmb250ID0gZnVuY3RvcihfKSwgY2xvdWQpIDogZm9udDtcbiAgfTtcblxuICBjbG91ZC5mb250U3R5bGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZm9udFN0eWxlID0gZnVuY3RvcihfKSwgY2xvdWQpIDogZm9udFN0eWxlO1xuICB9O1xuXG4gIGNsb3VkLmZvbnRXZWlnaHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZm9udFdlaWdodCA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IGZvbnRXZWlnaHQ7XG4gIH07XG5cbiAgY2xvdWQucm90YXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdGF0ZSA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IHJvdGF0ZTtcbiAgfTtcblxuICBjbG91ZC50ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRleHQgPSBmdW5jdG9yKF8pLCBjbG91ZCkgOiB0ZXh0O1xuICB9O1xuXG4gIGNsb3VkLnNwaXJhbCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzcGlyYWwgPSBzcGlyYWxzW19dIHx8IF8sIGNsb3VkKSA6IHNwaXJhbDtcbiAgfTtcblxuICBjbG91ZC5mb250U2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmb250U2l6ZSA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IGZvbnRTaXplO1xuICB9O1xuXG4gIGNsb3VkLnBhZGRpbmcgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZyA9IGZ1bmN0b3IoXyksIGNsb3VkKSA6IHBhZGRpbmc7XG4gIH07XG5cbiAgY2xvdWQucmFuZG9tID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmRvbSA9IF8sIGNsb3VkKSA6IHJhbmRvbTtcbiAgfTtcblxuICBjbG91ZC5vbiA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZSA9IGV2ZW50Lm9uLmFwcGx5KGV2ZW50LCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gZXZlbnQgPyBjbG91ZCA6IHZhbHVlO1xuICB9O1xuXG4gIHJldHVybiBjbG91ZDtcbn07XG5cbmZ1bmN0aW9uIGNsb3VkVGV4dChkKSB7XG4gIHJldHVybiBkLnRleHQ7XG59XG5cbmZ1bmN0aW9uIGNsb3VkRm9udCgpIHtcbiAgcmV0dXJuIFwic2VyaWZcIjtcbn1cblxuZnVuY3Rpb24gY2xvdWRGb250Tm9ybWFsKCkge1xuICByZXR1cm4gXCJub3JtYWxcIjtcbn1cblxuZnVuY3Rpb24gY2xvdWRGb250U2l6ZShkKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoZC52YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGNsb3VkUm90YXRlKCkge1xuICByZXR1cm4gKH5+KE1hdGgucmFuZG9tKCkgKiA2KSAtIDMpICogMzA7XG59XG5cbmZ1bmN0aW9uIGNsb3VkUGFkZGluZygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vIEZldGNoZXMgYSBtb25vY2hyb21lIHNwcml0ZSBiaXRtYXAgZm9yIHRoZSBzcGVjaWZpZWQgdGV4dC5cbi8vIExvYWQgaW4gYmF0Y2hlcyBmb3Igc3BlZWQuXG5mdW5jdGlvbiBjbG91ZFNwcml0ZShjb250ZXh0QW5kUmF0aW8sIGQsIGRhdGEsIGRpKSB7XG4gIGlmIChkLnNwcml0ZSkgcmV0dXJuO1xuICB2YXIgYyA9IGNvbnRleHRBbmRSYXRpby5jb250ZXh0LFxuICAgICAgcmF0aW8gPSBjb250ZXh0QW5kUmF0aW8ucmF0aW87XG5cbiAgYy5jbGVhclJlY3QoMCwgMCwgKGN3IDw8IDUpIC8gcmF0aW8sIGNoIC8gcmF0aW8pO1xuICB2YXIgeCA9IDAsXG4gICAgICB5ID0gMCxcbiAgICAgIG1heGggPSAwLFxuICAgICAgbiA9IGRhdGEubGVuZ3RoO1xuICAtLWRpO1xuICB3aGlsZSAoKytkaSA8IG4pIHtcbiAgICBkID0gZGF0YVtkaV07XG4gICAgYy5zYXZlKCk7XG4gICAgYy5mb250ID0gZC5zdHlsZSArIFwiIFwiICsgZC53ZWlnaHQgKyBcIiBcIiArIH5+KChkLnNpemUgKyAxKSAvIHJhdGlvKSArIFwicHggXCIgKyBkLmZvbnQ7XG4gICAgdmFyIHcgPSBjLm1lYXN1cmVUZXh0KGQudGV4dCArIFwibVwiKS53aWR0aCAqIHJhdGlvLFxuICAgICAgICBoID0gZC5zaXplIDw8IDE7XG4gICAgaWYgKGQucm90YXRlKSB7XG4gICAgICB2YXIgc3IgPSBNYXRoLnNpbihkLnJvdGF0ZSAqIGNsb3VkUmFkaWFucyksXG4gICAgICAgICAgY3IgPSBNYXRoLmNvcyhkLnJvdGF0ZSAqIGNsb3VkUmFkaWFucyksXG4gICAgICAgICAgd2NyID0gdyAqIGNyLFxuICAgICAgICAgIHdzciA9IHcgKiBzcixcbiAgICAgICAgICBoY3IgPSBoICogY3IsXG4gICAgICAgICAgaHNyID0gaCAqIHNyO1xuICAgICAgdyA9IChNYXRoLm1heChNYXRoLmFicyh3Y3IgKyBoc3IpLCBNYXRoLmFicyh3Y3IgLSBoc3IpKSArIDB4MWYpID4+IDUgPDwgNTtcbiAgICAgIGggPSB+fk1hdGgubWF4KE1hdGguYWJzKHdzciArIGhjciksIE1hdGguYWJzKHdzciAtIGhjcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ID0gKHcgKyAweDFmKSA+PiA1IDw8IDU7XG4gICAgfVxuICAgIGlmIChoID4gbWF4aCkgbWF4aCA9IGg7XG4gICAgaWYgKHggKyB3ID49IChjdyA8PCA1KSkge1xuICAgICAgeCA9IDA7XG4gICAgICB5ICs9IG1heGg7XG4gICAgICBtYXhoID0gMDtcbiAgICB9XG4gICAgaWYgKHkgKyBoID49IGNoKSBicmVhaztcbiAgICBjLnRyYW5zbGF0ZSgoeCArICh3ID4+IDEpKSAvIHJhdGlvLCAoeSArIChoID4+IDEpKSAvIHJhdGlvKTtcbiAgICBpZiAoZC5yb3RhdGUpIGMucm90YXRlKGQucm90YXRlICogY2xvdWRSYWRpYW5zKTtcbiAgICBjLmZpbGxUZXh0KGQudGV4dCwgMCwgMCk7XG4gICAgaWYgKGQucGFkZGluZykgYy5saW5lV2lkdGggPSAyICogZC5wYWRkaW5nLCBjLnN0cm9rZVRleHQoZC50ZXh0LCAwLCAwKTtcbiAgICBjLnJlc3RvcmUoKTtcbiAgICBkLndpZHRoID0gdztcbiAgICBkLmhlaWdodCA9IGg7XG4gICAgZC54b2ZmID0geDtcbiAgICBkLnlvZmYgPSB5O1xuICAgIGQueDEgPSB3ID4+IDE7XG4gICAgZC55MSA9IGggPj4gMTtcbiAgICBkLngwID0gLWQueDE7XG4gICAgZC55MCA9IC1kLnkxO1xuICAgIGQuaGFzVGV4dCA9IHRydWU7XG4gICAgeCArPSB3O1xuICB9XG4gIHZhciBwaXhlbHMgPSBjLmdldEltYWdlRGF0YSgwLCAwLCAoY3cgPDwgNSkgLyByYXRpbywgY2ggLyByYXRpbykuZGF0YSxcbiAgICAgIHNwcml0ZSA9IFtdO1xuICB3aGlsZSAoLS1kaSA+PSAwKSB7XG4gICAgZCA9IGRhdGFbZGldO1xuICAgIGlmICghZC5oYXNUZXh0KSBjb250aW51ZTtcbiAgICB2YXIgdyA9IGQud2lkdGgsXG4gICAgICAgIHczMiA9IHcgPj4gNSxcbiAgICAgICAgaCA9IGQueTEgLSBkLnkwO1xuICAgIC8vIFplcm8gdGhlIGJ1ZmZlclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaCAqIHczMjsgaSsrKSBzcHJpdGVbaV0gPSAwO1xuICAgIHggPSBkLnhvZmY7XG4gICAgaWYgKHggPT0gbnVsbCkgcmV0dXJuO1xuICAgIHkgPSBkLnlvZmY7XG4gICAgdmFyIHNlZW4gPSAwLFxuICAgICAgICBzZWVuUm93ID0gLTE7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBoOyBqKyspIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdzsgaSsrKSB7XG4gICAgICAgIHZhciBrID0gdzMyICogaiArIChpID4+IDUpLFxuICAgICAgICAgICAgbSA9IHBpeGVsc1soKHkgKyBqKSAqIChjdyA8PCA1KSArICh4ICsgaSkpIDw8IDJdID8gMSA8PCAoMzEgLSAoaSAlIDMyKSkgOiAwO1xuICAgICAgICBzcHJpdGVba10gfD0gbTtcbiAgICAgICAgc2VlbiB8PSBtO1xuICAgICAgfVxuICAgICAgaWYgKHNlZW4pIHNlZW5Sb3cgPSBqO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGQueTArKztcbiAgICAgICAgaC0tO1xuICAgICAgICBqLS07XG4gICAgICAgIHkrKztcbiAgICAgIH1cbiAgICB9XG4gICAgZC55MSA9IGQueTAgKyBzZWVuUm93O1xuICAgIGQuc3ByaXRlID0gc3ByaXRlLnNsaWNlKDAsIChkLnkxIC0gZC55MCkgKiB3MzIpO1xuICB9XG59XG5cbi8vIFVzZSBtYXNrLWJhc2VkIGNvbGxpc2lvbiBkZXRlY3Rpb24uXG5mdW5jdGlvbiBjbG91ZENvbGxpZGUodGFnLCBib2FyZCwgc3cpIHtcbiAgc3cgPj49IDU7XG4gIHZhciBzcHJpdGUgPSB0YWcuc3ByaXRlLFxuICAgICAgdyA9IHRhZy53aWR0aCA+PiA1LFxuICAgICAgbHggPSB0YWcueCAtICh3IDw8IDQpLFxuICAgICAgc3ggPSBseCAmIDB4N2YsXG4gICAgICBtc3ggPSAzMiAtIHN4LFxuICAgICAgaCA9IHRhZy55MSAtIHRhZy55MCxcbiAgICAgIHggPSAodGFnLnkgKyB0YWcueTApICogc3cgKyAobHggPj4gNSksXG4gICAgICBsYXN0O1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGg7IGorKykge1xuICAgIGxhc3QgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHc7IGkrKykge1xuICAgICAgaWYgKCgobGFzdCA8PCBtc3gpIHwgKGkgPCB3ID8gKGxhc3QgPSBzcHJpdGVbaiAqIHcgKyBpXSkgPj4+IHN4IDogMCkpXG4gICAgICAgICAgJiBib2FyZFt4ICsgaV0pIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB4ICs9IHN3O1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2xvdWRCb3VuZHMoYm91bmRzLCBkKSB7XG4gIHZhciBiMCA9IGJvdW5kc1swXSxcbiAgICAgIGIxID0gYm91bmRzWzFdO1xuICBpZiAoZC54ICsgZC54MCA8IGIwLngpIGIwLnggPSBkLnggKyBkLngwO1xuICBpZiAoZC55ICsgZC55MCA8IGIwLnkpIGIwLnkgPSBkLnkgKyBkLnkwO1xuICBpZiAoZC54ICsgZC54MSA+IGIxLngpIGIxLnggPSBkLnggKyBkLngxO1xuICBpZiAoZC55ICsgZC55MSA+IGIxLnkpIGIxLnkgPSBkLnkgKyBkLnkxO1xufVxuXG5mdW5jdGlvbiBjb2xsaWRlUmVjdHMoYSwgYikge1xuICByZXR1cm4gYS54ICsgYS54MSA+IGJbMF0ueCAmJiBhLnggKyBhLngwIDwgYlsxXS54ICYmIGEueSArIGEueTEgPiBiWzBdLnkgJiYgYS55ICsgYS55MCA8IGJbMV0ueTtcbn1cblxuZnVuY3Rpb24gYXJjaGltZWRlYW5TcGlyYWwoc2l6ZSkge1xuICB2YXIgZSA9IHNpemVbMF0gLyBzaXplWzFdO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBbZSAqICh0ICo9IC4xKSAqIE1hdGguY29zKHQpLCB0ICogTWF0aC5zaW4odCldO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWN0YW5ndWxhclNwaXJhbChzaXplKSB7XG4gIHZhciBkeSA9IDQsXG4gICAgICBkeCA9IGR5ICogc2l6ZVswXSAvIHNpemVbMV0sXG4gICAgICB4ID0gMCxcbiAgICAgIHkgPSAwO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBzaWduID0gdCA8IDAgPyAtMSA6IDE7XG4gICAgLy8gU2VlIHRyaWFuZ3VsYXIgbnVtYmVyczogVF9uID0gbiAqIChuICsgMSkgLyAyLlxuICAgIHN3aXRjaCAoKE1hdGguc3FydCgxICsgNCAqIHNpZ24gKiB0KSAtIHNpZ24pICYgMykge1xuICAgICAgY2FzZSAwOiAgeCArPSBkeDsgYnJlYWs7XG4gICAgICBjYXNlIDE6ICB5ICs9IGR5OyBicmVhaztcbiAgICAgIGNhc2UgMjogIHggLT0gZHg7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogeSAtPSBkeTsgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG4gIH07XG59XG5cbi8vIFRPRE8gcmV1c2UgYXJyYXlzP1xuZnVuY3Rpb24gemVyb0FycmF5KG4pIHtcbiAgdmFyIGEgPSBbXSxcbiAgICAgIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IG4pIGFbaV0gPSAwO1xuICByZXR1cm4gYTtcbn1cblxuZnVuY3Rpb24gY2xvdWRDYW52YXMoKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xufVxuXG5mdW5jdGlvbiBmdW5jdG9yKGQpIHtcbiAgcmV0dXJuIHR5cGVvZiBkID09PSBcImZ1bmN0aW9uXCIgPyBkIDogZnVuY3Rpb24oKSB7IHJldHVybiBkOyB9O1xufVxuXG52YXIgc3BpcmFscyA9IHtcbiAgYXJjaGltZWRlYW46IGFyY2hpbWVkZWFuU3BpcmFsLFxuICByZWN0YW5ndWxhcjogcmVjdGFuZ3VsYXJTcGlyYWxcbn07XG4iLCIvKiBnbG9iYWwgTWFwOnJlYWRvbmx5LCBTZXQ6cmVhZG9ubHksIEFycmF5QnVmZmVyOnJlYWRvbmx5ICovXG5cbnZhciBoYXNFbGVtZW50VHlwZSA9IHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJztcbnZhciBoYXNNYXAgPSB0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nO1xudmFyIGhhc1NldCA9IHR5cGVvZiBTZXQgPT09ICdmdW5jdGlvbic7XG52YXIgaGFzQXJyYXlCdWZmZXIgPSB0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgISFBcnJheUJ1ZmZlci5pc1ZpZXc7XG5cbi8vIE5vdGU6IFdlICoqZG9uJ3QqKiBuZWVkIGBlbnZIYXNCaWdJbnQ2NEFycmF5YCBpbiBmZGUgZXM2L2luZGV4LmpzXG5cbmZ1bmN0aW9uIGVxdWFsKGEsIGIpIHtcbiAgLy8gU1RBUlQ6IGZhc3QtZGVlcC1lcXVhbCBlczYvaW5kZXguanMgMy4xLjFcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYS5jb25zdHJ1Y3RvciAhPT0gYi5jb25zdHJ1Y3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIGxlbmd0aCwgaSwga2V5cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmICghZXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNUQVJUOiBNb2RpZmljYXRpb25zOlxuICAgIC8vIDEuIEV4dHJhIGBoYXM8VHlwZT4gJiZgIGhlbHBlcnMgaW4gaW5pdGlhbCBjb25kaXRpb24gYWxsb3cgZXM2IGNvZGVcbiAgICAvLyAgICB0byBjby1leGlzdCB3aXRoIGVzNS5cbiAgICAvLyAyLiBSZXBsYWNlIGBmb3Igb2ZgIHdpdGggZXM1IGNvbXBsaWFudCBpdGVyYXRpb24gdXNpbmcgYGZvcmAuXG4gICAgLy8gICAgQmFzaWNhbGx5LCB0YWtlOlxuICAgIC8vXG4gICAgLy8gICAgYGBganNcbiAgICAvLyAgICBmb3IgKGkgb2YgYS5lbnRyaWVzKCkpXG4gICAgLy8gICAgICBpZiAoIWIuaGFzKGlbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgYGBgXG4gICAgLy9cbiAgICAvLyAgICAuLi4gYW5kIGNvbnZlcnQgdG86XG4gICAgLy9cbiAgICAvLyAgICBgYGBqc1xuICAgIC8vICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgLy8gICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSlcbiAgICAvLyAgICAgIGlmICghYi5oYXMoaS52YWx1ZVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICBgYGBcbiAgICAvL1xuICAgIC8vICAgICoqTm90ZSoqOiBgaWAgYWNjZXNzIHN3aXRjaGVzIHRvIGBpLnZhbHVlYC5cbiAgICB2YXIgaXQ7XG4gICAgaWYgKGhhc01hcCAmJiAoYSBpbnN0YW5jZW9mIE1hcCkgJiYgKGIgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICBpdCA9IGEuZW50cmllcygpO1xuICAgICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSlcbiAgICAgICAgaWYgKCFlcXVhbChpLnZhbHVlWzFdLCBiLmdldChpLnZhbHVlWzBdKSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChoYXNTZXQgJiYgKGEgaW5zdGFuY2VvZiBTZXQpICYmIChiIGluc3RhbmNlb2YgU2V0KSkge1xuICAgICAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSByZXR1cm4gZmFsc2U7XG4gICAgICBpdCA9IGEuZW50cmllcygpO1xuICAgICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSlcbiAgICAgICAgaWYgKCFiLmhhcyhpLnZhbHVlWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIEVORDogTW9kaWZpY2F0aW9uc1xuXG4gICAgaWYgKGhhc0FycmF5QnVmZmVyICYmIEFycmF5QnVmZmVyLmlzVmlldyhhKSAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcoYikpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGEuY29uc3RydWN0b3IgPT09IFJlZ0V4cCkgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xuICAgIGlmIChhLnZhbHVlT2YgIT09IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZikgcmV0dXJuIGEudmFsdWVPZigpID09PSBiLnZhbHVlT2YoKTtcbiAgICBpZiAoYS50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykgcmV0dXJuIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHJldHVybiBmYWxzZTtcbiAgICAvLyBFTkQ6IGZhc3QtZGVlcC1lcXVhbFxuXG4gICAgLy8gU1RBUlQ6IHJlYWN0LWZhc3QtY29tcGFyZVxuICAgIC8vIGN1c3RvbSBoYW5kbGluZyBmb3IgRE9NIGVsZW1lbnRzXG4gICAgaWYgKGhhc0VsZW1lbnRUeXBlICYmIGEgaW5zdGFuY2VvZiBFbGVtZW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBjdXN0b20gaGFuZGxpbmcgZm9yIFJlYWN0L1ByZWFjdFxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgaWYgKChrZXlzW2ldID09PSAnX293bmVyJyB8fCBrZXlzW2ldID09PSAnX192JyB8fCBrZXlzW2ldID09PSAnX19vJykgJiYgYS4kJHR5cGVvZikge1xuICAgICAgICAvLyBSZWFjdC1zcGVjaWZpYzogYXZvaWQgdHJhdmVyc2luZyBSZWFjdCBlbGVtZW50cycgX293bmVyXG4gICAgICAgIC8vIFByZWFjdC1zcGVjaWZpYzogYXZvaWQgdHJhdmVyc2luZyBQcmVhY3QgZWxlbWVudHMnIF9fdiBhbmQgX19vXG4gICAgICAgIC8vICAgIF9fdiA9ICRfb3JpZ2luYWwgLyAkX3Zub2RlXG4gICAgICAgIC8vICAgIF9fbyA9ICRfb3duZXJcbiAgICAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBjb250YWluIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIGFyZSBub3QgbmVlZGVkIHdoZW5cbiAgICAgICAgLy8gY29tcGFyaW5nIHRoZSBhY3R1YWwgZWxlbWVudHMgKGFuZCBub3QgdGhlaXIgb3duZXJzKVxuICAgICAgICAvLyAuJCR0eXBlb2YgYW5kIC5fc3RvcmUgb24ganVzdCByZWFzb25hYmxlIG1hcmtlcnMgb2YgZWxlbWVudHNcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gYWxsIG90aGVyIHByb3BlcnRpZXMgc2hvdWxkIGJlIHRyYXZlcnNlZCBhcyB1c3VhbFxuICAgICAgaWYgKCFlcXVhbChhW2tleXNbaV1dLCBiW2tleXNbaV1dKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBFTkQ6IHJlYWN0LWZhc3QtY29tcGFyZVxuXG4gICAgLy8gU1RBUlQ6IGZhc3QtZGVlcC1lcXVhbFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjtcbn1cbi8vIGVuZCBmYXN0LWRlZXAtZXF1YWxcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXF1YWwoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCgoZXJyb3IubWVzc2FnZSB8fCAnJykubWF0Y2goL3N0YWNrfHJlY3Vyc2lvbi9pKSkpIHtcbiAgICAgIC8vIHdhcm4gb24gY2lyY3VsYXIgcmVmZXJlbmNlcywgZG9uJ3QgY3Jhc2hcbiAgICAgIC8vIGJyb3dzZXJzIGdpdmUgdGhpcyBkaWZmZXJlbnQgZXJyb3JzIG5hbWUgYW5kIG1lc3NhZ2VzOlxuICAgICAgLy8gY2hyb21lL3NhZmFyaTogXCJSYW5nZUVycm9yXCIsIFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIlxuICAgICAgLy8gZmlyZWZveDogXCJJbnRlcm5hbEVycm9yXCIsIHRvbyBtdWNoIHJlY3Vyc2lvblwiXG4gICAgICAvLyBlZGdlOiBcIkVycm9yXCIsIFwiT3V0IG9mIHN0YWNrIHNwYWNlXCJcbiAgICAgIGNvbnNvbGUud2FybigncmVhY3QtZmFzdC1jb21wYXJlIGNhbm5vdCBoYW5kbGUgY2lyY3VsYXIgcmVmcycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBzb21lIG90aGVyIGVycm9yLiB3ZSBzaG91bGQgZGVmaW5pdGVseSBrbm93IGFib3V0IHRoZXNlXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG4iLCJleHBvcnQgdmFyIHhodG1sID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3ZnOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHhodG1sOiB4aHRtbCxcbiAgeGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuICB4bWw6IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCJcbn07XG4iLCJpbXBvcnQgbmFtZXNwYWNlcyBmcm9tIFwiLi9uYW1lc3BhY2VzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIHByZWZpeCA9IG5hbWUgKz0gXCJcIiwgaSA9IHByZWZpeC5pbmRleE9mKFwiOlwiKTtcbiAgaWYgKGkgPj0gMCAmJiAocHJlZml4ID0gbmFtZS5zbGljZSgwLCBpKSkgIT09IFwieG1sbnNcIikgbmFtZSA9IG5hbWUuc2xpY2UoaSArIDEpO1xuICByZXR1cm4gbmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcmVmaXgpID8ge3NwYWNlOiBuYW1lc3BhY2VzW3ByZWZpeF0sIGxvY2FsOiBuYW1lfSA6IG5hbWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG59XG4iLCJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuL25hbWVzcGFjZS5qc1wiO1xuaW1wb3J0IHt4aHRtbH0gZnJvbSBcIi4vbmFtZXNwYWNlcy5qc1wiO1xuXG5mdW5jdGlvbiBjcmVhdG9ySW5oZXJpdChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQsXG4gICAgICAgIHVyaSA9IHRoaXMubmFtZXNwYWNlVVJJO1xuICAgIHJldHVybiB1cmkgPT09IHhodG1sICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IHhodG1sXG4gICAgICAgID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKVxuICAgICAgICA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1cmksIG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdG9yRml4ZWQoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuICByZXR1cm4gKGZ1bGxuYW1lLmxvY2FsXG4gICAgICA/IGNyZWF0b3JGaXhlZFxuICAgICAgOiBjcmVhdG9ySW5oZXJpdCkoZnVsbG5hbWUpO1xufVxuIiwiZnVuY3Rpb24gbm9uZSgpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA9PSBudWxsID8gbm9uZSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICB9O1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2VsZWN0b3IgZnJvbSBcIi4uL3NlbGVjdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgXCJsZW5ndGhcIiBpbiB4XG4gICAgPyB4IC8vIEFycmF5LCBUeXBlZEFycmF5LCBOb2RlTGlzdCwgYXJyYXktbGlrZVxuICAgIDogQXJyYXkuZnJvbSh4KTsgLy8gTWFwLCBTZXQsIGl0ZXJhYmxlLCBzdHJpbmcsIG9yIGFueXRoaW5nIGVsc2Vcbn1cbiIsImZ1bmN0aW9uIGVtcHR5KCkge1xuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA9PSBudWxsID8gZW1wdHkgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IHNlbGVjdG9yQWxsIGZyb20gXCIuLi9zZWxlY3RvckFsbC5qc1wiO1xuXG5mdW5jdGlvbiBhcnJheUFsbChzZWxlY3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBncm91cCA9IHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBncm91cCA9PSBudWxsID8gW10gOiBhcnJheShncm91cCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCA9PT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBhcnJheUFsbChzZWxlY3QpO1xuICBlbHNlIHNlbGVjdCA9IHNlbGVjdG9yQWxsKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gW10sIHBhcmVudHMgPSBbXSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc3ViZ3JvdXBzLnB1c2goc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0Y2hlcyhzZWxlY3Rvcik7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZE1hdGNoZXIoc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn1cblxuIiwiaW1wb3J0IHtjaGlsZE1hdGNoZXJ9IGZyb20gXCIuLi9tYXRjaGVyLmpzXCI7XG5cbnZhciBmaW5kID0gQXJyYXkucHJvdG90eXBlLmZpbmQ7XG5cbmZ1bmN0aW9uIGNoaWxkRmluZChtYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZpbmQuY2FsbCh0aGlzLmNoaWxkcmVuLCBtYXRjaCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoaWxkRmlyc3QoKSB7XG4gIHJldHVybiB0aGlzLmZpcnN0RWxlbWVudENoaWxkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXRjaCkge1xuICByZXR1cm4gdGhpcy5zZWxlY3QobWF0Y2ggPT0gbnVsbCA/IGNoaWxkRmlyc3RcbiAgICAgIDogY2hpbGRGaW5kKHR5cGVvZiBtYXRjaCA9PT0gXCJmdW5jdGlvblwiID8gbWF0Y2ggOiBjaGlsZE1hdGNoZXIobWF0Y2gpKSk7XG59XG4iLCJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbHRlciA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXI7XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKCkge1xuICByZXR1cm4gdGhpcy5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW5GaWx0ZXIobWF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmaWx0ZXIuY2FsbCh0aGlzLmNoaWxkcmVuLCBtYXRjaCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdEFsbChtYXRjaCA9PSBudWxsID8gY2hpbGRyZW5cbiAgICAgIDogY2hpbGRyZW5GaWx0ZXIodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih1cGRhdGUpIHtcbiAgcmV0dXJuIG5ldyBBcnJheSh1cGRhdGUubGVuZ3RoKTtcbn1cbiIsImltcG9ydCBzcGFyc2UgZnJvbSBcIi4vc3BhcnNlLmpzXCI7XG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHRoaXMuX2VudGVyIHx8IHRoaXMuX2dyb3Vwcy5tYXAoc3BhcnNlKSwgdGhpcy5fcGFyZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnRlck5vZGUocGFyZW50LCBkYXR1bSkge1xuICB0aGlzLm93bmVyRG9jdW1lbnQgPSBwYXJlbnQub3duZXJEb2N1bWVudDtcbiAgdGhpcy5uYW1lc3BhY2VVUkkgPSBwYXJlbnQubmFtZXNwYWNlVVJJO1xuICB0aGlzLl9uZXh0ID0gbnVsbDtcbiAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICB0aGlzLl9fZGF0YV9fID0gZGF0dW07XG59XG5cbkVudGVyTm9kZS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBFbnRlck5vZGUsXG4gIGFwcGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkgeyByZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgdGhpcy5fbmV4dCk7IH0sXG4gIGluc2VydEJlZm9yZTogZnVuY3Rpb24oY2hpbGQsIG5leHQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIG5leHQpOyB9LFxuICBxdWVyeVNlbGVjdG9yOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOyB9LFxuICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbihzZWxlY3RvcikgeyByZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOyB9XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCB7RW50ZXJOb2RlfSBmcm9tIFwiLi9lbnRlci5qc1wiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuXG5mdW5jdGlvbiBiaW5kSW5kZXgocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSkge1xuICB2YXIgaSA9IDAsXG4gICAgICBub2RlLFxuICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGZpdCBpbnRvIHVwZGF0ZS5cbiAgLy8gUHV0IGFueSBudWxsIG5vZGVzIGludG8gZW50ZXIuXG4gIC8vIFB1dCBhbnkgcmVtYWluaW5nIGRhdGEgaW50byBlbnRlci5cbiAgZm9yICg7IGkgPCBkYXRhTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICBub2RlLl9fZGF0YV9fID0gZGF0YVtpXTtcbiAgICAgIHVwZGF0ZVtpXSA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudGVyW2ldID0gbmV3IEVudGVyTm9kZShwYXJlbnQsIGRhdGFbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1dCBhbnkgbm9uLW51bGwgbm9kZXMgdGhhdCBkb27igJl0IGZpdCBpbnRvIGV4aXQuXG4gIGZvciAoOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBiaW5kS2V5KHBhcmVudCwgZ3JvdXAsIGVudGVyLCB1cGRhdGUsIGV4aXQsIGRhdGEsIGtleSkge1xuICB2YXIgaSxcbiAgICAgIG5vZGUsXG4gICAgICBub2RlQnlLZXlWYWx1ZSA9IG5ldyBNYXAsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGtleVZhbHVlcyA9IG5ldyBBcnJheShncm91cExlbmd0aCksXG4gICAgICBrZXlWYWx1ZTtcblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggbm9kZS5cbiAgLy8gSWYgbXVsdGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBrZXksIHRoZSBkdXBsaWNhdGVzIGFyZSBhZGRlZCB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGtleVZhbHVlc1tpXSA9IGtleVZhbHVlID0ga2V5LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApICsgXCJcIjtcbiAgICAgIGlmIChub2RlQnlLZXlWYWx1ZS5oYXMoa2V5VmFsdWUpKSB7XG4gICAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZUJ5S2V5VmFsdWUuc2V0KGtleVZhbHVlLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggZGF0dW0uXG4gIC8vIElmIHRoZXJlIGEgbm9kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXksIGpvaW4gYW5kIGFkZCBpdCB0byB1cGRhdGUuXG4gIC8vIElmIHRoZXJlIGlzIG5vdCAob3IgdGhlIGtleSBpcyBhIGR1cGxpY2F0ZSksIGFkZCBpdCB0byBlbnRlci5cbiAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGtleVZhbHVlID0ga2V5LmNhbGwocGFyZW50LCBkYXRhW2ldLCBpLCBkYXRhKSArIFwiXCI7XG4gICAgaWYgKG5vZGUgPSBub2RlQnlLZXlWYWx1ZS5nZXQoa2V5VmFsdWUpKSB7XG4gICAgICB1cGRhdGVbaV0gPSBub2RlO1xuICAgICAgbm9kZS5fX2RhdGFfXyA9IGRhdGFbaV07XG4gICAgICBub2RlQnlLZXlWYWx1ZS5kZWxldGUoa2V5VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnRlcltpXSA9IG5ldyBFbnRlck5vZGUocGFyZW50LCBkYXRhW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgYW55IHJlbWFpbmluZyBub2RlcyB0aGF0IHdlcmUgbm90IGJvdW5kIHRvIGRhdGEgdG8gZXhpdC5cbiAgZm9yIChpID0gMDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKG5vZGVCeUtleVZhbHVlLmdldChrZXlWYWx1ZXNbaV0pID09PSBub2RlKSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRhdHVtKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuX19kYXRhX187XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLCBkYXR1bSk7XG5cbiAgdmFyIGJpbmQgPSBrZXkgPyBiaW5kS2V5IDogYmluZEluZGV4LFxuICAgICAgcGFyZW50cyA9IHRoaXMuX3BhcmVudHMsXG4gICAgICBncm91cHMgPSB0aGlzLl9ncm91cHM7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB2YWx1ZSA9IGNvbnN0YW50KHZhbHVlKTtcblxuICBmb3IgKHZhciBtID0gZ3JvdXBzLmxlbmd0aCwgdXBkYXRlID0gbmV3IEFycmF5KG0pLCBlbnRlciA9IG5ldyBBcnJheShtKSwgZXhpdCA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICB2YXIgcGFyZW50ID0gcGFyZW50c1tqXSxcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbal0sXG4gICAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgICBkYXRhID0gYXJyYXkodmFsdWUuY2FsbChwYXJlbnQsIHBhcmVudCAmJiBwYXJlbnQuX19kYXRhX18sIGosIHBhcmVudHMpKSxcbiAgICAgICAgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoLFxuICAgICAgICBlbnRlckdyb3VwID0gZW50ZXJbal0gPSBuZXcgQXJyYXkoZGF0YUxlbmd0aCksXG4gICAgICAgIHVwZGF0ZUdyb3VwID0gdXBkYXRlW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICBleGl0R3JvdXAgPSBleGl0W2pdID0gbmV3IEFycmF5KGdyb3VwTGVuZ3RoKTtcblxuICAgIGJpbmQocGFyZW50LCBncm91cCwgZW50ZXJHcm91cCwgdXBkYXRlR3JvdXAsIGV4aXRHcm91cCwgZGF0YSwga2V5KTtcblxuICAgIC8vIE5vdyBjb25uZWN0IHRoZSBlbnRlciBub2RlcyB0byB0aGVpciBmb2xsb3dpbmcgdXBkYXRlIG5vZGUsIHN1Y2ggdGhhdFxuICAgIC8vIGFwcGVuZENoaWxkIGNhbiBpbnNlcnQgdGhlIG1hdGVyaWFsaXplZCBlbnRlciBub2RlIGJlZm9yZSB0aGlzIG5vZGUsXG4gICAgLy8gcmF0aGVyIHRoYW4gYXQgdGhlIGVuZCBvZiB0aGUgcGFyZW50IG5vZGUuXG4gICAgZm9yICh2YXIgaTAgPSAwLCBpMSA9IDAsIHByZXZpb3VzLCBuZXh0OyBpMCA8IGRhdGFMZW5ndGg7ICsraTApIHtcbiAgICAgIGlmIChwcmV2aW91cyA9IGVudGVyR3JvdXBbaTBdKSB7XG4gICAgICAgIGlmIChpMCA+PSBpMSkgaTEgPSBpMCArIDE7XG4gICAgICAgIHdoaWxlICghKG5leHQgPSB1cGRhdGVHcm91cFtpMV0pICYmICsraTEgPCBkYXRhTGVuZ3RoKTtcbiAgICAgICAgcHJldmlvdXMuX25leHQgPSBuZXh0IHx8IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlID0gbmV3IFNlbGVjdGlvbih1cGRhdGUsIHBhcmVudHMpO1xuICB1cGRhdGUuX2VudGVyID0gZW50ZXI7XG4gIHVwZGF0ZS5fZXhpdCA9IGV4aXQ7XG4gIHJldHVybiB1cGRhdGU7XG59XG4iLCJpbXBvcnQgc3BhcnNlIGZyb20gXCIuL3NwYXJzZS5qc1wiO1xuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9leGl0IHx8IHRoaXMuX2dyb3Vwcy5tYXAoc3BhcnNlKSwgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvbmVudGVyLCBvbnVwZGF0ZSwgb25leGl0KSB7XG4gIHZhciBlbnRlciA9IHRoaXMuZW50ZXIoKSwgdXBkYXRlID0gdGhpcywgZXhpdCA9IHRoaXMuZXhpdCgpO1xuICBlbnRlciA9IHR5cGVvZiBvbmVudGVyID09PSBcImZ1bmN0aW9uXCIgPyBvbmVudGVyKGVudGVyKSA6IGVudGVyLmFwcGVuZChvbmVudGVyICsgXCJcIik7XG4gIGlmIChvbnVwZGF0ZSAhPSBudWxsKSB1cGRhdGUgPSBvbnVwZGF0ZSh1cGRhdGUpO1xuICBpZiAob25leGl0ID09IG51bGwpIGV4aXQucmVtb3ZlKCk7IGVsc2Ugb25leGl0KGV4aXQpO1xuICByZXR1cm4gZW50ZXIgJiYgdXBkYXRlID8gZW50ZXIubWVyZ2UodXBkYXRlKS5vcmRlcigpIDogdXBkYXRlO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdGlvbikge1xuICBpZiAoIShzZWxlY3Rpb24gaW5zdGFuY2VvZiBTZWxlY3Rpb24pKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIG1lcmdlXCIpO1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSBzZWxlY3Rpb24uX2dyb3VwcywgbTAgPSBncm91cHMwLmxlbmd0aCwgbTEgPSBncm91cHMxLmxlbmd0aCwgbSA9IE1hdGgubWluKG0wLCBtMSksIG1lcmdlcyA9IG5ldyBBcnJheShtMCksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAwID0gZ3JvdXBzMFtqXSwgZ3JvdXAxID0gZ3JvdXBzMVtqXSwgbiA9IGdyb3VwMC5sZW5ndGgsIG1lcmdlID0gbWVyZ2VzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cDBbaV0gfHwgZ3JvdXAxW2ldKSB7XG4gICAgICAgIG1lcmdlW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaiA8IG0wOyArK2opIHtcbiAgICBtZXJnZXNbal0gPSBncm91cHMwW2pdO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24obWVyZ2VzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IC0xLCBtID0gZ3JvdXBzLmxlbmd0aDsgKytqIDwgbTspIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IGdyb3VwLmxlbmd0aCAtIDEsIG5leHQgPSBncm91cFtpXSwgbm9kZTsgLS1pID49IDA7KSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGlmIChuZXh0ICYmIG5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obmV4dCkgXiA0KSBuZXh0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHQpO1xuICAgICAgICBuZXh0ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmICghY29tcGFyZSkgY29tcGFyZSA9IGFzY2VuZGluZztcblxuICBmdW5jdGlvbiBjb21wYXJlTm9kZShhLCBiKSB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGNvbXBhcmUoYS5fX2RhdGFfXywgYi5fX2RhdGFfXykgOiAhYSAtICFiO1xuICB9XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc29ydGdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc29ydGdyb3VwID0gc29ydGdyb3Vwc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc29ydGdyb3VwW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ydGdyb3VwLnNvcnQoY29tcGFyZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc29ydGdyb3VwcywgdGhpcy5fcGFyZW50cykub3JkZXIoKTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiBhID49IGIgPyAwIDogTmFOO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50c1swXTtcbiAgYXJndW1lbnRzWzBdID0gdGhpcztcbiAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG5vZGUgPSBncm91cFtpXTtcbiAgICAgIGlmIChub2RlKSByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICBsZXQgc2l6ZSA9IDA7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSArK3NpemU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuIHNpemU7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICF0aGlzLm5vZGUoKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIGNhbGxiYWNrLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IG5hbWVzcGFjZSBmcm9tIFwiLi4vbmFtZXNwYWNlLmpzXCI7XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmVOUyhmdWxsbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnQobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50TlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyRnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlKG5hbWUsIHYpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyRnVuY3Rpb25OUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAodiA9PSBudWxsKSB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgZWxzZSB0aGlzLnNldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCwgdik7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIHJldHVybiBmdWxsbmFtZS5sb2NhbFxuICAgICAgICA/IG5vZGUuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKVxuICAgICAgICA6IG5vZGUuZ2V0QXR0cmlidXRlKGZ1bGxuYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgID8gKGZ1bGxuYW1lLmxvY2FsID8gYXR0clJlbW92ZU5TIDogYXR0clJlbW92ZSkgOiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckZ1bmN0aW9uTlMgOiBhdHRyRnVuY3Rpb24pXG4gICAgICA6IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJDb25zdGFudE5TIDogYXR0ckNvbnN0YW50KSkpKGZ1bGxuYW1lLCB2YWx1ZSkpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSkge1xuICByZXR1cm4gKG5vZGUub3duZXJEb2N1bWVudCAmJiBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIC8vIG5vZGUgaXMgYSBOb2RlXG4gICAgICB8fCAobm9kZS5kb2N1bWVudCAmJiBub2RlKSAvLyBub2RlIGlzIGEgV2luZG93XG4gICAgICB8fCBub2RlLmRlZmF1bHRWaWV3OyAvLyBub2RlIGlzIGEgRG9jdW1lbnRcbn1cbiIsImltcG9ydCBkZWZhdWx0VmlldyBmcm9tIFwiLi4vd2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIHN0eWxlUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ29uc3RhbnQobmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlLCBwcmlvcml0eSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlRnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgICBlbHNlIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdiwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gICAgICA/IHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgICAgICAgPyBzdHlsZVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICA/IHN0eWxlRnVuY3Rpb25cbiAgICAgICAgICAgIDogc3R5bGVDb25zdGFudCkobmFtZSwgdmFsdWUsIHByaW9yaXR5ID09IG51bGwgPyBcIlwiIDogcHJpb3JpdHkpKVxuICAgICAgOiBzdHlsZVZhbHVlKHRoaXMubm9kZSgpLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlVmFsdWUobm9kZSwgbmFtZSkge1xuICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpXG4gICAgICB8fCBkZWZhdWx0Vmlldyhub2RlKS5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG59XG4iLCJmdW5jdGlvbiBwcm9wZXJ0eVJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBkZWxldGUgdGhpc1tuYW1lXTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpc1tuYW1lXSA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwcm9wZXJ0eUZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgZGVsZXRlIHRoaXNbbmFtZV07XG4gICAgZWxzZSB0aGlzW25hbWVdID0gdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gICAgICA/IHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gcHJvcGVydHlSZW1vdmUgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gcHJvcGVydHlGdW5jdGlvblxuICAgICAgICAgIDogcHJvcGVydHlDb25zdGFudCkobmFtZSwgdmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKVtuYW1lXTtcbn1cbiIsImZ1bmN0aW9uIGNsYXNzQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcudHJpbSgpLnNwbGl0KC9efFxccysvKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NMaXN0KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuY2xhc3NMaXN0IHx8IG5ldyBDbGFzc0xpc3Qobm9kZSk7XG59XG5cbmZ1bmN0aW9uIENsYXNzTGlzdChub2RlKSB7XG4gIHRoaXMuX25vZGUgPSBub2RlO1xuICB0aGlzLl9uYW1lcyA9IGNsYXNzQXJyYXkobm9kZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiKTtcbn1cblxuQ2xhc3NMaXN0LnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpIDwgMCkge1xuICAgICAgdGhpcy5fbmFtZXMucHVzaChuYW1lKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgY29udGFpbnM6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjbGFzc2VkQWRkKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LmFkZChuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRSZW1vdmUobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QucmVtb3ZlKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFRydWUobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRBZGQodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRmFsc2UobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRSZW1vdmUodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRnVuY3Rpb24obmFtZXMsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAodmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA/IGNsYXNzZWRBZGQgOiBjbGFzc2VkUmVtb3ZlKSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBuYW1lcyA9IGNsYXNzQXJyYXkobmFtZSArIFwiXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBsaXN0ID0gY2xhc3NMaXN0KHRoaXMubm9kZSgpKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoIWxpc3QuY29udGFpbnMobmFtZXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjbGFzc2VkRnVuY3Rpb24gOiB2YWx1ZVxuICAgICAgPyBjbGFzc2VkVHJ1ZVxuICAgICAgOiBjbGFzc2VkRmFsc2UpKG5hbWVzLCB2YWx1ZSkpO1xufVxuIiwiZnVuY3Rpb24gdGV4dFJlbW92ZSgpIHtcbiAgdGhpcy50ZXh0Q29udGVudCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdiA9PSBudWxsID8gXCJcIiA6IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCh2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgPyB0ZXh0UmVtb3ZlIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyB0ZXh0RnVuY3Rpb25cbiAgICAgICAgICA6IHRleHRDb25zdGFudCkodmFsdWUpKVxuICAgICAgOiB0aGlzLm5vZGUoKS50ZXh0Q29udGVudDtcbn1cbiIsImZ1bmN0aW9uIGh0bWxSZW1vdmUoKSB7XG4gIHRoaXMuaW5uZXJIVE1MID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gaHRtbENvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlubmVySFRNTCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBodG1sRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLmlubmVySFRNTCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gaHRtbFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gaHRtbEZ1bmN0aW9uXG4gICAgICAgICAgOiBodG1sQ29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkuaW5uZXJIVE1MO1xufVxuIiwiZnVuY3Rpb24gcmFpc2UoKSB7XG4gIGlmICh0aGlzLm5leHRTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKHJhaXNlKTtcbn1cbiIsImZ1bmN0aW9uIGxvd2VyKCkge1xuICBpZiAodGhpcy5wcmV2aW91c1NpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcywgdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChsb3dlcik7XG59XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH0pO1xufVxuIiwiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3IuanNcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3IuanNcIjtcblxuZnVuY3Rpb24gY29uc3RhbnROdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgYmVmb3JlKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSksXG4gICAgICBzZWxlY3QgPSBiZWZvcmUgPT0gbnVsbCA/IGNvbnN0YW50TnVsbCA6IHR5cGVvZiBiZWZvcmUgPT09IFwiZnVuY3Rpb25cIiA/IGJlZm9yZSA6IHNlbGVjdG9yKGJlZm9yZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IG51bGwpO1xuICB9KTtcbn1cbiIsImZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyZW1vdmUpO1xufVxuIiwiZnVuY3Rpb24gc2VsZWN0aW9uX2Nsb25lU2hhbGxvdygpIHtcbiAgdmFyIGNsb25lID0gdGhpcy5jbG9uZU5vZGUoZmFsc2UpLCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNsb25lLCB0aGlzLm5leHRTaWJsaW5nKSA6IGNsb25lO1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb25fY2xvbmVEZWVwKCkge1xuICB2YXIgY2xvbmUgPSB0aGlzLmNsb25lTm9kZSh0cnVlKSwgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICByZXR1cm4gcGFyZW50ID8gcGFyZW50Lmluc2VydEJlZm9yZShjbG9uZSwgdGhpcy5uZXh0U2libGluZykgOiBjbG9uZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZGVlcCkge1xuICByZXR1cm4gdGhpcy5zZWxlY3QoZGVlcCA/IHNlbGVjdGlvbl9jbG9uZURlZXAgOiBzZWxlY3Rpb25fY2xvbmVTaGFsbG93KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMucHJvcGVydHkoXCJfX2RhdGFfX1wiLCB2YWx1ZSlcbiAgICAgIDogdGhpcy5ub2RlKCkuX19kYXRhX187XG59XG4iLCJmdW5jdGlvbiBjb250ZXh0TGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCwgdGhpcy5fX2RhdGFfXyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVtb3ZlKHR5cGVuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb247XG4gICAgaWYgKCFvbikgcmV0dXJuO1xuICAgIGZvciAodmFyIGogPSAwLCBpID0gLTEsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChvID0gb25bal0sICghdHlwZW5hbWUudHlwZSB8fCBvLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUpICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bKytpXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgrK2kpIG9uLmxlbmd0aCA9IGk7XG4gICAgZWxzZSBkZWxldGUgdGhpcy5fX29uO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbkFkZCh0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbiwgbywgbGlzdGVuZXIgPSBjb250ZXh0TGlzdGVuZXIodmFsdWUpO1xuICAgIGlmIChvbikgZm9yICh2YXIgaiA9IDAsIG0gPSBvbi5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICAgIGlmICgobyA9IG9uW2pdKS50eXBlID09PSB0eXBlbmFtZS50eXBlICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyID0gbGlzdGVuZXIsIG8ub3B0aW9ucyA9IG9wdGlvbnMpO1xuICAgICAgICBvLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHR5cGVuYW1lLnR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvID0ge3R5cGU6IHR5cGVuYW1lLnR5cGUsIG5hbWU6IHR5cGVuYW1lLm5hbWUsIHZhbHVlOiB2YWx1ZSwgbGlzdGVuZXI6IGxpc3RlbmVyLCBvcHRpb25zOiBvcHRpb25zfTtcbiAgICBpZiAoIW9uKSB0aGlzLl9fb24gPSBbb107XG4gICAgZWxzZSBvbi5wdXNoKG8pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHR5cGVuYW1lcyA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiksIGksIG4gPSB0eXBlbmFtZXMubGVuZ3RoLCB0O1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBvbiA9IHRoaXMubm9kZSgpLl9fb247XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aCwgbzsgaiA8IG07ICsraikge1xuICAgICAgZm9yIChpID0gMCwgbyA9IG9uW2pdOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICgodCA9IHR5cGVuYW1lc1tpXSkudHlwZSA9PT0gby50eXBlICYmIHQubmFtZSA9PT0gby5uYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgb24gPSB2YWx1ZSA/IG9uQWRkIDogb25SZW1vdmU7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHRoaXMuZWFjaChvbih0eXBlbmFtZXNbaV0sIHZhbHVlLCBvcHRpb25zKSk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IGRlZmF1bHRWaWV3IGZyb20gXCIuLi93aW5kb3cuanNcIjtcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChub2RlLCB0eXBlLCBwYXJhbXMpIHtcbiAgdmFyIHdpbmRvdyA9IGRlZmF1bHRWaWV3KG5vZGUpLFxuICAgICAgZXZlbnQgPSB3aW5kb3cuQ3VzdG9tRXZlbnQ7XG5cbiAgaWYgKHR5cGVvZiBldmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZXZlbnQgPSBuZXcgZXZlbnQodHlwZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGlmIChwYXJhbXMpIGV2ZW50LmluaXRFdmVudCh0eXBlLCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUpLCBldmVudC5kZXRhaWwgPSBwYXJhbXMuZGV0YWlsO1xuICAgIGVsc2UgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gIH1cblxuICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaENvbnN0YW50KHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hGdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KHRoaXMsIHR5cGUsIHBhcmFtcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiBwYXJhbXMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBkaXNwYXRjaEZ1bmN0aW9uXG4gICAgICA6IGRpc3BhdGNoQ29uc3RhbnQpKHR5cGUsIHBhcmFtcykpO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qKCkge1xuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIGogPSAwLCBtID0gZ3JvdXBzLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gMCwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkgeWllbGQgbm9kZTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBzZWxlY3Rpb25fc2VsZWN0IGZyb20gXCIuL3NlbGVjdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdENoaWxkIGZyb20gXCIuL3NlbGVjdENoaWxkLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdENoaWxkcmVuIGZyb20gXCIuL3NlbGVjdENoaWxkcmVuLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2ZpbHRlciBmcm9tIFwiLi9maWx0ZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGF0YSBmcm9tIFwiLi9kYXRhLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VudGVyIGZyb20gXCIuL2VudGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2V4aXQgZnJvbSBcIi4vZXhpdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9qb2luIGZyb20gXCIuL2pvaW4uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2UuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fb3JkZXIgZnJvbSBcIi4vb3JkZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc29ydCBmcm9tIFwiLi9zb3J0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NhbGwgZnJvbSBcIi4vY2FsbC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9ub2RlcyBmcm9tIFwiLi9ub2Rlcy5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9ub2RlIGZyb20gXCIuL25vZGUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2l6ZSBmcm9tIFwiLi9zaXplLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VtcHR5IGZyb20gXCIuL2VtcHR5LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2VhY2ggZnJvbSBcIi4vZWFjaC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9hdHRyIGZyb20gXCIuL2F0dHIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc3R5bGUgZnJvbSBcIi4vc3R5bGUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fcHJvcGVydHkgZnJvbSBcIi4vcHJvcGVydHkuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2xhc3NlZCBmcm9tIFwiLi9jbGFzc2VkLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3RleHQgZnJvbSBcIi4vdGV4dC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9odG1sIGZyb20gXCIuL2h0bWwuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fcmFpc2UgZnJvbSBcIi4vcmFpc2UuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbG93ZXIgZnJvbSBcIi4vbG93ZXIuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXBwZW5kIGZyb20gXCIuL2FwcGVuZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9pbnNlcnQgZnJvbSBcIi4vaW5zZXJ0LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JlbW92ZSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fY2xvbmUgZnJvbSBcIi4vY2xvbmUuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGF0dW0gZnJvbSBcIi4vZGF0dW0uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fb24gZnJvbSBcIi4vb24uanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fZGlzcGF0Y2ggZnJvbSBcIi4vZGlzcGF0Y2guanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faXRlcmF0b3IgZnJvbSBcIi4vaXRlcmF0b3IuanNcIjtcblxuZXhwb3J0IHZhciByb290ID0gW251bGxdO1xuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0aW9uKGdyb3VwcywgcGFyZW50cykge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb25fc2VsZWN0aW9uKCkge1xuICByZXR1cm4gdGhpcztcbn1cblxuU2VsZWN0aW9uLnByb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZWxlY3Rpb24sXG4gIHNlbGVjdDogc2VsZWN0aW9uX3NlbGVjdCxcbiAgc2VsZWN0QWxsOiBzZWxlY3Rpb25fc2VsZWN0QWxsLFxuICBzZWxlY3RDaGlsZDogc2VsZWN0aW9uX3NlbGVjdENoaWxkLFxuICBzZWxlY3RDaGlsZHJlbjogc2VsZWN0aW9uX3NlbGVjdENoaWxkcmVuLFxuICBmaWx0ZXI6IHNlbGVjdGlvbl9maWx0ZXIsXG4gIGRhdGE6IHNlbGVjdGlvbl9kYXRhLFxuICBlbnRlcjogc2VsZWN0aW9uX2VudGVyLFxuICBleGl0OiBzZWxlY3Rpb25fZXhpdCxcbiAgam9pbjogc2VsZWN0aW9uX2pvaW4sXG4gIG1lcmdlOiBzZWxlY3Rpb25fbWVyZ2UsXG4gIHNlbGVjdGlvbjogc2VsZWN0aW9uX3NlbGVjdGlvbixcbiAgb3JkZXI6IHNlbGVjdGlvbl9vcmRlcixcbiAgc29ydDogc2VsZWN0aW9uX3NvcnQsXG4gIGNhbGw6IHNlbGVjdGlvbl9jYWxsLFxuICBub2Rlczogc2VsZWN0aW9uX25vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fbm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3NpemUsXG4gIGVtcHR5OiBzZWxlY3Rpb25fZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9lYWNoLFxuICBhdHRyOiBzZWxlY3Rpb25fYXR0cixcbiAgc3R5bGU6IHNlbGVjdGlvbl9zdHlsZSxcbiAgcHJvcGVydHk6IHNlbGVjdGlvbl9wcm9wZXJ0eSxcbiAgY2xhc3NlZDogc2VsZWN0aW9uX2NsYXNzZWQsXG4gIHRleHQ6IHNlbGVjdGlvbl90ZXh0LFxuICBodG1sOiBzZWxlY3Rpb25faHRtbCxcbiAgcmFpc2U6IHNlbGVjdGlvbl9yYWlzZSxcbiAgbG93ZXI6IHNlbGVjdGlvbl9sb3dlcixcbiAgYXBwZW5kOiBzZWxlY3Rpb25fYXBwZW5kLFxuICBpbnNlcnQ6IHNlbGVjdGlvbl9pbnNlcnQsXG4gIHJlbW92ZTogc2VsZWN0aW9uX3JlbW92ZSxcbiAgY2xvbmU6IHNlbGVjdGlvbl9jbG9uZSxcbiAgZGF0dW06IHNlbGVjdGlvbl9kYXR1bSxcbiAgb246IHNlbGVjdGlvbl9vbixcbiAgZGlzcGF0Y2g6IHNlbGVjdGlvbl9kaXNwYXRjaCxcbiAgW1N5bWJvbC5pdGVyYXRvcl06IHNlbGVjdGlvbl9pdGVyYXRvclxufTtcblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0aW9uO1xuIiwiaW1wb3J0IHtTZWxlY3Rpb24sIHJvb3R9IGZyb20gXCIuL3NlbGVjdGlvbi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiXG4gICAgICA/IG5ldyBTZWxlY3Rpb24oW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKV1dLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSlcbiAgICAgIDogbmV3IFNlbGVjdGlvbihbW3NlbGVjdG9yXV0sIHJvb3QpO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGluaXRSYW5nZShkb21haW4sIHJhbmdlKSB7XG4gIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogYnJlYWs7XG4gICAgY2FzZSAxOiB0aGlzLnJhbmdlKGRvbWFpbik7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRoaXMucmFuZ2UocmFuZ2UpLmRvbWFpbihkb21haW4pOyBicmVhaztcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRJbnRlcnBvbGF0b3IoZG9tYWluLCBpbnRlcnBvbGF0b3IpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHtcbiAgICAgIGlmICh0eXBlb2YgZG9tYWluID09PSBcImZ1bmN0aW9uXCIpIHRoaXMuaW50ZXJwb2xhdG9yKGRvbWFpbik7XG4gICAgICBlbHNlIHRoaXMucmFuZ2UoZG9tYWluKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aGlzLmRvbWFpbihkb21haW4pO1xuICAgICAgaWYgKHR5cGVvZiBpbnRlcnBvbGF0b3IgPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoaW50ZXJwb2xhdG9yKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShpbnRlcnBvbGF0b3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGNvbnN0IGltcGxpY2l0ID0gU3ltYm9sKFwiaW1wbGljaXRcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGluYWwoKSB7XG4gIHZhciBpbmRleCA9IG5ldyBNYXAoKSxcbiAgICAgIGRvbWFpbiA9IFtdLFxuICAgICAgcmFuZ2UgPSBbXSxcbiAgICAgIHVua25vd24gPSBpbXBsaWNpdDtcblxuICBmdW5jdGlvbiBzY2FsZShkKSB7XG4gICAgdmFyIGtleSA9IGQgKyBcIlwiLCBpID0gaW5kZXguZ2V0KGtleSk7XG4gICAgaWYgKCFpKSB7XG4gICAgICBpZiAodW5rbm93biAhPT0gaW1wbGljaXQpIHJldHVybiB1bmtub3duO1xuICAgICAgaW5kZXguc2V0KGtleSwgaSA9IGRvbWFpbi5wdXNoKGQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhbmdlWyhpIC0gMSkgJSByYW5nZS5sZW5ndGhdO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICAgIGRvbWFpbiA9IFtdLCBpbmRleCA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIF8pIHtcbiAgICAgIGNvbnN0IGtleSA9IHZhbHVlICsgXCJcIjtcbiAgICAgIGlmIChpbmRleC5oYXMoa2V5KSkgY29udGludWU7XG4gICAgICBpbmRleC5zZXQoa2V5LCBkb21haW4ucHVzaCh2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCBzY2FsZSkgOiByYW5nZS5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBvcmRpbmFsKGRvbWFpbiwgcmFuZ2UpLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBzY2FsZTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICB2YXIgbiA9IHNwZWNpZmllci5sZW5ndGggLyA2IHwgMCwgY29sb3JzID0gbmV3IEFycmF5KG4pLCBpID0gMDtcbiAgd2hpbGUgKGkgPCBuKSBjb2xvcnNbaV0gPSBcIiNcIiArIHNwZWNpZmllci5zbGljZShpICogNiwgKytpICogNik7XG4gIHJldHVybiBjb2xvcnM7XG59XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY29sb3JzKFwiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmXCIpO1xuIiwiaW1wb3J0IF9wdCBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2kgPSBhcnIgPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl07IGlmIChfaSA9PSBudWxsKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX3MsIF9lOyB0cnkgeyBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RGYXV4RG9tIGZyb20gJ3JlYWN0LWZhdXgtZG9tJztcbmltcG9ydCBjbG91ZCBmcm9tICdkMy1jbG91ZCc7XG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAncmVhY3QtZmFzdC1jb21wYXJlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBzY2FsZU9yZGluYWwgfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQgeyBzY2hlbWVDYXRlZ29yeTEwIH0gZnJvbSAnZDMtc2NhbGUtY2hyb21hdGljJztcbnZhciBkZWZhdWx0U2NhbGVPcmRpbmFsID0gc2NhbGVPcmRpbmFsKHNjaGVtZUNhdGVnb3J5MTApO1xuXG5mdW5jdGlvbiBXb3JkQ2xvdWQoX3JlZikge1xuICB2YXIgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgIF9yZWYkd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgd2lkdGggPSBfcmVmJHdpZHRoID09PSB2b2lkIDAgPyA3MDAgOiBfcmVmJHdpZHRoLFxuICAgICAgX3JlZiRoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIGhlaWdodCA9IF9yZWYkaGVpZ2h0ID09PSB2b2lkIDAgPyA2MDAgOiBfcmVmJGhlaWdodCxcbiAgICAgIF9yZWYkZm9udCA9IF9yZWYuZm9udCxcbiAgICAgIGZvbnQgPSBfcmVmJGZvbnQgPT09IHZvaWQgMCA/ICdzZXJpZicgOiBfcmVmJGZvbnQsXG4gICAgICBfcmVmJGZvbnRTdHlsZSA9IF9yZWYuZm9udFN0eWxlLFxuICAgICAgZm9udFN0eWxlID0gX3JlZiRmb250U3R5bGUgPT09IHZvaWQgMCA/ICdub3JtYWwnIDogX3JlZiRmb250U3R5bGUsXG4gICAgICBfcmVmJGZvbnRXZWlnaHQgPSBfcmVmLmZvbnRXZWlnaHQsXG4gICAgICBmb250V2VpZ2h0ID0gX3JlZiRmb250V2VpZ2h0ID09PSB2b2lkIDAgPyAnbm9ybWFsJyA6IF9yZWYkZm9udFdlaWdodCxcbiAgICAgIF9yZWYkZm9udFNpemUgPSBfcmVmLmZvbnRTaXplLFxuICAgICAgZm9udFNpemUgPSBfcmVmJGZvbnRTaXplID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoZCkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoZC52YWx1ZSk7XG4gIH0gOiBfcmVmJGZvbnRTaXplLFxuICAgICAgX3JlZiRyb3RhdGUgPSBfcmVmLnJvdGF0ZSxcbiAgICAgIHJvdGF0ZSA9IF9yZWYkcm90YXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICh+fihNYXRoLnJhbmRvbSgpICogNikgLSAzKSAqIDMwO1xuICB9IDogX3JlZiRyb3RhdGUsXG4gICAgICBfcmVmJHNwaXJhbCA9IF9yZWYuc3BpcmFsLFxuICAgICAgc3BpcmFsID0gX3JlZiRzcGlyYWwgPT09IHZvaWQgMCA/ICdhcmNoaW1lZGVhbicgOiBfcmVmJHNwaXJhbCxcbiAgICAgIF9yZWYkcGFkZGluZyA9IF9yZWYucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfcmVmJHBhZGRpbmcgPT09IHZvaWQgMCA/IDEgOiBfcmVmJHBhZGRpbmcsXG4gICAgICBfcmVmJHJhbmRvbSA9IF9yZWYucmFuZG9tLFxuICAgICAgcmFuZG9tID0gX3JlZiRyYW5kb20gPT09IHZvaWQgMCA/IE1hdGgucmFuZG9tIDogX3JlZiRyYW5kb20sXG4gICAgICBfcmVmJGZpbGwgPSBfcmVmLmZpbGwsXG4gICAgICBmaWxsID0gX3JlZiRmaWxsID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoXywgaSkge1xuICAgIHJldHVybiBkZWZhdWx0U2NhbGVPcmRpbmFsKGkpO1xuICB9IDogX3JlZiRmaWxsLFxuICAgICAgb25Xb3JkQ2xpY2sgPSBfcmVmLm9uV29yZENsaWNrLFxuICAgICAgb25Xb3JkTW91c2VPdmVyID0gX3JlZi5vbldvcmRNb3VzZU92ZXIsXG4gICAgICBvbldvcmRNb3VzZU91dCA9IF9yZWYub25Xb3JkTW91c2VPdXQ7XG4gIHZhciBlbGVtZW50UmVmID0gdXNlUmVmKCk7XG5cbiAgaWYgKCFlbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBSZWFjdEZhdXhEb20uY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIH1cblxuICB2YXIgZWwgPSBlbGVtZW50UmVmLmN1cnJlbnQ7IC8vIGNsZWFyIG9sZCB3b3Jkc1xuXG4gIHNlbGVjdChlbCkuc2VsZWN0QWxsKCcqJykucmVtb3ZlKCk7IC8vIHJlbmRlciBiYXNlZCBvbiBuZXcgZGF0YVxuXG4gIHZhciBsYXlvdXQgPSBjbG91ZCgpLndvcmRzKGRhdGEpLnNpemUoW3dpZHRoLCBoZWlnaHRdKS5mb250KGZvbnQpLmZvbnRTdHlsZShmb250U3R5bGUpLmZvbnRXZWlnaHQoZm9udFdlaWdodCkuZm9udFNpemUoZm9udFNpemUpLnJvdGF0ZShyb3RhdGUpLnNwaXJhbChzcGlyYWwpLnBhZGRpbmcocGFkZGluZykucmFuZG9tKHJhbmRvbSkub24oJ2VuZCcsIGZ1bmN0aW9uICh3b3Jkcykge1xuICAgIHZhciBfbGF5b3V0JHNpemUgPSBsYXlvdXQuc2l6ZSgpLFxuICAgICAgICBfbGF5b3V0JHNpemUyID0gX3NsaWNlZFRvQXJyYXkoX2xheW91dCRzaXplLCAyKSxcbiAgICAgICAgdyA9IF9sYXlvdXQkc2l6ZTJbMF0sXG4gICAgICAgIGggPSBfbGF5b3V0JHNpemUyWzFdO1xuXG4gICAgdmFyIHRleHRzID0gc2VsZWN0KGVsKS5hcHBlbmQoJ3N2ZycpLmF0dHIoJ3ZpZXdCb3gnLCBcIjAgMCBcIi5jb25jYXQodywgXCIgXCIpLmNvbmNhdChoKSkuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICd4TWluWU1pbiBtZWV0JykuYXBwZW5kKCdnJykuYXR0cigndHJhbnNmb3JtJywgXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHcgLyAyLCBcIixcIikuY29uY2F0KGggLyAyLCBcIilcIikpLnNlbGVjdEFsbCgndGV4dCcpLmRhdGEod29yZHMpLmVudGVyKCkuYXBwZW5kKCd0ZXh0Jykuc3R5bGUoJ2ZvbnQtZmFtaWx5JywgZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBkLmZvbnQ7XG4gICAgfSkuc3R5bGUoJ2ZvbnQtc3R5bGUnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIGQuc3R5bGU7XG4gICAgfSkuc3R5bGUoJ2ZvbnQtd2VpZ2h0JywgZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBkLndlaWdodDtcbiAgICB9KS5zdHlsZSgnZm9udC1zaXplJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChkLnNpemUsIFwicHhcIik7XG4gICAgfSkuc3R5bGUoJ2ZpbGwnLCBmaWxsKS5hdHRyKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKS5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbiAoZCkge1xuICAgICAgcmV0dXJuIFwidHJhbnNsYXRlKFwiLmNvbmNhdChbZC54LCBkLnldLCBcIilyb3RhdGUoXCIpLmNvbmNhdChkLnJvdGF0ZSwgXCIpXCIpO1xuICAgIH0pLnRleHQoZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBkLnRleHQ7XG4gICAgfSk7XG5cbiAgICBpZiAob25Xb3JkQ2xpY2spIHtcbiAgICAgIHRleHRzLm9uKCdjbGljaycsIG9uV29yZENsaWNrKTtcbiAgICB9XG5cbiAgICBpZiAob25Xb3JkTW91c2VPdmVyKSB7XG4gICAgICB0ZXh0cy5vbignbW91c2VvdmVyJywgb25Xb3JkTW91c2VPdmVyKTtcbiAgICB9XG5cbiAgICBpZiAob25Xb3JkTW91c2VPdXQpIHtcbiAgICAgIHRleHRzLm9uKCdtb3VzZW91dCcsIG9uV29yZE1vdXNlT3V0KTtcbiAgICB9XG4gIH0pO1xuICBsYXlvdXQuc3RhcnQoKTtcbiAgcmV0dXJuIGVsLnRvUmVhY3QoKTtcbn1cblxuV29yZENsb3VkLnByb3BUeXBlcyA9IHtcbiAgZGF0YTogX3B0LmFycmF5T2YoX3B0LnNoYXBlKHtcbiAgICB0ZXh0OiBfcHQuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IF9wdC5udW1iZXIuaXNSZXF1aXJlZFxuICB9KSkuaXNSZXF1aXJlZCxcbiAgd2lkdGg6IF9wdC5udW1iZXIsXG4gIGhlaWdodDogX3B0Lm51bWJlcixcbiAgZm9udDogX3B0Lm9uZU9mVHlwZShbX3B0LnN0cmluZywgX3B0LmZ1bmNdKSxcbiAgZm9udFN0eWxlOiBfcHQub25lT2ZUeXBlKFtfcHQuc3RyaW5nLCBfcHQuZnVuY10pLFxuICBmb250V2VpZ2h0OiBfcHQub25lT2ZUeXBlKFtfcHQuc3RyaW5nLCBfcHQubnVtYmVyLCBfcHQuZnVuY10pLFxuICBmb250U2l6ZTogX3B0Lm9uZU9mVHlwZShbX3B0Lm51bWJlciwgX3B0LmZ1bmNdKSxcbiAgcm90YXRlOiBfcHQub25lT2ZUeXBlKFtfcHQubnVtYmVyLCBfcHQuZnVuY10pLFxuICBzcGlyYWw6IF9wdC5vbmVPZlR5cGUoW19wdC5vbmVPZihbJ2FyY2hpbWVkZWFuJ10pLCBfcHQub25lT2YoWydyZWN0YW5ndWxhciddKSwgX3B0LmZ1bmNdKSxcbiAgcGFkZGluZzogX3B0Lm9uZU9mVHlwZShbX3B0Lm51bWJlciwgX3B0LmZ1bmNdKSxcbiAgcmFuZG9tOiBfcHQuZnVuYyxcbiAgb25Xb3JkQ2xpY2s6IF9wdC5mdW5jLFxuICBvbldvcmRNb3VzZU92ZXI6IF9wdC5mdW5jLFxuICBvbldvcmRNb3VzZU91dDogX3B0LmZ1bmNcbn07XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyhXb3JkQ2xvdWQsIGlzRGVlcEVxdWFsKTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZUVsZW1lbnQsIHJlbmRlciB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgJ2NvcmUtanMnO1xyXG5pbXBvcnQgV29yZENsb3VkIGZyb20gXCJyZWFjdC1kMy1jbG91ZFwiO1xyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV29yZENsb3VkV2lkZ2V0Q29tcG9uZW50KHByb3BzKSB7XHJcbiAgXHJcbiAgY29uc3QgZGF0YSA9IHByb3BzLmlucHV0RGF0YTtcclxuICBjb25zdCBmb250U2l6ZU1hcHBlciA9IHdvcmQgPT4gTWF0aC5sb2cyKHdvcmQudmFsdWUpICogNTtcclxuICBjb25zdCByb3RhdGUgPSB3b3JkID0+IChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyKSAqIDkwKTtcclxuICBjb25zdCBvbkNsaWNrSGFuZGxlID0gKHRleHQpID0+IHtcclxuICAgIFxyXG4gICAgKHByb3BzLm9uQ2xpY2tBY3Rpb24uY2FuRXhlY3V0ZSAmJiAhcHJvcHMub25DbGlja0FjdGlvbi5pc0V4ZWN1dGluZylcclxuICAgIFxyXG4gICAge1xyXG4gICAgICBwcm9wcy5jaG9zZW5Xb3JkLnNldFZhbHVlKHRleHQpO1xyXG4gICAgICBwcm9wcy5vbkNsaWNrQWN0aW9uLmV4ZWN1dGUoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZXR1cm4gKFxyXG5cclxuICAgIDxXb3JkQ2xvdWQgZGF0YT17ZGF0YX0gZm9udFNpemVNYXBwZXI9e2ZvbnRTaXplTWFwcGVyfSByb3RhdGU9e3JvdGF0ZX0gb25Xb3JkQ2xpY2s9eyhldmVudCwgd29yZCkgPT4gb25DbGlja0hhbmRsZSh3b3JkLnRleHQpfSAvPlxyXG5cclxuICApO1xyXG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0ICdjb3JlLWpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBjcmVhdGVFbGVtZW50LCByZW5kZXIgfSBmcm9tIFwicmVhY3RcIjtcclxuXHJcblxyXG5cclxuaW1wb3J0IFdvcmRDbG91ZFdpZGdldENvbXBvbmVudCBmcm9tIFwiLi9jb21wb25lbnRzL1dvcmRDbG91ZFdpZGdldENvbXBvbmVudFwiO1xyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmRDbG91ZFdpZGdldCBleHRlbmRzIENvbXBvbmVudCB7XHJcbiAgICBcclxuXHJcbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXh0UHJvcHMuZGF0YVNvdXJjZSAhPT0gdGhpcy5wcm9wcy5kYXRhU291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuXHJcbiAgICAgICAgdmFyIGRhdGFUb1JlbmRlciA9IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRhdGFTb3VyY2Uuc3RhdHVzID09PSBcImF2YWlsYWJsZVwiICYmIHRoaXMucHJvcHMuZGF0YVNvdXJjZS5pdGVtcykge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5wcm9wcy5kYXRhU291cmNlLml0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhVG9SZW5kZXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy5wcm9wcy50ZXh0QXR0cmliLmdldCgodGhpcy5wcm9wcy5kYXRhU291cmNlLml0ZW1zW2ldKSkudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMuaW50QXR0cmliLmdldCgodGhpcy5wcm9wcy5kYXRhU291cmNlLml0ZW1zW2ldKSkudmFsdWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiA8V29yZENsb3VkV2lkZ2V0Q29tcG9uZW50IGlucHV0RGF0YT17ZGF0YVRvUmVuZGVyfSBjaG9zZW5Xb3JkPXt0aGlzLnByb3BzLmNob3NlbldvcmR9IG9uQ2xpY2tBY3Rpb249e3RoaXMucHJvcHMub25DbGlja0FjdGlvbn0gLz47XHJcblxyXG4gICAgfVxyXG59XHJcbiJdLCJuYW1lcyI6WyJjaGVjayIsIml0IiwiTWF0aCIsIm1vZHVsZSIsImdsb2JhbFRoaXMiLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwiRnVuY3Rpb24iLCJleGVjIiwiZXJyb3IiLCJmYWlscyIsInJlcXVpcmUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIiRwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTkFTSE9STl9CVUciLCJjYWxsIiwiViIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiYml0bWFwIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjbGFzc29mIiwic3BsaXQiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJJbmRleGVkT2JqZWN0IiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsImFyZ3VtZW50IiwiaXNDYWxsYWJsZSIsImFGdW5jdGlvbiIsIm5hbWVzcGFjZSIsIm1ldGhvZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImdldEJ1aWx0SW4iLCJ1c2VyQWdlbnQiLCJwcm9jZXNzIiwiRGVubyIsInZlcnNpb25zIiwidmVyc2lvbiIsInY4IiwibWF0Y2giLCJWOF9WRVJTSU9OIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9sIiwiU3ltYm9sIiwiU3RyaW5nIiwic2hhbSIsIk5BVElWRV9TWU1CT0wiLCJpdGVyYXRvciIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsInRyeVRvU3RyaW5nIiwiYUNhbGxhYmxlIiwiUCIsImZ1bmMiLCJpc09iamVjdCIsImlucHV0IiwicHJlZiIsImZuIiwidmFsIiwidmFsdWVPZiIsImtleSIsInNldEdsb2JhbCIsIlNIQVJFRCIsInN0b3JlIiwicHVzaCIsIm1vZGUiLCJjb3B5cmlnaHQiLCJ0b09iamVjdCIsImhhc093blByb3BlcnR5IiwiaGFzT3duIiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwic2hhcmVkIiwidWlkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsIm5hbWUiLCJpc1N5bWJvbCIsImdldE1ldGhvZCIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJ3ZWxsS25vd25TeW1ib2wiLCJUT19QUklNSVRJVkUiLCJleG90aWNUb1ByaW0iLCJyZXN1bHQiLCJ0b1ByaW1pdGl2ZSIsImRvY3VtZW50IiwiRVhJU1RTIiwiY3JlYXRlRWxlbWVudCIsIkRFU0NSSVBUT1JTIiwiYSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwidG9JbmRleGVkT2JqZWN0IiwidG9Qcm9wZXJ0eUtleSIsIklFOF9ET01fREVGSU5FIiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIk8iLCJmIiwiYW5PYmplY3QiLCIkZGVmaW5lUHJvcGVydHkiLCJBdHRyaWJ1dGVzIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJvYmplY3QiLCJmdW5jdGlvblRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsIldlYWtNYXAiLCJ0ZXN0Iiwia2V5cyIsIk5BVElWRV9XRUFLX01BUCIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsInNoYXJlZEtleSIsImhpZGRlbktleXMiLCJPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCIsInNldCIsImhhcyIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwic3RhdGUiLCJ0eXBlIiwid21nZXQiLCJ3bWhhcyIsIndtc2V0IiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsIkZ1bmN0aW9uUHJvdG90eXBlIiwicHJvdG90eXBlIiwiZ2V0RGVzY3JpcHRvciIsIlBST1BFUiIsInNvbWV0aGluZyIsIkNPTkZJR1VSQUJMRSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsIlRFTVBMQVRFIiwib3B0aW9ucyIsInVuc2FmZSIsInNpbXBsZSIsIm5vVGFyZ2V0R2V0IiwicmVwbGFjZSIsInNvdXJjZSIsImpvaW4iLCJjZWlsIiwiZmxvb3IiLCJudW1iZXIiLCJ0b0ludGVnZXJPckluZmluaXR5IiwibWF4IiwibWluIiwiaW5kZXgiLCJpbnRlZ2VyIiwidG9MZW5ndGgiLCJvYmoiLCJ0b0Fic29sdXRlSW5kZXgiLCJsZW5ndGhPZkFycmF5TGlrZSIsImNyZWF0ZU1ldGhvZCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsImluY2x1ZGVzIiwiaW5kZXhPZiIsIm5hbWVzIiwiaSIsImludGVybmFsT2JqZWN0S2V5cyIsImVudW1CdWdLZXlzIiwiY29uY2F0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJpc0ZvcmNlZCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJkYXRhIiwibm9ybWFsaXplIiwiUE9MWUZJTEwiLCJOQVRJVkUiLCJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInJlZGVmaW5lIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJGT1JDRUQiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiZm9yY2VkIiwiQXJyYXkiLCJpc0FycmF5IiwiVE9fU1RSSU5HX1RBRyIsIlRPX1NUUklOR19UQUdfU1VQUE9SVCIsImNsYXNzb2ZSYXciLCJDT1JSRUNUX0FSR1VNRU5UUyIsInRyeUdldCIsInRhZyIsImNhbGxlZSIsIm9iamVjdEtleXMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiUHJvcGVydGllcyIsImh0bWwiLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJHVCIsIkxUIiwiUFJPVE9UWVBFIiwiU0NSSVBUIiwiSUVfUFJPVE8iLCJFbXB0eUNvbnN0cnVjdG9yIiwic2NyaXB0VGFnIiwiY29udGVudCIsIk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgiLCJhY3RpdmVYRG9jdW1lbnQiLCJ3cml0ZSIsImNsb3NlIiwidGVtcCIsInBhcmVudFdpbmRvdyIsIk51bGxQcm90b09iamVjdFZpYUlGcmFtZSIsImlmcmFtZSIsIkpTIiwiaWZyYW1lRG9jdW1lbnQiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwiRiIsIk51bGxQcm90b09iamVjdCIsIkFjdGl2ZVhPYmplY3QiLCJkb21haW4iLCJjcmVhdGUiLCIkZ2V0T3duUHJvcGVydHlOYW1lcyIsIndpbmRvd05hbWVzIiwiZ2V0V2luZG93TmFtZXMiLCJwYXRoIiwid3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZSIsIk5BTUUiLCJUQUciLCJ0aGF0IiwiYiIsImMiLCJhcHBseSIsImVtcHR5IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3JSZWdFeHAiLCJJTkNPUlJFQ1RfVE9fU1RSSU5HIiwiaXNDb25zdHJ1Y3Rvck1vZGVybiIsImlzQ29uc3RydWN0b3JMZWdhY3kiLCJjYWxsZWQiLCJpc0NvbnN0cnVjdG9yIiwiU1BFQ0lFUyIsIm9yaWdpbmFsQXJyYXkiLCJDIiwiY29uc3RydWN0b3IiLCJhcnJheVNwZWNpZXNDb25zdHJ1Y3RvciIsImJpbmQiLCJhcnJheVNwZWNpZXNDcmVhdGUiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiSVNfRklMVEVSX1JFSkVDVCIsIk5PX0hPTEVTIiwiY2FsbGJhY2tmbiIsInNwZWNpZmljQ3JlYXRlIiwiYm91bmRGdW5jdGlvbiIsImZvckVhY2giLCJtYXAiLCJmaWx0ZXIiLCJzb21lIiwiZXZlcnkiLCJmaW5kIiwiZmluZEluZGV4IiwiZmlsdGVyUmVqZWN0IiwiJCIsIiR0b1N0cmluZyIsIm5hdGl2ZU9iamVjdENyZWF0ZSIsImdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbCIsImRlZmluZVdlbGxLbm93blN5bWJvbCIsInNldFRvU3RyaW5nVGFnIiwiJGZvckVhY2giLCJISURERU4iLCJTWU1CT0wiLCJzZXRJbnRlcm5hbFN0YXRlIiwiT2JqZWN0UHJvdG90eXBlIiwiJHN0cmluZ2lmeSIsIm5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm5hdGl2ZURlZmluZVByb3BlcnR5IiwibmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyIsIm5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiQWxsU3ltYm9scyIsIk9iamVjdFByb3RvdHlwZVN5bWJvbHMiLCJTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5IiwiU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSIsIlFPYmplY3QiLCJVU0VfU0VUVEVSIiwiZmluZENoaWxkIiwic2V0U3ltYm9sRGVzY3JpcHRvciIsIk9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IiLCJ3cmFwIiwiZGVzY3JpcHRpb24iLCIkZGVmaW5lUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCIkZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiJGNyZWF0ZSIsIklTX09CSkVDVF9QUk9UT1RZUEUiLCJzZXR0ZXIiLCJrZXlGb3IiLCJzeW0iLCJ1c2VTZXR0ZXIiLCJ1c2VTaW1wbGUiLCJGT1JDRURfSlNPTl9TVFJJTkdJRlkiLCJzdHJpbmdpZnkiLCJyZXBsYWNlciIsInNwYWNlIiwiYXJncyIsIiRyZXBsYWNlciIsIk5hdGl2ZVN5bWJvbCIsIkVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZSIsIlN5bWJvbFdyYXBwZXIiLCJzeW1ib2xQcm90b3R5cGUiLCJzeW1ib2xUb1N0cmluZyIsIm5hdGl2ZVN5bWJvbCIsInJlZ2V4cCIsImRlc2MiLCJnZXRQcm90b3R5cGVPZiIsIkNPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiIsImFQb3NzaWJsZVByb3RvdHlwZSIsInNldFByb3RvdHlwZU9mIiwiQ09SUkVDVF9TRVRURVIiLCJwcm90byIsIl9fcHJvdG9fXyIsImNhdXNlIiwiSXRlcmF0b3JzIiwiSVRFUkFUT1IiLCJBcnJheVByb3RvdHlwZSIsImdldEl0ZXJhdG9yTWV0aG9kIiwidXNpbmdJdGVyYXRvciIsIml0ZXJhdG9yTWV0aG9kIiwia2luZCIsImlubmVyUmVzdWx0IiwiaW5uZXJFcnJvciIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImdldEl0ZXJhdG9yIiwiaXRlcmF0b3JDbG9zZSIsIlJlc3VsdCIsInN0b3BwZWQiLCJpdGVyYWJsZSIsInVuYm91bmRGdW5jdGlvbiIsIkFTX0VOVFJJRVMiLCJJU19JVEVSQVRPUiIsIklOVEVSUlVQVEVEIiwiaXRlckZuIiwibmV4dCIsInN0ZXAiLCJzdG9wIiwiY29uZGl0aW9uIiwiY2FsbEZuIiwiZG9uZSIsImluc3RhbGxFcnJvckNhdXNlIiwiaXRlcmF0ZSIsIiRBZ2dyZWdhdGVFcnJvciIsIkFnZ3JlZ2F0ZUVycm9yIiwiZXJyb3JzIiwibWVzc2FnZSIsIkVycm9yIiwiZXJyb3JzQXJyYXkiLCJVTlNDT1BBQkxFUyIsImFkZFRvVW5zY29wYWJsZXMiLCJhdCIsImxlbiIsInJlbGF0aXZlSW5kZXgiLCJrIiwicHJvcGVydHlLZXkiLCJNRVRIT0RfTkFNRSIsImFycmF5IiwiZm9vIiwiQm9vbGVhbiIsImNyZWF0ZVByb3BlcnR5IiwiYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCIsIklTX0NPTkNBVF9TUFJFQURBQkxFIiwiTUFYX1NBRkVfSU5URUdFUiIsIk1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCIsIklTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQiLCJTUEVDSUVTX1NVUFBPUlQiLCJpc0NvbmNhdFNwcmVhZGFibGUiLCJzcHJlYWRhYmxlIiwiYXJnIiwiQSIsIm4iLCJFIiwiY29weVdpdGhpbiIsInN0YXJ0IiwidG8iLCJmcm9tIiwiZW5kIiwiY291bnQiLCJpbmMiLCIkZXZlcnkiLCJhcnJheU1ldGhvZElzU3RyaWN0IiwiU1RSSUNUX01FVEhPRCIsImZpbGwiLCJhcmd1bWVudHNMZW5ndGgiLCJlbmRQb3MiLCIkZmlsdGVyIiwiSEFTX1NQRUNJRVNfU1VQUE9SVCIsIiRmaW5kIiwiRklORCIsIlNLSVBTX0hPTEVTIiwiJGZpbmRJbmRleCIsIkZJTkRfSU5ERVgiLCJmbGF0dGVuSW50b0FycmF5Iiwib3JpZ2luYWwiLCJzb3VyY2VMZW4iLCJkZXB0aCIsIm1hcHBlciIsInRoaXNBcmciLCJ0YXJnZXRJbmRleCIsInNvdXJjZUluZGV4IiwibWFwRm4iLCJlbGVtZW50IiwiZWxlbWVudExlbiIsImZsYXQiLCJkZXB0aEFyZyIsImZsYXRNYXAiLCJFTlRSSUVTIiwiY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyIsImFycmF5TGlrZSIsIklTX0NPTlNUUlVDVE9SIiwibWFwZm4iLCJtYXBwaW5nIiwiU0FGRV9DTE9TSU5HIiwiaXRlcmF0b3JXaXRoUmV0dXJuIiwiU0tJUF9DTE9TSU5HIiwiSVRFUkFUSU9OX1NVUFBPUlQiLCJjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24iLCJJTkNPUlJFQ1RfSVRFUkFUSU9OIiwiJGluY2x1ZGVzIiwiJGluZGV4T2YiLCJuYXRpdmVJbmRleE9mIiwiTkVHQVRJVkVfWkVSTyIsInNlYXJjaEVsZW1lbnQiLCJCVUdHWV9TQUZBUklfSVRFUkFUT1JTIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUiLCJhcnJheUl0ZXJhdG9yIiwiTkVXX0lURVJBVE9SX1BST1RPVFlQRSIsInJldHVyblRoaXMiLCJJdGVyYXRvckNvbnN0cnVjdG9yIiwiRnVuY3Rpb25OYW1lIiwiY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciIsIkl0ZXJhdG9yc0NvcmUiLCJQUk9QRVJfRlVOQ1RJT05fTkFNRSIsIktFWVMiLCJWQUxVRVMiLCJJdGVyYWJsZSIsIkRFRkFVTFQiLCJJU19TRVQiLCJnZXRJdGVyYXRpb25NZXRob2QiLCJLSU5EIiwiZGVmYXVsdEl0ZXJhdG9yIiwiSXRlcmFibGVQcm90b3R5cGUiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwiSU5DT1JSRUNUX1ZBTFVFU19OQU1FIiwibmF0aXZlSXRlcmF0b3IiLCJhbnlOYXRpdmVJdGVyYXRvciIsIkN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSIsIm1ldGhvZHMiLCJLRVkiLCJkZWZpbmVJdGVyYXRvciIsIkFSUkFZX0lURVJBVE9SIiwiaXRlcmF0ZWQiLCJBcmd1bWVudHMiLCJuYXRpdmVKb2luIiwiRVMzX1NUUklOR1MiLCJzZXBhcmF0b3IiLCIkbGFzdEluZGV4T2YiLCJsYXN0SW5kZXhPZiIsIiRtYXAiLCJJU05UX0dFTkVSSUMiLCJvZiIsIklTX1JJR0hUIiwibWVtbyIsImxlZnQiLCJyaWdodCIsIiRyZWR1Y2UiLCJDSFJPTUVfVkVSU0lPTiIsIklTX05PREUiLCJDSFJPTUVfQlVHIiwicmVkdWNlIiwiJHJlZHVjZVJpZ2h0IiwicmVkdWNlUmlnaHQiLCJuYXRpdmVSZXZlcnNlIiwicmV2ZXJzZSIsIm5hdGl2ZVNsaWNlIiwiZmluIiwiQ29uc3RydWN0b3IiLCIkc29tZSIsIm1lcmdlU29ydCIsImNvbXBhcmVmbiIsIm1pZGRsZSIsImluc2VydGlvblNvcnQiLCJtZXJnZSIsImoiLCJsbGVuZ3RoIiwicmxlbmd0aCIsImxpbmRleCIsInJpbmRleCIsImZpcmVmb3giLCJVQSIsIndlYmtpdCIsImludGVybmFsU29ydCIsIkZGIiwiSUVfT1JfRURHRSIsIlY4IiwiV0VCS0lUIiwibmF0aXZlU29ydCIsInNvcnQiLCJGQUlMU19PTl9VTkRFRklORUQiLCJGQUlMU19PTl9OVUxMIiwiU1RBQkxFX1NPUlQiLCJjb2RlIiwiY2hyIiwiZnJvbUNoYXJDb2RlIiwidiIsImNoYXJBdCIsImdldFNvcnRDb21wYXJlIiwieCIsInkiLCJpdGVtcyIsImFycmF5TGVuZ3RoIiwiaXRlbXNMZW5ndGgiLCJDT05TVFJVQ1RPUl9OQU1FIiwic2V0U3BlY2llcyIsIk1BWElNVU1fQUxMT1dFRF9MRU5HVEhfRVhDRUVERUQiLCJzcGxpY2UiLCJkZWxldGVDb3VudCIsImFjdHVhbFN0YXJ0IiwiaW5zZXJ0Q291bnQiLCJhY3R1YWxEZWxldGVDb3VudCIsIkFycmF5QnVmZmVyIiwiRGF0YVZpZXciLCJSYW5nZUVycm9yIiwiYWJzIiwicG93IiwibG9nIiwiTE4yIiwicGFjayIsIm1hbnRpc3NhTGVuZ3RoIiwiYnl0ZXMiLCJidWZmZXIiLCJleHBvbmVudExlbmd0aCIsImVNYXgiLCJlQmlhcyIsInJ0Iiwic2lnbiIsImV4cG9uZW50IiwibWFudGlzc2EiLCJJbmZpbml0eSIsInVucGFjayIsIm5CaXRzIiwiTmFOIiwiTkFUSVZFX0FSUkFZX0JVRkZFUiIsInJlZGVmaW5lQWxsIiwiYW5JbnN0YW5jZSIsInRvSW5kZXgiLCJJRUVFNzU0IiwiYXJyYXlGaWxsIiwiQVJSQVlfQlVGRkVSIiwiREFUQV9WSUVXIiwiV1JPTkdfTEVOR1RIIiwiV1JPTkdfSU5ERVgiLCJOYXRpdmVBcnJheUJ1ZmZlciIsIiRBcnJheUJ1ZmZlciIsIiREYXRhVmlldyIsIiREYXRhVmlld1Byb3RvdHlwZSIsInBhY2tJRUVFNzU0IiwidW5wYWNrSUVFRTc1NCIsInBhY2tJbnQ4IiwicGFja0ludDE2IiwicGFja0ludDMyIiwidW5wYWNrSW50MzIiLCJwYWNrRmxvYXQzMiIsInBhY2tGbG9hdDY0IiwiYWRkR2V0dGVyIiwidmlldyIsImlzTGl0dGxlRW5kaWFuIiwiaW50SW5kZXgiLCJieXRlTGVuZ3RoIiwiYnl0ZU9mZnNldCIsImNvbnZlcnNpb24iLCJidWZmZXJMZW5ndGgiLCJvZmZzZXQiLCJnZXRJbnQ4IiwiZ2V0VWludDgiLCJnZXRJbnQxNiIsImdldFVpbnQxNiIsImdldEludDMyIiwiZ2V0VWludDMyIiwiZ2V0RmxvYXQzMiIsImdldEZsb2F0NjQiLCJzZXRJbnQ4Iiwic2V0VWludDgiLCJzZXRJbnQxNiIsInNldFVpbnQxNiIsInNldEludDMyIiwic2V0VWludDMyIiwic2V0RmxvYXQzMiIsInNldEZsb2F0NjQiLCJJTkNPUlJFQ1RfQVJSQVlfQlVGRkVSX05BTUUiLCJBcnJheUJ1ZmZlclByb3RvdHlwZSIsInRlc3RWaWV3IiwiJHNldEludDgiLCJhcnJheUJ1ZmZlck1vZHVsZSIsIkludDhBcnJheSIsIkludDhBcnJheVByb3RvdHlwZSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUiLCJUeXBlZEFycmF5IiwiVHlwZWRBcnJheVByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJUWVBFRF9BUlJBWV9UQUciLCJUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUiIsIk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MiLCJvcGVyYSIsIlRZUEVEX0FSUkFZX1RBR19SRVFJUkVEIiwiUHJvdG90eXBlIiwiVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiQmlnSW50QXJyYXlDb25zdHJ1Y3RvcnNMaXN0IiwiQmlnSW50NjRBcnJheSIsIkJpZ1VpbnQ2NEFycmF5IiwiaXNWaWV3Iiwia2xhc3MiLCJpc1R5cGVkQXJyYXkiLCJhVHlwZWRBcnJheSIsImFUeXBlZEFycmF5Q29uc3RydWN0b3IiLCJleHBvcnRUeXBlZEFycmF5TWV0aG9kIiwicHJvcGVydHkiLCJBUlJBWSIsIlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsImV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QiLCJBcnJheUJ1ZmZlclZpZXdDb3JlIiwiYUNvbnN0cnVjdG9yIiwiZGVmYXVsdENvbnN0cnVjdG9yIiwiUyIsIkFycmF5QnVmZmVyTW9kdWxlIiwic3BlY2llc0NvbnN0cnVjdG9yIiwibmF0aXZlQXJyYXlCdWZmZXJTbGljZSIsIklOQ09SUkVDVF9TTElDRSIsImZpcnN0Iiwidmlld1NvdXJjZSIsInZpZXdUYXJnZXQiLCJEYXRlIiwiZ2V0WWVhciIsImdldEZ1bGxZZWFyIiwibm93IiwiZ2V0VGltZSIsInNldEZ1bGxZZWFyIiwic2V0WWVhciIsInllYXIiLCJ5aSIsInl5eXkiLCJ0b0dNVFN0cmluZyIsInRvVVRDU3RyaW5nIiwicmVwZWF0Iiwic3RyIiwiSVNfRU5EIiwibWF4TGVuZ3RoIiwiZmlsbFN0cmluZyIsImludE1heExlbmd0aCIsInN0cmluZ0xlbmd0aCIsImZpbGxTdHIiLCJmaWxsTGVuIiwic3RyaW5nRmlsbGVyIiwicGFkU3RhcnQiLCJEYXRlUHJvdG90eXBlIiwibmF0aXZlRGF0ZVRvSVNPU3RyaW5nIiwidG9JU09TdHJpbmciLCJpc0Zpbml0ZSIsImRhdGUiLCJnZXRVVENGdWxsWWVhciIsIm1pbGxpc2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJ0b0pTT04iLCJwdiIsImhpbnQiLCJkYXRlVG9QcmltaXRpdmUiLCJJTlZBTElEX0RBVEUiLCJUT19TVFJJTkciLCJuYXRpdmVEYXRlVG9TdHJpbmciLCJyYXciLCJoZXgiLCJlc2NhcGUiLCJjaGFyQ29kZUF0IiwidG9VcHBlckNhc2UiLCJmYWN0b3JpZXMiLCJhcmdzTGVuZ3RoIiwibGlzdCIsInBhcnRBcmdzIiwiYm91bmQiLCJIQVNfSU5TVEFOQ0UiLCJGVU5DVElPTl9OQU1FX0VYSVNUUyIsIkZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmciLCJuYW1lUkUiLCJyZSIsImxvdyIsImhpIiwiZml4IiwicHJldiIsIkpTT04iLCJpc0V4dGVuc2libGUiLCJwcmV2ZW50RXh0ZW5zaW9ucyIsImdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbE1vZHVsZSIsIkZSRUVaSU5HIiwiUkVRVUlSRUQiLCJNRVRBREFUQSIsInNldE1ldGFkYXRhIiwib2JqZWN0SUQiLCJ3ZWFrRGF0YSIsImZhc3RLZXkiLCJnZXRXZWFrRGF0YSIsIm9uRnJlZXplIiwiZW5hYmxlIiwibWV0YSIsImR1bW15IiwiV3JhcHBlciIsIk5ld1RhcmdldCIsIk5ld1RhcmdldFByb3RvdHlwZSIsIkludGVybmFsTWV0YWRhdGFNb2R1bGUiLCJpbmhlcml0SWZSZXF1aXJlZCIsIndyYXBwZXIiLCJjb21tb24iLCJJU19XRUFLIiwiQURERVIiLCJOYXRpdmVDb25zdHJ1Y3RvciIsIk5hdGl2ZVByb3RvdHlwZSIsImV4cG9ydGVkIiwiZml4TWV0aG9kIiwibmF0aXZlTWV0aG9kIiwiYWRkIiwiUkVQTEFDRSIsImdldENvbnN0cnVjdG9yIiwiaW5zdGFuY2UiLCJIQVNOVF9DSEFJTklORyIsIlRIUk9XU19PTl9QUklNSVRJVkVTIiwiQUNDRVBUX0lURVJBQkxFUyIsIkJVR0dZX1pFUk8iLCIkaW5zdGFuY2UiLCJjbGVhciIsInNldFN0cm9uZyIsImludGVybmFsU3RhdGVHZXR0ZXJGb3IiLCJsYXN0Iiwic2l6ZSIsImRlZmluZSIsImVudHJ5IiwiZ2V0RW50cnkiLCJwcmV2aW91cyIsInJlbW92ZWQiLCJJVEVSQVRPUl9OQU1FIiwiZ2V0SW50ZXJuYWxDb2xsZWN0aW9uU3RhdGUiLCJnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUiLCJjb2xsZWN0aW9uIiwiY29sbGVjdGlvblN0cm9uZyIsImluaXQiLCJNYXAiLCJsb2cxcCIsIiRhY29zaCIsImFjb3NoIiwic3FydCIsIk51bWJlciIsIk1BWF9WQUxVRSIsIiRhc2luaCIsImFzaW5oIiwiJGF0YW5oIiwiYXRhbmgiLCJjYnJ0IiwiTE9HMkUiLCJjbHozMiIsIiRleHBtMSIsImV4cG0xIiwiZXhwIiwiJGNvc2giLCJjb3NoIiwidCIsIkVQU0lMT04iLCJFUFNJTE9OMzIiLCJNQVgzMiIsIk1JTjMyIiwicm91bmRUaWVzVG9FdmVuIiwiZnJvdW5kIiwiJGFicyIsIiRzaWduIiwiJGh5cG90IiwiaHlwb3QiLCJCVUdHWSIsInZhbHVlMSIsInZhbHVlMiIsInN1bSIsImFMZW4iLCJsYXJnIiwiZGl2IiwiJGltdWwiLCJpbXVsIiwiVUlOVDE2IiwieG4iLCJ5biIsInhsIiwieWwiLCJMT0cxMEUiLCJsb2cxMCIsImxvZzIiLCJzaW5oIiwidGFuaCIsInRydW5jIiwid2hpdGVzcGFjZXMiLCJ3aGl0ZXNwYWNlIiwibHRyaW0iLCJSZWdFeHAiLCJydHJpbSIsInRyaW0iLCJ0aGlzTnVtYmVyVmFsdWUiLCJOVU1CRVIiLCJOYXRpdmVOdW1iZXIiLCJOdW1iZXJQcm90b3R5cGUiLCJ0b051bWVyaWMiLCJwcmltVmFsdWUiLCJ0b051bWJlciIsInRoaXJkIiwicmFkaXgiLCJtYXhDb2RlIiwiZGlnaXRzIiwicGFyc2VJbnQiLCJOdW1iZXJXcmFwcGVyIiwiZ2xvYmFsSXNGaW5pdGUiLCJudW1iZXJJc0Zpbml0ZSIsImlzSW50ZWdlciIsImlzSW50ZWdyYWxOdW1iZXIiLCJpc05hTiIsImlzU2FmZUludGVnZXIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiJHBhcnNlRmxvYXQiLCJwYXJzZUZsb2F0IiwidHJpbW1lZFN0cmluZyIsIiRwYXJzZUludCIsIm5hdGl2ZVRvRml4ZWQiLCJ0b0ZpeGVkIiwiYWNjIiwieDIiLCJtdWx0aXBseSIsImMyIiwiZGl2aWRlIiwiZGF0YVRvU3RyaW5nIiwicyIsImZyYWN0aW9uRGlnaXRzIiwiZnJhY3REaWdpdHMiLCJlIiwieiIsIm5hdGl2ZVRvUHJlY2lzaW9uIiwidG9QcmVjaXNpb24iLCJwcmVjaXNpb24iLCIkYXNzaWduIiwiYXNzaWduIiwiQiIsImFscGhhYmV0IiwiVCIsIl9fZGVmaW5lU2V0dGVyX18iLCJfX2RlZmluZUdldHRlcl9fIiwiZ2V0dGVyIiwib2JqZWN0RGVmaW5lUHJvcGVydHlNb2RpbGUiLCJUT19FTlRSSUVTIiwiJGVudHJpZXMiLCIkZnJlZXplIiwiZnJlZXplIiwiRkFJTFNfT05fUFJJTUlUSVZFUyIsImZyb21FbnRyaWVzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsIm5hdGl2ZUdldFByb3RvdHlwZU9mIiwiaXMiLCIkaXNFeHRlbnNpYmxlIiwiJGlzRnJvemVuIiwiaXNGcm96ZW4iLCIkaXNTZWFsZWQiLCJpc1NlYWxlZCIsIm5hdGl2ZUtleXMiLCJfX2xvb2t1cEdldHRlcl9fIiwiX19sb29rdXBTZXR0ZXJfXyIsIiRwcmV2ZW50RXh0ZW5zaW9ucyIsIiRzZWFsIiwic2VhbCIsIiR2YWx1ZXMiLCJQcm9taXNlIiwiSVNfSU9TIiwic2V0SW1tZWRpYXRlIiwiY2xlYXJJbW1lZGlhdGUiLCJNZXNzYWdlQ2hhbm5lbCIsIkRpc3BhdGNoIiwiY291bnRlciIsInF1ZXVlIiwiT05SRUFEWVNUQVRFQ0hBTkdFIiwibG9jYXRpb24iLCJkZWZlciIsImNoYW5uZWwiLCJwb3J0IiwicnVuIiwicnVubmVyIiwibGlzdGVuZXIiLCJldmVudCIsInBvc3QiLCJwb3N0TWVzc2FnZSIsInByb3RvY29sIiwiaG9zdCIsIm5leHRUaWNrIiwicG9ydDIiLCJwb3J0MSIsIm9ubWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJpbXBvcnRTY3JpcHRzIiwicmVtb3ZlQ2hpbGQiLCJzZXRUaW1lb3V0IiwiUGViYmxlIiwibWFjcm90YXNrIiwiSVNfSU9TX1BFQkJMRSIsIklTX1dFQk9TX1dFQktJVCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwicXVldWVNaWNyb3Rhc2tEZXNjcmlwdG9yIiwicXVldWVNaWNyb3Rhc2siLCJmbHVzaCIsImhlYWQiLCJub3RpZnkiLCJ0b2dnbGUiLCJub2RlIiwicHJvbWlzZSIsInRoZW4iLCJwYXJlbnQiLCJleGl0IiwiZW50ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwicmVzb2x2ZSIsInRhc2siLCJQcm9taXNlQ2FwYWJpbGl0eSIsInJlamVjdCIsIiQkcmVzb2x2ZSIsIiQkcmVqZWN0IiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJwcm9taXNlQ2FwYWJpbGl0eSIsImNvbnNvbGUiLCJOYXRpdmVQcm9taXNlIiwibWljcm90YXNrIiwicHJvbWlzZVJlc29sdmUiLCJob3N0UmVwb3J0RXJyb3JzIiwibmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUiLCJwZXJmb3JtIiwiSVNfQlJPV1NFUiIsIlBST01JU0UiLCJnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSIsIk5hdGl2ZVByb21pc2VQcm90b3R5cGUiLCJQcm9taXNlQ29uc3RydWN0b3IiLCJQcm9taXNlQ29uc3RydWN0b3JQcm90b3R5cGUiLCJuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkiLCJESVNQQVRDSF9FVkVOVCIsImNyZWF0ZUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIk5BVElWRV9SRUpFQ1RJT05fRVZFTlQiLCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCJVTkhBTkRMRURfUkVKRUNUSU9OIiwiUkVKRUNUSU9OX0hBTkRMRUQiLCJQRU5ESU5HIiwiRlVMRklMTEVEIiwiUkVKRUNURUQiLCJIQU5ETEVEIiwiVU5IQU5ETEVEIiwiU1VCQ0xBU1NJTkciLCJJbnRlcm5hbCIsIk93blByb21pc2VDYXBhYmlsaXR5IiwiUHJvbWlzZVdyYXBwZXIiLCJuYXRpdmVUaGVuIiwiUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UiLCJHTE9CQUxfQ09SRV9KU19QUk9NSVNFIiwiRmFrZVByb21pc2UiLCJhbGwiLCJpc1RoZW5hYmxlIiwiaXNSZWplY3QiLCJub3RpZmllZCIsImNoYWluIiwicmVhY3Rpb25zIiwib2siLCJyZWFjdGlvbiIsImhhbmRsZXIiLCJmYWlsIiwiZXhpdGVkIiwicmVqZWN0aW9uIiwib25IYW5kbGVVbmhhbmRsZWQiLCJvblVuaGFuZGxlZCIsInJlYXNvbiIsImluaXRFdmVudCIsIklTX1VOSEFORExFRCIsImlzVW5oYW5kbGVkIiwiZW1pdCIsInVud3JhcCIsImludGVybmFsUmVqZWN0IiwiaW50ZXJuYWxSZXNvbHZlIiwiZXhlY3V0b3IiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyIiwiY2FwYWJpbGl0eSIsIiRwcm9taXNlUmVzb2x2ZSIsInJlbWFpbmluZyIsImFscmVhZHlDYWxsZWQiLCJyYWNlIiwiYWxsU2V0dGxlZCIsInN0YXR1cyIsIlBST01JU0VfQU5ZX0VSUk9SIiwiYW55IiwiYWxyZWFkeVJlc29sdmVkIiwiYWxyZWFkeVJlamVjdGVkIiwiTk9OX0dFTkVSSUMiLCJyZWFsIiwib25GaW5hbGx5IiwiaXNGdW5jdGlvbiIsIm5hdGl2ZUFwcGx5IiwiZnVuY3Rpb25BcHBseSIsIk9QVElPTkFMX0FSR1VNRU5UU19MSVNUIiwidGhpc0FyZ3VtZW50IiwiYXJndW1lbnRzTGlzdCIsIm5hdGl2ZUNvbnN0cnVjdCIsIk5FV19UQVJHRVRfQlVHIiwiQVJHU19CVUciLCJUYXJnZXQiLCJuZXdUYXJnZXQiLCIkYXJncyIsIkVSUk9SX0lOU1RFQURfT0ZfRkFMU0UiLCJSZWZsZWN0IiwiYXR0cmlidXRlcyIsImRlbGV0ZVByb3BlcnR5IiwiaXNEYXRhRGVzY3JpcHRvciIsInJlY2VpdmVyIiwib2JqZWN0R2V0UHJvdG90eXBlT2YiLCJvYmplY3RJc0V4dGVuc2libGUiLCJvYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyIsIm93bkRlc2NyaXB0b3IiLCJleGlzdGluZ0Rlc2NyaXB0b3IiLCJNU19FREdFX0JVRyIsIm9iamVjdFNldFByb3RvdHlwZU9mIiwiTUFUQ0giLCJpc1JlZ0V4cCIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwic3RpY2t5IiwiJFJlZ0V4cCIsImxhc3RJbmRleCIsImZsYWdzIiwiZ3JvdXBzIiwiZ2V0RmxhZ3MiLCJzdGlja3lIZWxwZXJzIiwiVU5TVVBQT1JURURfRE9UX0FMTCIsIlVOU1VQUE9SVEVEX05DRyIsIk5hdGl2ZVJlZ0V4cCIsIlJlZ0V4cFByb3RvdHlwZSIsIklTX05DRyIsInJlMSIsInJlMiIsIkNPUlJFQ1RfTkVXIiwiVU5TVVBQT1JURURfWSIsIkJBU0VfRk9SQ0VEIiwiaGFuZGxlRG90QWxsIiwiYnJhY2tldHMiLCJoYW5kbGVOQ0ciLCJuYW1lZCIsIm5jZyIsImdyb3VwaWQiLCJncm91cG5hbWUiLCJTeW50YXhFcnJvciIsIlJlZ0V4cFdyYXBwZXIiLCJwYXR0ZXJuIiwidGhpc0lzUmVnRXhwIiwicGF0dGVybklzUmVnRXhwIiwiZmxhZ3NBcmVVbmRlZmluZWQiLCJyYXdQYXR0ZXJuIiwicmF3RmxhZ3MiLCJoYW5kbGVkIiwicHJveHkiLCJyZWdleHBGbGFncyIsIm5hdGl2ZUV4ZWMiLCJuYXRpdmVSZXBsYWNlIiwicGF0Y2hlZEV4ZWMiLCJVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkciLCJCUk9LRU5fQ0FSRVQiLCJOUENHX0lOQ0xVREVEIiwiUEFUQ0giLCJyZUNvcHkiLCJncm91cCIsImNoYXJzQWRkZWQiLCJzdHJDb3B5Iiwib2JqZWN0RGVmaW5lUHJvcGVydHlNb2R1bGUiLCJyZWdFeHBGbGFncyIsIkRFTEVHQVRFU19UT19FWEVDIiwiZXhlY0NhbGxlZCIsIm5hdGl2ZVRlc3QiLCJuYXRpdmVUb1N0cmluZyIsIk5PVF9HRU5FUklDIiwiSU5DT1JSRUNUX05BTUUiLCJSIiwicCIsInJmIiwiU2V0IiwiQ09OVkVSVF9UT19TVFJJTkciLCJwb3MiLCJwb3NpdGlvbiIsInNlY29uZCIsImNvZGVBdCIsImNvZGVQb2ludEF0IiwiZXJyb3IxIiwiZXJyb3IyIiwibm90QVJlZ0V4cCIsImNvcnJlY3RJc1JlZ0V4cExvZ2ljIiwiJGVuZHNXaXRoIiwiZW5kc1dpdGgiLCJDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyIsIk1ETl9QT0xZRklMTF9CVUciLCJzZWFyY2hTdHJpbmciLCJlbmRQb3NpdGlvbiIsInNlYXJjaCIsIiRmcm9tQ29kZVBvaW50IiwiZnJvbUNvZGVQb2ludCIsIklOQ09SUkVDVF9MRU5HVEgiLCJlbGVtZW50cyIsIlNUUklOR19JVEVSQVRPUiIsInBvaW50IiwicmVnZXhwRXhlYyIsIlNIQU0iLCJERUxFR0FURVNfVE9fU1lNQk9MIiwibmF0aXZlUmVnRXhwTWV0aG9kIiwiYXJnMiIsImZvcmNlU3RyaW5nTWV0aG9kIiwiJGV4ZWMiLCJmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyIsImFkdmFuY2VTdHJpbmdJbmRleCIsInJlZ0V4cEV4ZWMiLCJuYXRpdmVNYXRjaCIsIm1heWJlQ2FsbE5hdGl2ZSIsIm1hdGNoZXIiLCJyeCIsInJlcyIsImZ1bGxVbmljb2RlIiwibWF0Y2hTdHIiLCJnZXRSZWdFeHBGbGFncyIsIklTX1BVUkUiLCJNQVRDSF9BTEwiLCJSRUdFWFBfU1RSSU5HIiwiUkVHRVhQX1NUUklOR19JVEVSQVRPUiIsIm5hdGl2ZU1hdGNoQWxsIiwibWF0Y2hBbGwiLCJXT1JLU19XSVRIX05PTl9HTE9CQUxfUkVHRVgiLCIkUmVnRXhwU3RyaW5nSXRlcmF0b3IiLCJSZWdFeHBTdHJpbmdJdGVyYXRvciIsIiRtYXRjaEFsbCIsImZsYWdzVmFsdWUiLCIkcGFkRW5kIiwiV0VCS0lUX0JVRyIsInBhZEVuZCIsIiRwYWRTdGFydCIsInRlbXBsYXRlIiwicmF3VGVtcGxhdGUiLCJsaXRlcmFsU2VnbWVudHMiLCJTVUJTVElUVVRJT05fU1lNQk9MUyIsIlNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEIiwibWF0Y2hlZCIsImNhcHR1cmVzIiwibmFtZWRDYXB0dXJlcyIsInRhaWxQb3MiLCJtIiwic3ltYm9scyIsImNoIiwiY2FwdHVyZSIsImdldFN1YnN0aXR1dGlvbiIsIm1heWJlVG9TdHJpbmciLCJSRVBMQUNFX0tFRVBTXyQwIiwiUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUiLCJSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyIsIl8iLCJVTlNBRkVfU1VCU1RJVFVURSIsInNlYXJjaFZhbHVlIiwicmVwbGFjZVZhbHVlIiwiZnVuY3Rpb25hbFJlcGxhY2UiLCJyZXN1bHRzIiwiYWNjdW11bGF0ZWRSZXN1bHQiLCJuZXh0U291cmNlUG9zaXRpb24iLCJyZXBsYWNlckFyZ3MiLCJzdHJpbmdJbmRleE9mIiwicmVwbGFjZUFsbCIsIklTX1JFR19FWFAiLCJzZWFyY2hMZW5ndGgiLCJhZHZhbmNlQnkiLCJlbmRPZkxhc3RNYXRjaCIsInNhbWVWYWx1ZSIsIlNFQVJDSCIsIm5hdGl2ZVNlYXJjaCIsInNlYXJjaGVyIiwicHJldmlvdXNMYXN0SW5kZXgiLCJjYWxsUmVnRXhwRXhlYyIsImFycmF5UHVzaCIsIk1BWF9VSU5UMzIiLCJTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMiLCJvcmlnaW5hbEV4ZWMiLCJTUExJVCIsIm5hdGl2ZVNwbGl0IiwiaW50ZXJuYWxTcGxpdCIsImxpbWl0IiwibGltIiwib3V0cHV0IiwibGFzdExhc3RJbmRleCIsInNlcGFyYXRvckNvcHkiLCJsYXN0TGVuZ3RoIiwic3BsaXR0ZXIiLCJ1bmljb2RlTWF0Y2hpbmciLCJxIiwiJHN0YXJ0c1dpdGgiLCJzdGFydHNXaXRoIiwic3Vic3RyIiwiaW50U3RhcnQiLCJpbnRMZW5ndGgiLCJpbnRFbmQiLCJub24iLCIkdHJpbSIsImZvcmNlZFN0cmluZ1RyaW1NZXRob2QiLCIkdHJpbUVuZCIsInRyaW1FbmQiLCJ0cmltUmlnaHQiLCIkdHJpbVN0YXJ0IiwidHJpbVN0YXJ0IiwidHJpbUxlZnQiLCJxdW90IiwiYXR0cmlidXRlIiwicDEiLCJjcmVhdGVIVE1MIiwiZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCIsImFuY2hvciIsImJpZyIsImJsaW5rIiwiYm9sZCIsImZpeGVkIiwiZm9udGNvbG9yIiwiY29sb3IiLCJmb250c2l6ZSIsIml0YWxpY3MiLCJsaW5rIiwidXJsIiwic21hbGwiLCJzdHJpa2UiLCJzdWIiLCJzdXAiLCJ0b1Bvc2l0aXZlSW50ZWdlciIsIkJZVEVTIiwiVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyIsInRvT2Zmc2V0IiwidHlwZWRBcnJheUZyb20iLCJyb3VuZCIsIkJZVEVTX1BFUl9FTEVNRU5UIiwiZnJvbUxpc3QiLCJpc0FycmF5QnVmZmVyIiwiaXNUeXBlZEFycmF5SW5kZXgiLCJ3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwid3JhcHBlZERlZmluZVByb3BlcnR5IiwiQ0xBTVBFRCIsIkdFVFRFUiIsIlNFVFRFUiIsIk5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsIlR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSIsImFkZEVsZW1lbnQiLCIkbGVuZ3RoIiwiJGxlbiIsInR5cGVkQXJyYXlPZmZzZXQiLCJjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IiLCIkY29weVdpdGhpbiIsIiRmaWxsIiwiYXJyYXlGcm9tQ29uc3RydWN0b3JBbmRMaXN0IiwidHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1Y3RvciIsImZyb21TcGVjaWVzQW5kTGlzdCIsInByZWRpY2F0ZSIsIkFycmF5SXRlcmF0b3JzIiwiYXJyYXlWYWx1ZXMiLCJhcnJheUtleXMiLCJhcnJheUVudHJpZXMiLCJuYXRpdmVUeXBlZEFycmF5SXRlcmF0b3IiLCJQUk9QRVJfQVJSQVlfVkFMVUVTX05BTUUiLCJ0eXBlZEFycmF5VmFsdWVzIiwiJGpvaW4iLCIkc2xpY2UiLCJBQ0NFUFRfSU5DT1JSRUNUX0FSR1VNRU5UUyIsImV4cGVjdGVkIiwibW9kIiwic3ViYXJyYXkiLCJiZWdpbiIsImJlZ2luSW5kZXgiLCIkdG9Mb2NhbGVTdHJpbmciLCJ0b0xvY2FsZVN0cmluZyIsIlRPX0xPQ0FMRV9TVFJJTkdfQlVHIiwiVWludDhBcnJheVByb3RvdHlwZSIsImFycmF5VG9TdHJpbmciLCJhcnJheUpvaW4iLCJJU19OT1RfQVJSQVlfTUVUSE9EIiwiaGV4MiIsImhleDQiLCJ1bmVzY2FwZSIsIkFycmF5SXRlcmF0aW9uTW9kdWxlIiwidW5jYXVnaHRGcm96ZW5TdG9yZSIsImZyb3plbiIsIlVuY2F1Z2h0RnJvemVuU3RvcmUiLCJmaW5kVW5jYXVnaHRGcm96ZW4iLCJjb2xsZWN0aW9uV2VhayIsImVuZm9yY2VJdGVybmFsU3RhdGUiLCJJU19JRTExIiwiSW50ZXJuYWxXZWFrTWFwIiwiJFdlYWtNYXAiLCJXZWFrTWFwUHJvdG90eXBlIiwibmF0aXZlRGVsZXRlIiwibmF0aXZlSGFzIiwibmF0aXZlR2V0IiwibmF0aXZlU2V0IiwiV2Vha1NldCIsIlVTRV9GVU5DVElPTl9DT05TVFJVQ1RPUiIsIkFTWU5DX0lURVJBVE9SIiwiQXN5bmNJdGVyYXRvciIsIlBhc3NlZEFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJBc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwiYXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29udGludWF0aW9uIiwiQXN5bmNGcm9tU3luY0l0ZXJhdG9yIiwiaGFzQXJnIiwiJHJldHVybiIsIiR0aHJvdyIsIkNPTlNUUlVDVE9SIiwiSVNfVE9fQVJSQVkiLCJJU19GT1JfRUFDSCIsIk1BUFBJTkciLCJjbG9zZUl0ZXJhdGlvbiIsInJldHVybk1ldGhvZCIsIm9uRXJyb3IiLCJsb29wIiwidG9BcnJheSIsImdldEFzeW5jSXRlcmF0b3IiLCJnZXRWaXJ0dWFsIiwiZnJvbUFzeW5jIiwiYXN5bmNJdGVtcyIsInVzaW5nQXN5bmNJdGVyYXRvciIsInVzaW5nU3luY0l0ZXJhdG9yIiwiJGZpbHRlclJlamVjdCIsImZpbHRlck91dCIsIklTX0ZJTkRfTEFTVF9JTkRFWCIsImZpbmRMYXN0IiwiZmluZExhc3RJbmRleCIsIiRmaW5kTGFzdCIsIiRmaW5kTGFzdEluZGV4Iiwib2JqZWN0Q3JlYXRlIiwic3BlY2lmaWNDb25zdHJ1Y3RvciIsIiRncm91cEJ5IiwiZ3JvdXBCeSIsImlzRnJvemVuU3RyaW5nQXJyYXkiLCJhbGxvd1VuZGVmaW5lZCIsImlzVGVtcGxhdGVPYmplY3QiLCJsYXN0SXRlbSIsInVuaXF1ZUJ5IiwicmVzb2x2ZXIiLCJyZXNvbHZlckZ1bmN0aW9uIiwiaXRlbSIsIkFzeW5jSXRlcmF0b3JDb25zdHJ1Y3RvciIsIm5leHRIYW5kbGVyIiwiQXN5bmNJdGVyYXRvclByb3h5IiwiaWdub3JlQXJndW1lbnQiLCJoYXNBcmd1bWVudCIsIiQkcmV0dXJuIiwiJCR0aHJvdyIsImNyZWF0ZUFzeW5jSXRlcmF0b3JQcm94eSIsImFzSW5kZXhlZFBhaXJzIiwiZXJyIiwiZHJvcCIsImZpbHRlcmVyIiwic2VsZWN0ZWQiLCJpbm5lckl0ZXJhdG9yIiwib3V0ZXJMb29wIiwibWFwcGVkIiwiaW5uZXJOZXh0IiwiaW5uZXJMb29wIiwicmVkdWNlciIsIm5vSW5pdGlhbCIsImFjY3VtdWxhdG9yIiwidGFrZSIsIiR0b0FycmF5IiwiSU5DT1JSRUNUX1JBTkdFIiwiTlVNRVJJQ19SQU5HRV9JVEVSQVRPUiIsIiRSYW5nZUl0ZXJhdG9yIiwiTnVtZXJpY1JhbmdlSXRlcmF0b3IiLCJvcHRpb24iLCJ6ZXJvIiwib25lIiwiaWZJbmNyZWFzZSIsImluY2x1c2l2ZUVuZCIsImluY2x1c2l2ZSIsImhpdHNFbmQiLCJjdXJyZW50Q291bnQiLCJjdXJyZW50WWllbGRpbmdWYWx1ZSIsImVuZENvbmRpdGlvbiIsIkJpZ0ludCIsInJhbmdlIiwiTm9kZSIsInByaW1pdGl2ZXMiLCJvYmplY3RzQnlJbmRleCIsImluaXRpYWxpemVyIiwiSVNfT0JKRUNUIiwicm9vdCIsImFjdGl2ZSIsImdldENvbXBvc2l0ZUtleU5vZGUiLCJjb21wb3NpdGVLZXkiLCJjb21wb3NpdGVTeW1ib2wiLCJOYXRpdmVJdGVyYXRvciIsIkl0ZXJhdG9yIiwiSXRlcmF0b3JQcm94eSIsImlnbm9yZUFyZyIsImNyZWF0ZUl0ZXJhdG9yUHJveHkiLCJyZW1vdmVyIiwiYWxsRGVsZXRlZCIsIndhc0RlbGV0ZWQiLCJjb2xsZWN0aW9uRGVsZXRlQWxsIiwiZGVsZXRlQWxsIiwiZW1wbGFjZSIsInVwZGF0ZSIsImluc2VydCIsIiRlbXBsYWNlIiwiZ2V0TWFwSXRlcmF0b3IiLCJuZXdNYXAiLCJmaW5kS2V5IiwibmV4dEl0ZW0iLCJrZXlEZXJpdmF0aXZlIiwiZGVyaXZlZEtleSIsInNhbWVWYWx1ZVplcm8iLCJrZXlCeSIsImtleU9mIiwibWFwS2V5cyIsIm1hcFZhbHVlcyIsImNhbGxiYWNrIiwiaXNQcmVzZW50SW5NYXAiLCJ1cHNlcnQiLCJ1cGRhdGVGbiIsImluc2VydEZuIiwiJHVwc2VydCIsInVwZGF0ZU9ySW5zZXJ0IiwiY2xhbXAiLCJsb3dlciIsInVwcGVyIiwiREVHX1BFUl9SQUQiLCJQSSIsIlJBRF9QRVJfREVHIiwiZGVncmVlcyIsInJhZGlhbnMiLCJzY2FsZSIsImluTG93IiwiaW5IaWdoIiwib3V0TG93Iiwib3V0SGlnaCIsImZzY2FsZSIsImlhZGRoIiwieDAiLCJ4MSIsInkwIiwieTEiLCIkeDAiLCIkeDEiLCIkeTAiLCJpbXVsaCIsInUiLCIkdSIsIiR2IiwidTAiLCJ2MCIsInUxIiwidjEiLCJpc3ViaCIsIlNFRURFRF9SQU5ET00iLCJTRUVERURfUkFORE9NX0dFTkVSQVRPUiIsIlNFRURfVFlQRV9FUlJPUiIsIiRTZWVkZWRSYW5kb21HZW5lcmF0b3IiLCJTZWVkZWRSYW5kb21HZW5lcmF0b3IiLCJzZWVkIiwic2VlZGVkUFJORyIsInNpZ25iaXQiLCJ1bXVsaCIsIklOVkFMSURfTlVNQkVSX1JFUFJFU0VOVEFUSU9OIiwiSU5WQUxJRF9SQURJWCIsInZhbGlkIiwiZnJvbVN0cmluZyIsIm1hdGhOdW0iLCJPQkpFQ1RfSVRFUkFUT1IiLCJPYmplY3RJdGVyYXRvciIsIml0ZXJhdGVFbnRyaWVzIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlVmFsdWVzIiwiT0JTRVJWQUJMRSIsImNsZWFudXBTdWJzY3JpcHRpb24iLCJzdWJzY3JpcHRpb25TdGF0ZSIsImNsZWFudXAiLCJzdWJzY3JpcHRpb25DbG9zZWQiLCJvYnNlcnZlciIsInN1YnNjcmlwdGlvbiIsImNsb3NlZCIsInN1YnNjcmlwdGlvbk9ic2VydmVyIiwiU3Vic2NyaXB0aW9uIiwic3Vic2NyaWJlciIsIlN1YnNjcmlwdGlvbk9ic2VydmVyIiwidW5zdWJzY3JpYmUiLCJuZXh0TWV0aG9kIiwiZXJyb3JNZXRob2QiLCJjb21wbGV0ZSIsImNvbXBsZXRlTWV0aG9kIiwiJE9ic2VydmFibGUiLCJPYnNlcnZhYmxlIiwic3Vic2NyaWJlIiwib2JzZXJ2YWJsZU1ldGhvZCIsIm9ic2VydmFibGUiLCJnZXRPckNyZWF0ZU1ldGFkYXRhTWFwIiwidGFyZ2V0S2V5IiwidGFyZ2V0TWV0YWRhdGEiLCJrZXlNZXRhZGF0YSIsIm9yZGluYXJ5SGFzT3duTWV0YWRhdGEiLCJNZXRhZGF0YUtleSIsIm1ldGFkYXRhTWFwIiwib3JkaW5hcnlHZXRPd25NZXRhZGF0YSIsIm9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEiLCJNZXRhZGF0YVZhbHVlIiwib3JkaW5hcnlPd25NZXRhZGF0YUtleXMiLCJ0b01ldGFkYXRhS2V5IiwiZ2V0TWFwIiwidG9LZXkiLCJSZWZsZWN0TWV0YWRhdGFNb2R1bGUiLCJkZWZpbmVNZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsImRlbGV0ZU1ldGFkYXRhIiwib3JkaW5hcnlHZXRNZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiaXRlciIsIm9yZGluYXJ5TWV0YWRhdGFLZXlzIiwib0tleXMiLCJwS2V5cyIsImdldE1ldGFkYXRhS2V5cyIsImdldE93bk1ldGFkYXRhIiwiZ2V0T3duTWV0YWRhdGFLZXlzIiwib3JkaW5hcnlIYXNNZXRhZGF0YSIsImhhc01ldGFkYXRhIiwiaGFzT3duTWV0YWRhdGEiLCJkZWNvcmF0b3IiLCJhZGRlciIsImNvbGxlY3Rpb25BZGRBbGwiLCJhZGRBbGwiLCJkaWZmZXJlbmNlIiwibmV3U2V0IiwiZ2V0U2V0SXRlcmF0b3IiLCJpbnRlcnNlY3Rpb24iLCJoYXNDaGVjayIsImlzRGlzam9pbnRGcm9tIiwiaXNTdWJzZXRPZiIsIm90aGVyU2V0IiwiaXNTdXBlcnNldE9mIiwic2VwIiwic3ltbWV0cmljRGlmZmVyZW5jZSIsInVuaW9uIiwiU3RyaW5nTXVsdGlieXRlTW9kdWxlIiwiJFN0cmluZ0l0ZXJhdG9yIiwiU3RyaW5nSXRlcmF0b3IiLCJjb2RlUG9pbnQiLCJjb2RlUG9pbnRzIiwiYXJyYXlGcm9tQXN5bmMiLCJhcnJheVVuaXF1ZUJ5IiwiQ1NTUnVsZUxpc3QiLCJDU1NTdHlsZURlY2xhcmF0aW9uIiwiQ1NTVmFsdWVMaXN0IiwiQ2xpZW50UmVjdExpc3QiLCJET01SZWN0TGlzdCIsIkRPTVN0cmluZ0xpc3QiLCJET01Ub2tlbkxpc3QiLCJEYXRhVHJhbnNmZXJJdGVtTGlzdCIsIkZpbGVMaXN0IiwiSFRNTEFsbENvbGxlY3Rpb24iLCJIVE1MQ29sbGVjdGlvbiIsIkhUTUxGb3JtRWxlbWVudCIsIkhUTUxTZWxlY3RFbGVtZW50IiwiTWVkaWFMaXN0IiwiTWltZVR5cGVBcnJheSIsIk5hbWVkTm9kZU1hcCIsIk5vZGVMaXN0IiwiUGFpbnRSZXF1ZXN0TGlzdCIsIlBsdWdpbiIsIlBsdWdpbkFycmF5IiwiU1ZHTGVuZ3RoTGlzdCIsIlNWR051bWJlckxpc3QiLCJTVkdQYXRoU2VnTGlzdCIsIlNWR1BvaW50TGlzdCIsIlNWR1N0cmluZ0xpc3QiLCJTVkdUcmFuc2Zvcm1MaXN0IiwiU291cmNlQnVmZmVyTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiVGV4dFRyYWNrQ3VlTGlzdCIsIlRleHRUcmFja0xpc3QiLCJUb3VjaExpc3QiLCJjbGFzc0xpc3QiLCJET01Ub2tlbkxpc3RQcm90b3R5cGUiLCJET01JdGVyYWJsZXMiLCJoYW5kbGVQcm90b3R5cGUiLCJDb2xsZWN0aW9uUHJvdG90eXBlIiwiQ09MTEVDVElPTl9OQU1FIiwiQXJyYXlJdGVyYXRvck1ldGhvZHMiLCJBcnJheVZhbHVlcyIsIk1TSUUiLCJzY2hlZHVsZXIiLCJ0aW1lb3V0IiwiYm91bmRBcmdzIiwic2V0SW50ZXJ2YWwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJwYXRobmFtZSIsImhyZWYiLCJVUkxTZWFyY2hQYXJhbXMiLCJ1c2VybmFtZSIsImhhc2giLCJtYXhJbnQiLCJiYXNlIiwidE1pbiIsInRNYXgiLCJza2V3IiwiZGFtcCIsImluaXRpYWxCaWFzIiwiaW5pdGlhbE4iLCJkZWxpbWl0ZXIiLCJyZWdleE5vbkFTQ0lJIiwicmVnZXhTZXBhcmF0b3JzIiwiT1ZFUkZMT1dfRVJST1IiLCJiYXNlTWludXNUTWluIiwic3RyaW5nRnJvbUNoYXJDb2RlIiwidWNzMmRlY29kZSIsImV4dHJhIiwiZGlnaXRUb0Jhc2ljIiwiZGlnaXQiLCJhZGFwdCIsImRlbHRhIiwibnVtUG9pbnRzIiwiZmlyc3RUaW1lIiwiZW5jb2RlIiwiaW5wdXRMZW5ndGgiLCJiaWFzIiwiY3VycmVudFZhbHVlIiwiYmFzaWNMZW5ndGgiLCJoYW5kbGVkQ1BDb3VudCIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsInFNaW51c1QiLCJiYXNlTWludXNUIiwiZW5jb2RlZCIsImxhYmVscyIsImxhYmVsIiwiVVNFX05BVElWRV9VUkwiLCJuYXRpdmVGZXRjaCIsIk5hdGl2ZVJlcXVlc3QiLCJSZXF1ZXN0UHJvdG90eXBlIiwiSGVhZGVycyIsIlVSTF9TRUFSQ0hfUEFSQU1TIiwiVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IiLCJnZXRJbnRlcm5hbFBhcmFtc1N0YXRlIiwicGx1cyIsInNlcXVlbmNlcyIsInBlcmNlbnRTZXF1ZW5jZSIsInBlcmNlbnREZWNvZGUiLCJzZXF1ZW5jZSIsImRlY29kZVVSSUNvbXBvbmVudCIsImRlc2VyaWFsaXplIiwic2VyaWFsaXplIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicGFyc2VTZWFyY2hQYXJhbXMiLCJxdWVyeSIsInNoaWZ0IiwidXBkYXRlU2VhcmNoUGFyYW1zIiwidmFsaWRhdGVBcmd1bWVudHNMZW5ndGgiLCJwYXNzZWQiLCJyZXF1aXJlZCIsIlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IiLCJlbnRyeUl0ZXJhdG9yIiwiZW50cnlOZXh0IiwidXBkYXRlVVJMIiwiVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlIiwiYXBwZW5kIiwiZ2V0QWxsIiwiZm91bmQiLCJlbnRyaWVzSW5kZXgiLCJzbGljZUluZGV4Iiwid3JhcFJlcXVlc3RPcHRpb25zIiwiYm9keSIsImhlYWRlcnMiLCJmZXRjaCIsIlJlcXVlc3RDb25zdHJ1Y3RvciIsIlJlcXVlc3QiLCJnZXRTdGF0ZSIsImFycmF5RnJvbSIsInRvQVNDSUkiLCJVUkxTZWFyY2hQYXJhbXNNb2R1bGUiLCJOYXRpdmVVUkwiLCJnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlIiwiZ2V0SW50ZXJuYWxVUkxTdGF0ZSIsIklOVkFMSURfQVVUSE9SSVRZIiwiSU5WQUxJRF9TQ0hFTUUiLCJJTlZBTElEX0hPU1QiLCJJTlZBTElEX1BPUlQiLCJBTFBIQSIsIkFMUEhBTlVNRVJJQyIsIkRJR0lUIiwiSEVYX1NUQVJUIiwiT0NUIiwiREVDIiwiSEVYIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCIsIkZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQiLCJMRUFESU5HX0FORF9UUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFIiwiVEFCX0FORF9ORVdfTElORSIsIkVPRiIsInBhcnNlSG9zdCIsInBhcnNlSVB2NiIsImlzU3BlY2lhbCIsInBlcmNlbnRFbmNvZGUiLCJDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0IiwicGFyc2VJUHY0IiwicGFydHMiLCJwYXJ0c0xlbmd0aCIsIm51bWJlcnMiLCJwYXJ0IiwiaXB2NCIsInBvcCIsImFkZHJlc3MiLCJwaWVjZUluZGV4IiwiY29tcHJlc3MiLCJwb2ludGVyIiwibnVtYmVyc1NlZW4iLCJpcHY0UGllY2UiLCJzd2FwcyIsInN3YXAiLCJmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSIsImlwdjYiLCJtYXhJbmRleCIsImN1cnJTdGFydCIsImN1cnJMZW5ndGgiLCJzZXJpYWxpemVIb3N0IiwiaWdub3JlMCIsInVuc2hpZnQiLCJmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQiLCJwYXRoUGVyY2VudEVuY29kZVNldCIsInVzZXJpbmZvUGVyY2VudEVuY29kZVNldCIsInNwZWNpYWxTY2hlbWVzIiwiZnRwIiwiZmlsZSIsImh0dHAiLCJodHRwcyIsIndzIiwid3NzIiwic2NoZW1lIiwiaW5jbHVkZXNDcmVkZW50aWFscyIsInBhc3N3b3JkIiwiY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0IiwiY2Fubm90QmVBQmFzZVVSTCIsImlzV2luZG93c0RyaXZlTGV0dGVyIiwibm9ybWFsaXplZCIsInN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIiLCJzaG9ydGVuVVJMc1BhdGgiLCJwYXRoU2l6ZSIsImlzU2luZ2xlRG90Iiwic2VnbWVudCIsImlzRG91YmxlRG90IiwiU0NIRU1FX1NUQVJUIiwiU0NIRU1FIiwiTk9fU0NIRU1FIiwiU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFkiLCJQQVRIX09SX0FVVEhPUklUWSIsIlJFTEFUSVZFIiwiUkVMQVRJVkVfU0xBU0giLCJTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTIiwiU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVMiLCJBVVRIT1JJVFkiLCJIT1NUIiwiSE9TVE5BTUUiLCJQT1JUIiwiRklMRSIsIkZJTEVfU0xBU0giLCJGSUxFX0hPU1QiLCJQQVRIX1NUQVJUIiwiUEFUSCIsIkNBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEgiLCJRVUVSWSIsIkZSQUdNRU5UIiwicGFyc2VVUkwiLCJzdGF0ZU92ZXJyaWRlIiwic2VlbkF0Iiwic2VlbkJyYWNrZXQiLCJzZWVuUGFzc3dvcmRUb2tlbiIsImJ1ZmZlckNvZGVQb2ludHMiLCJmYWlsdXJlIiwiZnJhZ21lbnQiLCJlbmNvZGVkQ29kZVBvaW50cyIsIlVSTENvbnN0cnVjdG9yIiwidXJsU3RyaW5nIiwiYmFzZVN0YXRlIiwic2VhcmNoUGFyYW1zU3RhdGUiLCJzZXJpYWxpemVVUkwiLCJvcmlnaW4iLCJnZXRPcmlnaW4iLCJnZXRQcm90b2NvbCIsImdldFVzZXJuYW1lIiwiZ2V0UGFzc3dvcmQiLCJnZXRIb3N0IiwiaG9zdG5hbWUiLCJnZXRIb3N0bmFtZSIsImdldFBvcnQiLCJnZXRQYXRobmFtZSIsImdldFNlYXJjaCIsImdldFNlYXJjaFBhcmFtcyIsImdldEhhc2giLCJVUkxQcm90b3R5cGUiLCJhY2Nlc3NvckRlc2NyaXB0b3IiLCJuYXRpdmVDcmVhdGVPYmplY3RVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJuYXRpdmVSZXZva2VPYmplY3RVUkwiLCJyZXZva2VPYmplY3RVUkwiLCJibG9iIiwiaGFzU3ltYm9sIiwiZm9yIiwiUkVBQ1RfRUxFTUVOVF9UWVBFIiwiUkVBQ1RfUE9SVEFMX1RZUEUiLCJSRUFDVF9GUkFHTUVOVF9UWVBFIiwiUkVBQ1RfU1RSSUNUX01PREVfVFlQRSIsIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCJSRUFDVF9QUk9WSURFUl9UWVBFIiwiUkVBQ1RfQ09OVEVYVF9UWVBFIiwiUkVBQ1RfQVNZTkNfTU9ERV9UWVBFIiwiUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUiLCJSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfVFlQRSIsIlJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSIsIlJFQUNUX01FTU9fVFlQRSIsIlJFQUNUX0xBWllfVFlQRSIsIlJFQUNUX0JMT0NLX1RZUEUiLCJSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIiwiUkVBQ1RfUkVTUE9OREVSX1RZUEUiLCJSRUFDVF9TQ09QRV9UWVBFIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwiJCR0eXBlb2YiLCJ0eXBlT2YiLCIkJHR5cGVvZlR5cGUiLCJBc3luY01vZGUiLCJDb25jdXJyZW50TW9kZSIsIkNvbnRleHRDb25zdW1lciIsIkNvbnRleHRQcm92aWRlciIsIkVsZW1lbnQiLCJGb3J3YXJkUmVmIiwiRnJhZ21lbnQiLCJMYXp5IiwiTWVtbyIsIlBvcnRhbCIsIlByb2ZpbGVyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUiLCJpc0FzeW5jTW9kZSIsImlzQ29uY3VycmVudE1vZGUiLCJpc0NvbnRleHRDb25zdW1lciIsImlzQ29udGV4dFByb3ZpZGVyIiwiaXNFbGVtZW50IiwiaXNGb3J3YXJkUmVmIiwiaXNGcmFnbWVudCIsImlzTGF6eSIsImlzTWVtbyIsImlzUG9ydGFsIiwiaXNQcm9maWxlciIsImlzU3RyaWN0TW9kZSIsImlzU3VzcGVuc2UiLCJleHBvcnRzIiwicHJvcElzRW51bWVyYWJsZSIsInNob3VsZFVzZU5hdGl2ZSIsInRlc3QxIiwidGVzdDIiLCJvcmRlcjIiLCJ0ZXN0MyIsImxldHRlciIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwicHJpbnRXYXJuaW5nIiwibG9nZ2VkVHlwZUZhaWx1cmVzIiwidGV4dCIsImNoZWNrUHJvcFR5cGVzIiwidHlwZVNwZWNzIiwiY29tcG9uZW50TmFtZSIsImdldFN0YWNrIiwidHlwZVNwZWNOYW1lIiwiZXgiLCJzdGFjayIsInJlc2V0V2FybmluZ0NhY2hlIiwiUmVhY3RJcyIsImVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGwiLCJpc1ZhbGlkRWxlbWVudCIsInRocm93T25EaXJlY3RBY2Nlc3MiLCJJVEVSQVRPUl9TWU1CT0wiLCJGQVVYX0lURVJBVE9SX1NZTUJPTCIsImdldEl0ZXJhdG9yRm4iLCJtYXliZUl0ZXJhYmxlIiwiaXRlcmF0b3JGbiIsIkFOT05ZTU9VUyIsIlJlYWN0UHJvcFR5cGVzIiwiY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIiLCJib29sIiwiY3JlYXRlQW55VHlwZUNoZWNrZXIiLCJhcnJheU9mIiwiY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyIiwiY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyIiwiZWxlbWVudFR5cGUiLCJjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyIiwiaW5zdGFuY2VPZiIsImNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIiLCJjcmVhdGVOb2RlQ2hlY2tlciIsIm9iamVjdE9mIiwiY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlciIsIm9uZU9mIiwiY3JlYXRlRW51bVR5cGVDaGVja2VyIiwib25lT2ZUeXBlIiwiY3JlYXRlVW5pb25UeXBlQ2hlY2tlciIsInNoYXBlIiwiY3JlYXRlU2hhcGVUeXBlQ2hlY2tlciIsImV4YWN0IiwiY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlciIsIlByb3BUeXBlRXJyb3IiLCJjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlciIsInZhbGlkYXRlIiwibWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUiLCJtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCIsImNoZWNrVHlwZSIsImlzUmVxdWlyZWQiLCJwcm9wcyIsInByb3BOYW1lIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiY2FjaGVLZXkiLCJjaGFpbmVkQ2hlY2tUeXBlIiwiZXhwZWN0ZWRUeXBlIiwicHJvcFZhbHVlIiwicHJvcFR5cGUiLCJnZXRQcm9wVHlwZSIsInByZWNpc2VUeXBlIiwiZ2V0UHJlY2lzZVR5cGUiLCJ0eXBlQ2hlY2tlciIsImV4cGVjdGVkQ2xhc3MiLCJleHBlY3RlZENsYXNzTmFtZSIsImFjdHVhbENsYXNzTmFtZSIsImdldENsYXNzTmFtZSIsImV4cGVjdGVkVmFsdWVzIiwidmFsdWVzU3RyaW5nIiwiYXJyYXlPZlR5cGVDaGVja2VycyIsImNoZWNrZXIiLCJnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmciLCJpc05vZGUiLCJzaGFwZVR5cGVzIiwiYWxsS2V5cyIsIlByb3BUeXBlcyIsInBhcnNlIiwib3B0cyIsInByZXNlcnZlTnVtYmVycyIsImdldEtleVZhbHVlQ2h1bmtzIiwiaXNOdW1lcmljIiwiY2h1bmtzIiwiaGFzVW5jbG9zZWRVcmwiLCJjaHVuayIsIm5leHRTcGxpdCIsInN1YnN0cmluZyIsIlJfQk9PTEVBTiIsIlJfRk9DVVNBQkxFIiwiUl9DTElDS0FCTEUiLCJSX0lOVkFMSURfQ0hBUiIsImF0dHJGaXgiLCJwcm9wRml4IiwiYXR0ckhvb2tzIiwidGFiaW5kZXgiLCJhdHRyaWJ1dGVOb2RlIiwiZ2V0QXR0cmlidXRlTm9kZSIsInNwZWNpZmllZCIsIm5vZGVOYW1lIiwiYm9vbEhvb2siLCJlbGVtIiwiYXR0ck5vZGVIb29rIiwiY3NzVGV4dCIsImhpZGVmb2N1cyIsInJlYWRvbmx5IiwibWF4bGVuZ3RoIiwiY2VsbHNwYWNpbmciLCJjZWxscGFkZGluZyIsInJvd3NwYW4iLCJjb2xzcGFuIiwidXNlbWFwIiwiZnJhbWVib3JkZXIiLCJjb250ZW50ZWRpdGFibGUiLCJ1YSIsIm5hdmlnYXRvciIsImRvYyIsIm51bWJlcmlmeSIsImllVmVyc2lvbiIsImRvY3VtZW50TW9kZSIsIm1peCIsImVhY2giLCJhcnIiLCJsIiwiaWUiLCJyZXQiLCJub2RlVmFsdWUiLCJ0YWJJbmRleCIsImdldEF0dHJpYnV0ZSIsInBsYWNlaG9sZGVyIiwiaHJlZkZpeCIsImNoaWxkTm9kZXMiLCJhbGxUZXh0Iiwibm9kZVR5cGUiLCJvd25lckRvY3VtZW50Iiwic2V0QXR0cmlidXRlIiwiUkVfVFJJTSIsIlNQQUNFIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJjb250ZXh0IiwiY3JlYXRlQ29tbWVudCIsIm5vZGVzIiwibmVlZHNGaWx0ZXIiLCJjb21wYXJlTm9kZU9yZGVyIiwiZG9jdW1lbnRFbGVtZW50IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJiaXQiLCJ1dGlsIiwidW5pcXVlIiwiaGFzRHVwbGljYXRlIiwiYmFzZUhhc0R1cGxpY2F0ZSIsInNvcnRPcmRlciIsImdldFNpbXBsZUF0dHIiLCJjb250YWlucyIsInBhcmVudE5vZGUiLCJpc1RhZyIsImhhc1NpbmdsZUNsYXNzIiwiY2xzIiwiY2xhc3NOYW1lIiwicHJlZml4Iiwic3VmZml4IiwiaW5kIiwiYXR0ciIsImF0dHJOb3JtYWxpemVyIiwiYXR0ck5vZGUiLCJwYXJzZXIiLCJHcmFtbWFyQ29uc3QiLCJpbkFycmF5IiwiTGV4ZXIiLCJjZmciLCJydWxlcyIsInJlc2V0SW5wdXQiLCJzdGF0ZVN0YWNrIiwiSU5JVElBTCIsImZpcnN0TGluZSIsImxpbmVOdW1iZXIiLCJsYXN0TGluZSIsImZpcnN0Q29sdW1uIiwibGFzdENvbHVtbiIsImN1cnJlbnRTdGF0ZSIsIm1hcFN0YXRlIiwibnVtIiwiREVCVUdfQ09OVEVYVF9MSU1JVCIsInBhc3QiLCJtYXBTeW1ib2xGb3JDb2RlR2VuIiwic3ltYm9sTWFwIiwicnMiLCJyZXZlcnNlU3ltYm9sTWFwIiwicnVsZSIsImxpbmVzIiwiZ2V0Q3VycmVudFJ1bGVzIiwibWFwU3ltYm9sIiwiRU5EX1RBRyIsInRva2VuIiwiYWN0aW9uIiwibWF0Y2hlcyIsImxleCIsImxleGVyIiwieXkiLCJwdXNoU3RhdGUiLCJwb3BTdGF0ZSIsInVuRXNjYXBlIiwidW5Fc2NhcGVTdHIiLCJwcm9kdWN0aW9ucyIsIiQxIiwiJDMiLCJuZXh0Q29tYmluYXRvciIsInByZXZDb21iaW5hdG9yIiwiJDIiLCJvcmRlciIsImlkZW50IiwiJDQiLCJwYXJhbSIsInRhYmxlIiwiZmlsZW5hbWUiLCJnb3RvcyIsInRhYmxlQWN0aW9uIiwidmFsdWVTdGFjayIsInN5bWJvbEZvclN0YXRlIiwibWFwUmV2ZXJzZVN5bWJvbCIsInNob3dEZWJ1Z0luZm8iLCJUWVBFX0lOREVYIiwiU0hJRlRfVFlQRSIsIlRPX0lOREVYIiwiUkVEVUNFX1RZUEUiLCJwcm9kdWN0aW9uIiwiUFJPRFVDVElPTl9JTkRFWCIsInJlZHVjZWRTeW1ib2wiLCJyZWR1Y2VkQWN0aW9uIiwicmVkdWNlZFJocyIsInJocyIsIiQkIiwibmV3U3RhdGUiLCJBQ0NFUFRfVFlQRSIsIkVYUEFORE9fU0VMRUNUT1JfS0VZIiwiY2FjaGVzIiwiaXNDb250ZXh0WE1MIiwidXVpZCIsInN1Yk1hdGNoZXNDYWNoZSIsImdldEF0dHIiLCJhTlBsdXNCIiwidW5lc2NhcGVGbiIsImVzY2FwZWQiLCJoaWdoIiwibWF0Y2hFeHByIiwicHNldWRvRm5FeHByIiwiYWIiLCJnZXRBYiIsImNoaWxkIiwibWF0Y2hJbmRleEJ5QWIiLCJlbFR5cGUiLCJ0YWdOYW1lIiwibGFuZyIsImVsTGFuZyIsIm5vdCIsIm5lZ2F0aW9uQXJnIiwicHNldWRvSWRlbnRFeHByIiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJlbmFibGVkIiwiZGlzYWJsZWQiLCJjaGVja2VkIiwiYXR0cmlidXRlRXhwciIsImVsVmFsdWUiLCJyZWxhdGl2ZUV4cHIiLCJkaXIiLCJpbW1lZGlhdGUiLCJhdHRyaWIiLCJtYXRjaEZuIiwicHNldWRvIiwiZm5TdHIiLCJyZXNldFN0YXR1cyIsImRpcmVjdGlvbiIsImVxIiwiaXNYTUwiLCJzZWVkcyIsInNlbGVjdCIsInNpbmdsZU1hdGNoIiwibWF0Y2hTdWZmaXgiLCJtYXRjaFN1ZmZpeExlbiIsIm1hdGNoU3VmZml4SW5kZXgiLCJzaW5nbGVNYXRjaFN1ZmZpeCIsInNpbmdsZU1hdGNoU3VmZml4VHlwZSIsIm1hdGNoSW1tZWRpYXRlIiwic3RhcnRFbCIsInJlbGF0aXZlT3AiLCJzdGFydE1hdGNoIiwiZmluZEZpeGVkTWF0Y2hGcm9tSGVhZCIsImN1ciIsImdlbklkIiwic2VsZWN0b3JJZCIsIm1hdGNoU3ViIiwibWF0Y2hLZXkiLCJtYXRjaFN1YkludGVybmFsIiwibWF0Y2hJbW1lZGlhdGVSZXQiLCJzZWxlY3RvciIsImdyb3VwSW5kZXgiLCJncm91cExlbiIsImNvbnRleHREb2N1bWVudCIsInN1ZmZpeEluZGV4Iiwic3VmZml4TGVuIiwic2VlZHNJbmRleCIsIm15U2VlZHMiLCJzZWVkc0xlbiIsInNpbmdsZVN1ZmZpeCIsImRvZXNOb3RIYXNCeUlkIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0SW5Eb20iLCJ0bXAiLCJ0bXBzIiwidG1wTGVuIiwidG1wSSIsIm1hdGNoSGVhZCIsImh5cGhlbkV4cHJlc3Npb24iLCJ1cHBlckNhc2VGaXJzdE1hdGNoIiwiY2FtZWxDYXNlIiwiY2FtZWxDYXNlZCIsImlzU3RyaW5nIiwiaXNVbmRlZmluZWQiLCJkZXN0IiwiZGVzdGluYXRpb24iLCJzdHlsZUNhbWVsQ2FzZSIsImNhbWVsIiwiUmVhY3QiLCJzdHlsZUF0dHIiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZXZlbnRMaXN0ZW5lcnMiLCJyZWYiLCJjb21wb25lbnQiLCJzZXRQcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInJlbW92ZVByb3BlcnR5IiwiRUxFTUVOVF9OT0RFIiwiRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEIiwiRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIiwiRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HIiwiRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMiLCJET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkiLCJldmVudE5hbWVNYXBwaW5ncyIsInNraXBOYW1lVHJhbnNmb3JtYXRpb25FeHByZXNzaW9ucyIsImF0dHJpYnV0ZU5hbWVNYXBwaW5ncyIsImF0dHJpYnV0ZVRvUHJvcE5hbWUiLCJza2lwVHJhbnNmb3JtTWF0Y2hlcyIsImV4cHIiLCJzdHlsZXMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJldmVudFRvUHJvcE5hbWUiLCJwcm9wIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxpc3RlbmVycyIsImluc2VydEJlZm9yZSIsImJlZm9yZSIsInF1ZXJ5U2VsZWN0b3IiLCJjaGlsZHJlbiIsImNoaWxkTWF0Y2hlcyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNsb25lTm9kZSIsImRlZXAiLCJjaGlsZEVsIiwiY2xvbmVFbGVtZW50IiwidG9SZWFjdCIsIm9yaWdpbmFsRWxlbWVudCIsInVuaXF1ZUtleSIsInN5bnRoZXRpY0V2ZW50IiwibmF0aXZlRXZlbnQiLCJvdGhlciIsImdldEZpcnN0Tm9kZUJ5T3JkZXIiLCJub2RlT25lIiwibm9kZVR3byIsImlzQW5jZXN0b3IiLCJlaXRoZXJDb250YWlucyIsImdldFJvb3ROb2RlIiwicmVmZXJlbmNlUm9vdCIsIm90aGVyUm9vdCIsIm5leHRTaWJsaW5nIiwic2libGluZ3MiLCJtZSIsInByZXZpb3VzU2libGluZyIsImlubmVySFRNTCIsInRleHRDb250ZW50IiwibmFtZXNwYWNlTWV0aG9kcyIsIldpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJfYXNzaWduIiwiZW1wdHlPYmplY3QiLCJ2YWxpZGF0ZUZvcm1hdCIsImZvcm1hdCIsIl9pbnZhcmlhbnQiLCJkIiwiYXJnSW5kZXgiLCJmcmFtZXNUb1BvcCIsIndhcm5pbmciLCJfbGVuIiwiX2tleSIsIl9sZW4yIiwiX2tleTIiLCJNSVhJTlNfS0VZIiwiaWRlbnRpdHkiLCJSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyIsImNoaWxkQ29udGV4dCIsImZhY3RvcnkiLCJSZWFjdENvbXBvbmVudCIsIlJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIiwiaW5qZWN0ZWRNaXhpbnMiLCJSZWFjdENsYXNzSW50ZXJmYWNlIiwibWl4aW5zIiwic3RhdGljcyIsInByb3BUeXBlcyIsImNvbnRleHRUeXBlcyIsImNoaWxkQ29udGV4dFR5cGVzIiwiZ2V0RGVmYXVsdFByb3BzIiwiZ2V0SW5pdGlhbFN0YXRlIiwiZ2V0Q2hpbGRDb250ZXh0IiwicmVuZGVyIiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwiY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCIsIlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUiLCJ1cGRhdGVDb21wb25lbnQiLCJSZWFjdENsYXNzU3RhdGljSW50ZXJmYWNlIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiUkVTRVJWRURfU1BFQ19LRVlTIiwiZGlzcGxheU5hbWUiLCJtaXhTcGVjSW50b0NvbXBvbmVudCIsInZhbGlkYXRlVHlwZURlZiIsImNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uIiwibWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQiLCJhdXRvYmluZCIsInR5cGVEZWYiLCJ2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlIiwiaXNBbHJlYWR5RGVmaW5lZCIsInNwZWNQb2xpY3kiLCJSZWFjdENsYXNzTWl4aW4iLCJzcGVjIiwidHlwZW9mU3BlYyIsImlzTWl4aW5WYWxpZCIsImF1dG9CaW5kUGFpcnMiLCJfX3JlYWN0QXV0b0JpbmRQYWlycyIsImlzUmVhY3RDbGFzc01ldGhvZCIsInNob3VsZEF1dG9CaW5kIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwiaXNSZXNlcnZlZCIsIm1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMiLCJ0d28iLCJtZXJnZWRSZXN1bHQiLCJjaGFpbmVkRnVuY3Rpb24iLCJiaW5kQXV0b0JpbmRNZXRob2QiLCJib3VuZE1ldGhvZCIsIl9fcmVhY3RCb3VuZENvbnRleHQiLCJfX3JlYWN0Qm91bmRNZXRob2QiLCJfX3JlYWN0Qm91bmRBcmd1bWVudHMiLCJfYmluZCIsIm5ld1RoaXMiLCJyZWJvdW5kTWV0aG9kIiwiYmluZEF1dG9CaW5kTWV0aG9kcyIsInBhaXJzIiwiYXV0b0JpbmRLZXkiLCJJc01vdW50ZWRQcmVNaXhpbiIsIl9faXNNb3VudGVkIiwiSXNNb3VudGVkUG9zdE1peGluIiwicmVwbGFjZVN0YXRlIiwidXBkYXRlciIsImVucXVldWVSZXBsYWNlU3RhdGUiLCJpc01vdW50ZWQiLCJfX2RpZFdhcm5Jc01vdW50ZWQiLCJSZWFjdENsYXNzQ29tcG9uZW50IiwiY3JlYXRlQ2xhc3MiLCJyZWZzIiwiaW5pdGlhbFN0YXRlIiwiX2lzTW9ja0Z1bmN0aW9uIiwiZGVmYXVsdFByb3BzIiwiaXNSZWFjdENsYXNzQXBwcm92ZWQiLCJjb21wb25lbnRTaG91bGRVcGRhdGUiLCJjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMiLCJtZXRob2ROYW1lIiwiQ29tcG9uZW50IiwicmVhY3RJcyIsIlJFQUNUX1NUQVRJQ1MiLCJjb250ZXh0VHlwZSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsIktOT1dOX1NUQVRJQ1MiLCJjYWxsZXIiLCJhcml0eSIsIkZPUldBUkRfUkVGX1NUQVRJQ1MiLCJNRU1PX1NUQVRJQ1MiLCJjb21wYXJlIiwiVFlQRV9TVEFUSUNTIiwiZ2V0U3RhdGljcyIsIm9iamVjdFByb3RvdHlwZSIsImhvaXN0Tm9uUmVhY3RTdGF0aWNzIiwidGFyZ2V0Q29tcG9uZW50Iiwic291cmNlQ29tcG9uZW50IiwiYmxhY2tsaXN0IiwiaW5oZXJpdGVkQ29tcG9uZW50IiwidGFyZ2V0U3RhdGljcyIsInNvdXJjZVN0YXRpY3MiLCJjcmVhdGVSZWFjdENsYXNzIiwid2l0aEZhdXhET01GYWN0b3J5Iiwid2l0aEZhdXhET00iLCJXcmFwcGVkQ29tcG9uZW50IiwiV2l0aEZhdXhET00iLCJjb25uZWN0ZWRGYXV4RE9NIiwiYW5pbWF0ZUZhdXhET01VbnRpbCIsInN0b3BBbmltYXRpbmdGYXV4RE9NIiwic3RvcERyYXdGYXV4RE9NIiwiY29ubmVjdEZhdXhET00iLCJkaXNjYXJkTm9kZSIsImRyYXdGYXV4RE9NVGltZW91dCIsImRyYXdGYXV4RE9NIiwidmlydHVhbERPTSIsInNldFN0YXRlIiwiYW5pbWF0ZUZhdXhET00iLCJkdXJhdGlvbiIsImZhdXhET01BbmltYXRpb25JbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJpc0FuaW1hdGluZ0ZhdXhET00iLCJnZXREaXNwbGF5TmFtZSIsIlJlYWN0RmF1eERPTSIsImRlZmF1bHRWaWV3IiwiY3JlYXRlRWxlbWVudE5TIiwibm9vcCIsImRpc3BhdGNoIiwicGFyc2VUeXBlbmFtZXMiLCJ0eXBlbmFtZXMiLCJ0eXBlcyIsIm9uIiwidHlwZW5hbWUiLCJjb3B5IiwiY2xvdWRSYWRpYW5zIiwiY3ciLCJjbG91ZFRleHQiLCJmb250IiwiY2xvdWRGb250IiwiZm9udFNpemUiLCJjbG91ZEZvbnRTaXplIiwiZm9udFN0eWxlIiwiY2xvdWRGb250Tm9ybWFsIiwiZm9udFdlaWdodCIsInJvdGF0ZSIsImNsb3VkUm90YXRlIiwicGFkZGluZyIsImNsb3VkUGFkZGluZyIsInNwaXJhbCIsImFyY2hpbWVkZWFuU3BpcmFsIiwid29yZHMiLCJ0aW1lSW50ZXJ2YWwiLCJ0aW1lciIsImNsb3VkIiwiY2FudmFzIiwiY2xvdWRDYW52YXMiLCJmdW5jdG9yIiwiY29udGV4dEFuZFJhdGlvIiwiZ2V0Q29udGV4dCIsImJvYXJkIiwiemVyb0FycmF5IiwiYm91bmRzIiwidGFncyIsIndlaWdodCIsImNsb3VkU3ByaXRlIiwiaGFzVGV4dCIsInBsYWNlIiwiY2xvdWRCb3VuZHMiLCJ3aWR0aCIsImhlaWdodCIsInJhdGlvIiwiZ2V0SW1hZ2VEYXRhIiwiZmlsbFN0eWxlIiwic3Ryb2tlU3R5bGUiLCJ0ZXh0QWxpZ24iLCJzdGFydFgiLCJzdGFydFkiLCJtYXhEZWx0YSIsImR0IiwiZHhkeSIsImR4IiwiZHkiLCJjbG91ZENvbGxpZGUiLCJjb2xsaWRlUmVjdHMiLCJzcHJpdGUiLCJ3Iiwic3ciLCJseCIsInN4IiwibXN4IiwiaCIsInNwaXJhbHMiLCJkaSIsImNsZWFyUmVjdCIsIm1heGgiLCJzYXZlIiwibWVhc3VyZVRleHQiLCJzciIsInNpbiIsImNyIiwiY29zIiwid2NyIiwid3NyIiwiaGNyIiwiaHNyIiwidHJhbnNsYXRlIiwiZmlsbFRleHQiLCJsaW5lV2lkdGgiLCJzdHJva2VUZXh0IiwicmVzdG9yZSIsInhvZmYiLCJ5b2ZmIiwicGl4ZWxzIiwidzMyIiwic2VlbiIsInNlZW5Sb3ciLCJiMCIsImIxIiwicmVjdGFuZ3VsYXJTcGlyYWwiLCJhcmNoaW1lZGVhbiIsInJlY3Rhbmd1bGFyIiwiaGFzRWxlbWVudFR5cGUiLCJoYXNNYXAiLCJoYXNTZXQiLCJoYXNBcnJheUJ1ZmZlciIsImVxdWFsIiwiaXNFcXVhbCIsIndhcm4iLCJ4aHRtbCIsInN2ZyIsInhsaW5rIiwieG1sIiwieG1sbnMiLCJuYW1lc3BhY2VzIiwibG9jYWwiLCJjcmVhdG9ySW5oZXJpdCIsInVyaSIsIm5hbWVzcGFjZVVSSSIsImNyZWF0b3JGaXhlZCIsImZ1bGxuYW1lIiwibm9uZSIsIl9ncm91cHMiLCJzdWJncm91cHMiLCJzdWJncm91cCIsInN1Ym5vZGUiLCJfX2RhdGFfXyIsIlNlbGVjdGlvbiIsIl9wYXJlbnRzIiwiYXJyYXlBbGwiLCJzZWxlY3RvckFsbCIsInBhcmVudHMiLCJjaGlsZE1hdGNoZXIiLCJjaGlsZEZpbmQiLCJjaGlsZEZpcnN0IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJjaGlsZHJlbkZpbHRlciIsInNlbGVjdEFsbCIsIl9lbnRlciIsInNwYXJzZSIsIkVudGVyTm9kZSIsImRhdHVtIiwiX25leHQiLCJfcGFyZW50IiwiYmluZEluZGV4IiwiZ3JvdXBMZW5ndGgiLCJkYXRhTGVuZ3RoIiwiYmluZEtleSIsIm5vZGVCeUtleVZhbHVlIiwia2V5VmFsdWVzIiwia2V5VmFsdWUiLCJkZWxldGUiLCJjb25zdGFudCIsImVudGVyR3JvdXAiLCJ1cGRhdGVHcm91cCIsImV4aXRHcm91cCIsImkwIiwiaTEiLCJfZXhpdCIsIm9uZW50ZXIiLCJvbnVwZGF0ZSIsIm9uZXhpdCIsInJlbW92ZSIsInNlbGVjdGlvbiIsImdyb3VwczAiLCJncm91cHMxIiwibTAiLCJtMSIsIm1lcmdlcyIsImdyb3VwMCIsImdyb3VwMSIsImFzY2VuZGluZyIsImNvbXBhcmVOb2RlIiwic29ydGdyb3VwcyIsInNvcnRncm91cCIsImF0dHJSZW1vdmUiLCJhdHRyUmVtb3ZlTlMiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsImF0dHJDb25zdGFudCIsImF0dHJDb25zdGFudE5TIiwic2V0QXR0cmlidXRlTlMiLCJhdHRyRnVuY3Rpb24iLCJhdHRyRnVuY3Rpb25OUyIsImdldEF0dHJpYnV0ZU5TIiwic3R5bGVSZW1vdmUiLCJzdHlsZUNvbnN0YW50IiwicHJpb3JpdHkiLCJzdHlsZUZ1bmN0aW9uIiwic3R5bGVWYWx1ZSIsInByb3BlcnR5UmVtb3ZlIiwicHJvcGVydHlDb25zdGFudCIsInByb3BlcnR5RnVuY3Rpb24iLCJjbGFzc0FycmF5IiwiQ2xhc3NMaXN0IiwiX25vZGUiLCJfbmFtZXMiLCJjbGFzc2VkQWRkIiwiY2xhc3NlZFJlbW92ZSIsImNsYXNzZWRUcnVlIiwiY2xhc3NlZEZhbHNlIiwiY2xhc3NlZEZ1bmN0aW9uIiwidGV4dFJlbW92ZSIsInRleHRDb25zdGFudCIsInRleHRGdW5jdGlvbiIsImh0bWxSZW1vdmUiLCJodG1sQ29uc3RhbnQiLCJodG1sRnVuY3Rpb24iLCJyYWlzZSIsImZpcnN0Q2hpbGQiLCJjcmVhdG9yIiwiY29uc3RhbnROdWxsIiwic2VsZWN0aW9uX2Nsb25lU2hhbGxvdyIsImNsb25lIiwic2VsZWN0aW9uX2Nsb25lRGVlcCIsImNvbnRleHRMaXN0ZW5lciIsIm9uUmVtb3ZlIiwiX19vbiIsIm8iLCJvbkFkZCIsIkN1c3RvbUV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJkaXNwYXRjaENvbnN0YW50IiwiZGlzcGF0Y2hGdW5jdGlvbiIsInNlbGVjdGlvbl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fc2VsZWN0Iiwic2VsZWN0aW9uX3NlbGVjdEFsbCIsInNlbGVjdENoaWxkIiwic2VsZWN0aW9uX3NlbGVjdENoaWxkIiwic2VsZWN0Q2hpbGRyZW4iLCJzZWxlY3Rpb25fc2VsZWN0Q2hpbGRyZW4iLCJzZWxlY3Rpb25fZmlsdGVyIiwic2VsZWN0aW9uX2RhdGEiLCJzZWxlY3Rpb25fZW50ZXIiLCJzZWxlY3Rpb25fZXhpdCIsInNlbGVjdGlvbl9qb2luIiwic2VsZWN0aW9uX21lcmdlIiwic2VsZWN0aW9uX29yZGVyIiwic2VsZWN0aW9uX3NvcnQiLCJzZWxlY3Rpb25fY2FsbCIsInNlbGVjdGlvbl9ub2RlcyIsInNlbGVjdGlvbl9ub2RlIiwic2VsZWN0aW9uX3NpemUiLCJzZWxlY3Rpb25fZW1wdHkiLCJzZWxlY3Rpb25fZWFjaCIsInNlbGVjdGlvbl9hdHRyIiwic2VsZWN0aW9uX3N0eWxlIiwic2VsZWN0aW9uX3Byb3BlcnR5IiwiY2xhc3NlZCIsInNlbGVjdGlvbl9jbGFzc2VkIiwic2VsZWN0aW9uX3RleHQiLCJzZWxlY3Rpb25faHRtbCIsInNlbGVjdGlvbl9yYWlzZSIsInNlbGVjdGlvbl9sb3dlciIsInNlbGVjdGlvbl9hcHBlbmQiLCJzZWxlY3Rpb25faW5zZXJ0Iiwic2VsZWN0aW9uX3JlbW92ZSIsInNlbGVjdGlvbl9jbG9uZSIsInNlbGVjdGlvbl9kYXR1bSIsInNlbGVjdGlvbl9vbiIsInNlbGVjdGlvbl9kaXNwYXRjaCIsInNlbGVjdGlvbl9pdGVyYXRvciIsImluaXRSYW5nZSIsImltcGxpY2l0Iiwib3JkaW5hbCIsInVua25vd24iLCJzcGVjaWZpZXIiLCJjb2xvcnMiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsImFycjIiLCJfaSIsIl9hcnIiLCJfbiIsIl9kIiwiX3MiLCJfZSIsImRlZmF1bHRTY2FsZU9yZGluYWwiLCJzY2FsZU9yZGluYWwiLCJzY2hlbWVDYXRlZ29yeTEwIiwiV29yZENsb3VkIiwiX3JlZiIsIl9yZWYkd2lkdGgiLCJfcmVmJGhlaWdodCIsIl9yZWYkZm9udCIsIl9yZWYkZm9udFN0eWxlIiwiX3JlZiRmb250V2VpZ2h0IiwiX3JlZiRmb250U2l6ZSIsIl9yZWYkcm90YXRlIiwiX3JlZiRzcGlyYWwiLCJfcmVmJHBhZGRpbmciLCJfcmVmJHJhbmRvbSIsIl9yZWYkZmlsbCIsIm9uV29yZENsaWNrIiwib25Xb3JkTW91c2VPdmVyIiwib25Xb3JkTW91c2VPdXQiLCJlbGVtZW50UmVmIiwidXNlUmVmIiwiY3VycmVudCIsIlJlYWN0RmF1eERvbSIsImxheW91dCIsIl9sYXlvdXQkc2l6ZSIsIl9sYXlvdXQkc2l6ZTIiLCJ0ZXh0cyIsIl9wdCIsImlzRGVlcEVxdWFsIiwiV29yZENsb3VkV2lkZ2V0Q29tcG9uZW50IiwiaW5wdXREYXRhIiwiZm9udFNpemVNYXBwZXIiLCJ3b3JkIiwib25DbGlja0hhbmRsZSIsIm9uQ2xpY2tBY3Rpb24iLCJjYW5FeGVjdXRlIiwiaXNFeGVjdXRpbmciLCJjaG9zZW5Xb3JkIiwic2V0VmFsdWUiLCJleGVjdXRlIiwiV29yZENsb3VkV2lkZ2V0IiwibmV4dFByb3BzIiwiZGF0YVNvdXJjZSIsImRhdGFUb1JlbmRlciIsInRleHRBdHRyaWIiLCJpbnRBdHRyaWIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsS0FBSyxHQUFHLFVBQVVDLEVBQVYsRUFBYztBQUN4QixTQUFPQSxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsSUFBSCxJQUFXQSxJQUFqQixJQUF5QkQsRUFBaEM7QUFDRCxDQUZEOzs7SUFLQUUsUUFBQTtBQUVFSCxLQUFLLENBQUMsT0FBT0ksVUFBUCxJQUFxQixRQUFyQixJQUFpQ0EsVUFBbEMsQ0FBTCxJQUNBSixLQUFLLENBQUMsT0FBT0ssTUFBUCxJQUFpQixRQUFqQixJQUE2QkEsTUFBOUIsQ0FETDtBQUdBTCxLQUFLLENBQUMsT0FBT00sSUFBUCxJQUFlLFFBQWYsSUFBMkJBLElBQTVCLENBSEwsSUFJQU4sS0FBSyxDQUFDLE9BQU9PLGNBQVAsSUFBaUIsUUFBakIsSUFBNkJBLGNBQTlCLENBSkw7QUFNQyxZQUFZO0FBQUUsU0FBTyxJQUFQO0FBQWMsQ0FBN0IsRUFOQSxJQU1vQ0MsUUFBUSxDQUFDLGFBQUQsQ0FBUixFQVJ0Qzs7OztJQ0xBTCxRQUFBLEdBQWlCLFVBQVVNLElBQVYsRUFBZ0I7QUFDL0IsTUFBSTtBQUNGLFdBQU8sQ0FBQyxDQUFDQSxJQUFJLEVBQWI7QUFDRCxHQUZELENBRUUsT0FBT0MsS0FBUCxFQUFjO0FBQ2QsV0FBTyxJQUFQO0FBQ0Q7QUFDRixDQU5EOztBQ0FBLElBQUlDLFFBQUssR0FBR0MsUUFBWjs7O0lBR0FULFdBQUEsR0FBaUIsQ0FBQ1EsUUFBSyxDQUFDLFlBQVk7QUFDbEM7QUFDQSxTQUFPRSxNQUFNLENBQUNDLGNBQVAsQ0FBc0IsRUFBdEIsRUFBMEIsQ0FBMUIsRUFBNkI7QUFBRUMsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFBRSxhQUFPLENBQVA7QUFBVztBQUFoQyxHQUE3QixFQUFpRSxDQUFqRSxLQUF1RSxDQUE5RTtBQUNELENBSHNCLENBQXZCOzs7O0FDRkEsSUFBSUMsdUJBQXFCLEdBQUcsR0FBR0Msb0JBQS9COztBQUVBLElBQUlDLDBCQUF3QixHQUFHTCxNQUFNLENBQUNLLHdCQUF0Qzs7QUFHQSxJQUFJQyxXQUFXLEdBQUdELDBCQUF3QixJQUFJLENBQUNGLHVCQUFxQixDQUFDSSxJQUF0QixDQUEyQjtBQUFFLEtBQUc7QUFBTCxDQUEzQixFQUFxQyxDQUFyQyxDQUEvQztBQUdBOzs0QkFDQSxHQUFZRCxXQUFXLEdBQUcsU0FBU0Ysb0JBQVQsQ0FBOEJJLENBQTlCLEVBQWlDO0FBQ3pELE1BQUlDLFVBQVUsR0FBR0osMEJBQXdCLENBQUMsSUFBRCxFQUFPRyxDQUFQLENBQXpDO0FBQ0EsU0FBTyxDQUFDLENBQUNDLFVBQUYsSUFBZ0JBLFVBQVUsQ0FBQ0MsVUFBbEM7QUFDRCxDQUhzQixHQUduQlA7O0lDYkpiLDBCQUFBLEdBQWlCLFVBQVVxQixNQUFWLEVBQWtCQyxLQUFsQixFQUF5QjtBQUN4QyxTQUFPO0FBQ0xGLElBQUFBLFVBQVUsRUFBRSxFQUFFQyxNQUFNLEdBQUcsQ0FBWCxDQURQO0FBRUxFLElBQUFBLFlBQVksRUFBRSxFQUFFRixNQUFNLEdBQUcsQ0FBWCxDQUZUO0FBR0xHLElBQUFBLFFBQVEsRUFBRSxFQUFFSCxNQUFNLEdBQUcsQ0FBWCxDQUhMO0FBSUxDLElBQUFBLEtBQUssRUFBRUE7QUFKRixHQUFQO0FBTUQsQ0FQRDs7QUNBQSxJQUFJRyxVQUFRLEdBQUcsR0FBR0EsUUFBbEI7O0lBRUF6QixZQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYztBQUM3QixTQUFPMkIsVUFBUSxDQUFDUixJQUFULENBQWNuQixFQUFkLEVBQWtCNEIsS0FBbEIsQ0FBd0IsQ0FBeEIsRUFBMkIsQ0FBQyxDQUE1QixDQUFQO0FBQ0QsQ0FGRDs7QUNGQSxJQUFJbEIsUUFBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlrQixTQUFPLEdBQUdsQixZQUFkOztBQUVBLElBQUltQixLQUFLLEdBQUcsR0FBR0EsS0FBZjs7SUFHQTVCLGFBQUEsR0FBaUJRLFFBQUssQ0FBQyxZQUFZO0FBQ2pDO0FBQ0E7QUFDQSxTQUFPLENBQUNFLE1BQU0sQ0FBQyxHQUFELENBQU4sQ0FBWUksb0JBQVosQ0FBaUMsQ0FBakMsQ0FBUjtBQUNELENBSnFCLENBQUwsR0FJWixVQUFVaEIsRUFBVixFQUFjO0FBQ2pCLFNBQU82QixTQUFPLENBQUM3QixFQUFELENBQVAsSUFBZSxRQUFmLEdBQTBCOEIsS0FBSyxDQUFDWCxJQUFOLENBQVduQixFQUFYLEVBQWUsRUFBZixDQUExQixHQUErQ1ksTUFBTSxDQUFDWixFQUFELENBQTVEO0FBQ0QsQ0FOZ0IsR0FNYlksTUFOSjs7QUNOQTtBQUNBO0lBQ0FWLHdCQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYztBQUM3QixNQUFJQSxFQUFFLElBQUkrQixTQUFWLEVBQXFCLE1BQU1DLFNBQVMsQ0FBQywwQkFBMEJoQyxFQUEzQixDQUFmO0FBQ3JCLFNBQU9BLEVBQVA7QUFDRCxDQUhEOztBQ0ZBO0FBQ0EsSUFBSWlDLGVBQWEsR0FBR3RCLGFBQXBCOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7SUFFQVQsaUJBQUEsR0FBaUIsVUFBVUYsRUFBVixFQUFjO0FBQzdCLFNBQU9pQyxlQUFhLENBQUNDLHdCQUFzQixDQUFDbEMsRUFBRCxDQUF2QixDQUFwQjtBQUNELENBRkQ7O0FDSkE7QUFDQTtJQUNBRSxZQUFBLEdBQWlCLFVBQVVpQyxRQUFWLEVBQW9CO0FBQ25DLFNBQU8sT0FBT0EsUUFBUCxLQUFvQixVQUEzQjtBQUNELENBRkQ7O0FDRkEsSUFBSUMsWUFBVSxHQUFHekIsWUFBakI7O0lBRUFULFVBQUEsR0FBaUIsVUFBVUYsRUFBVixFQUFjO0FBQzdCLFNBQU8sT0FBT0EsRUFBUCxLQUFjLFFBQWQsR0FBeUJBLEVBQUUsS0FBSyxJQUFoQyxHQUF1Q29DLFlBQVUsQ0FBQ3BDLEVBQUQsQ0FBeEQ7QUFDRCxDQUZEOztBQ0ZBLElBQUlNLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBRUEsSUFBSTBCLFNBQVMsR0FBRyxVQUFVRixRQUFWLEVBQW9CO0FBQ2xDLFNBQU9DLFlBQVUsQ0FBQ0QsUUFBRCxDQUFWLEdBQXVCQSxRQUF2QixHQUFrQ0osU0FBekM7QUFDRCxDQUZEOztJQUlBN0IsWUFBQSxHQUFpQixVQUFVb0MsU0FBVixFQUFxQkMsTUFBckIsRUFBNkI7QUFDNUMsU0FBT0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCSixTQUFTLENBQUMvQixRQUFNLENBQUNnQyxTQUFELENBQVAsQ0FBaEMsR0FBc0RoQyxRQUFNLENBQUNnQyxTQUFELENBQU4sSUFBcUJoQyxRQUFNLENBQUNnQyxTQUFELENBQU4sQ0FBa0JDLE1BQWxCLENBQWxGO0FBQ0QsQ0FGRDs7QUNQQSxJQUFJRyxZQUFVLEdBQUcvQixZQUFqQjs7SUFFQVQsZUFBQSxHQUFpQndDLFlBQVUsQ0FBQyxXQUFELEVBQWMsV0FBZCxDQUFWLElBQXdDLEVBQXpEOztBQ0ZBLElBQUlwQyxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSWdDLFdBQVMsR0FBR2hDLGVBQWhCOztBQUVBLElBQUlpQyxTQUFPLEdBQUd0QyxRQUFNLENBQUNzQyxPQUFyQjtBQUNBLElBQUlDLElBQUksR0FBR3ZDLFFBQU0sQ0FBQ3VDLElBQWxCO0FBQ0EsSUFBSUMsUUFBUSxHQUFHRixTQUFPLElBQUlBLFNBQU8sQ0FBQ0UsUUFBbkIsSUFBK0JELElBQUksSUFBSUEsSUFBSSxDQUFDRSxPQUEzRDtBQUNBLElBQUlDLEVBQUUsR0FBR0YsUUFBUSxJQUFJQSxRQUFRLENBQUNFLEVBQTlCO0FBQ0EsSUFBSUMsS0FBSixFQUFXRixPQUFYOztBQUVBLElBQUlDLEVBQUosRUFBUTtBQUNOQyxFQUFBQSxLQUFLLEdBQUdELEVBQUUsQ0FBQ2xCLEtBQUgsQ0FBUyxHQUFULENBQVI7QUFDQWlCLEVBQUFBLE9BQU8sR0FBR0UsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLENBQVgsR0FBZSxDQUFmLEdBQW1CQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVdBLEtBQUssQ0FBQyxDQUFELENBQTdDO0FBQ0QsQ0FIRCxNQUdPLElBQUlOLFdBQUosRUFBZTtBQUNwQk0sRUFBQUEsS0FBSyxHQUFHTixXQUFTLENBQUNNLEtBQVYsQ0FBZ0IsYUFBaEIsQ0FBUjs7QUFDQSxNQUFJLENBQUNBLEtBQUQsSUFBVUEsS0FBSyxDQUFDLENBQUQsQ0FBTCxJQUFZLEVBQTFCLEVBQThCO0FBQzVCQSxJQUFBQSxLQUFLLEdBQUdOLFdBQVMsQ0FBQ00sS0FBVixDQUFnQixlQUFoQixDQUFSO0FBQ0EsUUFBSUEsS0FBSixFQUFXRixPQUFPLEdBQUdFLEtBQUssQ0FBQyxDQUFELENBQWY7QUFDWjtBQUNGOztJQUVEL0MsZUFBQSxHQUFpQjZDLE9BQU8sSUFBSSxDQUFDQSxPQUE3Qjs7OztBQ25CQSxJQUFJRyxZQUFVLEdBQUd2QyxlQUFqQjs7QUFDQSxJQUFJRCxRQUFLLEdBQUdDLFFBQVo7OztJQUdBVCxjQUFBLEdBQWlCLENBQUMsQ0FBQ1UsTUFBTSxDQUFDdUMscUJBQVQsSUFBa0MsQ0FBQ3pDLFFBQUssQ0FBQyxZQUFZO0FBQ3BFLE1BQUkwQyxNQUFNLEdBQUdDLE1BQU0sRUFBbkIsQ0FEb0U7QUFHcEU7O0FBQ0EsU0FBTyxDQUFDQyxNQUFNLENBQUNGLE1BQUQsQ0FBUCxJQUFtQixFQUFFeEMsTUFBTSxDQUFDd0MsTUFBRCxDQUFOLFlBQTBCQyxNQUE1QixDQUFuQjtBQUVMLEdBQUNBLE1BQU0sQ0FBQ0UsSUFBUixJQUFnQkwsWUFBaEIsSUFBOEJBLFlBQVUsR0FBRyxFQUY3QztBQUdELENBUHdELENBQXpEOzs7O0FDSkEsSUFBSU0sZUFBYSxHQUFHN0MsY0FBcEI7O0lBRUFULGNBQUEsR0FBaUJzRCxlQUFhLElBQ3pCLENBQUNILE1BQU0sQ0FBQ0UsSUFESSxJQUVaLE9BQU9GLE1BQU0sQ0FBQ0ksUUFBZCxJQUEwQixRQUYvQjs7QUNIQSxJQUFJckIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUkrQyxtQkFBaUIsR0FBRy9DLGNBQXhCOztJQUVBVCxVQUFBLEdBQWlCd0QsbUJBQWlCLEdBQUcsVUFBVTFELEVBQVYsRUFBYztBQUNqRCxTQUFPLE9BQU9BLEVBQVAsSUFBYSxRQUFwQjtBQUNELENBRmlDLEdBRTlCLFVBQVVBLEVBQVYsRUFBYztBQUNoQixNQUFJMkQsT0FBTyxHQUFHakIsWUFBVSxDQUFDLFFBQUQsQ0FBeEI7QUFDQSxTQUFPTixZQUFVLENBQUN1QixPQUFELENBQVYsSUFBdUIvQyxNQUFNLENBQUNaLEVBQUQsQ0FBTixZQUFzQjJELE9BQXBEO0FBQ0QsQ0FMRDs7SUNKQXpELGFBQUEsR0FBaUIsVUFBVWlDLFFBQVYsRUFBb0I7QUFDbkMsTUFBSTtBQUNGLFdBQU9tQixNQUFNLENBQUNuQixRQUFELENBQWI7QUFDRCxHQUZELENBRUUsT0FBTzFCLEtBQVAsRUFBYztBQUNkLFdBQU8sUUFBUDtBQUNEO0FBQ0YsQ0FORDs7QUNBQSxJQUFJMkIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSWlELGFBQVcsR0FBR2pELGFBQWxCOzs7SUFHQVQsV0FBQSxHQUFpQixVQUFVaUMsUUFBVixFQUFvQjtBQUNuQyxNQUFJQyxZQUFVLENBQUNELFFBQUQsQ0FBZCxFQUEwQixPQUFPQSxRQUFQO0FBQzFCLFFBQU1ILFNBQVMsQ0FBQzRCLGFBQVcsQ0FBQ3pCLFFBQUQsQ0FBWCxHQUF3QixvQkFBekIsQ0FBZjtBQUNELENBSEQ7O0FDSkEsSUFBSTBCLFdBQVMsR0FBR2xELFdBQWhCO0FBR0E7OztJQUNBVCxXQUFBLEdBQWlCLFVBQVVrQixDQUFWLEVBQWEwQyxDQUFiLEVBQWdCO0FBQy9CLE1BQUlDLElBQUksR0FBRzNDLENBQUMsQ0FBQzBDLENBQUQsQ0FBWjtBQUNBLFNBQU9DLElBQUksSUFBSSxJQUFSLEdBQWVoQyxTQUFmLEdBQTJCOEIsV0FBUyxDQUFDRSxJQUFELENBQTNDO0FBQ0QsQ0FIRDs7QUNKQSxJQUFJM0IsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7QUFHQTs7O0lBQ0FULHFCQUFBLEdBQWlCLFVBQVUrRCxLQUFWLEVBQWlCQyxJQUFqQixFQUF1QjtBQUN0QyxNQUFJQyxFQUFKLEVBQVFDLEdBQVI7QUFDQSxNQUFJRixJQUFJLEtBQUssUUFBVCxJQUFxQjlCLFlBQVUsQ0FBQytCLEVBQUUsR0FBR0YsS0FBSyxDQUFDdEMsUUFBWixDQUEvQixJQUF3RCxDQUFDcUMsVUFBUSxDQUFDSSxHQUFHLEdBQUdELEVBQUUsQ0FBQ2hELElBQUgsQ0FBUThDLEtBQVIsQ0FBUCxDQUFyRSxFQUE2RixPQUFPRyxHQUFQO0FBQzdGLE1BQUloQyxZQUFVLENBQUMrQixFQUFFLEdBQUdGLEtBQUssQ0FBQ0ksT0FBWixDQUFWLElBQWtDLENBQUNMLFVBQVEsQ0FBQ0ksR0FBRyxHQUFHRCxFQUFFLENBQUNoRCxJQUFILENBQVE4QyxLQUFSLENBQVAsQ0FBL0MsRUFBdUUsT0FBT0csR0FBUDtBQUN2RSxNQUFJRixJQUFJLEtBQUssUUFBVCxJQUFxQjlCLFlBQVUsQ0FBQytCLEVBQUUsR0FBR0YsS0FBSyxDQUFDdEMsUUFBWixDQUEvQixJQUF3RCxDQUFDcUMsVUFBUSxDQUFDSSxHQUFHLEdBQUdELEVBQUUsQ0FBQ2hELElBQUgsQ0FBUThDLEtBQVIsQ0FBUCxDQUFyRSxFQUE2RixPQUFPRyxHQUFQO0FBQzdGLFFBQU1wQyxTQUFTLENBQUMseUNBQUQsQ0FBZjtBQUNELENBTkQ7Ozs7SUNMQTlCLE1BQUEsR0FBaUIsS0FBakI7O0FDQUEsSUFBSUksUUFBTSxHQUFHSyxRQUFiOztJQUVBVCxXQUFBLEdBQWlCLFVBQVVvRSxHQUFWLEVBQWU5QyxLQUFmLEVBQXNCO0FBQ3JDLE1BQUk7QUFDRjtBQUNBWixJQUFBQSxNQUFNLENBQUNDLGNBQVAsQ0FBc0JQLFFBQXRCLEVBQThCZ0UsR0FBOUIsRUFBbUM7QUFBRTlDLE1BQUFBLEtBQUssRUFBRUEsS0FBVDtBQUFnQkMsTUFBQUEsWUFBWSxFQUFFLElBQTlCO0FBQW9DQyxNQUFBQSxRQUFRLEVBQUU7QUFBOUMsS0FBbkM7QUFDRCxHQUhELENBR0UsT0FBT2pCLEtBQVAsRUFBYztBQUNkSCxJQUFBQSxRQUFNLENBQUNnRSxHQUFELENBQU4sR0FBYzlDLEtBQWQ7QUFDRDs7QUFBQyxTQUFPQSxLQUFQO0FBQ0gsQ0FQRDs7QUNGQSxJQUFJbEIsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUk0RCxXQUFTLEdBQUc1RCxXQUFoQjs7QUFFQSxJQUFJNkQsTUFBTSxHQUFHLG9CQUFiO0FBQ0EsSUFBSUMsT0FBSyxHQUFHbkUsUUFBTSxDQUFDa0UsTUFBRCxDQUFOLElBQWtCRCxXQUFTLENBQUNDLE1BQUQsRUFBUyxFQUFULENBQXZDO0lBRUF0RSxXQUFBLEdBQWlCdUUsT0FBakI7O0FDTEEsSUFBSUEsT0FBSyxHQUFHOUQsV0FBWjs7QUFFQSxDQUFDVCxnQkFBQSxHQUFpQixVQUFVb0UsR0FBVixFQUFlOUMsS0FBZixFQUFzQjtBQUN0QyxTQUFPaUQsT0FBSyxDQUFDSCxHQUFELENBQUwsS0FBZUcsT0FBSyxDQUFDSCxHQUFELENBQUwsR0FBYTlDLEtBQUssS0FBS08sU0FBVixHQUFzQlAsS0FBdEIsR0FBOEIsRUFBMUQsQ0FBUDtBQUNELENBRkQsRUFFRyxVQUZILEVBRWUsRUFGZixFQUVtQmtELElBRm5CLENBRXdCO0FBQ3RCM0IsRUFBQUEsT0FBTyxFQUFFLFFBRGE7QUFFdEI0QixFQUFBQSxJQUFJLEVBQXFCLFFBRkg7QUFHdEJDLEVBQUFBLFNBQVMsRUFBRTtBQUhXLENBRnhCOztBQ0hBLElBQUkxQyx3QkFBc0IsR0FBR3ZCLHdCQUE3QjtBQUdBOzs7SUFDQVQsVUFBQSxHQUFpQixVQUFVaUMsUUFBVixFQUFvQjtBQUNuQyxTQUFPdkIsTUFBTSxDQUFDc0Isd0JBQXNCLENBQUNDLFFBQUQsQ0FBdkIsQ0FBYjtBQUNELENBRkQ7O0FDSkEsSUFBSTBDLFVBQVEsR0FBR2xFLFVBQWY7O0FBRUEsSUFBSW1FLGdCQUFjLEdBQUcsR0FBR0EsY0FBeEI7QUFHQTs7SUFDQTVFLGdCQUFBLEdBQWlCVSxNQUFNLENBQUNtRSxNQUFQLElBQWlCLFNBQVNBLE1BQVQsQ0FBZ0IvRSxFQUFoQixFQUFvQnNFLEdBQXBCLEVBQXlCO0FBQ3pELFNBQU9RLGdCQUFjLENBQUMzRCxJQUFmLENBQW9CMEQsVUFBUSxDQUFDN0UsRUFBRCxDQUE1QixFQUFrQ3NFLEdBQWxDLENBQVA7QUFDRCxDQUZEOztBQ05BLElBQUlVLElBQUUsR0FBRyxDQUFUO0FBQ0EsSUFBSUMsT0FBTyxHQUFHaEYsSUFBSSxDQUFDaUYsTUFBTCxFQUFkOztJQUVBaEYsS0FBQSxHQUFpQixVQUFVb0UsR0FBVixFQUFlO0FBQzlCLFNBQU8sWUFBWWhCLE1BQU0sQ0FBQ2dCLEdBQUcsS0FBS3ZDLFNBQVIsR0FBb0IsRUFBcEIsR0FBeUJ1QyxHQUExQixDQUFsQixHQUFtRCxJQUFuRCxHQUEwRCxDQUFDLEVBQUVVLElBQUYsR0FBT0MsT0FBUixFQUFpQnRELFFBQWpCLENBQTBCLEVBQTFCLENBQWpFO0FBQ0QsQ0FGRDs7QUNIQSxJQUFJckIsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUl3RSxRQUFNLEdBQUd4RSxnQkFBYjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSXlFLEtBQUcsR0FBR3pFLEtBQVY7O0FBQ0EsSUFBSTZDLGVBQWEsR0FBRzdDLGNBQXBCOztBQUNBLElBQUkrQyxpQkFBaUIsR0FBRy9DLGNBQXhCOztBQUVBLElBQUkwRSx1QkFBcUIsR0FBR0YsUUFBTSxDQUFDLEtBQUQsQ0FBbEM7QUFDQSxJQUFJOUIsUUFBTSxHQUFHL0MsUUFBTSxDQUFDK0MsTUFBcEI7QUFDQSxJQUFJaUMscUJBQXFCLEdBQUc1QixpQkFBaUIsR0FBR0wsUUFBSCxHQUFZQSxRQUFNLElBQUlBLFFBQU0sQ0FBQ2tDLGFBQWpCLElBQWtDSCxLQUEzRjs7SUFFQWxGLGlCQUFBLEdBQWlCLFVBQVVzRixJQUFWLEVBQWdCO0FBQy9CLE1BQUksQ0FBQ1QsUUFBTSxDQUFDTSx1QkFBRCxFQUF3QkcsSUFBeEIsQ0FBUCxJQUF3QyxFQUFFaEMsZUFBYSxJQUFJLE9BQU82Qix1QkFBcUIsQ0FBQ0csSUFBRCxDQUE1QixJQUFzQyxRQUF6RCxDQUE1QyxFQUFnSDtBQUM5RyxRQUFJaEMsZUFBYSxJQUFJdUIsUUFBTSxDQUFDMUIsUUFBRCxFQUFTbUMsSUFBVCxDQUEzQixFQUEyQztBQUN6Q0gsTUFBQUEsdUJBQXFCLENBQUNHLElBQUQsQ0FBckIsR0FBOEJuQyxRQUFNLENBQUNtQyxJQUFELENBQXBDO0FBQ0QsS0FGRCxNQUVPO0FBQ0xILE1BQUFBLHVCQUFxQixDQUFDRyxJQUFELENBQXJCLEdBQThCRixxQkFBcUIsQ0FBQyxZQUFZRSxJQUFiLENBQW5EO0FBQ0Q7QUFDRjs7QUFBQyxTQUFPSCx1QkFBcUIsQ0FBQ0csSUFBRCxDQUE1QjtBQUNILENBUkQ7O0FDWEEsSUFBSXhCLFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSThFLFVBQVEsR0FBRzlFLFVBQWY7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUNBLElBQUlnRixxQkFBbUIsR0FBR2hGLHFCQUExQjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJa0YsY0FBWSxHQUFHRCxpQkFBZSxDQUFDLGFBQUQsQ0FBbEM7QUFHQTs7SUFDQTFGLGFBQUEsR0FBaUIsVUFBVStELEtBQVYsRUFBaUJDLElBQWpCLEVBQXVCO0FBQ3RDLE1BQUksQ0FBQ0YsVUFBUSxDQUFDQyxLQUFELENBQVQsSUFBb0J3QixVQUFRLENBQUN4QixLQUFELENBQWhDLEVBQXlDLE9BQU9BLEtBQVA7QUFDekMsTUFBSTZCLFlBQVksR0FBR0osV0FBUyxDQUFDekIsS0FBRCxFQUFRNEIsY0FBUixDQUE1QjtBQUNBLE1BQUlFLE1BQUo7O0FBQ0EsTUFBSUQsWUFBSixFQUFrQjtBQUNoQixRQUFJNUIsSUFBSSxLQUFLbkMsU0FBYixFQUF3Qm1DLElBQUksR0FBRyxTQUFQO0FBQ3hCNkIsSUFBQUEsTUFBTSxHQUFHRCxZQUFZLENBQUMzRSxJQUFiLENBQWtCOEMsS0FBbEIsRUFBeUJDLElBQXpCLENBQVQ7QUFDQSxRQUFJLENBQUNGLFVBQVEsQ0FBQytCLE1BQUQsQ0FBVCxJQUFxQk4sVUFBUSxDQUFDTSxNQUFELENBQWpDLEVBQTJDLE9BQU9BLE1BQVA7QUFDM0MsVUFBTS9ELFNBQVMsQ0FBQyx5Q0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsTUFBSWtDLElBQUksS0FBS25DLFNBQWIsRUFBd0JtQyxJQUFJLEdBQUcsUUFBUDtBQUN4QixTQUFPeUIscUJBQW1CLENBQUMxQixLQUFELEVBQVFDLElBQVIsQ0FBMUI7QUFDRCxDQVpEOztBQ1ZBLElBQUk4QixhQUFXLEdBQUdyRixhQUFsQjs7QUFDQSxJQUFJOEUsVUFBUSxHQUFHOUUsVUFBZjtBQUdBOzs7SUFDQVQsZUFBQSxHQUFpQixVQUFVaUMsUUFBVixFQUFvQjtBQUNuQyxNQUFJbUMsR0FBRyxHQUFHMEIsYUFBVyxDQUFDN0QsUUFBRCxFQUFXLFFBQVgsQ0FBckI7QUFDQSxTQUFPc0QsVUFBUSxDQUFDbkIsR0FBRCxDQUFSLEdBQWdCQSxHQUFoQixHQUFzQmhCLE1BQU0sQ0FBQ2dCLEdBQUQsQ0FBbkM7QUFDRCxDQUhEOztBQ0xBLElBQUloRSxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBRUEsSUFBSXNGLFVBQVEsR0FBRzNGLFFBQU0sQ0FBQzJGLFFBQXRCOztBQUVBLElBQUlDLFFBQU0sR0FBR2xDLFVBQVEsQ0FBQ2lDLFVBQUQsQ0FBUixJQUFzQmpDLFVBQVEsQ0FBQ2lDLFVBQVEsQ0FBQ0UsYUFBVixDQUEzQzs7SUFFQWpHLHVCQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYztBQUM3QixTQUFPa0csUUFBTSxHQUFHRCxVQUFRLENBQUNFLGFBQVQsQ0FBdUJuRyxFQUF2QixDQUFILEdBQWdDLEVBQTdDO0FBQ0QsQ0FGRDs7QUNQQSxJQUFJb0csYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSUQsUUFBSyxHQUFHQyxRQUFaOztBQUNBLElBQUl3RixlQUFhLEdBQUd4Rix1QkFBcEI7OztJQUdBVCxZQUFBLEdBQWlCLENBQUNrRyxhQUFELElBQWdCLENBQUMxRixRQUFLLENBQUMsWUFBWTtBQUNsRDtBQUNBLFNBQU9FLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQnNGLGVBQWEsQ0FBQyxLQUFELENBQW5DLEVBQTRDLEdBQTVDLEVBQWlEO0FBQ3REckYsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFBRSxhQUFPLENBQVA7QUFBVztBQUR3QixHQUFqRCxFQUVKdUYsQ0FGSSxJQUVDLENBRlI7QUFHRCxDQUxzQyxDQUF2Qzs7QUNMQSxJQUFJRCxhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJMkYsNEJBQTBCLEdBQUczRiwwQkFBakM7O0FBQ0EsSUFBSTRGLDBCQUF3QixHQUFHNUYsMEJBQS9COztBQUNBLElBQUk2RixpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUk4RixlQUFhLEdBQUc5RixlQUFwQjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSStGLGdCQUFjLEdBQUcvRixZQUFyQjs7O0FBR0EsSUFBSWdHLDJCQUF5QixHQUFHL0YsTUFBTSxDQUFDSyx3QkFBdkM7QUFHQTs7Z0NBQ0EsR0FBWW1GLGFBQVcsR0FBR08sMkJBQUgsR0FBK0IsU0FBUzFGLHdCQUFULENBQWtDMkYsQ0FBbEMsRUFBcUM5QyxDQUFyQyxFQUF3QztBQUM1RjhDLEVBQUFBLENBQUMsR0FBR0osaUJBQWUsQ0FBQ0ksQ0FBRCxDQUFuQjtBQUNBOUMsRUFBQUEsQ0FBQyxHQUFHMkMsZUFBYSxDQUFDM0MsQ0FBRCxDQUFqQjtBQUNBLE1BQUk0QyxnQkFBSixFQUFvQixJQUFJO0FBQ3RCLFdBQU9DLDJCQUF5QixDQUFDQyxDQUFELEVBQUk5QyxDQUFKLENBQWhDO0FBQ0QsR0FGbUIsQ0FFbEIsT0FBT3JELEtBQVAsRUFBYztBQUFFO0FBQWE7QUFDL0IsTUFBSXNFLFFBQU0sQ0FBQzZCLENBQUQsRUFBSTlDLENBQUosQ0FBVixFQUFrQixPQUFPeUMsMEJBQXdCLENBQUMsQ0FBQ0QsNEJBQTBCLENBQUNPLENBQTNCLENBQTZCMUYsSUFBN0IsQ0FBa0N5RixDQUFsQyxFQUFxQzlDLENBQXJDLENBQUYsRUFBMkM4QyxDQUFDLENBQUM5QyxDQUFELENBQTVDLENBQS9CO0FBQ25COzs7O0FDcEJELElBQUlFLFVBQVEsR0FBR3JELFVBQWY7OztJQUdBVCxXQUFBLEdBQWlCLFVBQVVpQyxRQUFWLEVBQW9CO0FBQ25DLE1BQUk2QixVQUFRLENBQUM3QixRQUFELENBQVosRUFBd0IsT0FBT0EsUUFBUDtBQUN4QixRQUFNSCxTQUFTLENBQUNzQixNQUFNLENBQUNuQixRQUFELENBQU4sR0FBbUIsbUJBQXBCLENBQWY7QUFDRCxDQUhEOztBQ0hBLElBQUlpRSxhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJK0YsY0FBYyxHQUFHL0YsWUFBckI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSThGLGVBQWEsR0FBRzlGLGVBQXBCOzs7QUFHQSxJQUFJb0csaUJBQWUsR0FBR25HLE1BQU0sQ0FBQ0MsY0FBN0I7QUFHQTs7c0JBQ0EsR0FBWXVGLGFBQVcsR0FBR1csaUJBQUgsR0FBcUIsU0FBU2xHLGNBQVQsQ0FBd0IrRixDQUF4QixFQUEyQjlDLENBQTNCLEVBQThCa0QsVUFBOUIsRUFBMEM7QUFDcEZGLEVBQUFBLFdBQVEsQ0FBQ0YsQ0FBRCxDQUFSO0FBQ0E5QyxFQUFBQSxDQUFDLEdBQUcyQyxlQUFhLENBQUMzQyxDQUFELENBQWpCO0FBQ0FnRCxFQUFBQSxXQUFRLENBQUNFLFVBQUQsQ0FBUjtBQUNBLE1BQUlOLGNBQUosRUFBb0IsSUFBSTtBQUN0QixXQUFPSyxpQkFBZSxDQUFDSCxDQUFELEVBQUk5QyxDQUFKLEVBQU9rRCxVQUFQLENBQXRCO0FBQ0QsR0FGbUIsQ0FFbEIsT0FBT3ZHLEtBQVAsRUFBYztBQUFFO0FBQWE7QUFDL0IsTUFBSSxTQUFTdUcsVUFBVCxJQUF1QixTQUFTQSxVQUFwQyxFQUFnRCxNQUFNaEYsU0FBUyxDQUFDLHlCQUFELENBQWY7QUFDaEQsTUFBSSxXQUFXZ0YsVUFBZixFQUEyQkosQ0FBQyxDQUFDOUMsQ0FBRCxDQUFELEdBQU9rRCxVQUFVLENBQUN4RixLQUFsQjtBQUMzQixTQUFPb0YsQ0FBUDtBQUNEOztBQ3BCRCxJQUFJUixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJc0csc0JBQW9CLEdBQUd0RyxvQkFBM0I7O0FBQ0EsSUFBSTRGLDBCQUF3QixHQUFHNUYsMEJBQS9COztJQUVBVCw2QkFBQSxHQUFpQmtHLGFBQVcsR0FBRyxVQUFVYyxNQUFWLEVBQWtCNUMsR0FBbEIsRUFBdUI5QyxLQUF2QixFQUE4QjtBQUMzRCxTQUFPeUYsc0JBQW9CLENBQUNKLENBQXJCLENBQXVCSyxNQUF2QixFQUErQjVDLEdBQS9CLEVBQW9DaUMsMEJBQXdCLENBQUMsQ0FBRCxFQUFJL0UsS0FBSixDQUE1RCxDQUFQO0FBQ0QsQ0FGMkIsR0FFeEIsVUFBVTBGLE1BQVYsRUFBa0I1QyxHQUFsQixFQUF1QjlDLEtBQXZCLEVBQThCO0FBQ2hDMEYsRUFBQUEsTUFBTSxDQUFDNUMsR0FBRCxDQUFOLEdBQWM5QyxLQUFkO0FBQ0EsU0FBTzBGLE1BQVA7QUFDRCxDQUxEOzs7O0FDSkEsSUFBSTlFLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUk4RCxPQUFLLEdBQUc5RCxXQUFaOztBQUVBLElBQUl3RyxnQkFBZ0IsR0FBRzVHLFFBQVEsQ0FBQ29CLFFBQWhDOztBQUdBLElBQUksQ0FBQ1MsWUFBVSxDQUFDcUMsT0FBSyxDQUFDMkMsYUFBUCxDQUFmLEVBQXNDO0FBQ3BDM0MsRUFBQUEsT0FBSyxDQUFDMkMsYUFBTixHQUFzQixVQUFVcEgsRUFBVixFQUFjO0FBQ2xDLFdBQU9tSCxnQkFBZ0IsQ0FBQ2hHLElBQWpCLENBQXNCbkIsRUFBdEIsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7SUFFREUsZUFBQSxHQUFpQnVFLE9BQUssQ0FBQzJDLGFBQXZCOztBQ1pBLElBQUk5RyxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUl5RyxlQUFhLEdBQUd6RyxlQUFwQjs7QUFFQSxJQUFJMEcsU0FBTyxHQUFHL0csUUFBTSxDQUFDK0csT0FBckI7SUFFQW5ILGFBQUEsR0FBaUJrQyxZQUFVLENBQUNpRixTQUFELENBQVYsSUFBdUIsY0FBY0MsSUFBZCxDQUFtQkYsZUFBYSxDQUFDQyxTQUFELENBQWhDLENBQXhDOztBQ05BLElBQUlsQyxRQUFNLEdBQUd4RSxnQkFBYjs7QUFDQSxJQUFJeUUsS0FBRyxHQUFHekUsS0FBVjs7QUFFQSxJQUFJNEcsTUFBSSxHQUFHcEMsUUFBTSxDQUFDLE1BQUQsQ0FBakI7O0lBRUFqRixXQUFBLEdBQWlCLFVBQVVvRSxHQUFWLEVBQWU7QUFDOUIsU0FBT2lELE1BQUksQ0FBQ2pELEdBQUQsQ0FBSixLQUFjaUQsTUFBSSxDQUFDakQsR0FBRCxDQUFKLEdBQVljLEtBQUcsQ0FBQ2QsR0FBRCxDQUE3QixDQUFQO0FBQ0QsQ0FGRDs7SUNMQXBFLFlBQUEsR0FBaUIsRUFBakI7O0FDQUEsSUFBSXNILGlCQUFlLEdBQUc3RyxhQUF0Qjs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSThHLDZCQUEyQixHQUFHOUcsNkJBQWxDOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJd0UsUUFBTSxHQUFHeEUsV0FBYjs7QUFDQSxJQUFJK0csV0FBUyxHQUFHL0csV0FBaEI7O0FBQ0EsSUFBSWdILFlBQVUsR0FBR2hILFlBQWpCOztBQUVBLElBQUlpSCwwQkFBMEIsR0FBRyw0QkFBakM7QUFDQSxJQUFJUCxTQUFPLEdBQUcvRyxRQUFNLENBQUMrRyxPQUFyQjtBQUNBLElBQUlRLEtBQUosRUFBUy9HLEtBQVQsRUFBY2dILEtBQWQ7O0FBRUEsSUFBSUMsT0FBTyxHQUFHLFVBQVUvSCxFQUFWLEVBQWM7QUFDMUIsU0FBTzhILEtBQUcsQ0FBQzlILEVBQUQsQ0FBSCxHQUFVYyxLQUFHLENBQUNkLEVBQUQsQ0FBYixHQUFvQjZILEtBQUcsQ0FBQzdILEVBQUQsRUFBSyxFQUFMLENBQTlCO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJZ0ksU0FBUyxHQUFHLFVBQVVDLElBQVYsRUFBZ0I7QUFDOUIsU0FBTyxVQUFVakksRUFBVixFQUFjO0FBQ25CLFFBQUlrSSxLQUFKOztBQUNBLFFBQUksQ0FBQ2xFLFVBQVEsQ0FBQ2hFLEVBQUQsQ0FBVCxJQUFpQixDQUFDa0ksS0FBSyxHQUFHcEgsS0FBRyxDQUFDZCxFQUFELENBQVosRUFBa0JtSSxJQUFsQixLQUEyQkYsSUFBaEQsRUFBc0Q7QUFDcEQsWUFBTWpHLFNBQVMsQ0FBQyw0QkFBNEJpRyxJQUE1QixHQUFtQyxXQUFwQyxDQUFmO0FBQ0Q7O0FBQUMsV0FBT0MsS0FBUDtBQUNILEdBTEQ7QUFNRCxDQVBEOztBQVNBLElBQUlWLGlCQUFlLElBQUlyQyxRQUFNLENBQUMrQyxLQUE5QixFQUFxQztBQUNuQyxNQUFJekQsT0FBSyxHQUFHVSxRQUFNLENBQUMrQyxLQUFQLEtBQWlCL0MsUUFBTSxDQUFDK0MsS0FBUCxHQUFlLElBQUliLFNBQUosRUFBaEMsQ0FBWjtBQUNBLE1BQUllLEtBQUssR0FBRzNELE9BQUssQ0FBQzNELEdBQWxCO0FBQ0EsTUFBSXVILEtBQUssR0FBRzVELE9BQUssQ0FBQ3FELEdBQWxCO0FBQ0EsTUFBSVEsS0FBSyxHQUFHN0QsT0FBSyxDQUFDb0QsR0FBbEI7O0FBQ0FBLEVBQUFBLEtBQUcsR0FBRyxVQUFVN0gsRUFBVixFQUFjdUksUUFBZCxFQUF3QjtBQUM1QixRQUFJRixLQUFLLENBQUNsSCxJQUFOLENBQVdzRCxPQUFYLEVBQWtCekUsRUFBbEIsQ0FBSixFQUEyQixNQUFNLElBQUlnQyxTQUFKLENBQWM0RiwwQkFBZCxDQUFOO0FBQzNCVyxJQUFBQSxRQUFRLENBQUNDLE1BQVQsR0FBa0J4SSxFQUFsQjtBQUNBc0ksSUFBQUEsS0FBSyxDQUFDbkgsSUFBTixDQUFXc0QsT0FBWCxFQUFrQnpFLEVBQWxCLEVBQXNCdUksUUFBdEI7QUFDQSxXQUFPQSxRQUFQO0FBQ0QsR0FMRDs7QUFNQXpILEVBQUFBLEtBQUcsR0FBRyxVQUFVZCxFQUFWLEVBQWM7QUFDbEIsV0FBT29JLEtBQUssQ0FBQ2pILElBQU4sQ0FBV3NELE9BQVgsRUFBa0J6RSxFQUFsQixLQUF5QixFQUFoQztBQUNELEdBRkQ7O0FBR0E4SCxFQUFBQSxLQUFHLEdBQUcsVUFBVTlILEVBQVYsRUFBYztBQUNsQixXQUFPcUksS0FBSyxDQUFDbEgsSUFBTixDQUFXc0QsT0FBWCxFQUFrQnpFLEVBQWxCLENBQVA7QUFDRCxHQUZEO0FBR0QsQ0FqQkQsTUFpQk87QUFDTCxNQUFJeUksS0FBSyxHQUFHZixXQUFTLENBQUMsT0FBRCxDQUFyQjtBQUNBQyxFQUFBQSxZQUFVLENBQUNjLEtBQUQsQ0FBVixHQUFvQixJQUFwQjs7QUFDQVosRUFBQUEsS0FBRyxHQUFHLFVBQVU3SCxFQUFWLEVBQWN1SSxRQUFkLEVBQXdCO0FBQzVCLFFBQUl4RCxRQUFNLENBQUMvRSxFQUFELEVBQUt5SSxLQUFMLENBQVYsRUFBdUIsTUFBTSxJQUFJekcsU0FBSixDQUFjNEYsMEJBQWQsQ0FBTjtBQUN2QlcsSUFBQUEsUUFBUSxDQUFDQyxNQUFULEdBQWtCeEksRUFBbEI7QUFDQXlILElBQUFBLDZCQUEyQixDQUFDekgsRUFBRCxFQUFLeUksS0FBTCxFQUFZRixRQUFaLENBQTNCO0FBQ0EsV0FBT0EsUUFBUDtBQUNELEdBTEQ7O0FBTUF6SCxFQUFBQSxLQUFHLEdBQUcsVUFBVWQsRUFBVixFQUFjO0FBQ2xCLFdBQU8rRSxRQUFNLENBQUMvRSxFQUFELEVBQUt5SSxLQUFMLENBQU4sR0FBb0J6SSxFQUFFLENBQUN5SSxLQUFELENBQXRCLEdBQWdDLEVBQXZDO0FBQ0QsR0FGRDs7QUFHQVgsRUFBQUEsS0FBRyxHQUFHLFVBQVU5SCxFQUFWLEVBQWM7QUFDbEIsV0FBTytFLFFBQU0sQ0FBQy9FLEVBQUQsRUFBS3lJLEtBQUwsQ0FBYjtBQUNELEdBRkQ7QUFHRDs7SUFFRHZJLGFBQUEsR0FBaUI7QUFDZjJILEVBQUFBLEdBQUcsRUFBRUEsS0FEVTtBQUVmL0csRUFBQUEsR0FBRyxFQUFFQSxLQUZVO0FBR2ZnSCxFQUFBQSxHQUFHLEVBQUVBLEtBSFU7QUFJZkMsRUFBQUEsT0FBTyxFQUFFQSxPQUpNO0FBS2ZDLEVBQUFBLFNBQVMsRUFBRUE7QUFMSSxDQUFqQjs7QUM1REEsSUFBSTVCLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFFQSxJQUFJK0gsbUJBQWlCLEdBQUduSSxRQUFRLENBQUNvSSxTQUFqQzs7QUFFQSxJQUFJQyxhQUFhLEdBQUd4QyxhQUFXLElBQUl4RixNQUFNLENBQUNLLHdCQUExQztBQUVBLElBQUlpRixNQUFNLEdBQUduQixRQUFNLENBQUMyRCxtQkFBRCxFQUFvQixNQUFwQixDQUFuQjs7QUFFQSxJQUFJRyxNQUFNLEdBQUczQyxNQUFNLElBQUssU0FBUzRDLFNBQVQsR0FBcUI7QUFBRTtBQUFhLENBQXJDLENBQXVDdEQsSUFBdkMsS0FBZ0QsV0FBdkU7O0FBQ0EsSUFBSXVELFlBQVksR0FBRzdDLE1BQU0sS0FBSyxDQUFDRSxhQUFELElBQWlCQSxhQUFXLElBQUl3QyxhQUFhLENBQUNGLG1CQUFELEVBQW9CLE1BQXBCLENBQWIsQ0FBeUNqSCxZQUE5RSxDQUF6QjtJQUVBdkIsWUFBQSxHQUFpQjtBQUNmZ0csRUFBQUEsTUFBTSxFQUFFQSxNQURPO0FBRWYyQyxFQUFBQSxNQUFNLEVBQUVBLE1BRk87QUFHZkUsRUFBQUEsWUFBWSxFQUFFQTtBQUhDLENBQWpCOztBQ1pBLElBQUl6SSxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSTRELFdBQVMsR0FBRzVELFdBQWhCOztBQUNBLElBQUl5RyxlQUFhLEdBQUd6RyxlQUFwQjs7QUFDQSxJQUFJcUkscUJBQW1CLEdBQUdySSxhQUExQjs7QUFDQSxJQUFJc0ksNEJBQTBCLEdBQUd0SSxZQUFBLENBQXNDb0ksWUFBdkU7O0FBRUEsSUFBSUcsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDbEksR0FBM0M7QUFDQSxJQUFJcUksc0JBQW9CLEdBQUdILHFCQUFtQixDQUFDakIsT0FBL0M7QUFDQSxJQUFJcUIsUUFBUSxHQUFHOUYsTUFBTSxDQUFDQSxNQUFELENBQU4sQ0FBZXhCLEtBQWYsQ0FBcUIsUUFBckIsQ0FBZjtBQUVBLENBQUM1QixrQkFBQSxHQUFpQixVQUFVMEcsQ0FBVixFQUFhdEMsR0FBYixFQUFrQjlDLEtBQWxCLEVBQXlCNkgsT0FBekIsRUFBa0M7QUFDbEQsTUFBSUMsTUFBTSxHQUFHRCxPQUFPLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUNDLE1BQWIsR0FBc0IsS0FBMUM7QUFDQSxNQUFJQyxNQUFNLEdBQUdGLE9BQU8sR0FBRyxDQUFDLENBQUNBLE9BQU8sQ0FBQy9ILFVBQWIsR0FBMEIsS0FBOUM7QUFDQSxNQUFJa0ksV0FBVyxHQUFHSCxPQUFPLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUNHLFdBQWIsR0FBMkIsS0FBcEQ7QUFDQSxNQUFJaEUsSUFBSSxHQUFHNkQsT0FBTyxJQUFJQSxPQUFPLENBQUM3RCxJQUFSLEtBQWlCekQsU0FBNUIsR0FBd0NzSCxPQUFPLENBQUM3RCxJQUFoRCxHQUF1RGxCLEdBQWxFO0FBQ0EsTUFBSTRELEtBQUo7O0FBQ0EsTUFBSTlGLFlBQVUsQ0FBQ1osS0FBRCxDQUFkLEVBQXVCO0FBQ3JCLFFBQUk4QixNQUFNLENBQUNrQyxJQUFELENBQU4sQ0FBYTVELEtBQWIsQ0FBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsTUFBNkIsU0FBakMsRUFBNEM7QUFDMUM0RCxNQUFBQSxJQUFJLEdBQUcsTUFBTWxDLE1BQU0sQ0FBQ2tDLElBQUQsQ0FBTixDQUFhaUUsT0FBYixDQUFxQixvQkFBckIsRUFBMkMsSUFBM0MsQ0FBTixHQUF5RCxHQUFoRTtBQUNEOztBQUNELFFBQUksQ0FBQzFFLFFBQU0sQ0FBQ3ZELEtBQUQsRUFBUSxNQUFSLENBQVAsSUFBMkJ5SCw0QkFBMEIsSUFBSXpILEtBQUssQ0FBQ2dFLElBQU4sS0FBZUEsSUFBNUUsRUFBbUY7QUFDakZpQyxNQUFBQSw2QkFBMkIsQ0FBQ2pHLEtBQUQsRUFBUSxNQUFSLEVBQWdCZ0UsSUFBaEIsQ0FBM0I7QUFDRDs7QUFDRDBDLElBQUFBLEtBQUssR0FBR2lCLHNCQUFvQixDQUFDM0gsS0FBRCxDQUE1Qjs7QUFDQSxRQUFJLENBQUMwRyxLQUFLLENBQUN3QixNQUFYLEVBQW1CO0FBQ2pCeEIsTUFBQUEsS0FBSyxDQUFDd0IsTUFBTixHQUFlTixRQUFRLENBQUNPLElBQVQsQ0FBYyxPQUFPbkUsSUFBUCxJQUFlLFFBQWYsR0FBMEJBLElBQTFCLEdBQWlDLEVBQS9DLENBQWY7QUFDRDtBQUNGOztBQUNELE1BQUlvQixDQUFDLEtBQUt0RyxRQUFWLEVBQWtCO0FBQ2hCLFFBQUlpSixNQUFKLEVBQVkzQyxDQUFDLENBQUN0QyxHQUFELENBQUQsR0FBUzlDLEtBQVQsQ0FBWixLQUNLK0MsV0FBUyxDQUFDRCxHQUFELEVBQU05QyxLQUFOLENBQVQ7QUFDTDtBQUNELEdBSkQsTUFJTyxJQUFJLENBQUM4SCxNQUFMLEVBQWE7QUFDbEIsV0FBTzFDLENBQUMsQ0FBQ3RDLEdBQUQsQ0FBUjtBQUNELEdBRk0sTUFFQSxJQUFJLENBQUNrRixXQUFELElBQWdCNUMsQ0FBQyxDQUFDdEMsR0FBRCxDQUFyQixFQUE0QjtBQUNqQ2lGLElBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7O0FBQ0QsTUFBSUEsTUFBSixFQUFZM0MsQ0FBQyxDQUFDdEMsR0FBRCxDQUFELEdBQVM5QyxLQUFULENBQVosS0FDS2lHLDZCQUEyQixDQUFDYixDQUFELEVBQUl0QyxHQUFKLEVBQVM5QyxLQUFULENBQTNCLENBNUI2QztBQThCbkQsQ0E5QkQsRUE4QkdqQixRQUFRLENBQUNvSSxTQTlCWixFQThCdUIsVUE5QnZCLEVBOEJtQyxTQUFTaEgsUUFBVCxHQUFvQjtBQUNyRCxTQUFPUyxZQUFVLENBQUMsSUFBRCxDQUFWLElBQW9COEcsa0JBQWdCLENBQUMsSUFBRCxDQUFoQixDQUF1QlEsTUFBM0MsSUFBcUR0QyxlQUFhLENBQUMsSUFBRCxDQUF6RTtBQUNELENBaENEOzs7O0FDYkEsSUFBSXdDLE1BQUksR0FBRzNKLElBQUksQ0FBQzJKLElBQWhCO0FBQ0EsSUFBSUMsT0FBSyxHQUFHNUosSUFBSSxDQUFDNEosS0FBakI7QUFHQTs7SUFDQTNKLHFCQUFBLEdBQWlCLFVBQVVpQyxRQUFWLEVBQW9CO0FBQ25DLE1BQUkySCxNQUFNLEdBQUcsQ0FBQzNILFFBQWQsQ0FEbUM7O0FBR25DLFNBQU8ySCxNQUFNLEtBQUtBLE1BQVgsSUFBcUJBLE1BQU0sS0FBSyxDQUFoQyxHQUFvQyxDQUFwQyxHQUF3QyxDQUFDQSxNQUFNLEdBQUcsQ0FBVCxHQUFhRCxPQUFiLEdBQXFCRCxNQUF0QixFQUE0QkUsTUFBNUIsQ0FBL0M7QUFDRCxDQUpEOztBQ0xBLElBQUlDLHFCQUFtQixHQUFHcEoscUJBQTFCOztBQUVBLElBQUlxSixLQUFHLEdBQUcvSixJQUFJLENBQUMrSixHQUFmO0FBQ0EsSUFBSUMsS0FBRyxHQUFHaEssSUFBSSxDQUFDZ0ssR0FBZjtBQUdBO0FBQ0E7O0lBQ0EvSixpQkFBQSxHQUFpQixVQUFVZ0ssS0FBVixFQUFpQnpILE1BQWpCLEVBQXlCO0FBQ3hDLE1BQUkwSCxPQUFPLEdBQUdKLHFCQUFtQixDQUFDRyxLQUFELENBQWpDO0FBQ0EsU0FBT0MsT0FBTyxHQUFHLENBQVYsR0FBY0gsS0FBRyxDQUFDRyxPQUFPLEdBQUcxSCxNQUFYLEVBQW1CLENBQW5CLENBQWpCLEdBQXlDd0gsS0FBRyxDQUFDRSxPQUFELEVBQVUxSCxNQUFWLENBQW5EO0FBQ0QsQ0FIRDs7QUNSQSxJQUFJc0gscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBRUEsSUFBSXNKLEtBQUcsR0FBR2hLLElBQUksQ0FBQ2dLLEdBQWY7QUFHQTs7SUFDQS9KLFVBQUEsR0FBaUIsVUFBVWlDLFFBQVYsRUFBb0I7QUFDbkMsU0FBT0EsUUFBUSxHQUFHLENBQVgsR0FBZThILEtBQUcsQ0FBQ0YscUJBQW1CLENBQUM1SCxRQUFELENBQXBCLEVBQWdDLGdCQUFoQyxDQUFsQixHQUFzRSxDQUE3RSxDQURtQztBQUVwQyxDQUZEOztBQ05BLElBQUlpSSxVQUFRLEdBQUd6SixVQUFmO0FBR0E7OztJQUNBVCxtQkFBQSxHQUFpQixVQUFVbUssR0FBVixFQUFlO0FBQzlCLFNBQU9ELFVBQVEsQ0FBQ0MsR0FBRyxDQUFDNUgsTUFBTCxDQUFmO0FBQ0QsQ0FGRDs7QUNKQSxJQUFJK0QsaUJBQWUsR0FBRzdGLGlCQUF0Qjs7QUFDQSxJQUFJMkosaUJBQWUsR0FBRzNKLGlCQUF0Qjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7OztBQUdBLElBQUk2SixjQUFZLEdBQUcsVUFBVUMsV0FBVixFQUF1QjtBQUN4QyxTQUFPLFVBQVVDLEtBQVYsRUFBaUJDLEVBQWpCLEVBQXFCQyxTQUFyQixFQUFnQztBQUNyQyxRQUFJaEUsQ0FBQyxHQUFHSixpQkFBZSxDQUFDa0UsS0FBRCxDQUF2QjtBQUNBLFFBQUlqSSxNQUFNLEdBQUc4SCxtQkFBaUIsQ0FBQzNELENBQUQsQ0FBOUI7QUFDQSxRQUFJc0QsS0FBSyxHQUFHSSxpQkFBZSxDQUFDTSxTQUFELEVBQVluSSxNQUFaLENBQTNCO0FBQ0EsUUFBSWpCLEtBQUosQ0FKcUM7QUFNckM7O0FBQ0EsUUFBSWlKLFdBQVcsSUFBSUUsRUFBRSxJQUFJQSxFQUF6QixFQUE2QixPQUFPbEksTUFBTSxHQUFHeUgsS0FBaEIsRUFBdUI7QUFDbEQxSSxNQUFBQSxLQUFLLEdBQUdvRixDQUFDLENBQUNzRCxLQUFLLEVBQU4sQ0FBVCxDQURrRDs7QUFHbEQsVUFBSTFJLEtBQUssSUFBSUEsS0FBYixFQUFvQixPQUFPLElBQVAsQ0FIOEI7QUFLbkQsS0FMRCxNQUtPLE9BQU1pQixNQUFNLEdBQUd5SCxLQUFmLEVBQXNCQSxLQUFLLEVBQTNCLEVBQStCO0FBQ3BDLFVBQUksQ0FBQ08sV0FBVyxJQUFJUCxLQUFLLElBQUl0RCxDQUF6QixLQUErQkEsQ0FBQyxDQUFDc0QsS0FBRCxDQUFELEtBQWFTLEVBQWhELEVBQW9ELE9BQU9GLFdBQVcsSUFBSVAsS0FBZixJQUF3QixDQUEvQjtBQUNyRDtBQUFDLFdBQU8sQ0FBQ08sV0FBRCxJQUFnQixDQUFDLENBQXhCO0FBQ0gsR0FmRDtBQWdCRCxDQWpCRDs7SUFtQkF2SyxhQUFBLEdBQWlCO0FBQ2Y7QUFDQTtBQUNBMkssRUFBQUEsUUFBUSxFQUFFTCxjQUFZLENBQUMsSUFBRCxDQUhQO0FBSWY7QUFDQTtBQUNBTSxFQUFBQSxPQUFPLEVBQUVOLGNBQVksQ0FBQyxLQUFEO0FBTk4sQ0FBakI7O0FDeEJBLElBQUl6RixRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJNkYsaUJBQWUsR0FBRzdGLGlCQUF0Qjs7QUFDQSxJQUFJbUssT0FBTyxHQUFHbkssYUFBQSxDQUF1Q21LLE9BQXJEOztBQUNBLElBQUluRCxZQUFVLEdBQUdoSCxZQUFqQjs7SUFFQVQsa0JBQUEsR0FBaUIsVUFBVWdILE1BQVYsRUFBa0I2RCxLQUFsQixFQUF5QjtBQUN4QyxNQUFJbkUsQ0FBQyxHQUFHSixpQkFBZSxDQUFDVSxNQUFELENBQXZCO0FBQ0EsTUFBSThELENBQUMsR0FBRyxDQUFSO0FBQ0EsTUFBSWpGLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSXpCLEdBQUo7O0FBQ0EsT0FBS0EsR0FBTCxJQUFZc0MsQ0FBWixFQUFlLENBQUM3QixRQUFNLENBQUM0QyxZQUFELEVBQWFyRCxHQUFiLENBQVAsSUFBNEJTLFFBQU0sQ0FBQzZCLENBQUQsRUFBSXRDLEdBQUosQ0FBbEMsSUFBOEN5QixNQUFNLENBQUNyQixJQUFQLENBQVlKLEdBQVosQ0FBOUMsQ0FMeUI7OztBQU94QyxTQUFPeUcsS0FBSyxDQUFDdEksTUFBTixHQUFldUksQ0FBdEIsRUFBeUIsSUFBSWpHLFFBQU0sQ0FBQzZCLENBQUQsRUFBSXRDLEdBQUcsR0FBR3lHLEtBQUssQ0FBQ0MsQ0FBQyxFQUFGLENBQWYsQ0FBVixFQUFpQztBQUN4RCxLQUFDRixPQUFPLENBQUMvRSxNQUFELEVBQVN6QixHQUFULENBQVIsSUFBeUJ5QixNQUFNLENBQUNyQixJQUFQLENBQVlKLEdBQVosQ0FBekI7QUFDRDs7QUFDRCxTQUFPeUIsTUFBUDtBQUNELENBWEQ7O0FDTEE7SUFDQTdGLGFBQUEsR0FBaUIsQ0FDZixhQURlLEVBRWYsZ0JBRmUsRUFHZixlQUhlLEVBSWYsc0JBSmUsRUFLZixnQkFMZSxFQU1mLFVBTmUsRUFPZixTQVBlLENBQWpCOztBQ0RBLElBQUkrSyxvQkFBa0IsR0FBR3RLLGtCQUF6Qjs7QUFDQSxJQUFJdUssYUFBVyxHQUFHdkssYUFBbEI7O0FBRUEsSUFBSWdILFlBQVUsR0FBR3VELGFBQVcsQ0FBQ0MsTUFBWixDQUFtQixRQUFuQixFQUE2QixXQUE3QixDQUFqQjtBQUdBO0FBQ0E7OzJCQUNBLEdBQVl2SyxNQUFNLENBQUN3SyxtQkFBUCxJQUE4QixTQUFTQSxtQkFBVCxDQUE2QnhFLENBQTdCLEVBQWdDO0FBQ3hFLFNBQU9xRSxvQkFBa0IsQ0FBQ3JFLENBQUQsRUFBSWUsWUFBSixDQUF6QjtBQUNEOzs7O0FDVkQ7NkJBQ0EsR0FBWS9HLE1BQU0sQ0FBQ3VDOztBQ0RuQixJQUFJVCxZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJMEssMkJBQXlCLEdBQUcxSyx5QkFBaEM7O0FBQ0EsSUFBSTJLLDZCQUEyQixHQUFHM0ssMkJBQWxDOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOzs7SUFHQVQsU0FBQSxHQUFpQndDLFlBQVUsQ0FBQyxTQUFELEVBQVksU0FBWixDQUFWLElBQW9DLFNBQVM2SSxPQUFULENBQWlCdkwsRUFBakIsRUFBcUI7QUFDeEUsTUFBSXVILElBQUksR0FBRzhELDJCQUF5QixDQUFDeEUsQ0FBMUIsQ0FBNEJDLFdBQVEsQ0FBQzlHLEVBQUQsQ0FBcEMsQ0FBWDtBQUNBLE1BQUltRCxxQkFBcUIsR0FBR21JLDZCQUEyQixDQUFDekUsQ0FBeEQ7QUFDQSxTQUFPMUQscUJBQXFCLEdBQUdvRSxJQUFJLENBQUM0RCxNQUFMLENBQVloSSxxQkFBcUIsQ0FBQ25ELEVBQUQsQ0FBakMsQ0FBSCxHQUE0Q3VILElBQXhFO0FBQ0QsQ0FKRDs7QUNOQSxJQUFJeEMsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSTRLLFNBQU8sR0FBRzVLLFNBQWQ7O0FBQ0EsSUFBSTZLLGdDQUE4QixHQUFHN0ssOEJBQXJDOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjs7SUFFQVQsMkJBQUEsR0FBaUIsVUFBVXVMLE1BQVYsRUFBa0IvQixNQUFsQixFQUEwQjtBQUN6QyxNQUFJbkMsSUFBSSxHQUFHZ0UsU0FBTyxDQUFDN0IsTUFBRCxDQUFsQjtBQUNBLE1BQUk3SSxjQUFjLEdBQUdvRyxzQkFBb0IsQ0FBQ0osQ0FBMUM7QUFDQSxNQUFJNUYsd0JBQXdCLEdBQUd1SyxnQ0FBOEIsQ0FBQzNFLENBQTlEOztBQUNBLE9BQUssSUFBSW1FLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd6RCxJQUFJLENBQUM5RSxNQUF6QixFQUFpQ3VJLENBQUMsRUFBbEMsRUFBc0M7QUFDcEMsUUFBSTFHLEdBQUcsR0FBR2lELElBQUksQ0FBQ3lELENBQUQsQ0FBZDtBQUNBLFFBQUksQ0FBQ2pHLFFBQU0sQ0FBQzBHLE1BQUQsRUFBU25ILEdBQVQsQ0FBWCxFQUEwQnpELGNBQWMsQ0FBQzRLLE1BQUQsRUFBU25ILEdBQVQsRUFBY3JELHdCQUF3QixDQUFDeUksTUFBRCxFQUFTcEYsR0FBVCxDQUF0QyxDQUFkO0FBQzNCO0FBQ0YsQ0FSRDs7QUNMQSxJQUFJNUQsUUFBSyxHQUFHQyxRQUFaOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFFQSxJQUFJK0ssV0FBVyxHQUFHLGlCQUFsQjs7QUFFQSxJQUFJQyxVQUFRLEdBQUcsVUFBVUMsT0FBVixFQUFtQkMsU0FBbkIsRUFBOEI7QUFDM0MsTUFBSXJLLEtBQUssR0FBR3NLLElBQUksQ0FBQ0MsV0FBUyxDQUFDSCxPQUFELENBQVYsQ0FBaEI7QUFDQSxTQUFPcEssS0FBSyxJQUFJd0ssUUFBVCxHQUFvQixJQUFwQixHQUNIeEssS0FBSyxJQUFJeUssTUFBVCxHQUFrQixLQUFsQixHQUNBN0osWUFBVSxDQUFDeUosU0FBRCxDQUFWLEdBQXdCbkwsUUFBSyxDQUFDbUwsU0FBRCxDQUE3QixHQUNBLENBQUMsQ0FBQ0EsU0FITjtBQUlELENBTkQ7O0FBUUEsSUFBSUUsV0FBUyxHQUFHSixVQUFRLENBQUNJLFNBQVQsR0FBcUIsVUFBVUcsTUFBVixFQUFrQjtBQUNyRCxTQUFPNUksTUFBTSxDQUFDNEksTUFBRCxDQUFOLENBQWV6QyxPQUFmLENBQXVCaUMsV0FBdkIsRUFBb0MsR0FBcEMsRUFBeUNTLFdBQXpDLEVBQVA7QUFDRCxDQUZEOztBQUlBLElBQUlMLElBQUksR0FBR0gsVUFBUSxDQUFDRyxJQUFULEdBQWdCLEVBQTNCO0FBQ0EsSUFBSUcsTUFBTSxHQUFHTixVQUFRLENBQUNNLE1BQVQsR0FBa0IsR0FBL0I7QUFDQSxJQUFJRCxRQUFRLEdBQUdMLFVBQVEsQ0FBQ0ssUUFBVCxHQUFvQixHQUFuQztJQUVBOUwsVUFBQSxHQUFpQnlMLFVBQWpCOztBQ3JCQSxJQUFJckwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUlNLDBCQUF3QixHQUFHTiw4QkFBQSxDQUEyRGtHLENBQTFGOztBQUNBLElBQUlZLDZCQUEyQixHQUFHOUcsNkJBQWxDOztBQUNBLElBQUl5TCxVQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJNEQsU0FBUyxHQUFHNUQsV0FBaEI7O0FBQ0EsSUFBSTBMLDJCQUF5QixHQUFHMUwsMkJBQWhDOztBQUNBLElBQUlnTCxVQUFRLEdBQUdoTCxVQUFmO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7SUFDQVQsT0FBQSxHQUFpQixVQUFVbUosT0FBVixFQUFtQkssTUFBbkIsRUFBMkI7QUFDMUMsTUFBSTRDLE1BQU0sR0FBR2pELE9BQU8sQ0FBQ29DLE1BQXJCO0FBQ0EsTUFBSWMsTUFBTSxHQUFHbEQsT0FBTyxDQUFDL0ksTUFBckI7QUFDQSxNQUFJa00sTUFBTSxHQUFHbkQsT0FBTyxDQUFDb0QsSUFBckI7QUFDQSxNQUFJQyxNQUFKLEVBQVlqQixNQUFaLEVBQW9CbkgsR0FBcEIsRUFBeUJxSSxjQUF6QixFQUF5Q0MsY0FBekMsRUFBeUR2TCxVQUF6RDs7QUFDQSxNQUFJa0wsTUFBSixFQUFZO0FBQ1ZkLElBQUFBLE1BQU0sR0FBR25MLFFBQVQ7QUFDRCxHQUZELE1BRU8sSUFBSWtNLE1BQUosRUFBWTtBQUNqQmYsSUFBQUEsTUFBTSxHQUFHbkwsUUFBTSxDQUFDZ00sTUFBRCxDQUFOLElBQWtCL0gsU0FBUyxDQUFDK0gsTUFBRCxFQUFTLEVBQVQsQ0FBcEM7QUFDRCxHQUZNLE1BRUE7QUFDTGIsSUFBQUEsTUFBTSxHQUFHLENBQUNuTCxRQUFNLENBQUNnTSxNQUFELENBQU4sSUFBa0IsRUFBbkIsRUFBdUIzRCxTQUFoQztBQUNEOztBQUNELE1BQUk4QyxNQUFKLEVBQVksS0FBS25ILEdBQUwsSUFBWW9GLE1BQVosRUFBb0I7QUFDOUJrRCxJQUFBQSxjQUFjLEdBQUdsRCxNQUFNLENBQUNwRixHQUFELENBQXZCOztBQUNBLFFBQUkrRSxPQUFPLENBQUNHLFdBQVosRUFBeUI7QUFDdkJuSSxNQUFBQSxVQUFVLEdBQUdKLDBCQUF3QixDQUFDd0ssTUFBRCxFQUFTbkgsR0FBVCxDQUFyQztBQUNBcUksTUFBQUEsY0FBYyxHQUFHdEwsVUFBVSxJQUFJQSxVQUFVLENBQUNHLEtBQTFDO0FBQ0QsS0FIRCxNQUdPbUwsY0FBYyxHQUFHbEIsTUFBTSxDQUFDbkgsR0FBRCxDQUF2Qjs7QUFDUG9JLElBQUFBLE1BQU0sR0FBR2YsVUFBUSxDQUFDWSxNQUFNLEdBQUdqSSxHQUFILEdBQVNnSSxNQUFNLElBQUlFLE1BQU0sR0FBRyxHQUFILEdBQVMsR0FBbkIsQ0FBTixHQUFnQ2xJLEdBQWhELEVBQXFEK0UsT0FBTyxDQUFDd0QsTUFBN0QsQ0FBakIsQ0FOOEI7O0FBUTlCLFFBQUksQ0FBQ0gsTUFBRCxJQUFXQyxjQUFjLEtBQUs1SyxTQUFsQyxFQUE2QztBQUMzQyxVQUFJLE9BQU82SyxjQUFQLEtBQTBCLE9BQU9ELGNBQXJDLEVBQXFEO0FBQ3JETixNQUFBQSwyQkFBeUIsQ0FBQ08sY0FBRCxFQUFpQkQsY0FBakIsQ0FBekI7QUFDRCxLQVg2Qjs7O0FBYTlCLFFBQUl0RCxPQUFPLENBQUM5RixJQUFSLElBQWlCb0osY0FBYyxJQUFJQSxjQUFjLENBQUNwSixJQUF0RCxFQUE2RDtBQUMzRGtFLE1BQUFBLDZCQUEyQixDQUFDbUYsY0FBRCxFQUFpQixNQUFqQixFQUF5QixJQUF6QixDQUEzQjtBQUNELEtBZjZCOzs7QUFpQjlCUixJQUFBQSxVQUFRLENBQUNYLE1BQUQsRUFBU25ILEdBQVQsRUFBY3NJLGNBQWQsRUFBOEJ2RCxPQUE5QixDQUFSO0FBQ0Q7QUFDRixDQS9CRDs7QUN2QkEsSUFBSXhILFNBQU8sR0FBR2xCLFlBQWQ7QUFHQTtBQUNBOzs7SUFDQVQsU0FBQSxHQUFpQjRNLEtBQUssQ0FBQ0MsT0FBTixJQUFpQixTQUFTQSxPQUFULENBQWlCNUssUUFBakIsRUFBMkI7QUFDM0QsU0FBT04sU0FBTyxDQUFDTSxRQUFELENBQVAsSUFBcUIsT0FBNUI7QUFDRCxDQUZEOztBQ0xBLElBQUl5RCxpQkFBZSxHQUFHakYsaUJBQXRCOztBQUVBLElBQUlxTSxlQUFhLEdBQUdwSCxpQkFBZSxDQUFDLGFBQUQsQ0FBbkM7QUFDQSxJQUFJMEIsTUFBSSxHQUFHLEVBQVg7QUFFQUEsTUFBSSxDQUFDMEYsZUFBRCxDQUFKLEdBQXNCLEdBQXRCO0lBRUE5TSxrQkFBQSxHQUFpQm9ELE1BQU0sQ0FBQ2dFLE1BQUQsQ0FBTixLQUFpQixZQUFsQzs7QUNQQSxJQUFJMkYsdUJBQXFCLEdBQUd0TSxrQkFBNUI7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUl1TSxVQUFVLEdBQUd2TSxZQUFqQjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJcU0sZUFBYSxHQUFHcEgsaUJBQWUsQ0FBQyxhQUFELENBQW5DOztBQUVBLElBQUl1SCxpQkFBaUIsR0FBR0QsVUFBVSxDQUFDLFlBQVk7QUFBRSxTQUFPMUssU0FBUDtBQUFtQixDQUFqQyxFQUFELENBQVYsSUFBbUQsV0FBM0U7O0FBR0EsSUFBSTRLLE1BQU0sR0FBRyxVQUFVcE4sRUFBVixFQUFjc0UsR0FBZCxFQUFtQjtBQUM5QixNQUFJO0FBQ0YsV0FBT3RFLEVBQUUsQ0FBQ3NFLEdBQUQsQ0FBVDtBQUNELEdBRkQsQ0FFRSxPQUFPN0QsS0FBUCxFQUFjO0FBQUU7QUFBYTtBQUNoQyxDQUpEOzs7SUFPQVAsU0FBQSxHQUFpQitNLHVCQUFxQixHQUFHQyxVQUFILEdBQWdCLFVBQVVsTixFQUFWLEVBQWM7QUFDbEUsTUFBSTRHLENBQUosRUFBT3lHLEdBQVAsRUFBWXRILE1BQVo7QUFDQSxTQUFPL0YsRUFBRSxLQUFLK0IsU0FBUCxHQUFtQixXQUFuQixHQUFpQy9CLEVBQUUsS0FBSyxJQUFQLEdBQWMsTUFBZDtBQUFBLElBRXBDLFFBQVFxTixHQUFHLEdBQUdELE1BQU0sQ0FBQ3hHLENBQUMsR0FBR2hHLE1BQU0sQ0FBQ1osRUFBRCxDQUFYLEVBQWlCZ04sZUFBakIsQ0FBcEIsS0FBd0QsUUFBeEQsR0FBbUVLLEdBQW5FO0FBQUEsSUFFQUYsaUJBQWlCLEdBQUdELFVBQVUsQ0FBQ3RHLENBQUQsQ0FBYjtBQUFBLElBRWpCLENBQUNiLE1BQU0sR0FBR21ILFVBQVUsQ0FBQ3RHLENBQUQsQ0FBcEIsS0FBNEIsUUFBNUIsSUFBd0N4RSxZQUFVLENBQUN3RSxDQUFDLENBQUMwRyxNQUFILENBQWxELEdBQStELFdBQS9ELEdBQTZFdkgsTUFOakY7QUFPRCxDQVREOztBQ2pCQSxJQUFJbEUsU0FBTyxHQUFHbEIsU0FBZDs7SUFFQVQsVUFBQSxHQUFpQixVQUFVaUMsUUFBVixFQUFvQjtBQUNuQyxNQUFJTixTQUFPLENBQUNNLFFBQUQsQ0FBUCxLQUFzQixRQUExQixFQUFvQyxNQUFNSCxTQUFTLENBQUMsMkNBQUQsQ0FBZjtBQUNwQyxTQUFPc0IsTUFBTSxDQUFDbkIsUUFBRCxDQUFiO0FBQ0QsQ0FIRDs7QUNGQSxJQUFJOEksa0JBQWtCLEdBQUd0SyxrQkFBekI7O0FBQ0EsSUFBSXVLLGFBQVcsR0FBR3ZLLGFBQWxCO0FBR0E7QUFDQTs7O0lBQ0FULFlBQUEsR0FBaUJVLE1BQU0sQ0FBQzJHLElBQVAsSUFBZSxTQUFTQSxJQUFULENBQWNYLENBQWQsRUFBaUI7QUFDL0MsU0FBT3FFLGtCQUFrQixDQUFDckUsQ0FBRCxFQUFJc0UsYUFBSixDQUF6QjtBQUNELENBRkQ7O0FDTkEsSUFBSTlFLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNE0sWUFBVSxHQUFHNU0sWUFBakI7QUFHQTtBQUNBOzs7SUFDQVQsc0JBQUEsR0FBaUJrRyxhQUFXLEdBQUd4RixNQUFNLENBQUM0TSxnQkFBVixHQUE2QixTQUFTQSxnQkFBVCxDQUEwQjVHLENBQTFCLEVBQTZCNkcsVUFBN0IsRUFBeUM7QUFDaEczRyxFQUFBQSxXQUFRLENBQUNGLENBQUQsQ0FBUjtBQUNBLE1BQUlXLElBQUksR0FBR2dHLFlBQVUsQ0FBQ0UsVUFBRCxDQUFyQjtBQUNBLE1BQUloTCxNQUFNLEdBQUc4RSxJQUFJLENBQUM5RSxNQUFsQjtBQUNBLE1BQUl5SCxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUk1RixHQUFKOztBQUNBLFNBQU83QixNQUFNLEdBQUd5SCxLQUFoQixFQUF1QmpELHNCQUFvQixDQUFDSixDQUFyQixDQUF1QkQsQ0FBdkIsRUFBMEJ0QyxHQUFHLEdBQUdpRCxJQUFJLENBQUMyQyxLQUFLLEVBQU4sQ0FBcEMsRUFBK0N1RCxVQUFVLENBQUNuSixHQUFELENBQXpEOztBQUN2QixTQUFPc0MsQ0FBUDtBQUNELENBUkQ7O0FDUkEsSUFBSWxFLFlBQVUsR0FBRy9CLFlBQWpCOztJQUVBVCxNQUFBLEdBQWlCd0MsWUFBVSxDQUFDLFVBQUQsRUFBYSxpQkFBYixDQUEzQjs7OztBQ0RBLElBQUlvRSxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUk2TSxrQkFBZ0IsR0FBRzdNLHNCQUF2Qjs7QUFDQSxJQUFJdUssV0FBVyxHQUFHdkssYUFBbEI7O0FBQ0EsSUFBSWdILFlBQVUsR0FBR2hILFlBQWpCOztBQUNBLElBQUkrTSxNQUFJLEdBQUcvTSxNQUFYOztBQUNBLElBQUlnTix1QkFBcUIsR0FBR2hOLHVCQUE1Qjs7QUFDQSxJQUFJK0csV0FBUyxHQUFHL0csV0FBaEI7O0FBRUEsSUFBSWlOLEVBQUUsR0FBRyxHQUFUO0FBQ0EsSUFBSUMsRUFBRSxHQUFHLEdBQVQ7QUFDQSxJQUFJQyxXQUFTLEdBQUcsV0FBaEI7QUFDQSxJQUFJQyxNQUFNLEdBQUcsUUFBYjtBQUNBLElBQUlDLFVBQVEsR0FBR3RHLFdBQVMsQ0FBQyxVQUFELENBQXhCOztBQUVBLElBQUl1RyxnQkFBZ0IsR0FBRyxZQUFZO0FBQUU7QUFBYSxDQUFsRDs7QUFFQSxJQUFJQyxTQUFTLEdBQUcsVUFBVUMsT0FBVixFQUFtQjtBQUNqQyxTQUFPTixFQUFFLEdBQUdFLE1BQUwsR0FBY0gsRUFBZCxHQUFtQk8sT0FBbkIsR0FBNkJOLEVBQTdCLEdBQWtDLEdBQWxDLEdBQXdDRSxNQUF4QyxHQUFpREgsRUFBeEQ7QUFDRCxDQUZEOzs7QUFLQSxJQUFJUSx5QkFBeUIsR0FBRyxVQUFVQyxlQUFWLEVBQTJCO0FBQ3pEQSxFQUFBQSxlQUFlLENBQUNDLEtBQWhCLENBQXNCSixTQUFTLENBQUMsRUFBRCxDQUEvQjtBQUNBRyxFQUFBQSxlQUFlLENBQUNFLEtBQWhCO0FBQ0EsTUFBSUMsSUFBSSxHQUFHSCxlQUFlLENBQUNJLFlBQWhCLENBQTZCN04sTUFBeEM7QUFDQXlOLEVBQUFBLGVBQWUsR0FBRyxJQUFsQixDQUp5RDs7QUFLekQsU0FBT0csSUFBUDtBQUNELENBTkQ7OztBQVNBLElBQUlFLHdCQUF3QixHQUFHLFlBQVk7QUFDekM7QUFDQSxNQUFJQyxNQUFNLEdBQUdoQix1QkFBcUIsQ0FBQyxRQUFELENBQWxDO0FBQ0EsTUFBSWlCLEVBQUUsR0FBRyxTQUFTYixNQUFULEdBQWtCLEdBQTNCO0FBQ0EsTUFBSWMsY0FBSjtBQUNBRixFQUFBQSxNQUFNLENBQUNHLEtBQVAsQ0FBYUMsT0FBYixHQUF1QixNQUF2QjtBQUNBckIsRUFBQUEsTUFBSSxDQUFDc0IsV0FBTCxDQUFpQkwsTUFBakIsRUFOeUM7O0FBUXpDQSxFQUFBQSxNQUFNLENBQUNNLEdBQVAsR0FBYTNMLE1BQU0sQ0FBQ3NMLEVBQUQsQ0FBbkI7QUFDQUMsRUFBQUEsY0FBYyxHQUFHRixNQUFNLENBQUNPLGFBQVAsQ0FBcUJqSixRQUF0QztBQUNBNEksRUFBQUEsY0FBYyxDQUFDTSxJQUFmO0FBQ0FOLEVBQUFBLGNBQWMsQ0FBQ1AsS0FBZixDQUFxQkosU0FBUyxDQUFDLG1CQUFELENBQTlCO0FBQ0FXLEVBQUFBLGNBQWMsQ0FBQ04sS0FBZjtBQUNBLFNBQU9NLGNBQWMsQ0FBQ08sQ0FBdEI7QUFDRCxDQWREO0FBaUJBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJZixlQUFKOztBQUNBLElBQUlnQixlQUFlLEdBQUcsWUFBWTtBQUNoQyxNQUFJO0FBQ0ZoQixJQUFBQSxlQUFlLEdBQUcsSUFBSWlCLGFBQUosQ0FBa0IsVUFBbEIsQ0FBbEI7QUFDRCxHQUZELENBRUUsT0FBTzdPLEtBQVAsRUFBYztBQUFFO0FBQWM7O0FBQ2hDNE8sRUFBQUEsZUFBZSxHQUFHLE9BQU9wSixRQUFQLElBQW1CLFdBQW5CLEdBQ2RBLFFBQVEsQ0FBQ3NKLE1BQVQsSUFBbUJsQixlQUFuQixHQUNFRCx5QkFBeUIsQ0FBQ0MsZUFBRCxDQUQzQjtBQUFBLElBRUVLLHdCQUF3QixFQUhaLEdBSWROLHlCQUF5QixDQUFDQyxlQUFELENBSjdCLENBSmdDOztBQVNoQyxNQUFJNUwsTUFBTSxHQUFHeUksV0FBVyxDQUFDekksTUFBekI7O0FBQ0EsU0FBT0EsTUFBTSxFQUFiLEVBQWlCLE9BQU80TSxlQUFlLENBQUN2QixXQUFELENBQWYsQ0FBMkI1QyxXQUFXLENBQUN6SSxNQUFELENBQXRDLENBQVA7O0FBQ2pCLFNBQU80TSxlQUFlLEVBQXRCO0FBQ0QsQ0FaRDs7QUFjQTFILFlBQVUsQ0FBQ3FHLFVBQUQsQ0FBVixHQUF1QixJQUF2QjtBQUdBOztJQUNBOU4sY0FBQSxHQUFpQlUsTUFBTSxDQUFDNE8sTUFBUCxJQUFpQixTQUFTQSxNQUFULENBQWdCNUksQ0FBaEIsRUFBbUI2RyxVQUFuQixFQUErQjtBQUMvRCxNQUFJMUgsTUFBSjs7QUFDQSxNQUFJYSxDQUFDLEtBQUssSUFBVixFQUFnQjtBQUNkcUgsSUFBQUEsZ0JBQWdCLENBQUNILFdBQUQsQ0FBaEIsR0FBOEJoSCxXQUFRLENBQUNGLENBQUQsQ0FBdEM7QUFDQWIsSUFBQUEsTUFBTSxHQUFHLElBQUlrSSxnQkFBSixFQUFUO0FBQ0FBLElBQUFBLGdCQUFnQixDQUFDSCxXQUFELENBQWhCLEdBQThCLElBQTlCLENBSGM7O0FBS2QvSCxJQUFBQSxNQUFNLENBQUNpSSxVQUFELENBQU4sR0FBbUJwSCxDQUFuQjtBQUNELEdBTkQsTUFNT2IsTUFBTSxHQUFHc0osZUFBZSxFQUF4Qjs7QUFDUCxTQUFPNUIsVUFBVSxLQUFLMUwsU0FBZixHQUEyQmdFLE1BQTNCLEdBQW9DeUgsa0JBQWdCLENBQUN6SCxNQUFELEVBQVMwSCxVQUFULENBQTNEO0FBQ0QsQ0FWRDs7Ozs7O0FDdEVBLElBQUlqSCxpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUk4TyxzQkFBb0IsR0FBRzlPLHlCQUFBLENBQXNEa0csQ0FBakY7O0FBRUEsSUFBSWxGLFVBQVEsR0FBRyxHQUFHQSxRQUFsQjtBQUVBLElBQUkrTixXQUFXLEdBQUcsT0FBT3RQLE1BQVAsSUFBaUIsUUFBakIsSUFBNkJBLE1BQTdCLElBQXVDUSxNQUFNLENBQUN3SyxtQkFBOUMsR0FDZHhLLE1BQU0sQ0FBQ3dLLG1CQUFQLENBQTJCaEwsTUFBM0IsQ0FEYyxHQUN1QixFQUR6Qzs7QUFHQSxJQUFJdVAsY0FBYyxHQUFHLFVBQVUzUCxFQUFWLEVBQWM7QUFDakMsTUFBSTtBQUNGLFdBQU95UCxzQkFBb0IsQ0FBQ3pQLEVBQUQsQ0FBM0I7QUFDRCxHQUZELENBRUUsT0FBT1MsS0FBUCxFQUFjO0FBQ2QsV0FBT2lQLFdBQVcsQ0FBQzlOLEtBQVosRUFBUDtBQUNEO0FBQ0YsQ0FORDs7O21DQVNBLEdBQW1CLFNBQVN3SixtQkFBVCxDQUE2QnBMLEVBQTdCLEVBQWlDO0FBQ2xELFNBQU8wUCxXQUFXLElBQUkvTixVQUFRLENBQUNSLElBQVQsQ0FBY25CLEVBQWQsS0FBcUIsaUJBQXBDLEdBQ0gyUCxjQUFjLENBQUMzUCxFQUFELENBRFgsR0FFSHlQLHNCQUFvQixDQUFDakosaUJBQWUsQ0FBQ3hHLEVBQUQsQ0FBaEIsQ0FGeEI7QUFHRDs7OztBQ3RCRCxJQUFJNEYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7d0JBRUEsR0FBWWlGOztBQ0ZaLElBQUl0RixRQUFNLEdBQUdLLFFBQWI7O0lBRUFULE1BQUEsR0FBaUJJLFFBQWpCOztBQ0ZBLElBQUlzUCxJQUFJLEdBQUdqUCxNQUFYOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJa1AsOEJBQTRCLEdBQUdsUCxzQkFBbkM7O0FBQ0EsSUFBSUUsZ0JBQWMsR0FBR0Ysb0JBQUEsQ0FBK0NrRyxDQUFwRTs7SUFFQTNHLHVCQUFBLEdBQWlCLFVBQVU0UCxJQUFWLEVBQWdCO0FBQy9CLE1BQUl6TSxNQUFNLEdBQUd1TSxJQUFJLENBQUN2TSxNQUFMLEtBQWdCdU0sSUFBSSxDQUFDdk0sTUFBTCxHQUFjLEVBQTlCLENBQWI7QUFDQSxNQUFJLENBQUMwQixRQUFNLENBQUMxQixNQUFELEVBQVN5TSxJQUFULENBQVgsRUFBMkJqUCxnQkFBYyxDQUFDd0MsTUFBRCxFQUFTeU0sSUFBVCxFQUFlO0FBQ3REdE8sSUFBQUEsS0FBSyxFQUFFcU8sOEJBQTRCLENBQUNoSixDQUE3QixDQUErQmlKLElBQS9CO0FBRCtDLEdBQWYsQ0FBZDtBQUc1QixDQUxEOztBQ0xBLElBQUlqUCxnQkFBYyxHQUFHRixvQkFBQSxDQUErQ2tHLENBQXBFOztBQUNBLElBQUk5QixRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJcU0sZUFBYSxHQUFHcEgsaUJBQWUsQ0FBQyxhQUFELENBQW5DOztJQUVBMUYsZ0JBQUEsR0FBaUIsVUFBVUYsRUFBVixFQUFjK1AsR0FBZCxFQUFtQnZELE1BQW5CLEVBQTJCO0FBQzFDLE1BQUl4TSxFQUFFLElBQUksQ0FBQytFLFFBQU0sQ0FBQy9FLEVBQUUsR0FBR3dNLE1BQU0sR0FBR3hNLEVBQUgsR0FBUUEsRUFBRSxDQUFDMkksU0FBdkIsRUFBa0NxRSxlQUFsQyxDQUFqQixFQUFtRTtBQUNqRW5NLElBQUFBLGdCQUFjLENBQUNiLEVBQUQsRUFBS2dOLGVBQUwsRUFBb0I7QUFBRXZMLE1BQUFBLFlBQVksRUFBRSxJQUFoQjtBQUFzQkQsTUFBQUEsS0FBSyxFQUFFdU87QUFBN0IsS0FBcEIsQ0FBZDtBQUNEO0FBQ0YsQ0FKRDs7QUNOQSxJQUFJbE0sV0FBUyxHQUFHbEQsV0FBaEI7OztJQUdBVCxtQkFBQSxHQUFpQixVQUFVaUUsRUFBVixFQUFjNkwsSUFBZCxFQUFvQnZOLE1BQXBCLEVBQTRCO0FBQzNDb0IsRUFBQUEsV0FBUyxDQUFDTSxFQUFELENBQVQ7QUFDQSxNQUFJNkwsSUFBSSxLQUFLak8sU0FBYixFQUF3QixPQUFPb0MsRUFBUDs7QUFDeEIsVUFBUTFCLE1BQVI7QUFDRSxTQUFLLENBQUw7QUFBUSxhQUFPLFlBQVk7QUFDekIsZUFBTzBCLEVBQUUsQ0FBQ2hELElBQUgsQ0FBUTZPLElBQVIsQ0FBUDtBQUNELE9BRk87O0FBR1IsU0FBSyxDQUFMO0FBQVEsYUFBTyxVQUFVM0osQ0FBVixFQUFhO0FBQzFCLGVBQU9sQyxFQUFFLENBQUNoRCxJQUFILENBQVE2TyxJQUFSLEVBQWMzSixDQUFkLENBQVA7QUFDRCxPQUZPOztBQUdSLFNBQUssQ0FBTDtBQUFRLGFBQU8sVUFBVUEsQ0FBVixFQUFhNEosQ0FBYixFQUFnQjtBQUM3QixlQUFPOUwsRUFBRSxDQUFDaEQsSUFBSCxDQUFRNk8sSUFBUixFQUFjM0osQ0FBZCxFQUFpQjRKLENBQWpCLENBQVA7QUFDRCxPQUZPOztBQUdSLFNBQUssQ0FBTDtBQUFRLGFBQU8sVUFBVTVKLENBQVYsRUFBYTRKLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CO0FBQ2hDLGVBQU8vTCxFQUFFLENBQUNoRCxJQUFILENBQVE2TyxJQUFSLEVBQWMzSixDQUFkLEVBQWlCNEosQ0FBakIsRUFBb0JDLENBQXBCLENBQVA7QUFDRCxPQUZPO0FBVlY7O0FBY0EsU0FBTyxZQUF5QjtBQUM5QixXQUFPL0wsRUFBRSxDQUFDZ00sS0FBSCxDQUFTSCxJQUFULEVBQWV4TixTQUFmLENBQVA7QUFDRCxHQUZEO0FBR0QsQ0FwQkQ7O0FDSEEsSUFBSTlCLE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSWtCLFNBQU8sR0FBR2xCLFNBQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUl5RyxlQUFhLEdBQUd6RyxlQUFwQjs7QUFFQSxJQUFJeVAsT0FBSyxHQUFHLEVBQVo7QUFDQSxJQUFJQyxXQUFTLEdBQUczTixZQUFVLENBQUMsU0FBRCxFQUFZLFdBQVosQ0FBMUI7QUFDQSxJQUFJNE4saUJBQWlCLEdBQUcsMEJBQXhCO0FBQ0EsSUFBSTlQLE1BQUksR0FBRzhQLGlCQUFpQixDQUFDOVAsSUFBN0I7QUFDQSxJQUFJK1AsbUJBQW1CLEdBQUcsQ0FBQ0QsaUJBQWlCLENBQUM5UCxJQUFsQixDQUF1QixZQUFZO0FBQUU7QUFBYSxDQUFsRCxDQUEzQjs7QUFFQSxJQUFJZ1EsbUJBQW1CLEdBQUcsVUFBVXJPLFFBQVYsRUFBb0I7QUFDNUMsTUFBSSxDQUFDQyxZQUFVLENBQUNELFFBQUQsQ0FBZixFQUEyQixPQUFPLEtBQVA7O0FBQzNCLE1BQUk7QUFDRmtPLElBQUFBLFdBQVMsQ0FBQ3pQLE1BQUQsRUFBU3dQLE9BQVQsRUFBZ0JqTyxRQUFoQixDQUFUO0FBQ0EsV0FBTyxJQUFQO0FBQ0QsR0FIRCxDQUdFLE9BQU8xQixLQUFQLEVBQWM7QUFDZCxXQUFPLEtBQVA7QUFDRDtBQUNGLENBUkQ7O0FBVUEsSUFBSWdRLG1CQUFtQixHQUFHLFVBQVV0TyxRQUFWLEVBQW9CO0FBQzVDLE1BQUksQ0FBQ0MsWUFBVSxDQUFDRCxRQUFELENBQWYsRUFBMkIsT0FBTyxLQUFQOztBQUMzQixVQUFRTixTQUFPLENBQUNNLFFBQUQsQ0FBZjtBQUNFLFNBQUssZUFBTDtBQUNBLFNBQUssbUJBQUw7QUFDQSxTQUFLLHdCQUFMO0FBQStCLGFBQU8sS0FBUDtBQUMvQjtBQUpGOztBQUtFLFNBQU9vTyxtQkFBbUIsSUFBSSxDQUFDLENBQUMvUCxNQUFJLENBQUNXLElBQUwsQ0FBVW1QLGlCQUFWLEVBQTZCbEosZUFBYSxDQUFDakYsUUFBRCxDQUExQyxDQUFoQztBQUNILENBUkQ7QUFXQTs7O0lBQ0FqQyxlQUFBLEdBQWlCLENBQUNtUSxXQUFELElBQWMzUCxPQUFLLENBQUMsWUFBWTtBQUMvQyxNQUFJZ1EsTUFBSjtBQUNBLFNBQU9GLG1CQUFtQixDQUFDQSxtQkFBbUIsQ0FBQ3JQLElBQXJCLENBQW5CLElBQ0YsQ0FBQ3FQLG1CQUFtQixDQUFDNVAsTUFBRCxDQURsQixJQUVGLENBQUM0UCxtQkFBbUIsQ0FBQyxZQUFZO0FBQUVFLElBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQWdCLEdBQS9CLENBRmxCLElBR0ZBLE1BSEw7QUFJRCxDQU5tQyxDQUFuQixHQU1aRCxtQkFOWSxHQU1VRCxtQkFOM0I7O0FDbENBLElBQUl6RCxTQUFPLEdBQUdwTSxTQUFkOztBQUNBLElBQUlnUSxlQUFhLEdBQUdoUSxlQUFwQjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJaVEsU0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCO0FBR0E7O0lBQ0ExRix5QkFBQSxHQUFpQixVQUFVMlEsYUFBVixFQUF5QjtBQUN4QyxNQUFJQyxDQUFKOztBQUNBLE1BQUkvRCxTQUFPLENBQUM4RCxhQUFELENBQVgsRUFBNEI7QUFDMUJDLElBQUFBLENBQUMsR0FBR0QsYUFBYSxDQUFDRSxXQUFsQixDQUQwQjs7QUFHMUIsUUFBSUosZUFBYSxDQUFDRyxDQUFELENBQWIsS0FBcUJBLENBQUMsS0FBS2hFLEtBQU4sSUFBZUMsU0FBTyxDQUFDK0QsQ0FBQyxDQUFDbkksU0FBSCxDQUEzQyxDQUFKLEVBQStEbUksQ0FBQyxHQUFHL08sU0FBSixDQUEvRCxLQUNLLElBQUlpQyxVQUFRLENBQUM4TSxDQUFELENBQVosRUFBaUI7QUFDcEJBLE1BQUFBLENBQUMsR0FBR0EsQ0FBQyxDQUFDRixTQUFELENBQUw7QUFDQSxVQUFJRSxDQUFDLEtBQUssSUFBVixFQUFnQkEsQ0FBQyxHQUFHL08sU0FBSjtBQUNqQjtBQUNGOztBQUFDLFNBQU8rTyxDQUFDLEtBQUsvTyxTQUFOLEdBQWtCK0ssS0FBbEIsR0FBMEJnRSxDQUFqQztBQUNILENBWEQ7O0FDVEEsSUFBSUUseUJBQXVCLEdBQUdyUSx5QkFBOUI7QUFHQTs7O0lBQ0FULG9CQUFBLEdBQWlCLFVBQVUyUSxhQUFWLEVBQXlCcE8sTUFBekIsRUFBaUM7QUFDaEQsU0FBTyxLQUFLdU8seUJBQXVCLENBQUNILGFBQUQsQ0FBNUIsRUFBNkNwTyxNQUFNLEtBQUssQ0FBWCxHQUFlLENBQWYsR0FBbUJBLE1BQWhFLENBQVA7QUFDRCxDQUZEOztBQ0pBLElBQUl3TyxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJc0IsZUFBYSxHQUFHdEIsYUFBcEI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUl1USxvQkFBa0IsR0FBR3ZRLG9CQUF6Qjs7QUFFQSxJQUFJK0QsTUFBSSxHQUFHLEdBQUdBLElBQWQ7O0FBR0EsSUFBSThGLGNBQVksR0FBRyxVQUFVdkMsSUFBVixFQUFnQjtBQUNqQyxNQUFJa0osTUFBTSxHQUFHbEosSUFBSSxJQUFJLENBQXJCO0FBQ0EsTUFBSW1KLFNBQVMsR0FBR25KLElBQUksSUFBSSxDQUF4QjtBQUNBLE1BQUlvSixPQUFPLEdBQUdwSixJQUFJLElBQUksQ0FBdEI7QUFDQSxNQUFJcUosUUFBUSxHQUFHckosSUFBSSxJQUFJLENBQXZCO0FBQ0EsTUFBSXNKLGFBQWEsR0FBR3RKLElBQUksSUFBSSxDQUE1QjtBQUNBLE1BQUl1SixnQkFBZ0IsR0FBR3ZKLElBQUksSUFBSSxDQUEvQjtBQUNBLE1BQUl3SixRQUFRLEdBQUd4SixJQUFJLElBQUksQ0FBUixJQUFhc0osYUFBNUI7QUFDQSxTQUFPLFVBQVU3RyxLQUFWLEVBQWlCZ0gsVUFBakIsRUFBNkIxQixJQUE3QixFQUFtQzJCLGNBQW5DLEVBQW1EO0FBQ3hELFFBQUkvSyxDQUFDLEdBQUcvQixVQUFRLENBQUM2RixLQUFELENBQWhCO0FBQ0EsUUFBSXJLLElBQUksR0FBRzRCLGVBQWEsQ0FBQzJFLENBQUQsQ0FBeEI7QUFDQSxRQUFJZ0wsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYTFCLElBQWIsRUFBbUIsQ0FBbkIsQ0FBeEI7QUFDQSxRQUFJdk4sTUFBTSxHQUFHOEgsbUJBQWlCLENBQUNsSyxJQUFELENBQTlCO0FBQ0EsUUFBSTZKLEtBQUssR0FBRyxDQUFaO0FBQ0EsUUFBSXNGLE1BQU0sR0FBR21DLGNBQWMsSUFBSVQsb0JBQS9CO0FBQ0EsUUFBSXpGLE1BQU0sR0FBRzBGLE1BQU0sR0FBRzNCLE1BQU0sQ0FBQzlFLEtBQUQsRUFBUWpJLE1BQVIsQ0FBVCxHQUEyQjJPLFNBQVMsSUFBSUksZ0JBQWIsR0FBZ0NoQyxNQUFNLENBQUM5RSxLQUFELEVBQVEsQ0FBUixDQUF0QyxHQUFtRDNJLFNBQWpHO0FBQ0EsUUFBSVAsS0FBSixFQUFXdUUsTUFBWDs7QUFDQSxXQUFNdEQsTUFBTSxHQUFHeUgsS0FBZixFQUFzQkEsS0FBSyxFQUEzQixFQUErQixJQUFJdUgsUUFBUSxJQUFJdkgsS0FBSyxJQUFJN0osSUFBekIsRUFBK0I7QUFDNURtQixNQUFBQSxLQUFLLEdBQUduQixJQUFJLENBQUM2SixLQUFELENBQVo7QUFDQW5FLE1BQUFBLE1BQU0sR0FBRzZMLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUTBJLEtBQVIsRUFBZXRELENBQWYsQ0FBdEI7O0FBQ0EsVUFBSXFCLElBQUosRUFBVTtBQUNSLFlBQUlrSixNQUFKLEVBQVkxRixNQUFNLENBQUN2QixLQUFELENBQU4sR0FBZ0JuRSxNQUFoQixDQUFaO0FBQUEsYUFDSyxJQUFJQSxNQUFKLEVBQVksUUFBUWtDLElBQVI7QUFDZixlQUFLLENBQUw7QUFBUSxtQkFBTyxJQUFQO0FBQTBCOztBQUNsQyxlQUFLLENBQUw7QUFBUSxtQkFBT3pHLEtBQVA7QUFBMEI7O0FBQ2xDLGVBQUssQ0FBTDtBQUFRLG1CQUFPMEksS0FBUDtBQUEwQjs7QUFDbEMsZUFBSyxDQUFMO0FBQVF4RixZQUFBQSxNQUFJLENBQUN2RCxJQUFMLENBQVVzSyxNQUFWLEVBQWtCakssS0FBbEI7QUFBMEI7QUFKbkIsU0FBWixNQUtFLFFBQVF5RyxJQUFSO0FBQ0wsZUFBSyxDQUFMO0FBQVEsbUJBQU8sS0FBUDtBQUEwQjs7QUFDbEMsZUFBSyxDQUFMO0FBQVF2RCxZQUFBQSxNQUFJLENBQUN2RCxJQUFMLENBQVVzSyxNQUFWLEVBQWtCakssS0FBbEI7QUFBMEI7QUFGN0I7QUFJUjtBQUNGOztBQUNELFdBQU8rUCxhQUFhLEdBQUcsQ0FBQyxDQUFKLEdBQVFGLE9BQU8sSUFBSUMsUUFBWCxHQUFzQkEsUUFBdEIsR0FBaUM3RixNQUE3RDtBQUNELEdBMUJEO0FBMkJELENBbkNEOztJQXFDQXZMLGNBQUEsR0FBaUI7QUFDZjtBQUNBO0FBQ0EyUixFQUFBQSxPQUFPLEVBQUVySCxjQUFZLENBQUMsQ0FBRCxDQUhOO0FBSWY7QUFDQTtBQUNBc0gsRUFBQUEsR0FBRyxFQUFFdEgsY0FBWSxDQUFDLENBQUQsQ0FORjtBQU9mO0FBQ0E7QUFDQXVILEVBQUFBLE1BQU0sRUFBRXZILGNBQVksQ0FBQyxDQUFELENBVEw7QUFVZjtBQUNBO0FBQ0F3SCxFQUFBQSxJQUFJLEVBQUV4SCxjQUFZLENBQUMsQ0FBRCxDQVpIO0FBYWY7QUFDQTtBQUNBeUgsRUFBQUEsS0FBSyxFQUFFekgsY0FBWSxDQUFDLENBQUQsQ0FmSjtBQWdCZjtBQUNBO0FBQ0EwSCxFQUFBQSxJQUFJLEVBQUUxSCxjQUFZLENBQUMsQ0FBRCxDQWxCSDtBQW1CZjtBQUNBO0FBQ0EySCxFQUFBQSxTQUFTLEVBQUUzSCxjQUFZLENBQUMsQ0FBRCxDQXJCUjtBQXNCZjtBQUNBO0FBQ0E0SCxFQUFBQSxZQUFZLEVBQUU1SCxjQUFZLENBQUMsQ0FBRDtBQXhCWCxDQUFqQjs7QUM3Q0EsSUFBSTZILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFFQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSTZDLGFBQWEsR0FBRzdDLGNBQXBCOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSW9NLFNBQU8sR0FBR3BNLFNBQWQ7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUk4RSxVQUFRLEdBQUc5RSxVQUFmOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUk2RixpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUk4RixlQUFhLEdBQUc5RixlQUFwQjs7QUFDQSxJQUFJMlIsV0FBUyxHQUFHM1IsVUFBaEI7O0FBQ0EsSUFBSTRGLDBCQUF3QixHQUFHNUYsMEJBQS9COztBQUNBLElBQUk0UixrQkFBa0IsR0FBRzVSLGNBQXpCOztBQUNBLElBQUk0TSxZQUFVLEdBQUc1TSxZQUFqQjs7QUFDQSxJQUFJMEssMkJBQXlCLEdBQUcxSyx5QkFBaEM7O0FBQ0EsSUFBSTZSLDJCQUEyQixHQUFHN1IsaUNBQWxDOztBQUNBLElBQUkySyw2QkFBMkIsR0FBRzNLLDJCQUFsQzs7QUFDQSxJQUFJNkssZ0NBQThCLEdBQUc3Syw4QkFBckM7O0FBQ0EsSUFBSXNHLHNCQUFvQixHQUFHdEcsb0JBQTNCOztBQUNBLElBQUkyRiw0QkFBMEIsR0FBRzNGLDBCQUFqQzs7QUFDQSxJQUFJeUwsVUFBUSxHQUFHekwsa0JBQWY7O0FBQ0EsSUFBSXdFLFFBQU0sR0FBR3hFLGdCQUFiOztBQUNBLElBQUkrRyxXQUFTLEdBQUcvRyxXQUFoQjs7QUFDQSxJQUFJZ0gsWUFBVSxHQUFHaEgsWUFBakI7O0FBQ0EsSUFBSXlFLEtBQUcsR0FBR3pFLEtBQVY7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSWtQLDRCQUE0QixHQUFHbFAsc0JBQW5DOztBQUNBLElBQUk4Uix1QkFBcUIsR0FBRzlSLHVCQUE1Qjs7QUFDQSxJQUFJK1IsZ0JBQWMsR0FBRy9SLGdCQUFyQjs7QUFDQSxJQUFJcUkscUJBQW1CLEdBQUdySSxhQUExQjs7QUFDQSxJQUFJZ1MsVUFBUSxHQUFHaFMsY0FBQSxDQUF3Q2tSLE9BQXZEOztBQUVBLElBQUllLE1BQU0sR0FBR2xMLFdBQVMsQ0FBQyxRQUFELENBQXRCO0FBQ0EsSUFBSW1MLE1BQU0sR0FBRyxRQUFiO0FBQ0EsSUFBSS9FLFdBQVMsR0FBRyxXQUFoQjtBQUNBLElBQUlqSSxjQUFZLEdBQUdELGlCQUFlLENBQUMsYUFBRCxDQUFsQztBQUNBLElBQUlrTixrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDaEIsU0FBcEIsQ0FBOEI2SyxNQUE5QixDQUF2QjtBQUNBLElBQUlFLGlCQUFlLEdBQUduUyxNQUFNLENBQUNrTixXQUFELENBQTVCO0FBQ0EsSUFBSW5LLE9BQU8sR0FBR3JELFFBQU0sQ0FBQytDLE1BQXJCO0FBQ0EsSUFBSTJQLFlBQVUsR0FBR3RRLFlBQVUsQ0FBQyxNQUFELEVBQVMsV0FBVCxDQUEzQjtBQUNBLElBQUl1USxnQ0FBOEIsR0FBR3pILGdDQUE4QixDQUFDM0UsQ0FBcEU7QUFDQSxJQUFJcU0sc0JBQW9CLEdBQUdqTSxzQkFBb0IsQ0FBQ0osQ0FBaEQ7QUFDQSxJQUFJc00seUJBQXlCLEdBQUdYLDJCQUEyQixDQUFDM0wsQ0FBNUQ7QUFDQSxJQUFJdU0sMEJBQTBCLEdBQUc5TSw0QkFBMEIsQ0FBQ08sQ0FBNUQ7QUFDQSxJQUFJd00sVUFBVSxHQUFHbE8sUUFBTSxDQUFDLFNBQUQsQ0FBdkI7QUFDQSxJQUFJbU8sc0JBQXNCLEdBQUduTyxRQUFNLENBQUMsWUFBRCxDQUFuQztBQUNBLElBQUlvTyxzQkFBc0IsR0FBR3BPLFFBQU0sQ0FBQywyQkFBRCxDQUFuQztBQUNBLElBQUlxTyxzQkFBc0IsR0FBR3JPLFFBQU0sQ0FBQywyQkFBRCxDQUFuQztBQUNBLElBQUlFLHFCQUFxQixHQUFHRixRQUFNLENBQUMsS0FBRCxDQUFsQztBQUNBLElBQUlzTyxPQUFPLEdBQUduVCxRQUFNLENBQUNtVCxPQUFyQjs7QUFFQSxJQUFJQyxVQUFVLEdBQUcsQ0FBQ0QsT0FBRCxJQUFZLENBQUNBLE9BQU8sQ0FBQzNGLFdBQUQsQ0FBcEIsSUFBbUMsQ0FBQzJGLE9BQU8sQ0FBQzNGLFdBQUQsQ0FBUCxDQUFtQjZGLFNBQXhFOztBQUdBLElBQUlDLG1CQUFtQixHQUFHeE4sYUFBVyxJQUFJMUYsT0FBSyxDQUFDLFlBQVk7QUFDekQsU0FBTzZSLGtCQUFrQixDQUFDVyxzQkFBb0IsQ0FBQyxFQUFELEVBQUssR0FBTCxFQUFVO0FBQ3REcFMsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFBRSxhQUFPb1Msc0JBQW9CLENBQUMsSUFBRCxFQUFPLEdBQVAsRUFBWTtBQUFFMVIsUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBWixDQUFwQixDQUE4QzZFLENBQXJEO0FBQXlEO0FBRHRCLEdBQVYsQ0FBckIsQ0FBbEIsQ0FFSEEsQ0FGRyxJQUVFLENBRlQ7QUFHRCxDQUo2QyxDQUFwQixHQUlyQixVQUFVTyxDQUFWLEVBQWE5QyxDQUFiLEVBQWdCa0QsVUFBaEIsRUFBNEI7QUFDL0IsTUFBSTZNLHlCQUF5QixHQUFHWixnQ0FBOEIsQ0FBQ0YsaUJBQUQsRUFBa0JqUCxDQUFsQixDQUE5RDtBQUNBLE1BQUkrUCx5QkFBSixFQUErQixPQUFPZCxpQkFBZSxDQUFDalAsQ0FBRCxDQUF0QjtBQUMvQm9QLEVBQUFBLHNCQUFvQixDQUFDdE0sQ0FBRCxFQUFJOUMsQ0FBSixFQUFPa0QsVUFBUCxDQUFwQjs7QUFDQSxNQUFJNk0seUJBQXlCLElBQUlqTixDQUFDLEtBQUttTSxpQkFBdkMsRUFBd0Q7QUFDdERHLElBQUFBLHNCQUFvQixDQUFDSCxpQkFBRCxFQUFrQmpQLENBQWxCLEVBQXFCK1AseUJBQXJCLENBQXBCO0FBQ0Q7QUFDRixDQVh5QixHQVd0Qlgsc0JBWEo7O0FBYUEsSUFBSVksTUFBSSxHQUFHLFVBQVV6RyxHQUFWLEVBQWUwRyxXQUFmLEVBQTRCO0FBQ3JDLE1BQUkzUSxNQUFNLEdBQUdpUSxVQUFVLENBQUNoRyxHQUFELENBQVYsR0FBa0JrRixrQkFBa0IsQ0FBQzVPLE9BQU8sQ0FBQ21LLFdBQUQsQ0FBUixDQUFqRDtBQUNBZ0YsRUFBQUEsa0JBQWdCLENBQUMxUCxNQUFELEVBQVM7QUFDdkIrRSxJQUFBQSxJQUFJLEVBQUUwSyxNQURpQjtBQUV2QnhGLElBQUFBLEdBQUcsRUFBRUEsR0FGa0I7QUFHdkIwRyxJQUFBQSxXQUFXLEVBQUVBO0FBSFUsR0FBVCxDQUFoQjtBQUtBLE1BQUksQ0FBQzNOLGFBQUwsRUFBa0JoRCxNQUFNLENBQUMyUSxXQUFQLEdBQXFCQSxXQUFyQjtBQUNsQixTQUFPM1EsTUFBUDtBQUNELENBVEQ7O0FBV0EsSUFBSTJELGVBQWUsR0FBRyxTQUFTbEcsY0FBVCxDQUF3QitGLENBQXhCLEVBQTJCOUMsQ0FBM0IsRUFBOEJrRCxVQUE5QixFQUEwQztBQUM5RCxNQUFJSixDQUFDLEtBQUttTSxpQkFBVixFQUEyQmhNLGVBQWUsQ0FBQ3VNLHNCQUFELEVBQXlCeFAsQ0FBekIsRUFBNEJrRCxVQUE1QixDQUFmO0FBQzNCRixFQUFBQSxXQUFRLENBQUNGLENBQUQsQ0FBUjtBQUNBLE1BQUl0QyxHQUFHLEdBQUdtQyxlQUFhLENBQUMzQyxDQUFELENBQXZCO0FBQ0FnRCxFQUFBQSxXQUFRLENBQUNFLFVBQUQsQ0FBUjs7QUFDQSxNQUFJakMsUUFBTSxDQUFDc08sVUFBRCxFQUFhL08sR0FBYixDQUFWLEVBQTZCO0FBQzNCLFFBQUksQ0FBQzBDLFVBQVUsQ0FBQzFGLFVBQWhCLEVBQTRCO0FBQzFCLFVBQUksQ0FBQ3lELFFBQU0sQ0FBQzZCLENBQUQsRUFBSWdNLE1BQUosQ0FBWCxFQUF3Qk0sc0JBQW9CLENBQUN0TSxDQUFELEVBQUlnTSxNQUFKLEVBQVlyTSwwQkFBd0IsQ0FBQyxDQUFELEVBQUksRUFBSixDQUFwQyxDQUFwQjtBQUN4QkssTUFBQUEsQ0FBQyxDQUFDZ00sTUFBRCxDQUFELENBQVV0TyxHQUFWLElBQWlCLElBQWpCO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsVUFBSVMsUUFBTSxDQUFDNkIsQ0FBRCxFQUFJZ00sTUFBSixDQUFOLElBQXFCaE0sQ0FBQyxDQUFDZ00sTUFBRCxDQUFELENBQVV0TyxHQUFWLENBQXpCLEVBQXlDc0MsQ0FBQyxDQUFDZ00sTUFBRCxDQUFELENBQVV0TyxHQUFWLElBQWlCLEtBQWpCO0FBQ3pDMEMsTUFBQUEsVUFBVSxHQUFHdUwsa0JBQWtCLENBQUN2TCxVQUFELEVBQWE7QUFBRTFGLFFBQUFBLFVBQVUsRUFBRWlGLDBCQUF3QixDQUFDLENBQUQsRUFBSSxLQUFKO0FBQXRDLE9BQWIsQ0FBL0I7QUFDRDs7QUFBQyxXQUFPcU4sbUJBQW1CLENBQUNoTixDQUFELEVBQUl0QyxHQUFKLEVBQVMwQyxVQUFULENBQTFCO0FBQ0g7O0FBQUMsU0FBT2tNLHNCQUFvQixDQUFDdE0sQ0FBRCxFQUFJdEMsR0FBSixFQUFTMEMsVUFBVCxDQUEzQjtBQUNILENBZEQ7O0FBZ0JBLElBQUlnTixpQkFBaUIsR0FBRyxTQUFTeEcsZ0JBQVQsQ0FBMEI1RyxDQUExQixFQUE2QjZHLFVBQTdCLEVBQXlDO0FBQy9EM0csRUFBQUEsV0FBUSxDQUFDRixDQUFELENBQVI7QUFDQSxNQUFJcU4sVUFBVSxHQUFHek4saUJBQWUsQ0FBQ2lILFVBQUQsQ0FBaEM7QUFDQSxNQUFJbEcsSUFBSSxHQUFHZ0csWUFBVSxDQUFDMEcsVUFBRCxDQUFWLENBQXVCOUksTUFBdkIsQ0FBOEIrSSxzQkFBc0IsQ0FBQ0QsVUFBRCxDQUFwRCxDQUFYO0FBQ0F0QixFQUFBQSxVQUFRLENBQUNwTCxJQUFELEVBQU8sVUFBVWpELEdBQVYsRUFBZTtBQUM1QixRQUFJLENBQUM4QixhQUFELElBQWdCckYscUJBQXFCLENBQUNJLElBQXRCLENBQTJCOFMsVUFBM0IsRUFBdUMzUCxHQUF2QyxDQUFwQixFQUFpRXlDLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJdEMsR0FBSixFQUFTMlAsVUFBVSxDQUFDM1AsR0FBRCxDQUFuQixDQUFmO0FBQ2xFLEdBRk8sQ0FBUjtBQUdBLFNBQU9zQyxDQUFQO0FBQ0QsQ0FSRDs7QUFVQSxJQUFJdU4sT0FBTyxHQUFHLFNBQVMzRSxNQUFULENBQWdCNUksQ0FBaEIsRUFBbUI2RyxVQUFuQixFQUErQjtBQUMzQyxTQUFPQSxVQUFVLEtBQUsxTCxTQUFmLEdBQTJCd1Esa0JBQWtCLENBQUMzTCxDQUFELENBQTdDLEdBQW1Eb04saUJBQWlCLENBQUN6QixrQkFBa0IsQ0FBQzNMLENBQUQsQ0FBbkIsRUFBd0I2RyxVQUF4QixDQUEzRTtBQUNELENBRkQ7O0FBSUEsSUFBSTFNLHFCQUFxQixHQUFHLFNBQVNDLG9CQUFULENBQThCSSxDQUE5QixFQUFpQztBQUMzRCxNQUFJMEMsQ0FBQyxHQUFHMkMsZUFBYSxDQUFDckYsQ0FBRCxDQUFyQjtBQUNBLE1BQUlFLFVBQVUsR0FBRzhSLDBCQUEwQixDQUFDalMsSUFBM0IsQ0FBZ0MsSUFBaEMsRUFBc0MyQyxDQUF0QyxDQUFqQjtBQUNBLE1BQUksU0FBU2lQLGlCQUFULElBQTRCaE8sUUFBTSxDQUFDc08sVUFBRCxFQUFhdlAsQ0FBYixDQUFsQyxJQUFxRCxDQUFDaUIsUUFBTSxDQUFDdU8sc0JBQUQsRUFBeUJ4UCxDQUF6QixDQUFoRSxFQUE2RixPQUFPLEtBQVA7QUFDN0YsU0FBT3hDLFVBQVUsSUFBSSxDQUFDeUQsUUFBTSxDQUFDLElBQUQsRUFBT2pCLENBQVAsQ0FBckIsSUFBa0MsQ0FBQ2lCLFFBQU0sQ0FBQ3NPLFVBQUQsRUFBYXZQLENBQWIsQ0FBekMsSUFBNERpQixRQUFNLENBQUMsSUFBRCxFQUFPNk4sTUFBUCxDQUFOLElBQXdCLEtBQUtBLE1BQUwsRUFBYTlPLENBQWIsQ0FBcEYsR0FDSHhDLFVBREcsR0FDVSxJQURqQjtBQUVELENBTkQ7O0FBUUEsSUFBSXFGLHlCQUF5QixHQUFHLFNBQVMxRix3QkFBVCxDQUFrQzJGLENBQWxDLEVBQXFDOUMsQ0FBckMsRUFBd0M7QUFDdEUsTUFBSTlELEVBQUUsR0FBR3dHLGlCQUFlLENBQUNJLENBQUQsQ0FBeEI7QUFDQSxNQUFJdEMsR0FBRyxHQUFHbUMsZUFBYSxDQUFDM0MsQ0FBRCxDQUF2QjtBQUNBLE1BQUk5RCxFQUFFLEtBQUsrUyxpQkFBUCxJQUEwQmhPLFFBQU0sQ0FBQ3NPLFVBQUQsRUFBYS9PLEdBQWIsQ0FBaEMsSUFBcUQsQ0FBQ1MsUUFBTSxDQUFDdU8sc0JBQUQsRUFBeUJoUCxHQUF6QixDQUFoRSxFQUErRjtBQUMvRixNQUFJakQsVUFBVSxHQUFHNFIsZ0NBQThCLENBQUNqVCxFQUFELEVBQUtzRSxHQUFMLENBQS9DOztBQUNBLE1BQUlqRCxVQUFVLElBQUkwRCxRQUFNLENBQUNzTyxVQUFELEVBQWEvTyxHQUFiLENBQXBCLElBQXlDLEVBQUVTLFFBQU0sQ0FBQy9FLEVBQUQsRUFBSzRTLE1BQUwsQ0FBTixJQUFzQjVTLEVBQUUsQ0FBQzRTLE1BQUQsQ0FBRixDQUFXdE8sR0FBWCxDQUF4QixDQUE3QyxFQUF1RjtBQUNyRmpELElBQUFBLFVBQVUsQ0FBQ0MsVUFBWCxHQUF3QixJQUF4QjtBQUNEOztBQUNELFNBQU9ELFVBQVA7QUFDRCxDQVREOztBQVdBLElBQUlvTyxvQkFBb0IsR0FBRyxTQUFTckUsbUJBQVQsQ0FBNkJ4RSxDQUE3QixFQUFnQztBQUN6RCxNQUFJbUUsS0FBSyxHQUFHb0kseUJBQXlCLENBQUMzTSxpQkFBZSxDQUFDSSxDQUFELENBQWhCLENBQXJDO0FBQ0EsTUFBSWIsTUFBTSxHQUFHLEVBQWI7QUFDQTRNLEVBQUFBLFVBQVEsQ0FBQzVILEtBQUQsRUFBUSxVQUFVekcsR0FBVixFQUFlO0FBQzdCLFFBQUksQ0FBQ1MsUUFBTSxDQUFDc08sVUFBRCxFQUFhL08sR0FBYixDQUFQLElBQTRCLENBQUNTLFFBQU0sQ0FBQzRDLFlBQUQsRUFBYXJELEdBQWIsQ0FBdkMsRUFBMER5QixNQUFNLENBQUNyQixJQUFQLENBQVlKLEdBQVo7QUFDM0QsR0FGTyxDQUFSO0FBR0EsU0FBT3lCLE1BQVA7QUFDRCxDQVBEOztBQVNBLElBQUltTyxzQkFBc0IsR0FBRyxTQUFTL1EscUJBQVQsQ0FBK0J5RCxDQUEvQixFQUFrQztBQUM3RCxNQUFJd04sbUJBQW1CLEdBQUd4TixDQUFDLEtBQUttTSxpQkFBaEM7QUFDQSxNQUFJaEksS0FBSyxHQUFHb0kseUJBQXlCLENBQUNpQixtQkFBbUIsR0FBR2Qsc0JBQUgsR0FBNEI5TSxpQkFBZSxDQUFDSSxDQUFELENBQS9ELENBQXJDO0FBQ0EsTUFBSWIsTUFBTSxHQUFHLEVBQWI7QUFDQTRNLEVBQUFBLFVBQVEsQ0FBQzVILEtBQUQsRUFBUSxVQUFVekcsR0FBVixFQUFlO0FBQzdCLFFBQUlTLFFBQU0sQ0FBQ3NPLFVBQUQsRUFBYS9PLEdBQWIsQ0FBTixLQUE0QixDQUFDOFAsbUJBQUQsSUFBd0JyUCxRQUFNLENBQUNnTyxpQkFBRCxFQUFrQnpPLEdBQWxCLENBQTFELENBQUosRUFBdUY7QUFDckZ5QixNQUFBQSxNQUFNLENBQUNyQixJQUFQLENBQVkyTyxVQUFVLENBQUMvTyxHQUFELENBQXRCO0FBQ0Q7QUFDRixHQUpPLENBQVI7QUFLQSxTQUFPeUIsTUFBUDtBQUNELENBVkQ7QUFhQTs7O0FBQ0EsSUFBSSxDQUFDdkMsYUFBTCxFQUFvQjtBQUNsQkcsRUFBQUEsT0FBTyxHQUFHLFNBQVNOLE1BQVQsR0FBa0I7QUFDMUIsUUFBSSxnQkFBZ0JNLE9BQXBCLEVBQTZCLE1BQU0zQixTQUFTLENBQUMsNkJBQUQsQ0FBZjtBQUM3QixRQUFJK1IsV0FBVyxHQUFHLENBQUN2UixTQUFTLENBQUNDLE1BQVgsSUFBcUJELFNBQVMsQ0FBQyxDQUFELENBQVQsS0FBaUJULFNBQXRDLEdBQWtEQSxTQUFsRCxHQUE4RHVRLFdBQVMsQ0FBQzlQLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBekY7QUFDQSxRQUFJNkssR0FBRyxHQUFHakksS0FBRyxDQUFDMk8sV0FBRCxDQUFiOztBQUNBLFFBQUlNLE1BQU0sR0FBRyxVQUFVN1MsS0FBVixFQUFpQjtBQUM1QixVQUFJLFNBQVN1UixpQkFBYixFQUE4QnNCLE1BQU0sQ0FBQ2xULElBQVAsQ0FBWW1TLHNCQUFaLEVBQW9DOVIsS0FBcEM7QUFDOUIsVUFBSXVELFFBQU0sQ0FBQyxJQUFELEVBQU82TixNQUFQLENBQU4sSUFBd0I3TixRQUFNLENBQUMsS0FBSzZOLE1BQUwsQ0FBRCxFQUFldkYsR0FBZixDQUFsQyxFQUF1RCxLQUFLdUYsTUFBTCxFQUFhdkYsR0FBYixJQUFvQixLQUFwQjtBQUN2RHVHLE1BQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBT3ZHLEdBQVAsRUFBWTlHLDBCQUF3QixDQUFDLENBQUQsRUFBSS9FLEtBQUosQ0FBcEMsQ0FBbkI7QUFDRCxLQUpEOztBQUtBLFFBQUk0RSxhQUFXLElBQUlzTixVQUFuQixFQUErQkUsbUJBQW1CLENBQUNiLGlCQUFELEVBQWtCMUYsR0FBbEIsRUFBdUI7QUFBRTVMLE1BQUFBLFlBQVksRUFBRSxJQUFoQjtBQUFzQm9HLE1BQUFBLEdBQUcsRUFBRXdNO0FBQTNCLEtBQXZCLENBQW5CO0FBQy9CLFdBQU9QLE1BQUksQ0FBQ3pHLEdBQUQsRUFBTTBHLFdBQU4sQ0FBWDtBQUNELEdBWEQ7O0FBYUEzSCxFQUFBQSxVQUFRLENBQUN6SSxPQUFPLENBQUNtSyxXQUFELENBQVIsRUFBcUIsVUFBckIsRUFBaUMsU0FBU25NLFFBQVQsR0FBb0I7QUFDM0QsV0FBT3VILGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUJtRSxHQUE5QjtBQUNELEdBRk8sQ0FBUjtBQUlBakIsRUFBQUEsVUFBUSxDQUFDekksT0FBRCxFQUFVLGVBQVYsRUFBMkIsVUFBVW9RLFdBQVYsRUFBdUI7QUFDeEQsV0FBT0QsTUFBSSxDQUFDMU8sS0FBRyxDQUFDMk8sV0FBRCxDQUFKLEVBQW1CQSxXQUFuQixDQUFYO0FBQ0QsR0FGTyxDQUFSO0FBSUF6TixFQUFBQSw0QkFBMEIsQ0FBQ08sQ0FBM0IsR0FBK0I5RixxQkFBL0I7QUFDQWtHLEVBQUFBLHNCQUFvQixDQUFDSixDQUFyQixHQUF5QkUsZUFBekI7QUFDQXlFLEVBQUFBLGdDQUE4QixDQUFDM0UsQ0FBL0IsR0FBbUNGLHlCQUFuQztBQUNBMEUsRUFBQUEsMkJBQXlCLENBQUN4RSxDQUExQixHQUE4QjJMLDJCQUEyQixDQUFDM0wsQ0FBNUIsR0FBZ0M0SSxvQkFBOUQ7QUFDQW5FLEVBQUFBLDZCQUEyQixDQUFDekUsQ0FBNUIsR0FBZ0NxTixzQkFBaEM7O0FBRUFyRSxFQUFBQSw0QkFBNEIsQ0FBQ2hKLENBQTdCLEdBQWlDLFVBQVVyQixJQUFWLEVBQWdCO0FBQy9DLFdBQU9zTyxNQUFJLENBQUNsTyxpQkFBZSxDQUFDSixJQUFELENBQWhCLEVBQXdCQSxJQUF4QixDQUFYO0FBQ0QsR0FGRDs7QUFJQSxNQUFJWSxhQUFKLEVBQWlCO0FBQ2Y7QUFDQThNLElBQUFBLHNCQUFvQixDQUFDdlAsT0FBTyxDQUFDbUssV0FBRCxDQUFSLEVBQXFCLGFBQXJCLEVBQW9DO0FBQ3REck0sTUFBQUEsWUFBWSxFQUFFLElBRHdDO0FBRXREWCxNQUFBQSxHQUFHLEVBQUUsU0FBU2lULFdBQVQsR0FBdUI7QUFDMUIsZUFBTzdLLGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUI2SyxXQUE5QjtBQUNEO0FBSnFELEtBQXBDLENBQXBCOztBQU1BLElBQWM7QUFDWjNILE1BQUFBLFVBQVEsQ0FBQzJHLGlCQUFELEVBQWtCLHNCQUFsQixFQUEwQ2hTLHFCQUExQyxFQUFpRTtBQUFFdUksUUFBQUEsTUFBTSxFQUFFO0FBQVYsT0FBakUsQ0FBUjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCtJLElBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0J3VCxFQUFBQSxJQUFJLEVBQUUsSUFBdEI7QUFBNEJqSCxFQUFBQSxNQUFNLEVBQUUsQ0FBQ3JKLGFBQXJDO0FBQW9ERCxFQUFBQSxJQUFJLEVBQUUsQ0FBQ0M7QUFBM0QsQ0FBRCxFQUE2RTtBQUM1RUgsRUFBQUEsTUFBTSxFQUFFTTtBQURvRSxDQUE3RSxDQUFEO0FBSUFnUCxVQUFRLENBQUNwRixZQUFVLENBQUNsSSxxQkFBRCxDQUFYLEVBQW9DLFVBQVVHLElBQVYsRUFBZ0I7QUFDMURpTixFQUFBQSx1QkFBcUIsQ0FBQ2pOLElBQUQsQ0FBckI7QUFDRCxDQUZPLENBQVI7QUFJQTZNLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFb0gsTUFBVjtBQUFrQnBHLEVBQUFBLElBQUksRUFBRSxJQUF4QjtBQUE4QkksRUFBQUEsTUFBTSxFQUFFLENBQUNySjtBQUF2QyxDQUFELEVBQXlEO0FBQ3hEO0FBQ0E7QUFDQSxTQUFPLFVBQVVjLEdBQVYsRUFBZTtBQUNwQixRQUFJNEgsTUFBTSxHQUFHb0csV0FBUyxDQUFDaE8sR0FBRCxDQUF0QjtBQUNBLFFBQUlTLFFBQU0sQ0FBQ3dPLHNCQUFELEVBQXlCckgsTUFBekIsQ0FBVixFQUE0QyxPQUFPcUgsc0JBQXNCLENBQUNySCxNQUFELENBQTdCO0FBQzVDLFFBQUk5SSxNQUFNLEdBQUdPLE9BQU8sQ0FBQ3VJLE1BQUQsQ0FBcEI7QUFDQXFILElBQUFBLHNCQUFzQixDQUFDckgsTUFBRCxDQUF0QixHQUFpQzlJLE1BQWpDO0FBQ0FvUSxJQUFBQSxzQkFBc0IsQ0FBQ3BRLE1BQUQsQ0FBdEIsR0FBaUM4SSxNQUFqQztBQUNBLFdBQU85SSxNQUFQO0FBQ0QsR0FWdUQ7QUFXeEQ7QUFDQTtBQUNBa1IsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JDLEdBQWhCLEVBQXFCO0FBQzNCLFFBQUksQ0FBQzlPLFVBQVEsQ0FBQzhPLEdBQUQsQ0FBYixFQUFvQixNQUFNdlMsU0FBUyxDQUFDdVMsR0FBRyxHQUFHLGtCQUFQLENBQWY7QUFDcEIsUUFBSXhQLFFBQU0sQ0FBQ3lPLHNCQUFELEVBQXlCZSxHQUF6QixDQUFWLEVBQXlDLE9BQU9mLHNCQUFzQixDQUFDZSxHQUFELENBQTdCO0FBQzFDLEdBaEJ1RDtBQWlCeERDLEVBQUFBLFNBQVMsRUFBRSxZQUFZO0FBQUVkLElBQUFBLFVBQVUsR0FBRyxJQUFiO0FBQW9CLEdBakJXO0FBa0J4RGUsRUFBQUEsU0FBUyxFQUFFLFlBQVk7QUFBRWYsSUFBQUEsVUFBVSxHQUFHLEtBQWI7QUFBcUI7QUFsQlUsQ0FBekQsQ0FBRDtBQXFCQXJCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRSxDQUFDckosYUFBekM7QUFBd0RELEVBQUFBLElBQUksRUFBRSxDQUFDNkM7QUFBL0QsQ0FBRCxFQUErRTtBQUM5RTtBQUNBO0FBQ0FvSixFQUFBQSxNQUFNLEVBQUUyRSxPQUhzRTtBQUk5RTtBQUNBO0FBQ0F0VCxFQUFBQSxjQUFjLEVBQUVrRyxlQU44RDtBQU85RTtBQUNBO0FBQ0F5RyxFQUFBQSxnQkFBZ0IsRUFBRXdHLGlCQVQ0RDtBQVU5RTtBQUNBO0FBQ0EvUyxFQUFBQSx3QkFBd0IsRUFBRTBGO0FBWm9ELENBQS9FLENBQUQ7QUFlQTBMLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRSxDQUFDcko7QUFBekMsQ0FBRCxFQUEyRDtBQUMxRDtBQUNBO0FBQ0E0SCxFQUFBQSxtQkFBbUIsRUFBRXFFLG9CQUhxQztBQUkxRDtBQUNBO0FBQ0F0TSxFQUFBQSxxQkFBcUIsRUFBRStRO0FBTm1DLENBQTNELENBQUQ7QUFVQTs7QUFDQTdCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRW5NLE9BQUssQ0FBQyxZQUFZO0FBQUU0SyxJQUFBQSw2QkFBMkIsQ0FBQ3pFLENBQTVCLENBQThCLENBQTlCO0FBQW1DLEdBQWxEO0FBQTdDLENBQUQsRUFBcUc7QUFDcEcxRCxFQUFBQSxxQkFBcUIsRUFBRSxTQUFTQSxxQkFBVCxDQUErQm5ELEVBQS9CLEVBQW1DO0FBQ3hELFdBQU9zTCw2QkFBMkIsQ0FBQ3pFLENBQTVCLENBQThCaEMsVUFBUSxDQUFDN0UsRUFBRCxDQUF0QyxDQUFQO0FBQ0Q7QUFIbUcsQ0FBckcsQ0FBRDtBQU9BOztBQUNBLElBQUlnVCxZQUFKLEVBQWdCO0FBQ2QsTUFBSTBCLHFCQUFxQixHQUFHLENBQUNsUixhQUFELElBQWtCOUMsT0FBSyxDQUFDLFlBQVk7QUFDOUQsUUFBSTBDLE1BQU0sR0FBR08sT0FBTyxFQUFwQixDQUQ4RDs7QUFHOUQsV0FBT3FQLFlBQVUsQ0FBQyxDQUFDNVAsTUFBRCxDQUFELENBQVYsSUFBd0IsUUFBeEI7QUFBQSxPQUVGNFAsWUFBVSxDQUFDO0FBQUUzTSxNQUFBQSxDQUFDLEVBQUVqRDtBQUFMLEtBQUQsQ0FBVixJQUE2QixJQUYzQjtBQUFBLE9BSUY0UCxZQUFVLENBQUNwUyxNQUFNLENBQUN3QyxNQUFELENBQVAsQ0FBVixJQUE4QixJQUpuQztBQUtELEdBUmtELENBQW5EO0FBVUFpUCxFQUFBQSxJQUFDLENBQUM7QUFBRTVHLElBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsSUFBQUEsSUFBSSxFQUFFLElBQXhCO0FBQThCSSxJQUFBQSxNQUFNLEVBQUU2SDtBQUF0QyxHQUFELEVBQWdFO0FBQy9EO0FBQ0FDLElBQUFBLFNBQVMsRUFBRSxTQUFTQSxTQUFULENBQW1CM1UsRUFBbkIsRUFBdUI0VSxRQUF2QixFQUFpQ0MsS0FBakMsRUFBd0M7QUFDakQsVUFBSUMsSUFBSSxHQUFHLENBQUM5VSxFQUFELENBQVg7QUFDQSxVQUFJa0ssS0FBSyxHQUFHLENBQVo7QUFDQSxVQUFJNkssU0FBSjs7QUFDQSxhQUFPdlMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CeUgsS0FBMUIsRUFBaUM0SyxJQUFJLENBQUNwUSxJQUFMLENBQVVsQyxTQUFTLENBQUMwSCxLQUFLLEVBQU4sQ0FBbkI7O0FBQ2pDNkssTUFBQUEsU0FBUyxHQUFHSCxRQUFaO0FBQ0EsVUFBSSxDQUFDNVEsVUFBUSxDQUFDNFEsUUFBRCxDQUFULElBQXVCNVUsRUFBRSxLQUFLK0IsU0FBOUIsSUFBMkMwRCxVQUFRLENBQUN6RixFQUFELENBQXZELEVBQTZELE9BTlo7O0FBT2pELFVBQUksQ0FBQytNLFNBQU8sQ0FBQzZILFFBQUQsQ0FBWixFQUF3QkEsUUFBUSxHQUFHLFVBQVV0USxHQUFWLEVBQWU5QyxLQUFmLEVBQXNCO0FBQ3ZELFlBQUlZLFlBQVUsQ0FBQzJTLFNBQUQsQ0FBZCxFQUEyQnZULEtBQUssR0FBR3VULFNBQVMsQ0FBQzVULElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsRUFBMEI5QyxLQUExQixDQUFSO0FBQzNCLFlBQUksQ0FBQ2lFLFVBQVEsQ0FBQ2pFLEtBQUQsQ0FBYixFQUFzQixPQUFPQSxLQUFQO0FBQ3ZCLE9BSHVCO0FBSXhCc1QsTUFBQUEsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVRixRQUFWO0FBQ0EsYUFBTzVCLFlBQVUsQ0FBQzdDLEtBQVgsQ0FBaUIsSUFBakIsRUFBdUIyRSxJQUF2QixDQUFQO0FBQ0Q7QUFmOEQsR0FBaEUsQ0FBRDtBQWlCRDtBQUdEOzs7QUFDQSxJQUFJLENBQUNuUixPQUFPLENBQUNtSyxXQUFELENBQVAsQ0FBbUJqSSxjQUFuQixDQUFMLEVBQXVDO0FBQ3JDLE1BQUl4QixTQUFPLEdBQUdWLE9BQU8sQ0FBQ21LLFdBQUQsQ0FBUCxDQUFtQnpKLE9BQWpDO0FBQ0ErSCxFQUFBQSxVQUFRLENBQUN6SSxPQUFPLENBQUNtSyxXQUFELENBQVIsRUFBcUJqSSxjQUFyQixFQUFtQyxZQUFZO0FBQ3JELFdBQU94QixTQUFPLENBQUM4TCxLQUFSLENBQWMsSUFBZCxFQUFvQjNOLFNBQXBCLENBQVA7QUFDRCxHQUZPLENBQVI7QUFHRDtBQUVEOzs7QUFDQWtRLGdCQUFjLENBQUMvTyxPQUFELEVBQVVrUCxNQUFWLENBQWQ7QUFFQWxMLFlBQVUsQ0FBQ2lMLE1BQUQsQ0FBVixHQUFxQixJQUFyQjs7QUNsVEEsSUFBSVAsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSUUsZ0JBQWMsR0FBR0Ysb0JBQUEsQ0FBK0NrRyxDQUFwRTs7QUFDQSxJQUFJd0YsMkJBQXlCLEdBQUcxTCwyQkFBaEM7O0FBRUEsSUFBSXFVLFlBQVksR0FBRzFVLFFBQU0sQ0FBQytDLE1BQTFCOztBQUVBLElBQUkrQyxhQUFXLElBQUloRSxZQUFVLENBQUM0UyxZQUFELENBQXpCLEtBQTRDLEVBQUUsaUJBQWlCQSxZQUFZLENBQUNyTSxTQUFoQztBQUU5Q3FNLFlBQVksR0FBR2pCLFdBQWYsS0FBK0JoUyxTQUY3QixDQUFKLEVBR0c7QUFDRCxNQUFJa1QsMkJBQTJCLEdBQUcsRUFBbEMsQ0FEQzs7QUFHRCxNQUFJQyxhQUFhLEdBQUcsU0FBUzdSLE1BQVQsR0FBa0I7QUFDcEMsUUFBSTBRLFdBQVcsR0FBR3ZSLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixJQUF3QkQsU0FBUyxDQUFDLENBQUQsQ0FBVCxLQUFpQlQsU0FBekMsR0FBcURBLFNBQXJELEdBQWlFdUIsTUFBTSxDQUFDZCxTQUFTLENBQUMsQ0FBRCxDQUFWLENBQXpGO0FBQ0EsUUFBSXVELE1BQU0sR0FBRyxnQkFBZ0JtUCxhQUFoQixHQUNULElBQUlGLFlBQUosQ0FBaUJqQixXQUFqQixDQURTO0FBQUEsTUFHVEEsV0FBVyxLQUFLaFMsU0FBaEIsR0FBNEJpVCxZQUFZLEVBQXhDLEdBQTZDQSxZQUFZLENBQUNqQixXQUFELENBSDdEO0FBSUEsUUFBSUEsV0FBVyxLQUFLLEVBQXBCLEVBQXdCa0IsMkJBQTJCLENBQUNsUCxNQUFELENBQTNCLEdBQXNDLElBQXRDO0FBQ3hCLFdBQU9BLE1BQVA7QUFDRCxHQVJEOztBQVNBc0csRUFBQUEsMkJBQXlCLENBQUM2SSxhQUFELEVBQWdCRixZQUFoQixDQUF6QjtBQUNBLE1BQUlHLGVBQWUsR0FBR0QsYUFBYSxDQUFDdk0sU0FBZCxHQUEwQnFNLFlBQVksQ0FBQ3JNLFNBQTdEO0FBQ0F3TSxFQUFBQSxlQUFlLENBQUNwRSxXQUFoQixHQUE4Qm1FLGFBQTlCO0FBRUEsTUFBSUUsY0FBYyxHQUFHRCxlQUFlLENBQUN4VCxRQUFyQztBQUNBLE1BQUkwVCxZQUFZLEdBQUcvUixNQUFNLENBQUMwUixZQUFZLENBQUMsTUFBRCxDQUFiLENBQU4sSUFBZ0MsY0FBbkQ7QUFDQSxNQUFJTSxNQUFNLEdBQUcsdUJBQWI7QUFDQXpVLEVBQUFBLGdCQUFjLENBQUNzVSxlQUFELEVBQWtCLGFBQWxCLEVBQWlDO0FBQzdDMVQsSUFBQUEsWUFBWSxFQUFFLElBRCtCO0FBRTdDWCxJQUFBQSxHQUFHLEVBQUUsU0FBU2lULFdBQVQsR0FBdUI7QUFDMUIsVUFBSTNRLE1BQU0sR0FBR1ksVUFBUSxDQUFDLElBQUQsQ0FBUixHQUFpQixLQUFLSyxPQUFMLEVBQWpCLEdBQWtDLElBQS9DO0FBQ0EsVUFBSTZILE1BQU0sR0FBR2tKLGNBQWMsQ0FBQ2pVLElBQWYsQ0FBb0JpQyxNQUFwQixDQUFiO0FBQ0EsVUFBSTJCLFFBQU0sQ0FBQ2tRLDJCQUFELEVBQThCN1IsTUFBOUIsQ0FBVixFQUFpRCxPQUFPLEVBQVA7QUFDakQsVUFBSW1TLElBQUksR0FBR0YsWUFBWSxHQUFHbkosTUFBTSxDQUFDdEssS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBQyxDQUFqQixDQUFILEdBQXlCc0ssTUFBTSxDQUFDekMsT0FBUCxDQUFlNkwsTUFBZixFQUF1QixJQUF2QixDQUFoRDtBQUNBLGFBQU9DLElBQUksS0FBSyxFQUFULEdBQWN4VCxTQUFkLEdBQTBCd1QsSUFBakM7QUFDRDtBQVI0QyxHQUFqQyxDQUFkO0FBV0FsRCxFQUFBQSxJQUFDLENBQUM7QUFBRS9SLElBQUFBLE1BQU0sRUFBRSxJQUFWO0FBQWdCdU0sSUFBQUEsTUFBTSxFQUFFO0FBQXhCLEdBQUQsRUFBaUM7QUFDaEN4SixJQUFBQSxNQUFNLEVBQUU2UjtBQUR3QixHQUFqQyxDQUFEO0FBR0Q7O0FDbERELElBQUl6Qyx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLGVBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxhQUFELENBQXJCOztBQ0pBLElBQUlBLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsb0JBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxVQUFELENBQXJCOztBQ0pBLElBQUlBLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsT0FBRCxDQUFyQjs7QUNKQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLFVBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxTQUFELENBQXJCOztBQ0pBLElBQUlBLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsUUFBRCxDQUFyQjs7QUNKQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLFNBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxPQUFELENBQXJCOztBQ0pBLElBQUlBLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsYUFBRCxDQUFyQjs7QUNKQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLGFBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxhQUFELENBQXJCOztBQ0pBLElBQUkvUixPQUFLLEdBQUdDLFFBQVo7O0lBRUFULHNCQUFBLEdBQWlCLENBQUNRLE9BQUssQ0FBQyxZQUFZO0FBQ2xDLFdBQVMwTyxDQUFULEdBQWE7QUFBRTtBQUFhOztBQUM1QkEsRUFBQUEsQ0FBQyxDQUFDekcsU0FBRixDQUFZb0ksV0FBWixHQUEwQixJQUExQixDQUZrQzs7QUFJbEMsU0FBT25RLE1BQU0sQ0FBQzRVLGNBQVAsQ0FBc0IsSUFBSXBHLENBQUosRUFBdEIsTUFBbUNBLENBQUMsQ0FBQ3pHLFNBQTVDO0FBQ0QsQ0FMc0IsQ0FBdkI7O0FDRkEsSUFBSTVELFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJK0csU0FBUyxHQUFHL0csV0FBaEI7O0FBQ0EsSUFBSThVLDBCQUF3QixHQUFHOVUsc0JBQS9COztBQUVBLElBQUlxTixRQUFRLEdBQUd0RyxTQUFTLENBQUMsVUFBRCxDQUF4QjtBQUNBLElBQUlxTCxpQkFBZSxHQUFHblMsTUFBTSxDQUFDK0gsU0FBN0I7QUFHQTtBQUNBOztJQUNBekksc0JBQUEsR0FBaUJ1ViwwQkFBd0IsR0FBRzdVLE1BQU0sQ0FBQzRVLGNBQVYsR0FBMkIsVUFBVTVPLENBQVYsRUFBYTtBQUMvRSxNQUFJTSxNQUFNLEdBQUdyQyxVQUFRLENBQUMrQixDQUFELENBQXJCO0FBQ0EsTUFBSTdCLFFBQU0sQ0FBQ21DLE1BQUQsRUFBUzhHLFFBQVQsQ0FBVixFQUE4QixPQUFPOUcsTUFBTSxDQUFDOEcsUUFBRCxDQUFiO0FBQzlCLE1BQUkrQyxXQUFXLEdBQUc3SixNQUFNLENBQUM2SixXQUF6Qjs7QUFDQSxNQUFJM08sWUFBVSxDQUFDMk8sV0FBRCxDQUFWLElBQTJCN0osTUFBTSxZQUFZNkosV0FBakQsRUFBOEQ7QUFDNUQsV0FBT0EsV0FBVyxDQUFDcEksU0FBbkI7QUFDRDs7QUFBQyxTQUFPekIsTUFBTSxZQUFZdEcsTUFBbEIsR0FBMkJtUyxpQkFBM0IsR0FBNkMsSUFBcEQ7QUFDSCxDQVBEOztBQ1pBLElBQUkzUSxZQUFVLEdBQUd6QixZQUFqQjs7SUFFQVQsb0JBQUEsR0FBaUIsVUFBVWlDLFFBQVYsRUFBb0I7QUFDbkMsTUFBSSxPQUFPQSxRQUFQLEtBQW9CLFFBQXBCLElBQWdDQyxZQUFVLENBQUNELFFBQUQsQ0FBOUMsRUFBMEQsT0FBT0EsUUFBUDtBQUMxRCxRQUFNSCxTQUFTLENBQUMsZUFBZXNCLE1BQU0sQ0FBQ25CLFFBQUQsQ0FBckIsR0FBa0MsaUJBQW5DLENBQWY7QUFDRCxDQUhEOzs7O0FDREEsSUFBSTJFLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSStVLG9CQUFrQixHQUFHL1Usb0JBQXpCO0FBR0E7QUFDQTtBQUNBOzs7SUFDQVQsc0JBQUEsR0FBaUJVLE1BQU0sQ0FBQytVLGNBQVAsS0FBMEIsZUFBZSxFQUFmLEdBQW9CLFlBQVk7QUFDekUsTUFBSUMsY0FBYyxHQUFHLEtBQXJCO0FBQ0EsTUFBSXRPLElBQUksR0FBRyxFQUFYO0FBQ0EsTUFBSStNLE1BQUo7O0FBQ0EsTUFBSTtBQUNGO0FBQ0FBLElBQUFBLE1BQU0sR0FBR3pULE1BQU0sQ0FBQ0ssd0JBQVAsQ0FBZ0NMLE1BQU0sQ0FBQytILFNBQXZDLEVBQWtELFdBQWxELEVBQStEZCxHQUF4RTtBQUNBd00sSUFBQUEsTUFBTSxDQUFDbFQsSUFBUCxDQUFZbUcsSUFBWixFQUFrQixFQUFsQjtBQUNBc08sSUFBQUEsY0FBYyxHQUFHdE8sSUFBSSxZQUFZd0YsS0FBakM7QUFDRCxHQUxELENBS0UsT0FBT3JNLEtBQVAsRUFBYztBQUFFO0FBQWE7O0FBQy9CLFNBQU8sU0FBU2tWLGNBQVQsQ0FBd0IvTyxDQUF4QixFQUEyQmlQLEtBQTNCLEVBQWtDO0FBQ3ZDL08sSUFBQUEsV0FBUSxDQUFDRixDQUFELENBQVI7QUFDQThPLElBQUFBLG9CQUFrQixDQUFDRyxLQUFELENBQWxCO0FBQ0EsUUFBSUQsY0FBSixFQUFvQnZCLE1BQU0sQ0FBQ2xULElBQVAsQ0FBWXlGLENBQVosRUFBZWlQLEtBQWYsRUFBcEIsS0FDS2pQLENBQUMsQ0FBQ2tQLFNBQUYsR0FBY0QsS0FBZDtBQUNMLFdBQU9qUCxDQUFQO0FBQ0QsR0FORDtBQU9ELENBakI4RCxFQUFwQixHQWlCckM3RSxTQWpCVyxDQUFqQjs7QUNSQSxJQUFJaUMsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7QUFHQTs7O0lBQ0FULG1CQUFBLEdBQWlCLFVBQVUwRyxDQUFWLEVBQWF5QyxPQUFiLEVBQXNCO0FBQ3JDLE1BQUlyRixVQUFRLENBQUNxRixPQUFELENBQVIsSUFBcUIsV0FBV0EsT0FBcEMsRUFBNkM7QUFDM0M1QixJQUFBQSw2QkFBMkIsQ0FBQ2IsQ0FBRCxFQUFJLE9BQUosRUFBYXlDLE9BQU8sQ0FBQzBNLEtBQXJCLENBQTNCO0FBQ0Q7QUFDRixDQUpEOztJQ0xBN1YsU0FBQSxHQUFpQixFQUFqQjs7QUNBQSxJQUFJMEYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFDQSxJQUFJcVYsV0FBUyxHQUFHclYsU0FBaEI7O0FBRUEsSUFBSXNWLFVBQVEsR0FBR3JRLGlCQUFlLENBQUMsVUFBRCxDQUE5QjtBQUNBLElBQUlzUSxnQkFBYyxHQUFHcEosS0FBSyxDQUFDbkUsU0FBM0I7O0lBR0F6SSx1QkFBQSxHQUFpQixVQUFVRixFQUFWLEVBQWM7QUFDN0IsU0FBT0EsRUFBRSxLQUFLK0IsU0FBUCxLQUFxQmlVLFdBQVMsQ0FBQ2xKLEtBQVYsS0FBb0I5TSxFQUFwQixJQUEwQmtXLGdCQUFjLENBQUNELFVBQUQsQ0FBZCxLQUE2QmpXLEVBQTVFLENBQVA7QUFDRCxDQUZEOztBQ1BBLElBQUk2QixTQUFPLEdBQUdsQixTQUFkOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJcVYsV0FBUyxHQUFHclYsU0FBaEI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBRUEsSUFBSXNWLFVBQVEsR0FBR3JRLGlCQUFlLENBQUMsVUFBRCxDQUE5Qjs7SUFFQTFGLG1CQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYztBQUM3QixNQUFJQSxFQUFFLElBQUkrQixTQUFWLEVBQXFCLE9BQU8yRCxXQUFTLENBQUMxRixFQUFELEVBQUtpVyxVQUFMLENBQVQsSUFDdkJ2USxXQUFTLENBQUMxRixFQUFELEVBQUssWUFBTCxDQURjLElBRXZCZ1csV0FBUyxDQUFDblUsU0FBTyxDQUFDN0IsRUFBRCxDQUFSLENBRk87QUFHdEIsQ0FKRDs7QUNQQSxJQUFJNkQsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXdWLG1CQUFpQixHQUFHeFYsbUJBQXhCOztJQUVBVCxhQUFBLEdBQWlCLFVBQVVpQyxRQUFWLEVBQW9CaVUsYUFBcEIsRUFBbUM7QUFDbEQsTUFBSUMsY0FBYyxHQUFHN1QsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCMFQsbUJBQWlCLENBQUNoVSxRQUFELENBQXhDLEdBQXFEaVUsYUFBMUU7QUFDQSxNQUFJdlMsV0FBUyxDQUFDd1MsY0FBRCxDQUFiLEVBQStCLE9BQU92UCxXQUFRLENBQUN1UCxjQUFjLENBQUNsVixJQUFmLENBQW9CZ0IsUUFBcEIsQ0FBRCxDQUFmO0FBQy9CLFFBQU1ILFNBQVMsQ0FBQ3NCLE1BQU0sQ0FBQ25CLFFBQUQsQ0FBTixHQUFtQixrQkFBcEIsQ0FBZjtBQUNELENBSkQ7O0FDSkEsSUFBSTJFLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztJQUVBVCxlQUFBLEdBQWlCLFVBQVV1RCxRQUFWLEVBQW9CNlMsSUFBcEIsRUFBMEI5VSxLQUExQixFQUFpQztBQUNoRCxNQUFJK1UsV0FBSixFQUFpQkMsVUFBakI7QUFDQTFQLEVBQUFBLFdBQVEsQ0FBQ3JELFFBQUQsQ0FBUjs7QUFDQSxNQUFJO0FBQ0Y4UyxJQUFBQSxXQUFXLEdBQUc3USxXQUFTLENBQUNqQyxRQUFELEVBQVcsUUFBWCxDQUF2Qjs7QUFDQSxRQUFJLENBQUM4UyxXQUFMLEVBQWtCO0FBQ2hCLFVBQUlELElBQUksS0FBSyxPQUFiLEVBQXNCLE1BQU05VSxLQUFOO0FBQ3RCLGFBQU9BLEtBQVA7QUFDRDs7QUFDRCtVLElBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDcFYsSUFBWixDQUFpQnNDLFFBQWpCLENBQWQ7QUFDRCxHQVBELENBT0UsT0FBT2hELEtBQVAsRUFBYztBQUNkK1YsSUFBQUEsVUFBVSxHQUFHLElBQWI7QUFDQUQsSUFBQUEsV0FBVyxHQUFHOVYsS0FBZDtBQUNEOztBQUNELE1BQUk2VixJQUFJLEtBQUssT0FBYixFQUFzQixNQUFNOVUsS0FBTjtBQUN0QixNQUFJZ1YsVUFBSixFQUFnQixNQUFNRCxXQUFOO0FBQ2hCelAsRUFBQUEsV0FBUSxDQUFDeVAsV0FBRCxDQUFSO0FBQ0EsU0FBTy9VLEtBQVA7QUFDRCxDQWxCRDs7QUNIQSxJQUFJc0YsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOFYsdUJBQXFCLEdBQUc5Vix1QkFBNUI7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJK1YsYUFBVyxHQUFHL1YsYUFBbEI7O0FBQ0EsSUFBSXdWLG1CQUFpQixHQUFHeFYsbUJBQXhCOztBQUNBLElBQUlnVyxlQUFhLEdBQUdoVyxlQUFwQjs7QUFFQSxJQUFJaVcsTUFBTSxHQUFHLFVBQVVDLE9BQVYsRUFBbUI5USxNQUFuQixFQUEyQjtBQUN0QyxPQUFLOFEsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsT0FBSzlRLE1BQUwsR0FBY0EsTUFBZDtBQUNELENBSEQ7O0lBS0E3RixTQUFBLEdBQWlCLFVBQVU0VyxRQUFWLEVBQW9CQyxlQUFwQixFQUFxQzFOLE9BQXJDLEVBQThDO0FBQzdELE1BQUkyRyxJQUFJLEdBQUczRyxPQUFPLElBQUlBLE9BQU8sQ0FBQzJHLElBQTlCO0FBQ0EsTUFBSWdILFVBQVUsR0FBRyxDQUFDLEVBQUUzTixPQUFPLElBQUlBLE9BQU8sQ0FBQzJOLFVBQXJCLENBQWxCO0FBQ0EsTUFBSUMsV0FBVyxHQUFHLENBQUMsRUFBRTVOLE9BQU8sSUFBSUEsT0FBTyxDQUFDNE4sV0FBckIsQ0FBbkI7QUFDQSxNQUFJQyxXQUFXLEdBQUcsQ0FBQyxFQUFFN04sT0FBTyxJQUFJQSxPQUFPLENBQUM2TixXQUFyQixDQUFuQjtBQUNBLE1BQUkvUyxFQUFFLEdBQUc4TSxNQUFJLENBQUM4RixlQUFELEVBQWtCL0csSUFBbEIsRUFBd0IsSUFBSWdILFVBQUosR0FBaUJFLFdBQXpDLENBQWI7QUFDQSxNQUFJelQsUUFBSixFQUFjMFQsTUFBZCxFQUFzQmpOLEtBQXRCLEVBQTZCekgsTUFBN0IsRUFBcUNzRCxNQUFyQyxFQUE2Q3FSLElBQTdDLEVBQW1EQyxJQUFuRDs7QUFFQSxNQUFJQyxJQUFJLEdBQUcsVUFBVUMsU0FBVixFQUFxQjtBQUM5QixRQUFJOVQsUUFBSixFQUFja1QsZUFBYSxDQUFDbFQsUUFBRCxFQUFXLFFBQVgsRUFBcUI4VCxTQUFyQixDQUFiO0FBQ2QsV0FBTyxJQUFJWCxNQUFKLENBQVcsSUFBWCxFQUFpQlcsU0FBakIsQ0FBUDtBQUNELEdBSEQ7O0FBS0EsTUFBSUMsTUFBTSxHQUFHLFVBQVVoVyxLQUFWLEVBQWlCO0FBQzVCLFFBQUl3VixVQUFKLEVBQWdCO0FBQ2RsUSxNQUFBQSxXQUFRLENBQUN0RixLQUFELENBQVI7QUFDQSxhQUFPMFYsV0FBVyxHQUFHL1MsRUFBRSxDQUFDM0MsS0FBSyxDQUFDLENBQUQsQ0FBTixFQUFXQSxLQUFLLENBQUMsQ0FBRCxDQUFoQixFQUFxQjhWLElBQXJCLENBQUwsR0FBa0NuVCxFQUFFLENBQUMzQyxLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVdBLEtBQUssQ0FBQyxDQUFELENBQWhCLENBQXREO0FBQ0Q7O0FBQUMsV0FBTzBWLFdBQVcsR0FBRy9TLEVBQUUsQ0FBQzNDLEtBQUQsRUFBUThWLElBQVIsQ0FBTCxHQUFxQm5ULEVBQUUsQ0FBQzNDLEtBQUQsQ0FBekM7QUFDSCxHQUxEOztBQU9BLE1BQUl5VixXQUFKLEVBQWlCO0FBQ2Z4VCxJQUFBQSxRQUFRLEdBQUdxVCxRQUFYO0FBQ0QsR0FGRCxNQUVPO0FBQ0xLLElBQUFBLE1BQU0sR0FBR2hCLG1CQUFpQixDQUFDVyxRQUFELENBQTFCO0FBQ0EsUUFBSSxDQUFDSyxNQUFMLEVBQWEsTUFBTW5WLFNBQVMsQ0FBQ3NCLE1BQU0sQ0FBQ3dULFFBQUQsQ0FBTixHQUFtQixrQkFBcEIsQ0FBZixDQUZSOztBQUlMLFFBQUlMLHVCQUFxQixDQUFDVSxNQUFELENBQXpCLEVBQW1DO0FBQ2pDLFdBQUtqTixLQUFLLEdBQUcsQ0FBUixFQUFXekgsTUFBTSxHQUFHOEgsbUJBQWlCLENBQUN1TSxRQUFELENBQTFDLEVBQXNEclUsTUFBTSxHQUFHeUgsS0FBL0QsRUFBc0VBLEtBQUssRUFBM0UsRUFBK0U7QUFDN0VuRSxRQUFBQSxNQUFNLEdBQUd5UixNQUFNLENBQUNWLFFBQVEsQ0FBQzVNLEtBQUQsQ0FBVCxDQUFmO0FBQ0EsWUFBSW5FLE1BQU0sSUFBSUEsTUFBTSxZQUFZNlEsTUFBaEMsRUFBd0MsT0FBTzdRLE1BQVA7QUFDekM7O0FBQUMsYUFBTyxJQUFJNlEsTUFBSixDQUFXLEtBQVgsQ0FBUDtBQUNIOztBQUNEblQsSUFBQUEsUUFBUSxHQUFHaVQsYUFBVyxDQUFDSSxRQUFELEVBQVdLLE1BQVgsQ0FBdEI7QUFDRDs7QUFFREMsRUFBQUEsSUFBSSxHQUFHM1QsUUFBUSxDQUFDMlQsSUFBaEI7O0FBQ0EsU0FBTyxDQUFDLENBQUNDLElBQUksR0FBR0QsSUFBSSxDQUFDalcsSUFBTCxDQUFVc0MsUUFBVixDQUFSLEVBQTZCZ1UsSUFBckMsRUFBMkM7QUFDekMsUUFBSTtBQUNGMVIsTUFBQUEsTUFBTSxHQUFHeVIsTUFBTSxDQUFDSCxJQUFJLENBQUM3VixLQUFOLENBQWY7QUFDRCxLQUZELENBRUUsT0FBT2YsS0FBUCxFQUFjO0FBQ2RrVyxNQUFBQSxlQUFhLENBQUNsVCxRQUFELEVBQVcsT0FBWCxFQUFvQmhELEtBQXBCLENBQWI7QUFDRDs7QUFDRCxRQUFJLE9BQU9zRixNQUFQLElBQWlCLFFBQWpCLElBQTZCQSxNQUE3QixJQUF1Q0EsTUFBTSxZQUFZNlEsTUFBN0QsRUFBcUUsT0FBTzdRLE1BQVA7QUFDdEU7O0FBQUMsU0FBTyxJQUFJNlEsTUFBSixDQUFXLEtBQVgsQ0FBUDtBQUNILENBNUNEOztBQ1pBLElBQUl2RSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2VSxnQkFBYyxHQUFHN1Usc0JBQXJCOztBQUNBLElBQUlnVixnQkFBYyxHQUFHaFYsc0JBQXJCOztBQUNBLElBQUkwTCx5QkFBeUIsR0FBRzFMLDJCQUFoQzs7QUFDQSxJQUFJNk8sUUFBTSxHQUFHN08sY0FBYjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSTRGLDBCQUF3QixHQUFHNUYsMEJBQS9COztBQUNBLElBQUkrVyxpQkFBaUIsR0FBRy9XLG1CQUF4Qjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFFQSxJQUFJaVgsZUFBZSxHQUFHLFNBQVNDLGNBQVQsQ0FBd0JDLE1BQXhCLEVBQWdDQztBQUFRO0FBQXhDLEVBQXlEO0FBQzdFLE1BQUkvSCxJQUFJLEdBQUcsSUFBWDtBQUNBLE1BQUkzRyxPQUFPLEdBQUc3RyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFwRDtBQUNBLE1BQUksRUFBRWlPLElBQUksWUFBWTRILGVBQWxCLENBQUosRUFBd0MsT0FBTyxJQUFJQSxlQUFKLENBQW9CRSxNQUFwQixFQUE0QkMsT0FBNUIsRUFBcUMxTyxPQUFyQyxDQUFQOztBQUN4QyxNQUFJc00sZ0JBQUosRUFBb0I7QUFDbEI7QUFDQTNGLElBQUFBLElBQUksR0FBRzJGLGdCQUFjLENBQUMsSUFBSXFDLEtBQUosQ0FBVWpXLFNBQVYsQ0FBRCxFQUF1QnlULGdCQUFjLENBQUN4RixJQUFELENBQXJDLENBQXJCO0FBQ0Q7O0FBQ0QsTUFBSStILE9BQU8sS0FBS2hXLFNBQWhCLEVBQTJCMEYsNkJBQTJCLENBQUN1SSxJQUFELEVBQU8sU0FBUCxFQUFrQnJPLFVBQVEsQ0FBQ29XLE9BQUQsQ0FBMUIsQ0FBM0I7QUFDM0JMLEVBQUFBLGlCQUFpQixDQUFDMUgsSUFBRCxFQUFPM0csT0FBUCxDQUFqQjtBQUNBLE1BQUk0TyxXQUFXLEdBQUcsRUFBbEI7QUFDQU4sRUFBQUEsU0FBTyxDQUFDRyxNQUFELEVBQVNHLFdBQVcsQ0FBQ3ZULElBQXJCLEVBQTJCO0FBQUVzTCxJQUFBQSxJQUFJLEVBQUVpSTtBQUFSLEdBQTNCLENBQVA7QUFDQXhRLEVBQUFBLDZCQUEyQixDQUFDdUksSUFBRCxFQUFPLFFBQVAsRUFBaUJpSSxXQUFqQixDQUEzQjtBQUNBLFNBQU9qSSxJQUFQO0FBQ0QsQ0FkRDs7QUFnQkEsSUFBSTJGLGdCQUFKLEVBQW9CQSxnQkFBYyxDQUFDaUMsZUFBRCxFQUFrQkksS0FBbEIsQ0FBZCxDQUFwQixLQUNLM0wseUJBQXlCLENBQUN1TCxlQUFELEVBQWtCSSxLQUFsQixDQUF6QjtBQUVMSixlQUFlLENBQUNqUCxTQUFoQixHQUE0QjZHLFFBQU0sQ0FBQ3dJLEtBQUssQ0FBQ3JQLFNBQVAsRUFBa0I7QUFDbERvSSxFQUFBQSxXQUFXLEVBQUV4SywwQkFBd0IsQ0FBQyxDQUFELEVBQUlxUixlQUFKLENBRGE7QUFFbERHLEVBQUFBLE9BQU8sRUFBRXhSLDBCQUF3QixDQUFDLENBQUQsRUFBSSxFQUFKLENBRmlCO0FBR2xEZixFQUFBQSxJQUFJLEVBQUVlLDBCQUF3QixDQUFDLENBQUQsRUFBSSxnQkFBSjtBQUhvQixDQUFsQixDQUFsQztBQU9BOztBQUNBOEwsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CO0FBQ2xCdVgsRUFBQUEsY0FBYyxFQUFFRDtBQURFLENBQW5CLENBQUQ7O0FDdkNBLElBQUloUyxpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUk2TyxRQUFNLEdBQUc3TyxjQUFiOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjs7QUFFQSxJQUFJdVgsV0FBVyxHQUFHdFMsaUJBQWUsQ0FBQyxhQUFELENBQWpDO0FBQ0EsSUFBSXNRLGdCQUFjLEdBQUdwSixLQUFLLENBQUNuRSxTQUEzQjtBQUdBOztBQUNBLElBQUl1TixnQkFBYyxDQUFDZ0MsV0FBRCxDQUFkLElBQStCblcsU0FBbkMsRUFBOEM7QUFDNUNrRixFQUFBQSxzQkFBb0IsQ0FBQ0osQ0FBckIsQ0FBdUJxUCxnQkFBdkIsRUFBdUNnQyxXQUF2QyxFQUFvRDtBQUNsRHpXLElBQUFBLFlBQVksRUFBRSxJQURvQztBQUVsREQsSUFBQUEsS0FBSyxFQUFFZ08sUUFBTSxDQUFDLElBQUQ7QUFGcUMsR0FBcEQ7QUFJRDs7O0lBR0R0UCxrQkFBQSxHQUFpQixVQUFVb0UsR0FBVixFQUFlO0FBQzlCNFIsRUFBQUEsZ0JBQWMsQ0FBQ2dDLFdBQUQsQ0FBZCxDQUE0QjVULEdBQTVCLElBQW1DLElBQW5DO0FBQ0QsQ0FGRDs7QUNoQkEsSUFBSStOLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlvSixxQkFBbUIsR0FBR3BKLHFCQUExQjs7QUFDQSxJQUFJd1gsa0JBQWdCLEdBQUd4WCxrQkFBdkI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEN1QyxFQUFBQSxFQUFFLEVBQUUsU0FBU0EsRUFBVCxDQUFZbE8sS0FBWixFQUFtQjtBQUNyQixRQUFJdEQsQ0FBQyxHQUFHL0IsVUFBUSxDQUFDLElBQUQsQ0FBaEI7QUFDQSxRQUFJd1QsR0FBRyxHQUFHOU4sbUJBQWlCLENBQUMzRCxDQUFELENBQTNCO0FBQ0EsUUFBSTBSLGFBQWEsR0FBR3ZPLHFCQUFtQixDQUFDRyxLQUFELENBQXZDO0FBQ0EsUUFBSXFPLENBQUMsR0FBR0QsYUFBYSxJQUFJLENBQWpCLEdBQXFCQSxhQUFyQixHQUFxQ0QsR0FBRyxHQUFHQyxhQUFuRDtBQUNBLFdBQVFDLENBQUMsR0FBRyxDQUFKLElBQVNBLENBQUMsSUFBSUYsR0FBZixHQUFzQnRXLFNBQXRCLEdBQWtDNkUsQ0FBQyxDQUFDMlIsQ0FBRCxDQUExQztBQUNEO0FBUGlDLENBQW5DLENBQUQ7QUFVQUosa0JBQWdCLENBQUMsSUFBRCxDQUFoQjs7QUNsQkEsSUFBSTFSLGVBQWEsR0FBRzlGLGVBQXBCOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjs7QUFDQSxJQUFJNEYsMEJBQXdCLEdBQUc1RiwwQkFBL0I7O0lBRUFULGdCQUFBLEdBQWlCLFVBQVVnSCxNQUFWLEVBQWtCNUMsR0FBbEIsRUFBdUI5QyxLQUF2QixFQUE4QjtBQUM3QyxNQUFJZ1gsV0FBVyxHQUFHL1IsZUFBYSxDQUFDbkMsR0FBRCxDQUEvQjtBQUNBLE1BQUlrVSxXQUFXLElBQUl0UixNQUFuQixFQUEyQkQsc0JBQW9CLENBQUNKLENBQXJCLENBQXVCSyxNQUF2QixFQUErQnNSLFdBQS9CLEVBQTRDalMsMEJBQXdCLENBQUMsQ0FBRCxFQUFJL0UsS0FBSixDQUFwRSxFQUEzQixLQUNLMEYsTUFBTSxDQUFDc1IsV0FBRCxDQUFOLEdBQXNCaFgsS0FBdEI7QUFDTixDQUpEOztBQ0xBLElBQUlkLE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFDQSxJQUFJdUMsWUFBVSxHQUFHdkMsZUFBakI7O0FBRUEsSUFBSWlRLFNBQU8sR0FBR2hMLGlCQUFlLENBQUMsU0FBRCxDQUE3Qjs7SUFFQTFGLDhCQUFBLEdBQWlCLFVBQVV1WSxXQUFWLEVBQXVCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQU92VixZQUFVLElBQUksRUFBZCxJQUFvQixDQUFDeEMsT0FBSyxDQUFDLFlBQVk7QUFDNUMsUUFBSWdZLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSTNILFdBQVcsR0FBRzJILEtBQUssQ0FBQzNILFdBQU4sR0FBb0IsRUFBdEM7O0FBQ0FBLElBQUFBLFdBQVcsQ0FBQ0gsU0FBRCxDQUFYLEdBQXVCLFlBQVk7QUFDakMsYUFBTztBQUFFK0gsUUFBQUEsR0FBRyxFQUFFO0FBQVAsT0FBUDtBQUNELEtBRkQ7O0FBR0EsV0FBT0QsS0FBSyxDQUFDRCxXQUFELENBQUwsQ0FBbUJHLE9BQW5CLEVBQTRCRCxHQUE1QixLQUFvQyxDQUEzQztBQUNELEdBUGdDLENBQWpDO0FBUUQsQ0FaRDs7QUNMQSxJQUFJdEcsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSW9NLFNBQU8sR0FBR3BNLFNBQWQ7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlrWSxnQkFBYyxHQUFHbFksZ0JBQXJCOztBQUNBLElBQUl1USxvQkFBa0IsR0FBR3ZRLG9CQUF6Qjs7QUFDQSxJQUFJbVksOEJBQTRCLEdBQUduWSw4QkFBbkM7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXVDLFlBQVUsR0FBR3ZDLGVBQWpCOztBQUVBLElBQUlvWSxvQkFBb0IsR0FBR25ULGlCQUFlLENBQUMsb0JBQUQsQ0FBMUM7QUFDQSxJQUFJb1Qsa0JBQWdCLEdBQUcsZ0JBQXZCO0FBQ0EsSUFBSUMsOEJBQThCLEdBQUcsZ0NBQXJDO0FBR0E7QUFDQTs7QUFDQSxJQUFJQyw0QkFBNEIsR0FBR2hXLFlBQVUsSUFBSSxFQUFkLElBQW9CLENBQUN4QyxPQUFLLENBQUMsWUFBWTtBQUN4RSxNQUFJZ1ksS0FBSyxHQUFHLEVBQVo7QUFDQUEsRUFBQUEsS0FBSyxDQUFDSyxvQkFBRCxDQUFMLEdBQThCLEtBQTlCO0FBQ0EsU0FBT0wsS0FBSyxDQUFDdk4sTUFBTixHQUFlLENBQWYsTUFBc0J1TixLQUE3QjtBQUNELENBSjRELENBQTdEO0FBTUEsSUFBSVMsZUFBZSxHQUFHTCw4QkFBNEIsQ0FBQyxRQUFELENBQWxEOztBQUVBLElBQUlNLGtCQUFrQixHQUFHLFVBQVV4UyxDQUFWLEVBQWE7QUFDcEMsTUFBSSxDQUFDNUMsVUFBUSxDQUFDNEMsQ0FBRCxDQUFiLEVBQWtCLE9BQU8sS0FBUDtBQUNsQixNQUFJeVMsVUFBVSxHQUFHelMsQ0FBQyxDQUFDbVMsb0JBQUQsQ0FBbEI7QUFDQSxTQUFPTSxVQUFVLEtBQUt0WCxTQUFmLEdBQTJCLENBQUMsQ0FBQ3NYLFVBQTdCLEdBQTBDdE0sU0FBTyxDQUFDbkcsQ0FBRCxDQUF4RDtBQUNELENBSkQ7O0FBTUEsSUFBSThGLFFBQU0sR0FBRyxDQUFDd00sNEJBQUQsSUFBaUMsQ0FBQ0MsZUFBL0M7QUFHQTtBQUNBOztBQUNBOUcsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRUg7QUFBeEMsQ0FBRCxFQUFtRDtBQUNsRDtBQUNBdkIsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JtTyxHQUFoQixFQUFxQjtBQUMzQixRQUFJMVMsQ0FBQyxHQUFHL0IsVUFBUSxDQUFDLElBQUQsQ0FBaEI7QUFDQSxRQUFJMFUsQ0FBQyxHQUFHckksb0JBQWtCLENBQUN0SyxDQUFELEVBQUksQ0FBSixDQUExQjtBQUNBLFFBQUk0UyxDQUFDLEdBQUcsQ0FBUjtBQUNBLFFBQUl4TyxDQUFKLEVBQU91TixDQUFQLEVBQVU5VixNQUFWLEVBQWtCNFYsR0FBbEIsRUFBdUJvQixDQUF2Qjs7QUFDQSxTQUFLek8sQ0FBQyxHQUFHLENBQUMsQ0FBTCxFQUFRdkksTUFBTSxHQUFHRCxTQUFTLENBQUNDLE1BQWhDLEVBQXdDdUksQ0FBQyxHQUFHdkksTUFBNUMsRUFBb0R1SSxDQUFDLEVBQXJELEVBQXlEO0FBQ3ZEeU8sTUFBQUEsQ0FBQyxHQUFHek8sQ0FBQyxLQUFLLENBQUMsQ0FBUCxHQUFXcEUsQ0FBWCxHQUFlcEUsU0FBUyxDQUFDd0ksQ0FBRCxDQUE1Qjs7QUFDQSxVQUFJb08sa0JBQWtCLENBQUNLLENBQUQsQ0FBdEIsRUFBMkI7QUFDekJwQixRQUFBQSxHQUFHLEdBQUc5TixtQkFBaUIsQ0FBQ2tQLENBQUQsQ0FBdkI7QUFDQSxZQUFJRCxDQUFDLEdBQUduQixHQUFKLEdBQVVXLGtCQUFkLEVBQWdDLE1BQU1oWCxTQUFTLENBQUNpWCw4QkFBRCxDQUFmOztBQUNoQyxhQUFLVixDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUdGLEdBQWhCLEVBQXFCRSxDQUFDLElBQUlpQixDQUFDLEVBQTNCLEVBQStCLElBQUlqQixDQUFDLElBQUlrQixDQUFULEVBQVlaLGdCQUFjLENBQUNVLENBQUQsRUFBSUMsQ0FBSixFQUFPQyxDQUFDLENBQUNsQixDQUFELENBQVIsQ0FBZDtBQUM1QyxPQUpELE1BSU87QUFDTCxZQUFJaUIsQ0FBQyxJQUFJUixrQkFBVCxFQUEyQixNQUFNaFgsU0FBUyxDQUFDaVgsOEJBQUQsQ0FBZjtBQUMzQkosUUFBQUEsZ0JBQWMsQ0FBQ1UsQ0FBRCxFQUFJQyxDQUFDLEVBQUwsRUFBU0MsQ0FBVCxDQUFkO0FBQ0Q7QUFDRjs7QUFDREYsSUFBQUEsQ0FBQyxDQUFDOVcsTUFBRixHQUFXK1csQ0FBWDtBQUNBLFdBQU9ELENBQVA7QUFDRDtBQXBCaUQsQ0FBbkQsQ0FBRDs7QUN0Q0EsSUFBSTFVLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTJKLGlCQUFlLEdBQUczSixpQkFBdEI7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUVBLElBQUlzSixLQUFHLEdBQUdoSyxJQUFJLENBQUNnSyxHQUFmO0FBR0E7QUFDQTs7SUFDQS9KLGVBQUEsR0FBaUIsR0FBR3daLFVBQUgsSUFBaUIsU0FBU0EsVUFBVCxDQUFvQmpPO0FBQU87QUFBM0IsRUFBc0NrTztBQUFNO0FBQTVDLEVBQXNFO0FBQ3RHLE1BQUkvUyxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLE1BQUl3VCxHQUFHLEdBQUc5TixtQkFBaUIsQ0FBQzNELENBQUQsQ0FBM0I7QUFDQSxNQUFJZ1QsRUFBRSxHQUFHdFAsaUJBQWUsQ0FBQ21CLE1BQUQsRUFBUzRNLEdBQVQsQ0FBeEI7QUFDQSxNQUFJd0IsSUFBSSxHQUFHdlAsaUJBQWUsQ0FBQ3FQLEtBQUQsRUFBUXRCLEdBQVIsQ0FBMUI7QUFDQSxNQUFJeUIsR0FBRyxHQUFHdFgsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBaEQ7QUFDQSxNQUFJZ1ksS0FBSyxHQUFHOVAsS0FBRyxDQUFDLENBQUM2UCxHQUFHLEtBQUsvWCxTQUFSLEdBQW9Cc1csR0FBcEIsR0FBMEIvTixpQkFBZSxDQUFDd1AsR0FBRCxFQUFNekIsR0FBTixDQUExQyxJQUF3RHdCLElBQXpELEVBQStEeEIsR0FBRyxHQUFHdUIsRUFBckUsQ0FBZjtBQUNBLE1BQUlJLEdBQUcsR0FBRyxDQUFWOztBQUNBLE1BQUlILElBQUksR0FBR0QsRUFBUCxJQUFhQSxFQUFFLEdBQUdDLElBQUksR0FBR0UsS0FBN0IsRUFBb0M7QUFDbENDLElBQUFBLEdBQUcsR0FBRyxDQUFDLENBQVA7QUFDQUgsSUFBQUEsSUFBSSxJQUFJRSxLQUFLLEdBQUcsQ0FBaEI7QUFDQUgsSUFBQUEsRUFBRSxJQUFJRyxLQUFLLEdBQUcsQ0FBZDtBQUNEOztBQUNELFNBQU9BLEtBQUssS0FBSyxDQUFqQixFQUFvQjtBQUNsQixRQUFJRixJQUFJLElBQUlqVCxDQUFaLEVBQWVBLENBQUMsQ0FBQ2dULEVBQUQsQ0FBRCxHQUFRaFQsQ0FBQyxDQUFDaVQsSUFBRCxDQUFULENBQWYsS0FDSyxPQUFPalQsQ0FBQyxDQUFDZ1QsRUFBRCxDQUFSO0FBQ0xBLElBQUFBLEVBQUUsSUFBSUksR0FBTjtBQUNBSCxJQUFBQSxJQUFJLElBQUlHLEdBQVI7QUFDRDs7QUFBQyxTQUFPcFQsQ0FBUDtBQUNILENBbkJEOztBQ1ZBLElBQUl5TCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUkrWSxVQUFVLEdBQUcvWSxlQUFqQjs7QUFDQSxJQUFJd1gsa0JBQWdCLEdBQUd4WCxrQkFBdkI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEM2RCxFQUFBQSxVQUFVLEVBQUVBO0FBRHNCLENBQW5DLENBQUQ7O0FBS0F2QixrQkFBZ0IsQ0FBQyxZQUFELENBQWhCOztBQ1ZBLElBQUl6WCxPQUFLLEdBQUdDLFFBQVo7O0lBRUFULHFCQUFBLEdBQWlCLFVBQVV1WSxXQUFWLEVBQXVCdFcsUUFBdkIsRUFBaUM7QUFDaEQsTUFBSUksTUFBTSxHQUFHLEdBQUdrVyxXQUFILENBQWI7QUFDQSxTQUFPLENBQUMsQ0FBQ2xXLE1BQUYsSUFBWTdCLE9BQUssQ0FBQyxZQUFZO0FBQ25DO0FBQ0E2QixJQUFBQSxNQUFNLENBQUNwQixJQUFQLENBQVksSUFBWixFQUFrQmdCLFFBQVEsSUFBSSxZQUFZO0FBQUUsWUFBTSxDQUFOO0FBQVUsS0FBdEQsRUFBd0QsQ0FBeEQ7QUFDRCxHQUh1QixDQUF4QjtBQUlELENBTkQ7O0FDRkEsSUFBSWtRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNaLFFBQU0sR0FBR3RaLGNBQUEsQ0FBd0NzUixLQUFyRDs7QUFDQSxJQUFJaUkscUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBRUEsSUFBSXdaLGVBQWEsR0FBR0QscUJBQW1CLENBQUMsT0FBRCxDQUF2QztBQUdBOztBQUNBN0gsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRSxDQUFDc047QUFBekMsQ0FBRCxFQUEyRDtBQUMxRGxJLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWVQO0FBQVc7QUFBMUIsSUFBMkM7QUFDaEQsV0FBT3VJLFFBQU0sQ0FBQyxJQUFELEVBQU92SSxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBYjtBQUNEO0FBSHlELENBQTNELENBQUQ7O0FDUkEsSUFBSThDLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTJKLGlCQUFlLEdBQUczSixpQkFBdEI7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCO0FBR0E7OztJQUNBVCxXQUFBLEdBQWlCLFNBQVNrYSxJQUFULENBQWM1WTtBQUFNO0FBQXBCLEVBQXNEO0FBQ3JFLE1BQUlvRixDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLE1BQUlwQyxNQUFNLEdBQUc4SCxtQkFBaUIsQ0FBQzNELENBQUQsQ0FBOUI7QUFDQSxNQUFJeVQsZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLE1BQUl5SCxLQUFLLEdBQUdJLGlCQUFlLENBQUMrUCxlQUFlLEdBQUcsQ0FBbEIsR0FBc0I3WCxTQUFTLENBQUMsQ0FBRCxDQUEvQixHQUFxQ1QsU0FBdEMsRUFBaURVLE1BQWpELENBQTNCO0FBQ0EsTUFBSXFYLEdBQUcsR0FBR08sZUFBZSxHQUFHLENBQWxCLEdBQXNCN1gsU0FBUyxDQUFDLENBQUQsQ0FBL0IsR0FBcUNULFNBQS9DO0FBQ0EsTUFBSXVZLE1BQU0sR0FBR1IsR0FBRyxLQUFLL1gsU0FBUixHQUFvQlUsTUFBcEIsR0FBNkI2SCxpQkFBZSxDQUFDd1AsR0FBRCxFQUFNclgsTUFBTixDQUF6RDs7QUFDQSxTQUFPNlgsTUFBTSxHQUFHcFEsS0FBaEIsRUFBdUJ0RCxDQUFDLENBQUNzRCxLQUFLLEVBQU4sQ0FBRCxHQUFhMUksS0FBYjs7QUFDdkIsU0FBT29GLENBQVA7QUFDRCxDQVREOztBQ1BBLElBQUl5TCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5WixJQUFJLEdBQUd6WixXQUFYOztBQUNBLElBQUl3WCxrQkFBZ0IsR0FBR3hYLGtCQUF2QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQ3VFLEVBQUFBLElBQUksRUFBRUE7QUFENEIsQ0FBbkMsQ0FBRDs7QUFLQWpDLGtCQUFnQixDQUFDLE1BQUQsQ0FBaEI7O0FDVkEsSUFBSTlGLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTRaLFNBQU8sR0FBRzVaLGNBQUEsQ0FBd0NvUixNQUF0RDs7QUFDQSxJQUFJK0csOEJBQTRCLEdBQUduWSw4QkFBbkM7O0FBRUEsSUFBSTZaLHFCQUFtQixHQUFHMUIsOEJBQTRCLENBQUMsUUFBRCxDQUF0RDtBQUdBO0FBQ0E7O0FBQ0F6RyxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFLENBQUMyTjtBQUF6QyxDQUFELEVBQWlFO0FBQ2hFekksRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JMO0FBQVc7QUFBM0IsSUFBNEM7QUFDbEQsV0FBTzZJLFNBQU8sQ0FBQyxJQUFELEVBQU83SSxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBZDtBQUNEO0FBSCtELENBQWpFLENBQUQ7O0FDVEEsSUFBSXNRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSThaLE9BQUssR0FBRzlaLGNBQUEsQ0FBd0N1UixJQUFwRDs7QUFDQSxJQUFJaUcsa0JBQWdCLEdBQUd4WCxrQkFBdkI7O0FBRUEsSUFBSStaLElBQUksR0FBRyxNQUFYO0FBQ0EsSUFBSUMsYUFBVyxHQUFHLElBQWxCOztBQUdBLElBQUlELElBQUksSUFBSSxFQUFaLEVBQWdCNU4sS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTNE4sSUFBVCxFQUFlLFlBQVk7QUFBRUMsRUFBQUEsYUFBVyxHQUFHLEtBQWQ7QUFBc0IsQ0FBbkQ7QUFHaEI7O0FBQ0F0SSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFOE47QUFBeEMsQ0FBRCxFQUF3RDtBQUN2RHpJLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNSO0FBQVc7QUFBekIsSUFBbUQ7QUFDdkQsV0FBTytJLE9BQUssQ0FBQyxJQUFELEVBQU8vSSxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBWjtBQUNEO0FBSHNELENBQXhELENBQUQ7O0FBT0FvVyxrQkFBZ0IsQ0FBQ3VDLElBQUQsQ0FBaEI7O0FDbkJBLElBQUlySSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlpYSxZQUFVLEdBQUdqYSxjQUFBLENBQXdDd1IsU0FBekQ7O0FBQ0EsSUFBSWdHLGtCQUFnQixHQUFHeFgsa0JBQXZCOztBQUVBLElBQUlrYSxVQUFVLEdBQUcsV0FBakI7QUFDQSxJQUFJRixXQUFXLEdBQUcsSUFBbEI7O0FBR0EsSUFBSUUsVUFBVSxJQUFJLEVBQWxCLEVBQXNCL04sS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTK04sVUFBVCxFQUFxQixZQUFZO0FBQUVGLEVBQUFBLFdBQVcsR0FBRyxLQUFkO0FBQXNCLENBQXpEO0FBR3RCOztBQUNBdEksSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRThOO0FBQXhDLENBQUQsRUFBd0Q7QUFDdkR4SSxFQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQlQ7QUFBVztBQUE5QixJQUF3RDtBQUNqRSxXQUFPa0osWUFBVSxDQUFDLElBQUQsRUFBT2xKLFVBQVAsRUFBbUJsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF6RCxDQUFqQjtBQUNEO0FBSHNELENBQXhELENBQUQ7O0FBT0FvVyxrQkFBZ0IsQ0FBQzBDLFVBQUQsQ0FBaEI7O0FDbkJBLElBQUk5TixTQUFPLEdBQUdwTSxTQUFkOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7QUFDQSxJQUFJc1EsTUFBSSxHQUFHdFEsbUJBQVg7QUFHQTs7O0FBQ0EsSUFBSW1hLGtCQUFnQixHQUFHLFVBQVVyUCxNQUFWLEVBQWtCc1AsUUFBbEIsRUFBNEJyUixNQUE1QixFQUFvQ3NSLFNBQXBDLEVBQStDckIsS0FBL0MsRUFBc0RzQixLQUF0RCxFQUE2REMsTUFBN0QsRUFBcUVDLE9BQXJFLEVBQThFO0FBQ25HLE1BQUlDLFdBQVcsR0FBR3pCLEtBQWxCO0FBQ0EsTUFBSTBCLFdBQVcsR0FBRyxDQUFsQjtBQUNBLE1BQUlDLEtBQUssR0FBR0osTUFBTSxHQUFHakssTUFBSSxDQUFDaUssTUFBRCxFQUFTQyxPQUFULEVBQWtCLENBQWxCLENBQVAsR0FBOEIsS0FBaEQ7QUFDQSxNQUFJSSxPQUFKLEVBQWFDLFVBQWI7O0FBRUEsU0FBT0gsV0FBVyxHQUFHTCxTQUFyQixFQUFnQztBQUM5QixRQUFJSyxXQUFXLElBQUkzUixNQUFuQixFQUEyQjtBQUN6QjZSLE1BQUFBLE9BQU8sR0FBR0QsS0FBSyxHQUFHQSxLQUFLLENBQUM1UixNQUFNLENBQUMyUixXQUFELENBQVAsRUFBc0JBLFdBQXRCLEVBQW1DTixRQUFuQyxDQUFSLEdBQXVEclIsTUFBTSxDQUFDMlIsV0FBRCxDQUE1RTs7QUFFQSxVQUFJSixLQUFLLEdBQUcsQ0FBUixJQUFhbE8sU0FBTyxDQUFDd08sT0FBRCxDQUF4QixFQUFtQztBQUNqQ0MsUUFBQUEsVUFBVSxHQUFHalIsbUJBQWlCLENBQUNnUixPQUFELENBQTlCO0FBQ0FILFFBQUFBLFdBQVcsR0FBR04sa0JBQWdCLENBQUNyUCxNQUFELEVBQVNzUCxRQUFULEVBQW1CUSxPQUFuQixFQUE0QkMsVUFBNUIsRUFBd0NKLFdBQXhDLEVBQXFESCxLQUFLLEdBQUcsQ0FBN0QsQ0FBaEIsR0FBa0YsQ0FBaEc7QUFDRCxPQUhELE1BR087QUFDTCxZQUFJRyxXQUFXLElBQUksZ0JBQW5CLEVBQXFDLE1BQU1wWixTQUFTLENBQUMsb0NBQUQsQ0FBZjtBQUNyQ3lKLFFBQUFBLE1BQU0sQ0FBQzJQLFdBQUQsQ0FBTixHQUFzQkcsT0FBdEI7QUFDRDs7QUFFREgsTUFBQUEsV0FBVztBQUNaOztBQUNEQyxJQUFBQSxXQUFXO0FBQ1o7O0FBQ0QsU0FBT0QsV0FBUDtBQUNELENBdkJEOztJQXlCQWxiLGtCQUFBLEdBQWlCNGEsa0JBQWpCOztBQy9CQSxJQUFJekksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbWEsa0JBQWdCLEdBQUduYSxrQkFBdkI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlvSixxQkFBbUIsR0FBR3BKLHFCQUExQjs7QUFDQSxJQUFJdVEsb0JBQWtCLEdBQUd2USxvQkFBekI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEM0RixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxHQUFrQztBQUN0QyxRQUFJQyxRQUFRLEdBQUdsWixTQUFTLENBQUNDLE1BQVYsR0FBbUJELFNBQVMsQ0FBQyxDQUFELENBQTVCLEdBQWtDVCxTQUFqRDtBQUNBLFFBQUk2RSxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLFFBQUltVyxTQUFTLEdBQUd6USxtQkFBaUIsQ0FBQzNELENBQUQsQ0FBakM7QUFDQSxRQUFJMlMsQ0FBQyxHQUFHckksb0JBQWtCLENBQUN0SyxDQUFELEVBQUksQ0FBSixDQUExQjtBQUNBMlMsSUFBQUEsQ0FBQyxDQUFDOVcsTUFBRixHQUFXcVksa0JBQWdCLENBQUN2QixDQUFELEVBQUkzUyxDQUFKLEVBQU9BLENBQVAsRUFBVW9VLFNBQVYsRUFBcUIsQ0FBckIsRUFBd0JVLFFBQVEsS0FBSzNaLFNBQWIsR0FBeUIsQ0FBekIsR0FBNkJnSSxxQkFBbUIsQ0FBQzJSLFFBQUQsQ0FBeEUsQ0FBM0I7QUFDQSxXQUFPbkMsQ0FBUDtBQUNEO0FBUmlDLENBQW5DLENBQUQ7O0FDVEEsSUFBSWxILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW1hLGdCQUFnQixHQUFHbmEsa0JBQXZCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBQ0EsSUFBSXVRLG9CQUFrQixHQUFHdlEsb0JBQXpCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDOEYsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJqSztBQUFXO0FBQTVCLElBQTZDO0FBQ3BELFFBQUk5SyxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLFFBQUltVyxTQUFTLEdBQUd6USxtQkFBaUIsQ0FBQzNELENBQUQsQ0FBakM7QUFDQSxRQUFJMlMsQ0FBSjtBQUNBMVYsSUFBQUEsV0FBUyxDQUFDNk4sVUFBRCxDQUFUO0FBQ0E2SCxJQUFBQSxDQUFDLEdBQUdySSxvQkFBa0IsQ0FBQ3RLLENBQUQsRUFBSSxDQUFKLENBQXRCO0FBQ0EyUyxJQUFBQSxDQUFDLENBQUM5VyxNQUFGLEdBQVdxWSxnQkFBZ0IsQ0FBQ3ZCLENBQUQsRUFBSTNTLENBQUosRUFBT0EsQ0FBUCxFQUFVb1UsU0FBVixFQUFxQixDQUFyQixFQUF3QixDQUF4QixFQUEyQnRKLFVBQTNCLEVBQXVDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBN0UsQ0FBM0I7QUFDQSxXQUFPd1gsQ0FBUDtBQUNEO0FBVGlDLENBQW5DLENBQUQ7O0FDVEEsSUFBSTVHLFVBQVEsR0FBR2hTLGNBQUEsQ0FBd0NrUixPQUF2RDs7QUFDQSxJQUFJcUkscUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBRUEsSUFBSXdaLGVBQWEsR0FBR0QscUJBQW1CLENBQUMsU0FBRCxDQUF2QztBQUdBOztJQUNBaGEsWUFBQSxHQUFpQixDQUFDaWEsZUFBRCxHQUFpQixTQUFTdEksT0FBVCxDQUFpQkg7QUFBVztBQUE1QixFQUE2QztBQUM3RSxTQUFPaUIsVUFBUSxDQUFDLElBQUQsRUFBT2pCLFVBQVAsRUFBbUJsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF6RCxDQUFmLENBRDZFO0FBRzlFLENBSGdCLEdBR2IsR0FBRzhQLE9BSFA7O0FDUEEsSUFBSVEsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa1IsU0FBTyxHQUFHbFIsWUFBZDtBQUdBO0FBQ0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRSxHQUFHZ0YsT0FBSCxJQUFjQTtBQUF0RCxDQUFELEVBQWtFO0FBQ2pFQSxFQUFBQSxPQUFPLEVBQUVBO0FBRHdELENBQWxFLENBQUQ7O0FDUEEsSUFBSS9LLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWdXLGVBQWEsR0FBR2hXLGVBQXBCOzs7SUFHQVQsOEJBQUEsR0FBaUIsVUFBVXVELFFBQVYsRUFBb0JVLEVBQXBCLEVBQXdCM0MsS0FBeEIsRUFBK0JvYSxPQUEvQixFQUF3QztBQUN2RCxNQUFJO0FBQ0YsV0FBT0EsT0FBTyxHQUFHelgsRUFBRSxDQUFDMkMsV0FBUSxDQUFDdEYsS0FBRCxDQUFSLENBQWdCLENBQWhCLENBQUQsRUFBcUJBLEtBQUssQ0FBQyxDQUFELENBQTFCLENBQUwsR0FBc0MyQyxFQUFFLENBQUMzQyxLQUFELENBQXREO0FBQ0QsR0FGRCxDQUVFLE9BQU9mLEtBQVAsRUFBYztBQUNka1csSUFBQUEsZUFBYSxDQUFDbFQsUUFBRCxFQUFXLE9BQVgsRUFBb0JoRCxLQUFwQixDQUFiO0FBQ0Q7QUFDRixDQU5EOztBQ0hBLElBQUl3USxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJa2IsOEJBQTRCLEdBQUdsYiw4QkFBbkM7O0FBQ0EsSUFBSThWLHVCQUFxQixHQUFHOVYsdUJBQTVCOztBQUNBLElBQUlnUSxlQUFhLEdBQUdoUSxlQUFwQjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBQ0EsSUFBSWtZLGdCQUFjLEdBQUdsWSxnQkFBckI7O0FBQ0EsSUFBSStWLGFBQVcsR0FBRy9WLGFBQWxCOztBQUNBLElBQUl3VixtQkFBaUIsR0FBR3hWLG1CQUF4QjtBQUdBOzs7SUFDQVQsV0FBQSxHQUFpQixTQUFTMlosSUFBVCxDQUFjaUM7QUFBVTtBQUF4QixFQUF3RTtBQUN2RixNQUFJbFYsQ0FBQyxHQUFHL0IsVUFBUSxDQUFDaVgsU0FBRCxDQUFoQjtBQUNBLE1BQUlDLGNBQWMsR0FBR3BMLGVBQWEsQ0FBQyxJQUFELENBQWxDO0FBQ0EsTUFBSTBKLGVBQWUsR0FBRzdYLFNBQVMsQ0FBQ0MsTUFBaEM7QUFDQSxNQUFJdVosS0FBSyxHQUFHM0IsZUFBZSxHQUFHLENBQWxCLEdBQXNCN1gsU0FBUyxDQUFDLENBQUQsQ0FBL0IsR0FBcUNULFNBQWpEO0FBQ0EsTUFBSWthLE9BQU8sR0FBR0QsS0FBSyxLQUFLamEsU0FBeEI7QUFDQSxNQUFJa2EsT0FBSixFQUFhRCxLQUFLLEdBQUcvSyxNQUFJLENBQUMrSyxLQUFELEVBQVEzQixlQUFlLEdBQUcsQ0FBbEIsR0FBc0I3WCxTQUFTLENBQUMsQ0FBRCxDQUEvQixHQUFxQ1QsU0FBN0MsRUFBd0QsQ0FBeEQsQ0FBWjtBQUNiLE1BQUlzVSxjQUFjLEdBQUdGLG1CQUFpQixDQUFDdlAsQ0FBRCxDQUF0QztBQUNBLE1BQUlzRCxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUl6SCxNQUFKLEVBQVlzRCxNQUFaLEVBQW9Cc1IsSUFBcEIsRUFBMEI1VCxRQUExQixFQUFvQzJULElBQXBDLEVBQTBDNVYsS0FBMUMsQ0FUdUY7O0FBV3ZGLE1BQUk2VSxjQUFjLElBQUksRUFBRSxRQUFRdkosS0FBUixJQUFpQjJKLHVCQUFxQixDQUFDSixjQUFELENBQXhDLENBQXRCLEVBQWlGO0FBQy9FNVMsSUFBQUEsUUFBUSxHQUFHaVQsYUFBVyxDQUFDOVAsQ0FBRCxFQUFJeVAsY0FBSixDQUF0QjtBQUNBZSxJQUFBQSxJQUFJLEdBQUczVCxRQUFRLENBQUMyVCxJQUFoQjtBQUNBclIsSUFBQUEsTUFBTSxHQUFHZ1csY0FBYyxHQUFHLElBQUksSUFBSixFQUFILEdBQWdCLEVBQXZDOztBQUNBLFdBQU0sQ0FBQyxDQUFDMUUsSUFBSSxHQUFHRCxJQUFJLENBQUNqVyxJQUFMLENBQVVzQyxRQUFWLENBQVIsRUFBNkJnVSxJQUFwQyxFQUEwQ3ZOLEtBQUssRUFBL0MsRUFBbUQ7QUFDakQxSSxNQUFBQSxLQUFLLEdBQUd5YSxPQUFPLEdBQUdKLDhCQUE0QixDQUFDcFksUUFBRCxFQUFXdVksS0FBWCxFQUFrQixDQUFDM0UsSUFBSSxDQUFDN1YsS0FBTixFQUFhMEksS0FBYixDQUFsQixFQUF1QyxJQUF2QyxDQUEvQixHQUE4RW1OLElBQUksQ0FBQzdWLEtBQWxHO0FBQ0FxWCxNQUFBQSxnQkFBYyxDQUFDOVMsTUFBRCxFQUFTbUUsS0FBVCxFQUFnQjFJLEtBQWhCLENBQWQ7QUFDRDtBQUNGLEdBUkQsTUFRTztBQUNMaUIsSUFBQUEsTUFBTSxHQUFHOEgsbUJBQWlCLENBQUMzRCxDQUFELENBQTFCO0FBQ0FiLElBQUFBLE1BQU0sR0FBR2dXLGNBQWMsR0FBRyxJQUFJLElBQUosQ0FBU3RaLE1BQVQsQ0FBSCxHQUFzQnFLLEtBQUssQ0FBQ3JLLE1BQUQsQ0FBbEQ7O0FBQ0EsV0FBTUEsTUFBTSxHQUFHeUgsS0FBZixFQUFzQkEsS0FBSyxFQUEzQixFQUErQjtBQUM3QjFJLE1BQUFBLEtBQUssR0FBR3lhLE9BQU8sR0FBR0QsS0FBSyxDQUFDcFYsQ0FBQyxDQUFDc0QsS0FBRCxDQUFGLEVBQVdBLEtBQVgsQ0FBUixHQUE0QnRELENBQUMsQ0FBQ3NELEtBQUQsQ0FBNUM7QUFDQTJPLE1BQUFBLGdCQUFjLENBQUM5UyxNQUFELEVBQVNtRSxLQUFULEVBQWdCMUksS0FBaEIsQ0FBZDtBQUNEO0FBQ0Y7O0FBQ0R1RSxFQUFBQSxNQUFNLENBQUN0RCxNQUFQLEdBQWdCeUgsS0FBaEI7QUFDQSxTQUFPbkUsTUFBUDtBQUNELENBN0JEOztBQ2JBLElBQUlILGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBRUEsSUFBSXNWLFVBQVEsR0FBR3JRLGlCQUFlLENBQUMsVUFBRCxDQUE5QjtBQUNBLElBQUlzVyxZQUFZLEdBQUcsS0FBbkI7O0FBRUEsSUFBSTtBQUNGLE1BQUl4TCxNQUFNLEdBQUcsQ0FBYjtBQUNBLE1BQUl5TCxrQkFBa0IsR0FBRztBQUN2Qi9FLElBQUFBLElBQUksRUFBRSxZQUFZO0FBQ2hCLGFBQU87QUFBRUssUUFBQUEsSUFBSSxFQUFFLENBQUMsQ0FBQy9HLE1BQU07QUFBaEIsT0FBUDtBQUNELEtBSHNCO0FBSXZCLGNBQVUsWUFBWTtBQUNwQndMLE1BQUFBLFlBQVksR0FBRyxJQUFmO0FBQ0Q7QUFOc0IsR0FBekI7O0FBUUFDLEVBQUFBLGtCQUFrQixDQUFDbEcsVUFBRCxDQUFsQixHQUErQixZQUFZO0FBQ3pDLFdBQU8sSUFBUDtBQUNELEdBRkQsQ0FWRTs7O0FBY0ZuSixFQUFBQSxLQUFLLENBQUMrTSxJQUFOLENBQVdzQyxrQkFBWCxFQUErQixZQUFZO0FBQUUsVUFBTSxDQUFOO0FBQVUsR0FBdkQ7QUFDRCxDQWZELENBZUUsT0FBTzFiLEtBQVAsRUFBYztBQUFFO0FBQWE7O0lBRS9CUCw2QkFBQSxHQUFpQixVQUFVTSxJQUFWLEVBQWdCNGIsWUFBaEIsRUFBOEI7QUFDN0MsTUFBSSxDQUFDQSxZQUFELElBQWlCLENBQUNGLFlBQXRCLEVBQW9DLE9BQU8sS0FBUDtBQUNwQyxNQUFJRyxpQkFBaUIsR0FBRyxLQUF4Qjs7QUFDQSxNQUFJO0FBQ0YsUUFBSW5WLE1BQU0sR0FBRyxFQUFiOztBQUNBQSxJQUFBQSxNQUFNLENBQUMrTyxVQUFELENBQU4sR0FBbUIsWUFBWTtBQUM3QixhQUFPO0FBQ0xtQixRQUFBQSxJQUFJLEVBQUUsWUFBWTtBQUNoQixpQkFBTztBQUFFSyxZQUFBQSxJQUFJLEVBQUU0RSxpQkFBaUIsR0FBRztBQUE1QixXQUFQO0FBQ0Q7QUFISSxPQUFQO0FBS0QsS0FORDs7QUFPQTdiLElBQUFBLElBQUksQ0FBQzBHLE1BQUQsQ0FBSjtBQUNELEdBVkQsQ0FVRSxPQUFPekcsS0FBUCxFQUFjO0FBQUU7QUFBYTs7QUFDL0IsU0FBTzRiLGlCQUFQO0FBQ0QsQ0FmRDs7QUN0QkEsSUFBSWhLLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtaLE1BQUksR0FBR2xaLFdBQVg7O0FBQ0EsSUFBSTJiLDZCQUEyQixHQUFHM2IsNkJBQWxDOztBQUVBLElBQUk0YixxQkFBbUIsR0FBRyxDQUFDRCw2QkFBMkIsQ0FBQyxVQUFVeEYsUUFBVixFQUFvQjtBQUN6RTtBQUNBaEssRUFBQUEsS0FBSyxDQUFDK00sSUFBTixDQUFXL0MsUUFBWDtBQUNELENBSHFELENBQXREO0FBTUE7O0FBQ0F6RSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQXpCO0FBQStCSSxFQUFBQSxNQUFNLEVBQUUwUDtBQUF2QyxDQUFELEVBQStEO0FBQzlEMUMsRUFBQUEsSUFBSSxFQUFFQTtBQUR3RCxDQUEvRCxDQUFEOztBQ1ZBLElBQUl4SCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2YixXQUFTLEdBQUc3YixhQUFBLENBQXVDa0ssUUFBdkQ7O0FBQ0EsSUFBSXNOLGtCQUFnQixHQUFHeFgsa0JBQXZCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDaEwsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JGO0FBQUc7QUFBckIsSUFBNEM7QUFDcEQsV0FBTzZSLFdBQVMsQ0FBQyxJQUFELEVBQU83UixFQUFQLEVBQVduSSxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFqRCxDQUFoQjtBQUNEO0FBSGlDLENBQW5DLENBQUQ7O0FBT0FvVyxrQkFBZ0IsQ0FBQyxVQUFELENBQWhCOztBQ2JBOztBQUNBLElBQUk5RixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk4YixVQUFRLEdBQUc5YixhQUFBLENBQXVDbUssT0FBdEQ7O0FBQ0EsSUFBSW9QLHFCQUFtQixHQUFHdloscUJBQTFCOztBQUVBLElBQUkrYixhQUFhLEdBQUcsR0FBRzVSLE9BQXZCO0FBRUEsSUFBSTZSLGVBQWEsR0FBRyxDQUFDLENBQUNELGFBQUYsSUFBbUIsSUFBSSxDQUFDLENBQUQsRUFBSTVSLE9BQUosQ0FBWSxDQUFaLEVBQWUsQ0FBQyxDQUFoQixDQUFKLEdBQXlCLENBQWhFO0FBQ0EsSUFBSXFQLGVBQWEsR0FBR0QscUJBQW1CLENBQUMsU0FBRCxDQUF2QztBQUdBOztBQUNBN0gsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRThQLGVBQWEsSUFBSSxDQUFDeEM7QUFBMUQsQ0FBRCxFQUE0RTtBQUMzRXJQLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCOFI7QUFBYztBQUEvQixJQUFzRDtBQUM3RCxXQUFPRCxlQUFhO0FBQUEsTUFFaEJELGFBQWEsQ0FBQ3ZNLEtBQWQsQ0FBb0IsSUFBcEIsRUFBMEIzTixTQUExQixLQUF3QyxDQUZ4QixHQUdoQmlhLFVBQVEsQ0FBQyxJQUFELEVBQU9HLGFBQVAsRUFBc0JwYSxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUE1RCxDQUhaO0FBSUQ7QUFOMEUsQ0FBNUUsQ0FBRDs7QUNiQSxJQUFJc1EsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb00sU0FBTyxHQUFHcE0sU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBekIsQ0FBRCxFQUFrQztBQUNqQ00sRUFBQUEsT0FBTyxFQUFFQTtBQUR3QixDQUFsQyxDQUFEOztBQ0pBLElBQUlyTSxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUVBLElBQUk2VSxnQkFBYyxHQUFHN1Usc0JBQXJCOztBQUNBLElBQUl5TCxVQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFHQSxJQUFJc1YsVUFBUSxHQUFHclEsaUJBQWUsQ0FBQyxVQUFELENBQTlCO0FBQ0EsSUFBSWlYLHdCQUFzQixHQUFHLEtBQTdCO0FBR0E7O0FBQ0EsSUFBSUMsbUJBQUosRUFBdUJDLGlDQUF2QixFQUEwREMsZUFBMUQ7QUFFQTs7QUFDQSxJQUFJLEdBQUd6VixJQUFQLEVBQWE7QUFDWHlWLEVBQUFBLGVBQWEsR0FBRyxHQUFHelYsSUFBSCxFQUFoQixDQURXOztBQUdYLE1BQUksRUFBRSxVQUFVeVYsZUFBWixDQUFKLEVBQWdDSCx3QkFBc0IsR0FBRyxJQUF6QixDQUFoQyxLQUNLO0FBQ0hFLElBQUFBLGlDQUFpQyxHQUFHdkgsZ0JBQWMsQ0FBQ0EsZ0JBQWMsQ0FBQ3dILGVBQUQsQ0FBZixDQUFsRDtBQUNBLFFBQUlELGlDQUFpQyxLQUFLbmMsTUFBTSxDQUFDK0gsU0FBakQsRUFBNERtVSxtQkFBaUIsR0FBR0MsaUNBQXBCO0FBQzdEO0FBQ0Y7O0FBRUQsSUFBSUUsc0JBQXNCLEdBQUdILG1CQUFpQixJQUFJL2EsU0FBckIsSUFBa0NyQixPQUFLLENBQUMsWUFBWTtBQUMvRSxNQUFJNEcsSUFBSSxHQUFHLEVBQVgsQ0FEK0U7O0FBRy9FLFNBQU93VixtQkFBaUIsQ0FBQzdHLFVBQUQsQ0FBakIsQ0FBNEI5VSxJQUE1QixDQUFpQ21HLElBQWpDLE1BQTJDQSxJQUFsRDtBQUNELENBSm1FLENBQXBFO0FBTUEsSUFBSTJWLHNCQUFKLEVBQTRCSCxtQkFBaUIsR0FBRyxFQUFwQjtBQUk1Qjs7QUFDQSxJQUFJLENBQUMxYSxZQUFVLENBQUMwYSxtQkFBaUIsQ0FBQzdHLFVBQUQsQ0FBbEIsQ0FBZixFQUE4QztBQUM1QzdKLEVBQUFBLFVBQVEsQ0FBQzBRLG1CQUFELEVBQW9CN0csVUFBcEIsRUFBOEIsWUFBWTtBQUNoRCxXQUFPLElBQVA7QUFDRCxHQUZPLENBQVI7QUFHRDs7SUFFRC9WLGFBQUEsR0FBaUI7QUFDZjRjLEVBQUFBLGlCQUFpQixFQUFFQSxtQkFESjtBQUVmRCxFQUFBQSxzQkFBc0IsRUFBRUE7QUFGVCxDQUFqQjs7QUMzQ0EsSUFBSUMsbUJBQWlCLEdBQUduYyxhQUFBLENBQXVDbWMsaUJBQS9EOztBQUNBLElBQUl0TixRQUFNLEdBQUc3TyxjQUFiOztBQUNBLElBQUk0RiwwQkFBd0IsR0FBRzVGLDBCQUEvQjs7QUFDQSxJQUFJK1IsZ0JBQWMsR0FBRy9SLGdCQUFyQjs7QUFDQSxJQUFJcVYsV0FBUyxHQUFHclYsU0FBaEI7O0FBRUEsSUFBSXVjLFlBQVUsR0FBRyxZQUFZO0FBQUUsU0FBTyxJQUFQO0FBQWMsQ0FBN0M7O0lBRUFoZCwyQkFBQSxHQUFpQixVQUFVaWQsbUJBQVYsRUFBK0JyTixJQUEvQixFQUFxQ3NILElBQXJDLEVBQTJDO0FBQzFELE1BQUlwSyxhQUFhLEdBQUc4QyxJQUFJLEdBQUcsV0FBM0I7QUFDQXFOLEVBQUFBLG1CQUFtQixDQUFDeFUsU0FBcEIsR0FBZ0M2RyxRQUFNLENBQUNzTixtQkFBRCxFQUFvQjtBQUFFMUYsSUFBQUEsSUFBSSxFQUFFN1EsMEJBQXdCLENBQUMsQ0FBRCxFQUFJNlEsSUFBSjtBQUFoQyxHQUFwQixDQUF0QztBQUNBMUUsRUFBQUEsZ0JBQWMsQ0FBQ3lLLG1CQUFELEVBQXNCblEsYUFBdEIsRUFBcUMsS0FBckMsQ0FBZDtBQUNBZ0osRUFBQUEsV0FBUyxDQUFDaEosYUFBRCxDQUFULEdBQTJCa1EsWUFBM0I7QUFDQSxTQUFPQyxtQkFBUDtBQUNELENBTkQ7O0FDUkEsSUFBSTlLLElBQUMsR0FBRzFSLE9BQVI7O0FBRUEsSUFBSXljLGNBQVksR0FBR3pjLFlBQW5COztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJMGMsMkJBQXlCLEdBQUcxYywyQkFBaEM7O0FBQ0EsSUFBSTZVLGdCQUFjLEdBQUc3VSxzQkFBckI7O0FBQ0EsSUFBSWdWLGdCQUFjLEdBQUdoVixzQkFBckI7O0FBQ0EsSUFBSStSLGdCQUFjLEdBQUcvUixnQkFBckI7O0FBQ0EsSUFBSThHLDZCQUEyQixHQUFHOUcsNkJBQWxDOztBQUNBLElBQUl5TCxVQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFDQSxJQUFJcVYsV0FBUyxHQUFHclYsU0FBaEI7O0FBQ0EsSUFBSTJjLGFBQWEsR0FBRzNjLGFBQXBCOztBQUVBLElBQUk0YyxzQkFBb0IsR0FBR0gsY0FBWSxDQUFDdlUsTUFBeEM7QUFDQSxJQUFJSSw0QkFBMEIsR0FBR21VLGNBQVksQ0FBQ3JVLFlBQTlDO0FBQ0EsSUFBSStULG1CQUFpQixHQUFHUSxhQUFhLENBQUNSLGlCQUF0QztBQUNBLElBQUlELHNCQUFzQixHQUFHUyxhQUFhLENBQUNULHNCQUEzQztBQUNBLElBQUk1RyxVQUFRLEdBQUdyUSxpQkFBZSxDQUFDLFVBQUQsQ0FBOUI7QUFDQSxJQUFJNFgsSUFBSSxHQUFHLE1BQVg7QUFDQSxJQUFJQyxNQUFNLEdBQUcsUUFBYjtBQUNBLElBQUk3QixPQUFPLEdBQUcsU0FBZDs7QUFFQSxJQUFJc0IsVUFBVSxHQUFHLFlBQVk7QUFBRSxTQUFPLElBQVA7QUFBYyxDQUE3Qzs7SUFFQWhkLGdCQUFBLEdBQWlCLFVBQVV3ZCxRQUFWLEVBQW9CNU4sSUFBcEIsRUFBMEJxTixtQkFBMUIsRUFBK0MvRixJQUEvQyxFQUFxRHVHLE9BQXJELEVBQThEQyxNQUE5RCxFQUFzRWxSLE1BQXRFLEVBQThFO0FBQzdGMlEsRUFBQUEsMkJBQXlCLENBQUNGLG1CQUFELEVBQXNCck4sSUFBdEIsRUFBNEJzSCxJQUE1QixDQUF6Qjs7QUFFQSxNQUFJeUcsa0JBQWtCLEdBQUcsVUFBVUMsSUFBVixFQUFnQjtBQUN2QyxRQUFJQSxJQUFJLEtBQUtILE9BQVQsSUFBb0JJLGVBQXhCLEVBQXlDLE9BQU9BLGVBQVA7QUFDekMsUUFBSSxDQUFDbEIsc0JBQUQsSUFBMkJpQixJQUFJLElBQUlFLGlCQUF2QyxFQUEwRCxPQUFPQSxpQkFBaUIsQ0FBQ0YsSUFBRCxDQUF4Qjs7QUFDMUQsWUFBUUEsSUFBUjtBQUNFLFdBQUtOLElBQUw7QUFBVyxlQUFPLFNBQVNqVyxJQUFULEdBQWdCO0FBQUUsaUJBQU8sSUFBSTRWLG1CQUFKLENBQXdCLElBQXhCLEVBQThCVyxJQUE5QixDQUFQO0FBQTZDLFNBQXRFOztBQUNYLFdBQUtMLE1BQUw7QUFBYSxlQUFPLFNBQVNRLE1BQVQsR0FBa0I7QUFBRSxpQkFBTyxJQUFJZCxtQkFBSixDQUF3QixJQUF4QixFQUE4QlcsSUFBOUIsQ0FBUDtBQUE2QyxTQUF4RTs7QUFDYixXQUFLbEMsT0FBTDtBQUFjLGVBQU8sU0FBU3NDLE9BQVQsR0FBbUI7QUFBRSxpQkFBTyxJQUFJZixtQkFBSixDQUF3QixJQUF4QixFQUE4QlcsSUFBOUIsQ0FBUDtBQUE2QyxTQUF6RTtBQUhoQjs7QUFJRSxXQUFPLFlBQVk7QUFBRSxhQUFPLElBQUlYLG1CQUFKLENBQXdCLElBQXhCLENBQVA7QUFBdUMsS0FBNUQ7QUFDSCxHQVJEOztBQVVBLE1BQUluUSxhQUFhLEdBQUc4QyxJQUFJLEdBQUcsV0FBM0I7QUFDQSxNQUFJcU8scUJBQXFCLEdBQUcsS0FBNUI7QUFDQSxNQUFJSCxpQkFBaUIsR0FBR04sUUFBUSxDQUFDL1UsU0FBakM7QUFDQSxNQUFJeVYsY0FBYyxHQUFHSixpQkFBaUIsQ0FBQy9ILFVBQUQsQ0FBakIsSUFDaEIrSCxpQkFBaUIsQ0FBQyxZQUFELENBREQsSUFFaEJMLE9BQU8sSUFBSUssaUJBQWlCLENBQUNMLE9BQUQsQ0FGakM7QUFHQSxNQUFJSSxlQUFlLEdBQUcsQ0FBQ2xCLHNCQUFELElBQTJCdUIsY0FBM0IsSUFBNkNQLGtCQUFrQixDQUFDRixPQUFELENBQXJGO0FBQ0EsTUFBSVUsaUJBQWlCLEdBQUd2TyxJQUFJLElBQUksT0FBUixHQUFrQmtPLGlCQUFpQixDQUFDRSxPQUFsQixJQUE2QkUsY0FBL0MsR0FBZ0VBLGNBQXhGO0FBQ0EsTUFBSUUsd0JBQUosRUFBOEJDLE9BQTlCLEVBQXVDQyxHQUF2QyxDQXJCNkY7O0FBd0I3RixNQUFJSCxpQkFBSixFQUF1QjtBQUNyQkMsSUFBQUEsd0JBQXdCLEdBQUc5SSxnQkFBYyxDQUFDNkksaUJBQWlCLENBQUNsZCxJQUFsQixDQUF1QixJQUFJdWMsUUFBSixFQUF2QixDQUFELENBQXpDOztBQUNBLFFBQUlZLHdCQUF3QixLQUFLMWQsTUFBTSxDQUFDK0gsU0FBcEMsSUFBaUQyVix3QkFBd0IsQ0FBQ2xILElBQTlFLEVBQW9GO0FBQ2xGLFVBQWdCNUIsZ0JBQWMsQ0FBQzhJLHdCQUFELENBQWQsS0FBNkN4QixtQkFBN0QsRUFBZ0Y7QUFDOUUsWUFBSW5ILGdCQUFKLEVBQW9CO0FBQ2xCQSxVQUFBQSxnQkFBYyxDQUFDMkksd0JBQUQsRUFBMkJ4QixtQkFBM0IsQ0FBZDtBQUNELFNBRkQsTUFFTyxJQUFJLENBQUMxYSxZQUFVLENBQUNrYyx3QkFBd0IsQ0FBQ3JJLFVBQUQsQ0FBekIsQ0FBZixFQUFxRDtBQUMxRDdKLFVBQUFBLFVBQVEsQ0FBQ2tTLHdCQUFELEVBQTJCckksVUFBM0IsRUFBcUNpSCxVQUFyQyxDQUFSO0FBQ0Q7QUFDRixPQVBpRjs7O0FBU2xGeEssTUFBQUEsZ0JBQWMsQ0FBQzRMLHdCQUFELEVBQTJCdFIsYUFBM0IsRUFBMEMsSUFBMUMsQ0FBZDtBQUVEO0FBQ0YsR0F0QzRGOzs7QUF5QzdGLE1BQUl1USxzQkFBb0IsSUFBSUksT0FBTyxJQUFJRixNQUFuQyxJQUE2Q1csY0FBN0MsSUFBK0RBLGNBQWMsQ0FBQzVZLElBQWYsS0FBd0JpWSxNQUEzRixFQUFtRztBQUNqRyxRQUFnQnhVLDRCQUFoQixFQUE0QztBQUMxQ3hCLE1BQUFBLDZCQUEyQixDQUFDdVcsaUJBQUQsRUFBb0IsTUFBcEIsRUFBNEJQLE1BQTVCLENBQTNCO0FBQ0QsS0FGRCxNQUVPO0FBQ0xVLE1BQUFBLHFCQUFxQixHQUFHLElBQXhCOztBQUNBSixNQUFBQSxlQUFlLEdBQUcsU0FBU0UsTUFBVCxHQUFrQjtBQUFFLGVBQU9HLGNBQWMsQ0FBQ2pkLElBQWYsQ0FBb0IsSUFBcEIsQ0FBUDtBQUFtQyxPQUF6RTtBQUNEO0FBQ0YsR0FoRDRGOzs7QUFtRDdGLE1BQUl3YyxPQUFKLEVBQWE7QUFDWFksSUFBQUEsT0FBTyxHQUFHO0FBQ1JOLE1BQUFBLE1BQU0sRUFBRUosa0JBQWtCLENBQUNKLE1BQUQsQ0FEbEI7QUFFUmxXLE1BQUFBLElBQUksRUFBRXFXLE1BQU0sR0FBR0csZUFBSCxHQUFxQkYsa0JBQWtCLENBQUNMLElBQUQsQ0FGM0M7QUFHUlUsTUFBQUEsT0FBTyxFQUFFTCxrQkFBa0IsQ0FBQ2pDLE9BQUQ7QUFIbkIsS0FBVjtBQUtBLFFBQUlsUCxNQUFKLEVBQVksS0FBSzhSLEdBQUwsSUFBWUQsT0FBWixFQUFxQjtBQUMvQixVQUFJMUIsc0JBQXNCLElBQUlzQixxQkFBMUIsSUFBbUQsRUFBRUssR0FBRyxJQUFJUixpQkFBVCxDQUF2RCxFQUFvRjtBQUNsRjVSLFFBQUFBLFVBQVEsQ0FBQzRSLGlCQUFELEVBQW9CUSxHQUFwQixFQUF5QkQsT0FBTyxDQUFDQyxHQUFELENBQWhDLENBQVI7QUFDRDtBQUNGLEtBSkQsTUFJT25NLElBQUMsQ0FBQztBQUFFNUcsTUFBQUEsTUFBTSxFQUFFcUUsSUFBVjtBQUFnQitGLE1BQUFBLEtBQUssRUFBRSxJQUF2QjtBQUE2QmhKLE1BQUFBLE1BQU0sRUFBRWdRLHNCQUFzQixJQUFJc0I7QUFBL0QsS0FBRCxFQUF5RkksT0FBekYsQ0FBRDtBQUNSLEdBOUQ0Rjs7O0FBaUU3RixNQUE0QlAsaUJBQWlCLENBQUMvSCxVQUFELENBQWpCLEtBQWdDOEgsZUFBNUQsRUFBNkU7QUFDM0UzUixJQUFBQSxVQUFRLENBQUM0UixpQkFBRCxFQUFvQi9ILFVBQXBCLEVBQThCOEgsZUFBOUIsRUFBK0M7QUFBRXZZLE1BQUFBLElBQUksRUFBRW1ZO0FBQVIsS0FBL0MsQ0FBUjtBQUNEOztBQUNEM0gsRUFBQUEsV0FBUyxDQUFDbEcsSUFBRCxDQUFULEdBQWtCaU8sZUFBbEI7QUFFQSxTQUFPUSxPQUFQO0FBQ0QsQ0F2RUQ7O0FDekJBLElBQUkvWCxpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUl3WCxrQkFBZ0IsR0FBR3hYLGtCQUF2Qjs7QUFDQSxJQUFJcVYsU0FBUyxHQUFHclYsU0FBaEI7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBQ0EsSUFBSThkLGdCQUFjLEdBQUc5ZCxnQkFBckI7O0FBRUEsSUFBSStkLGNBQWMsR0FBRyxnQkFBckI7QUFDQSxJQUFJNUwsa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSXFCLGtCQUFnQixHQUFHRixxQkFBbUIsQ0FBQ2hCLFNBQXBCLENBQThCMFcsY0FBOUIsQ0FBdkI7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ0F4ZSxpQkFBQSxHQUFpQnVlLGdCQUFjLENBQUMzUixLQUFELEVBQVEsT0FBUixFQUFpQixVQUFVNlIsUUFBVixFQUFvQnJJLElBQXBCLEVBQTBCO0FBQ3hFeEQsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssSUFBQUEsSUFBSSxFQUFFdVcsY0FEZTtBQUVyQmpULElBQUFBLE1BQU0sRUFBRWpGLGlCQUFlLENBQUNtWSxRQUFELENBRkY7QUFFYztBQUNuQ3pVLElBQUFBLEtBQUssRUFBRSxDQUhjO0FBR2M7QUFDbkNvTSxJQUFBQSxJQUFJLEVBQUVBLElBSmU7O0FBQUEsR0FBUCxDQUFoQixDQUR3RTtBQVExRTtBQUNDLENBVDhCLEVBUzVCLFlBQVk7QUFDYixNQUFJcE8sS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUMsSUFBRCxDQUE1QjtBQUNBLE1BQUl1QyxNQUFNLEdBQUd2RCxLQUFLLENBQUN1RCxNQUFuQjtBQUNBLE1BQUk2SyxJQUFJLEdBQUdwTyxLQUFLLENBQUNvTyxJQUFqQjtBQUNBLE1BQUlwTSxLQUFLLEdBQUdoQyxLQUFLLENBQUNnQyxLQUFOLEVBQVo7O0FBQ0EsTUFBSSxDQUFDdUIsTUFBRCxJQUFXdkIsS0FBSyxJQUFJdUIsTUFBTSxDQUFDaEosTUFBL0IsRUFBdUM7QUFDckN5RixJQUFBQSxLQUFLLENBQUN1RCxNQUFOLEdBQWUxSixTQUFmO0FBQ0EsV0FBTztBQUFFUCxNQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixNQUFBQSxJQUFJLEVBQUU7QUFBMUIsS0FBUDtBQUNEOztBQUNELE1BQUluQixJQUFJLElBQUksTUFBWixFQUFvQixPQUFPO0FBQUU5VSxJQUFBQSxLQUFLLEVBQUUwSSxLQUFUO0FBQWdCdU4sSUFBQUEsSUFBSSxFQUFFO0FBQXRCLEdBQVA7QUFDcEIsTUFBSW5CLElBQUksSUFBSSxRQUFaLEVBQXNCLE9BQU87QUFBRTlVLElBQUFBLEtBQUssRUFBRWlLLE1BQU0sQ0FBQ3ZCLEtBQUQsQ0FBZjtBQUF3QnVOLElBQUFBLElBQUksRUFBRTtBQUE5QixHQUFQO0FBQ3RCLFNBQU87QUFBRWpXLElBQUFBLEtBQUssRUFBRSxDQUFDMEksS0FBRCxFQUFRdUIsTUFBTSxDQUFDdkIsS0FBRCxDQUFkLENBQVQ7QUFBaUN1TixJQUFBQSxJQUFJLEVBQUU7QUFBdkMsR0FBUDtBQUNELENBckI4QixFQXFCNUIsUUFyQjRCLENBQS9CO0FBd0JBO0FBQ0E7O0FBQ0F6QixTQUFTLENBQUM0SSxTQUFWLEdBQXNCNUksU0FBUyxDQUFDbEosS0FBaEM7O0FBR0FxTCxrQkFBZ0IsQ0FBQyxNQUFELENBQWhCO0FBQ0FBLGtCQUFnQixDQUFDLFFBQUQsQ0FBaEI7QUFDQUEsa0JBQWdCLENBQUMsU0FBRCxDQUFoQjs7QUNuREEsSUFBSTlGLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNCLGVBQWEsR0FBR3RCLGFBQXBCOztBQUNBLElBQUk2RixpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUl1WixxQkFBbUIsR0FBR3ZaLHFCQUExQjs7QUFFQSxJQUFJa2UsVUFBVSxHQUFHLEdBQUdsVixJQUFwQjtBQUVBLElBQUltVixXQUFXLEdBQUc3YyxlQUFhLElBQUlyQixNQUFuQztBQUNBLElBQUl1WixlQUFhLEdBQUdELHFCQUFtQixDQUFDLE1BQUQsRUFBUyxHQUFULENBQXZDO0FBR0E7O0FBQ0E3SCxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFaVMsV0FBVyxJQUFJLENBQUMzRTtBQUF4RCxDQUFELEVBQTBFO0FBQ3pFeFEsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY29WLFNBQWQsRUFBeUI7QUFDN0IsV0FBT0YsVUFBVSxDQUFDMWQsSUFBWCxDQUFnQnFGLGlCQUFlLENBQUMsSUFBRCxDQUEvQixFQUF1Q3VZLFNBQVMsS0FBS2hkLFNBQWQsR0FBMEIsR0FBMUIsR0FBZ0NnZCxTQUF2RSxDQUFQO0FBQ0Q7QUFId0UsQ0FBMUUsQ0FBRDs7QUNaQTs7QUFDQSxJQUFJdlksaUJBQWUsR0FBRzdGLGlCQUF0Qjs7QUFDQSxJQUFJb0oscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUl1WixxQkFBbUIsR0FBR3ZaLHFCQUExQjs7QUFFQSxJQUFJc0osS0FBRyxHQUFHaEssSUFBSSxDQUFDZ0ssR0FBZjtBQUNBLElBQUkrVSxjQUFZLEdBQUcsR0FBR0MsV0FBdEI7QUFDQSxJQUFJdEMsYUFBYSxHQUFHLENBQUMsQ0FBQ3FDLGNBQUYsSUFBa0IsSUFBSSxDQUFDLENBQUQsRUFBSUMsV0FBSixDQUFnQixDQUFoQixFQUFtQixDQUFDLENBQXBCLENBQUosR0FBNkIsQ0FBbkU7QUFDQSxJQUFJOUUsZUFBYSxHQUFHRCxxQkFBbUIsQ0FBQyxhQUFELENBQXZDO0FBQ0EsSUFBSXhOLFFBQU0sR0FBR2lRLGFBQWEsSUFBSSxDQUFDeEMsZUFBL0I7QUFHQTs7SUFDQWphLGdCQUFBLEdBQWlCd00sUUFBTSxHQUFHLFNBQVN1UyxXQUFULENBQXFCckM7QUFBYztBQUFuQyxFQUErRDtBQUN2RjtBQUNBLE1BQUlELGFBQUosRUFBbUIsT0FBT3FDLGNBQVksQ0FBQzdPLEtBQWIsQ0FBbUIsSUFBbkIsRUFBeUIzTixTQUF6QixLQUF1QyxDQUE5QztBQUNuQixNQUFJb0UsQ0FBQyxHQUFHSixpQkFBZSxDQUFDLElBQUQsQ0FBdkI7QUFDQSxNQUFJL0QsTUFBTSxHQUFHOEgsbUJBQWlCLENBQUMzRCxDQUFELENBQTlCO0FBQ0EsTUFBSXNELEtBQUssR0FBR3pILE1BQU0sR0FBRyxDQUFyQjtBQUNBLE1BQUlELFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUF2QixFQUEwQnlILEtBQUssR0FBR0QsS0FBRyxDQUFDQyxLQUFELEVBQVFILHFCQUFtQixDQUFDdkgsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUEzQixDQUFYO0FBQzFCLE1BQUkwSCxLQUFLLEdBQUcsQ0FBWixFQUFlQSxLQUFLLEdBQUd6SCxNQUFNLEdBQUd5SCxLQUFqQjs7QUFDZixTQUFNQSxLQUFLLElBQUksQ0FBZixFQUFrQkEsS0FBSyxFQUF2QixFQUEyQixJQUFJQSxLQUFLLElBQUl0RCxDQUFULElBQWNBLENBQUMsQ0FBQ3NELEtBQUQsQ0FBRCxLQUFhMFMsYUFBL0IsRUFBOEMsT0FBTzFTLEtBQUssSUFBSSxDQUFoQjs7QUFDekUsU0FBTyxDQUFDLENBQVI7QUFDRCxDQVZzQixHQVVuQjhVLGNBVko7O0FDZkEsSUFBSTNNLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNlLFdBQVcsR0FBR3RlLGdCQUFsQjtBQUdBO0FBQ0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRW9TLFdBQVcsS0FBSyxHQUFHQTtBQUEzRCxDQUFELEVBQTJFO0FBQzFFQSxFQUFBQSxXQUFXLEVBQUVBO0FBRDZELENBQTNFLENBQUQ7O0FDTEEsSUFBSTVNLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXVlLE1BQUksR0FBR3ZlLGNBQUEsQ0FBd0NtUixHQUFuRDs7QUFDQSxJQUFJZ0gsOEJBQTRCLEdBQUduWSw4QkFBbkM7O0FBRUEsSUFBSTZaLHFCQUFtQixHQUFHMUIsOEJBQTRCLENBQUMsS0FBRCxDQUF0RDtBQUdBO0FBQ0E7O0FBQ0F6RyxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFLENBQUMyTjtBQUF6QyxDQUFELEVBQWlFO0FBQ2hFMUksRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYUo7QUFBVztBQUF4QixJQUF5QztBQUM1QyxXQUFPd04sTUFBSSxDQUFDLElBQUQsRUFBT3hOLFVBQVAsRUFBbUJsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF6RCxDQUFYO0FBQ0Q7QUFIK0QsQ0FBakUsQ0FBRDs7QUNUQSxJQUFJc1EsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSWdRLGVBQWEsR0FBR2hRLGVBQXBCOztBQUNBLElBQUlrWSxnQkFBYyxHQUFHbFksZ0JBQXJCOztBQUVBLElBQUl3ZSxZQUFZLEdBQUd6ZSxPQUFLLENBQUMsWUFBWTtBQUNuQyxXQUFTME8sQ0FBVCxHQUFhO0FBQUU7QUFBYSxHQURPOzs7QUFHbkMsU0FBTyxFQUFFdEMsS0FBSyxDQUFDc1MsRUFBTixDQUFTamUsSUFBVCxDQUFjaU8sQ0FBZCxhQUE0QkEsQ0FBOUIsQ0FBUDtBQUNELENBSnVCLENBQXhCO0FBT0E7QUFDQTs7QUFDQWlELElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJnQixFQUFBQSxJQUFJLEVBQUUsSUFBekI7QUFBK0JJLEVBQUFBLE1BQU0sRUFBRXNTO0FBQXZDLENBQUQsRUFBd0Q7QUFDdkRDLEVBQUFBLEVBQUUsRUFBRSxTQUFTQSxFQUFULEdBQTJCO0FBQzdCLFFBQUlsVixLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUltUSxlQUFlLEdBQUc3WCxTQUFTLENBQUNDLE1BQWhDO0FBQ0EsUUFBSXNELE1BQU0sR0FBRyxLQUFLNEssZUFBYSxDQUFDLElBQUQsQ0FBYixHQUFzQixJQUF0QixHQUE2QjdELEtBQWxDLEVBQXlDdU4sZUFBekMsQ0FBYjs7QUFDQSxXQUFPQSxlQUFlLEdBQUduUSxLQUF6QixFQUFnQzJPLGdCQUFjLENBQUM5UyxNQUFELEVBQVNtRSxLQUFULEVBQWdCMUgsU0FBUyxDQUFDMEgsS0FBSyxFQUFOLENBQXpCLENBQWQ7O0FBQ2hDbkUsSUFBQUEsTUFBTSxDQUFDdEQsTUFBUCxHQUFnQjRYLGVBQWhCO0FBQ0EsV0FBT3RVLE1BQVA7QUFDRDtBQVJzRCxDQUF4RCxDQUFEOztBQ2ZBLElBQUlsQyxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJc0IsZUFBYSxHQUFHdEIsYUFBcEI7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOzs7QUFHQSxJQUFJNkosY0FBWSxHQUFHLFVBQVU2VSxRQUFWLEVBQW9CO0FBQ3JDLFNBQU8sVUFBVXJQLElBQVYsRUFBZ0IwQixVQUFoQixFQUE0QjJJLGVBQTVCLEVBQTZDaUYsSUFBN0MsRUFBbUQ7QUFDeER6YixJQUFBQSxXQUFTLENBQUM2TixVQUFELENBQVQ7QUFDQSxRQUFJOUssQ0FBQyxHQUFHL0IsVUFBUSxDQUFDbUwsSUFBRCxDQUFoQjtBQUNBLFFBQUkzUCxJQUFJLEdBQUc0QixlQUFhLENBQUMyRSxDQUFELENBQXhCO0FBQ0EsUUFBSW5FLE1BQU0sR0FBRzhILG1CQUFpQixDQUFDM0QsQ0FBRCxDQUE5QjtBQUNBLFFBQUlzRCxLQUFLLEdBQUdtVixRQUFRLEdBQUc1YyxNQUFNLEdBQUcsQ0FBWixHQUFnQixDQUFwQztBQUNBLFFBQUl1SSxDQUFDLEdBQUdxVSxRQUFRLEdBQUcsQ0FBQyxDQUFKLEdBQVEsQ0FBeEI7QUFDQSxRQUFJaEYsZUFBZSxHQUFHLENBQXRCLEVBQXlCLE9BQU8sSUFBUCxFQUFhO0FBQ3BDLFVBQUluUSxLQUFLLElBQUk3SixJQUFiLEVBQW1CO0FBQ2pCaWYsUUFBQUEsSUFBSSxHQUFHamYsSUFBSSxDQUFDNkosS0FBRCxDQUFYO0FBQ0FBLFFBQUFBLEtBQUssSUFBSWMsQ0FBVDtBQUNBO0FBQ0Q7O0FBQ0RkLE1BQUFBLEtBQUssSUFBSWMsQ0FBVDs7QUFDQSxVQUFJcVUsUUFBUSxHQUFHblYsS0FBSyxHQUFHLENBQVgsR0FBZXpILE1BQU0sSUFBSXlILEtBQXJDLEVBQTRDO0FBQzFDLGNBQU1sSSxTQUFTLENBQUMsNkNBQUQsQ0FBZjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBTXFkLFFBQVEsR0FBR25WLEtBQUssSUFBSSxDQUFaLEdBQWdCekgsTUFBTSxHQUFHeUgsS0FBdkMsRUFBOENBLEtBQUssSUFBSWMsQ0FBdkQsRUFBMEQsSUFBSWQsS0FBSyxJQUFJN0osSUFBYixFQUFtQjtBQUMzRWlmLE1BQUFBLElBQUksR0FBRzVOLFVBQVUsQ0FBQzROLElBQUQsRUFBT2pmLElBQUksQ0FBQzZKLEtBQUQsQ0FBWCxFQUFvQkEsS0FBcEIsRUFBMkJ0RCxDQUEzQixDQUFqQjtBQUNEOztBQUNELFdBQU8wWSxJQUFQO0FBQ0QsR0F0QkQ7QUF1QkQsQ0F4QkQ7O0lBMEJBcGYsV0FBQSxHQUFpQjtBQUNmO0FBQ0E7QUFDQXFmLEVBQUFBLElBQUksRUFBRS9VLGNBQVksQ0FBQyxLQUFELENBSEg7QUFJZjtBQUNBO0FBQ0FnVixFQUFBQSxLQUFLLEVBQUVoVixjQUFZLENBQUMsSUFBRDtBQU5KLENBQWpCOztBQ2hDQSxJQUFJM0ksU0FBTyxHQUFHbEIsWUFBZDs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0lBRUFULFlBQUEsR0FBaUIyQixTQUFPLENBQUN2QixRQUFNLENBQUNzQyxPQUFSLENBQVAsSUFBMkIsU0FBNUM7O0FDRkEsSUFBSXlQLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSThlLFNBQU8sR0FBRzllLFdBQUEsQ0FBcUM0ZSxJQUFuRDs7QUFDQSxJQUFJckYscUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBQ0EsSUFBSStlLGdCQUFjLEdBQUcvZSxlQUFyQjs7QUFDQSxJQUFJZ2YsU0FBTyxHQUFHaGYsWUFBZDs7QUFFQSxJQUFJd1osZUFBYSxHQUFHRCxxQkFBbUIsQ0FBQyxRQUFELENBQXZDO0FBRUE7O0FBQ0EsSUFBSTBGLFlBQVUsR0FBRyxDQUFDRCxTQUFELElBQVlELGdCQUFjLEdBQUcsRUFBN0IsSUFBbUNBLGdCQUFjLEdBQUcsRUFBckU7QUFHQTs7QUFDQXJOLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBMUI7QUFBZ0NoSixFQUFBQSxNQUFNLEVBQUUsQ0FBQ3NOLGVBQUQsSUFBa0J5RjtBQUExRCxDQUFELEVBQXlFO0FBQ3hFQyxFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQm5PO0FBQVc7QUFBM0IsSUFBaUQ7QUFDdkQsV0FBTytOLFNBQU8sQ0FBQyxJQUFELEVBQU8vTixVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUE3QixFQUFxQ0QsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBM0UsQ0FBZDtBQUNEO0FBSHVFLENBQXpFLENBQUQ7O0FDYkEsSUFBSXNRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW1mLGNBQVksR0FBR25mLFdBQUEsQ0FBcUM2ZSxLQUF4RDs7QUFDQSxJQUFJdEYscUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBQ0EsSUFBSStlLGNBQWMsR0FBRy9lLGVBQXJCOztBQUNBLElBQUlnZixTQUFPLEdBQUdoZixZQUFkOztBQUVBLElBQUl3WixlQUFhLEdBQUdELHFCQUFtQixDQUFDLGFBQUQsQ0FBdkM7QUFFQTs7QUFDQSxJQUFJMEYsVUFBVSxHQUFHLENBQUNELFNBQUQsSUFBWUQsY0FBYyxHQUFHLEVBQTdCLElBQW1DQSxjQUFjLEdBQUcsRUFBckU7QUFHQTs7QUFDQXJOLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBMUI7QUFBZ0NoSixFQUFBQSxNQUFNLEVBQUUsQ0FBQ3NOLGVBQUQsSUFBa0J5RjtBQUExRCxDQUFELEVBQXlFO0FBQ3hFRyxFQUFBQSxXQUFXLEVBQUUsU0FBU0EsV0FBVCxDQUFxQnJPO0FBQVc7QUFBaEMsSUFBc0Q7QUFDakUsV0FBT29PLGNBQVksQ0FBQyxJQUFELEVBQU9wTyxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUE3QixFQUFxQ0QsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBM0UsQ0FBbkI7QUFDRDtBQUh1RSxDQUF6RSxDQUFEOztBQ2JBLElBQUlzUSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlvTSxTQUFPLEdBQUdwTSxTQUFkOztBQUVBLElBQUlxZixhQUFhLEdBQUcsR0FBR0MsT0FBdkI7QUFDQSxJQUFJM1ksTUFBSSxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBWDtBQUdBO0FBQ0E7QUFDQTs7QUFDQStLLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBMUI7QUFBZ0NoSixFQUFBQSxNQUFNLEVBQUV2SixNQUFNLENBQUNnRSxNQUFELENBQU4sS0FBaUJoRSxNQUFNLENBQUNnRSxNQUFJLENBQUMyWSxPQUFMLEVBQUQ7QUFBL0QsQ0FBRCxFQUFvRjtBQUNuRkEsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsR0FBbUI7QUFDMUI7QUFDQSxRQUFJbFQsU0FBTyxDQUFDLElBQUQsQ0FBWCxFQUFtQixLQUFLdEssTUFBTCxHQUFjLEtBQUtBLE1BQW5CO0FBQ25CLFdBQU91ZCxhQUFhLENBQUM3ZSxJQUFkLENBQW1CLElBQW5CLENBQVA7QUFDRDtBQUxrRixDQUFwRixDQUFEOztBQ1ZBLElBQUlrUixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlvTSxTQUFPLEdBQUdwTSxTQUFkOztBQUNBLElBQUlnUSxlQUFhLEdBQUdoUSxlQUFwQjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJMkosaUJBQWUsR0FBRzNKLGlCQUF0Qjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBQ0EsSUFBSTZGLGlCQUFlLEdBQUc3RixpQkFBdEI7O0FBQ0EsSUFBSWtZLGdCQUFjLEdBQUdsWSxnQkFBckI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSW1ZLDhCQUE0QixHQUFHblksOEJBQW5DOztBQUVBLElBQUk2WixxQkFBbUIsR0FBRzFCLDhCQUE0QixDQUFDLE9BQUQsQ0FBdEQ7QUFFQSxJQUFJbEksU0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCO0FBQ0EsSUFBSXNhLFdBQVcsR0FBRyxHQUFHdGUsS0FBckI7QUFDQSxJQUFJb0ksS0FBRyxHQUFHL0osSUFBSSxDQUFDK0osR0FBZjtBQUdBO0FBQ0E7O0FBQ0FxSSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFLENBQUMyTjtBQUF6QyxDQUFELEVBQWlFO0FBQ2hFNVksRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZStYLEtBQWYsRUFBc0JHLEdBQXRCLEVBQTJCO0FBQ2hDLFFBQUlsVCxDQUFDLEdBQUdKLGlCQUFlLENBQUMsSUFBRCxDQUF2QjtBQUNBLFFBQUkvRCxNQUFNLEdBQUc4SCxtQkFBaUIsQ0FBQzNELENBQUQsQ0FBOUI7QUFDQSxRQUFJMlIsQ0FBQyxHQUFHak8saUJBQWUsQ0FBQ3FQLEtBQUQsRUFBUWxYLE1BQVIsQ0FBdkI7QUFDQSxRQUFJMGQsR0FBRyxHQUFHN1YsaUJBQWUsQ0FBQ3dQLEdBQUcsS0FBSy9YLFNBQVIsR0FBb0JVLE1BQXBCLEdBQTZCcVgsR0FBOUIsRUFBbUNyWCxNQUFuQyxDQUF6QixDQUpnQzs7QUFNaEMsUUFBSTJkLFdBQUosRUFBaUJyYSxNQUFqQixFQUF5QnlULENBQXpCOztBQUNBLFFBQUl6TSxTQUFPLENBQUNuRyxDQUFELENBQVgsRUFBZ0I7QUFDZHdaLE1BQUFBLFdBQVcsR0FBR3haLENBQUMsQ0FBQ21LLFdBQWhCLENBRGM7O0FBR2QsVUFBSUosZUFBYSxDQUFDeVAsV0FBRCxDQUFiLEtBQStCQSxXQUFXLEtBQUt0VCxLQUFoQixJQUF5QkMsU0FBTyxDQUFDcVQsV0FBVyxDQUFDelgsU0FBYixDQUEvRCxDQUFKLEVBQTZGO0FBQzNGeVgsUUFBQUEsV0FBVyxHQUFHcmUsU0FBZDtBQUNELE9BRkQsTUFFTyxJQUFJaUMsVUFBUSxDQUFDb2MsV0FBRCxDQUFaLEVBQTJCO0FBQ2hDQSxRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ3hQLFNBQUQsQ0FBekI7QUFDQSxZQUFJd1AsV0FBVyxLQUFLLElBQXBCLEVBQTBCQSxXQUFXLEdBQUdyZSxTQUFkO0FBQzNCOztBQUNELFVBQUlxZSxXQUFXLEtBQUt0VCxLQUFoQixJQUF5QnNULFdBQVcsS0FBS3JlLFNBQTdDLEVBQXdEO0FBQ3RELGVBQU9tZSxXQUFXLENBQUMvZSxJQUFaLENBQWlCeUYsQ0FBakIsRUFBb0IyUixDQUFwQixFQUF1QjRILEdBQXZCLENBQVA7QUFDRDtBQUNGOztBQUNEcGEsSUFBQUEsTUFBTSxHQUFHLEtBQUtxYSxXQUFXLEtBQUtyZSxTQUFoQixHQUE0QitLLEtBQTVCLEdBQW9Dc1QsV0FBekMsRUFBc0RwVyxLQUFHLENBQUNtVyxHQUFHLEdBQUc1SCxDQUFQLEVBQVUsQ0FBVixDQUF6RCxDQUFUOztBQUNBLFNBQUtpQixDQUFDLEdBQUcsQ0FBVCxFQUFZakIsQ0FBQyxHQUFHNEgsR0FBaEIsRUFBcUI1SCxDQUFDLElBQUlpQixDQUFDLEVBQTNCLEVBQStCLElBQUlqQixDQUFDLElBQUkzUixDQUFULEVBQVlpUyxnQkFBYyxDQUFDOVMsTUFBRCxFQUFTeVQsQ0FBVCxFQUFZNVMsQ0FBQyxDQUFDMlIsQ0FBRCxDQUFiLENBQWQ7O0FBQzNDeFMsSUFBQUEsTUFBTSxDQUFDdEQsTUFBUCxHQUFnQitXLENBQWhCO0FBQ0EsV0FBT3pULE1BQVA7QUFDRDtBQXpCK0QsQ0FBakUsQ0FBRDs7QUNwQkEsSUFBSXNNLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTBmLE9BQUssR0FBRzFmLGNBQUEsQ0FBd0NxUixJQUFwRDs7QUFDQSxJQUFJa0kscUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBRUEsSUFBSXdaLGVBQWEsR0FBR0QscUJBQW1CLENBQUMsTUFBRCxDQUF2QztBQUdBOztBQUNBN0gsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRSxDQUFDc047QUFBekMsQ0FBRCxFQUEyRDtBQUMxRG5JLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNOO0FBQVc7QUFBekIsSUFBMEM7QUFDOUMsV0FBTzJPLE9BQUssQ0FBQyxJQUFELEVBQU8zTyxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBWjtBQUNEO0FBSHlELENBQTNELENBQUQ7O0FDVEE7QUFDQSxJQUFJOEgsT0FBSyxHQUFHNUosSUFBSSxDQUFDNEosS0FBakI7O0FBRUEsSUFBSXlXLFNBQVMsR0FBRyxVQUFVNUgsS0FBVixFQUFpQjZILFNBQWpCLEVBQTRCO0FBQzFDLE1BQUk5ZCxNQUFNLEdBQUdpVyxLQUFLLENBQUNqVyxNQUFuQjtBQUNBLE1BQUkrZCxNQUFNLEdBQUczVyxPQUFLLENBQUNwSCxNQUFNLEdBQUcsQ0FBVixDQUFsQjtBQUNBLFNBQU9BLE1BQU0sR0FBRyxDQUFULEdBQWFnZSxhQUFhLENBQUMvSCxLQUFELEVBQVE2SCxTQUFSLENBQTFCLEdBQStDRyxLQUFLLENBQ3pESixTQUFTLENBQUM1SCxLQUFLLENBQUM5VyxLQUFOLENBQVksQ0FBWixFQUFlNGUsTUFBZixDQUFELEVBQXlCRCxTQUF6QixDQURnRCxFQUV6REQsU0FBUyxDQUFDNUgsS0FBSyxDQUFDOVcsS0FBTixDQUFZNGUsTUFBWixDQUFELEVBQXNCRCxTQUF0QixDQUZnRCxFQUd6REEsU0FIeUQsQ0FBM0Q7QUFLRCxDQVJEOztBQVVBLElBQUlFLGFBQWEsR0FBRyxVQUFVL0gsS0FBVixFQUFpQjZILFNBQWpCLEVBQTRCO0FBQzlDLE1BQUk5ZCxNQUFNLEdBQUdpVyxLQUFLLENBQUNqVyxNQUFuQjtBQUNBLE1BQUl1SSxDQUFDLEdBQUcsQ0FBUjtBQUNBLE1BQUl1USxPQUFKLEVBQWFvRixDQUFiOztBQUVBLFNBQU8zVixDQUFDLEdBQUd2SSxNQUFYLEVBQW1CO0FBQ2pCa2UsSUFBQUEsQ0FBQyxHQUFHM1YsQ0FBSjtBQUNBdVEsSUFBQUEsT0FBTyxHQUFHN0MsS0FBSyxDQUFDMU4sQ0FBRCxDQUFmOztBQUNBLFdBQU8yVixDQUFDLElBQUlKLFNBQVMsQ0FBQzdILEtBQUssQ0FBQ2lJLENBQUMsR0FBRyxDQUFMLENBQU4sRUFBZXBGLE9BQWYsQ0FBVCxHQUFtQyxDQUEvQyxFQUFrRDtBQUNoRDdDLE1BQUFBLEtBQUssQ0FBQ2lJLENBQUQsQ0FBTCxHQUFXakksS0FBSyxDQUFDLEVBQUVpSSxDQUFILENBQWhCO0FBQ0Q7O0FBQ0QsUUFBSUEsQ0FBQyxLQUFLM1YsQ0FBQyxFQUFYLEVBQWUwTixLQUFLLENBQUNpSSxDQUFELENBQUwsR0FBV3BGLE9BQVg7QUFDaEI7O0FBQUMsU0FBTzdDLEtBQVA7QUFDSCxDQWJEOztBQWVBLElBQUlnSSxLQUFLLEdBQUcsVUFBVW5CLElBQVYsRUFBZ0JDLEtBQWhCLEVBQXVCZSxTQUF2QixFQUFrQztBQUM1QyxNQUFJSyxPQUFPLEdBQUdyQixJQUFJLENBQUM5YyxNQUFuQjtBQUNBLE1BQUlvZSxPQUFPLEdBQUdyQixLQUFLLENBQUMvYyxNQUFwQjtBQUNBLE1BQUlxZSxNQUFNLEdBQUcsQ0FBYjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxDQUFiO0FBQ0EsTUFBSWhiLE1BQU0sR0FBRyxFQUFiOztBQUVBLFNBQU8rYSxNQUFNLEdBQUdGLE9BQVQsSUFBb0JHLE1BQU0sR0FBR0YsT0FBcEMsRUFBNkM7QUFDM0MsUUFBSUMsTUFBTSxHQUFHRixPQUFULElBQW9CRyxNQUFNLEdBQUdGLE9BQWpDLEVBQTBDO0FBQ3hDOWEsTUFBQUEsTUFBTSxDQUFDckIsSUFBUCxDQUFZNmIsU0FBUyxDQUFDaEIsSUFBSSxDQUFDdUIsTUFBRCxDQUFMLEVBQWV0QixLQUFLLENBQUN1QixNQUFELENBQXBCLENBQVQsSUFBMEMsQ0FBMUMsR0FBOEN4QixJQUFJLENBQUN1QixNQUFNLEVBQVAsQ0FBbEQsR0FBK0R0QixLQUFLLENBQUN1QixNQUFNLEVBQVAsQ0FBaEY7QUFDRCxLQUZELE1BRU87QUFDTGhiLE1BQUFBLE1BQU0sQ0FBQ3JCLElBQVAsQ0FBWW9jLE1BQU0sR0FBR0YsT0FBVCxHQUFtQnJCLElBQUksQ0FBQ3VCLE1BQU0sRUFBUCxDQUF2QixHQUFvQ3RCLEtBQUssQ0FBQ3VCLE1BQU0sRUFBUCxDQUFyRDtBQUNEO0FBQ0Y7O0FBQUMsU0FBT2hiLE1BQVA7QUFDSCxDQWREOztJQWdCQTdGLFNBQUEsR0FBaUJvZ0IsU0FBakI7O0FDNUNBLElBQUkzZCxXQUFTLEdBQUdoQyxlQUFoQjs7QUFFQSxJQUFJcWdCLE9BQU8sR0FBR3JlLFdBQVMsQ0FBQ00sS0FBVixDQUFnQixpQkFBaEIsQ0FBZDtJQUVBL0MsZUFBQSxHQUFpQixDQUFDLENBQUM4Z0IsT0FBRixJQUFhLENBQUNBLE9BQU8sQ0FBQyxDQUFELENBQXRDOztBQ0pBLElBQUlDLEVBQUUsR0FBR3RnQixlQUFUOztJQUVBVCxnQkFBQSxHQUFpQixlQUFlb0gsSUFBZixDQUFvQjJaLEVBQXBCLENBQWpCOztBQ0ZBLElBQUl0ZSxXQUFTLEdBQUdoQyxlQUFoQjs7QUFFQSxJQUFJdWdCLE1BQU0sR0FBR3ZlLFdBQVMsQ0FBQ00sS0FBVixDQUFnQixzQkFBaEIsQ0FBYjtJQUVBL0MsbUJBQUEsR0FBaUIsQ0FBQyxDQUFDZ2hCLE1BQUYsSUFBWSxDQUFDQSxNQUFNLENBQUMsQ0FBRCxDQUFwQzs7QUNIQSxJQUFJN08sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJd2dCLGNBQVksR0FBR3hnQixTQUFuQjs7QUFDQSxJQUFJdVosbUJBQW1CLEdBQUd2WixxQkFBMUI7O0FBQ0EsSUFBSXlnQixJQUFFLEdBQUd6Z0IsZUFBVDs7QUFDQSxJQUFJMGdCLFlBQVUsR0FBRzFnQixnQkFBakI7O0FBQ0EsSUFBSTJnQixJQUFFLEdBQUczZ0IsZUFBVDs7QUFDQSxJQUFJNGdCLFFBQU0sR0FBRzVnQixtQkFBYjs7QUFFQSxJQUFJMkcsSUFBSSxHQUFHLEVBQVg7QUFDQSxJQUFJa2EsWUFBVSxHQUFHbGEsSUFBSSxDQUFDbWEsSUFBdEI7O0FBR0EsSUFBSUMsa0JBQWtCLEdBQUdoaEIsT0FBSyxDQUFDLFlBQVk7QUFDekM0RyxFQUFBQSxJQUFJLENBQUNtYSxJQUFMLENBQVUxZixTQUFWO0FBQ0QsQ0FGNkIsQ0FBOUI7O0FBSUEsSUFBSTRmLGFBQWEsR0FBR2poQixPQUFLLENBQUMsWUFBWTtBQUNwQzRHLEVBQUFBLElBQUksQ0FBQ21hLElBQUwsQ0FBVSxJQUFWO0FBQ0QsQ0FGd0IsQ0FBekI7O0FBSUEsSUFBSXRILGFBQWEsR0FBR0QsbUJBQW1CLENBQUMsTUFBRCxDQUF2QztBQUVBLElBQUkwSCxhQUFXLEdBQUcsQ0FBQ2xoQixPQUFLLENBQUMsWUFBWTtBQUNuQztBQUNBLE1BQUk0Z0IsSUFBSixFQUFRLE9BQU9BLElBQUUsR0FBRyxFQUFaO0FBQ1IsTUFBSUYsSUFBRSxJQUFJQSxJQUFFLEdBQUcsQ0FBZixFQUFrQjtBQUNsQixNQUFJQyxZQUFKLEVBQWdCLE9BQU8sSUFBUDtBQUNoQixNQUFJRSxRQUFKLEVBQVksT0FBT0EsUUFBTSxHQUFHLEdBQWhCO0FBRVosTUFBSXhiLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSThiLElBQUosRUFBVUMsR0FBVixFQUFldGdCLEtBQWYsRUFBc0IwSSxLQUF0QixDQVJtQzs7QUFXbkMsT0FBSzJYLElBQUksR0FBRyxFQUFaLEVBQWdCQSxJQUFJLEdBQUcsRUFBdkIsRUFBMkJBLElBQUksRUFBL0IsRUFBbUM7QUFDakNDLElBQUFBLEdBQUcsR0FBR3hlLE1BQU0sQ0FBQ3llLFlBQVAsQ0FBb0JGLElBQXBCLENBQU47O0FBRUEsWUFBUUEsSUFBUjtBQUNFLFdBQUssRUFBTDtBQUFTLFdBQUssRUFBTDtBQUFTLFdBQUssRUFBTDtBQUFTLFdBQUssRUFBTDtBQUFTcmdCLFFBQUFBLEtBQUssR0FBRyxDQUFSO0FBQVc7O0FBQy9DLFdBQUssRUFBTDtBQUFTLFdBQUssRUFBTDtBQUFTQSxRQUFBQSxLQUFLLEdBQUcsQ0FBUjtBQUFXOztBQUM3QjtBQUFTQSxRQUFBQSxLQUFLLEdBQUcsQ0FBUjtBQUhYOztBQU1BLFNBQUswSSxLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHLEVBQXhCLEVBQTRCQSxLQUFLLEVBQWpDLEVBQXFDO0FBQ25DNUMsTUFBQUEsSUFBSSxDQUFDNUMsSUFBTCxDQUFVO0FBQUU2VCxRQUFBQSxDQUFDLEVBQUV1SixHQUFHLEdBQUc1WCxLQUFYO0FBQWtCOFgsUUFBQUEsQ0FBQyxFQUFFeGdCO0FBQXJCLE9BQVY7QUFDRDtBQUNGOztBQUVEOEYsRUFBQUEsSUFBSSxDQUFDbWEsSUFBTCxDQUFVLFVBQVVwYixDQUFWLEVBQWE0SixDQUFiLEVBQWdCO0FBQUUsV0FBT0EsQ0FBQyxDQUFDK1IsQ0FBRixHQUFNM2IsQ0FBQyxDQUFDMmIsQ0FBZjtBQUFtQixHQUEvQzs7QUFFQSxPQUFLOVgsS0FBSyxHQUFHLENBQWIsRUFBZ0JBLEtBQUssR0FBRzVDLElBQUksQ0FBQzdFLE1BQTdCLEVBQXFDeUgsS0FBSyxFQUExQyxFQUE4QztBQUM1QzRYLElBQUFBLEdBQUcsR0FBR3hhLElBQUksQ0FBQzRDLEtBQUQsQ0FBSixDQUFZcU8sQ0FBWixDQUFjMEosTUFBZCxDQUFxQixDQUFyQixDQUFOO0FBQ0EsUUFBSWxjLE1BQU0sQ0FBQ2tjLE1BQVAsQ0FBY2xjLE1BQU0sQ0FBQ3RELE1BQVAsR0FBZ0IsQ0FBOUIsTUFBcUNxZixHQUF6QyxFQUE4Qy9iLE1BQU0sSUFBSStiLEdBQVY7QUFDL0M7O0FBRUQsU0FBTy9iLE1BQU0sS0FBSyxhQUFsQjtBQUNELENBakN1QixDQUF4QjtBQW1DQSxJQUFJMkcsUUFBTSxHQUFHZ1Ysa0JBQWtCLElBQUksQ0FBQ0MsYUFBdkIsSUFBd0MsQ0FBQ3hILGFBQXpDLElBQTBELENBQUN5SCxhQUF4RTs7QUFFQSxJQUFJTSxnQkFBYyxHQUFHLFVBQVUzQixTQUFWLEVBQXFCO0FBQ3hDLFNBQU8sVUFBVTRCLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtBQUNyQixRQUFJQSxDQUFDLEtBQUtyZ0IsU0FBVixFQUFxQixPQUFPLENBQUMsQ0FBUjtBQUNyQixRQUFJb2dCLENBQUMsS0FBS3BnQixTQUFWLEVBQXFCLE9BQU8sQ0FBUDtBQUNyQixRQUFJd2UsU0FBUyxLQUFLeGUsU0FBbEIsRUFBNkIsT0FBTyxDQUFDd2UsU0FBUyxDQUFDNEIsQ0FBRCxFQUFJQyxDQUFKLENBQVYsSUFBb0IsQ0FBM0I7QUFDN0IsV0FBT3pnQixVQUFRLENBQUN3Z0IsQ0FBRCxDQUFSLEdBQWN4Z0IsVUFBUSxDQUFDeWdCLENBQUQsQ0FBdEIsR0FBNEIsQ0FBNUIsR0FBZ0MsQ0FBQyxDQUF4QztBQUNELEdBTEQ7QUFNRCxDQVBEO0FBVUE7OztBQUNBL1AsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRSxJQUExQjtBQUFnQ2hKLEVBQUFBLE1BQU0sRUFBRUg7QUFBeEMsQ0FBRCxFQUFtRDtBQUNsRCtVLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNsQixTQUFkLEVBQXlCO0FBQzdCLFFBQUlBLFNBQVMsS0FBS3hlLFNBQWxCLEVBQTZCOEIsV0FBUyxDQUFDMGMsU0FBRCxDQUFUO0FBRTdCLFFBQUk3SCxLQUFLLEdBQUc3VCxVQUFRLENBQUMsSUFBRCxDQUFwQjtBQUVBLFFBQUkrYyxhQUFKLEVBQWlCLE9BQU9yQixTQUFTLEtBQUt4ZSxTQUFkLEdBQTBCeWYsWUFBVSxDQUFDcmdCLElBQVgsQ0FBZ0J1WCxLQUFoQixDQUExQixHQUFtRDhJLFlBQVUsQ0FBQ3JnQixJQUFYLENBQWdCdVgsS0FBaEIsRUFBdUI2SCxTQUF2QixDQUExRDtBQUVqQixRQUFJOEIsS0FBSyxHQUFHLEVBQVo7QUFDQSxRQUFJQyxXQUFXLEdBQUcvWCxtQkFBaUIsQ0FBQ21PLEtBQUQsQ0FBbkM7QUFDQSxRQUFJNkosV0FBSixFQUFpQnJZLEtBQWpCOztBQUVBLFNBQUtBLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUdvWSxXQUF4QixFQUFxQ3BZLEtBQUssRUFBMUMsRUFBOEM7QUFDNUMsVUFBSUEsS0FBSyxJQUFJd08sS0FBYixFQUFvQjJKLEtBQUssQ0FBQzNkLElBQU4sQ0FBV2dVLEtBQUssQ0FBQ3hPLEtBQUQsQ0FBaEI7QUFDckI7O0FBRURtWSxJQUFBQSxLQUFLLEdBQUdsQixjQUFZLENBQUNrQixLQUFELEVBQVFILGdCQUFjLENBQUMzQixTQUFELENBQXRCLENBQXBCO0FBQ0FnQyxJQUFBQSxXQUFXLEdBQUdGLEtBQUssQ0FBQzVmLE1BQXBCO0FBQ0F5SCxJQUFBQSxLQUFLLEdBQUcsQ0FBUjs7QUFFQSxXQUFPQSxLQUFLLEdBQUdxWSxXQUFmLEVBQTRCN0osS0FBSyxDQUFDeE8sS0FBRCxDQUFMLEdBQWVtWSxLQUFLLENBQUNuWSxLQUFLLEVBQU4sQ0FBcEI7O0FBQzVCLFdBQU9BLEtBQUssR0FBR29ZLFdBQWYsRUFBNEIsT0FBTzVKLEtBQUssQ0FBQ3hPLEtBQUssRUFBTixDQUFaOztBQUU1QixXQUFPd08sS0FBUDtBQUNEO0FBeEJpRCxDQUFuRCxDQUFEOztBQzNFQSxJQUFJaFcsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSXNHLHNCQUFvQixHQUFHdEcsb0JBQTNCOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFFQSxJQUFJaVEsU0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCOztJQUVBMUYsWUFBQSxHQUFpQixVQUFVc2lCLGdCQUFWLEVBQTRCO0FBQzNDLE1BQUlwQyxXQUFXLEdBQUcxZCxZQUFVLENBQUM4ZixnQkFBRCxDQUE1QjtBQUNBLE1BQUkzaEIsY0FBYyxHQUFHb0csc0JBQW9CLENBQUNKLENBQTFDOztBQUVBLE1BQUlULGFBQVcsSUFBSWdhLFdBQWYsSUFBOEIsQ0FBQ0EsV0FBVyxDQUFDeFAsU0FBRCxDQUE5QyxFQUF5RDtBQUN2RC9QLElBQUFBLGNBQWMsQ0FBQ3VmLFdBQUQsRUFBY3hQLFNBQWQsRUFBdUI7QUFDbkNuUCxNQUFBQSxZQUFZLEVBQUUsSUFEcUI7QUFFbkNYLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQUUsZUFBTyxJQUFQO0FBQWM7QUFGRSxLQUF2QixDQUFkO0FBSUQ7QUFDRixDQVZEOztBQ1JBLElBQUkyaEIsWUFBVSxHQUFHOWhCLFlBQWpCO0FBR0E7OztBQUNBOGhCLFlBQVUsQ0FBQyxPQUFELENBQVY7O0FDSEEsSUFBSXBRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTJKLGlCQUFlLEdBQUczSixpQkFBdEI7O0FBQ0EsSUFBSW9KLHFCQUFtQixHQUFHcEoscUJBQTFCOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJdVEsb0JBQWtCLEdBQUd2USxvQkFBekI7O0FBQ0EsSUFBSWtZLGdCQUFjLEdBQUdsWSxnQkFBckI7O0FBQ0EsSUFBSW1ZLDRCQUE0QixHQUFHblksOEJBQW5DOztBQUVBLElBQUk2WixtQkFBbUIsR0FBRzFCLDRCQUE0QixDQUFDLFFBQUQsQ0FBdEQ7QUFFQSxJQUFJOU8sS0FBRyxHQUFHL0osSUFBSSxDQUFDK0osR0FBZjtBQUNBLElBQUlDLEtBQUcsR0FBR2hLLElBQUksQ0FBQ2dLLEdBQWY7QUFDQSxJQUFJK08sa0JBQWdCLEdBQUcsZ0JBQXZCO0FBQ0EsSUFBSTBKLCtCQUErQixHQUFHLGlDQUF0QztBQUdBO0FBQ0E7O0FBQ0FyUSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTFCO0FBQWdDaEosRUFBQUEsTUFBTSxFQUFFLENBQUMyTjtBQUF6QyxDQUFELEVBQWlFO0FBQ2hFbUksRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JoSixLQUFoQixFQUF1QmlKO0FBQVk7QUFBbkMsSUFBcUQ7QUFDM0QsUUFBSWhjLENBQUMsR0FBRy9CLFVBQVEsQ0FBQyxJQUFELENBQWhCO0FBQ0EsUUFBSXdULEdBQUcsR0FBRzlOLG1CQUFpQixDQUFDM0QsQ0FBRCxDQUEzQjtBQUNBLFFBQUlpYyxXQUFXLEdBQUd2WSxpQkFBZSxDQUFDcVAsS0FBRCxFQUFRdEIsR0FBUixDQUFqQztBQUNBLFFBQUlnQyxlQUFlLEdBQUc3WCxTQUFTLENBQUNDLE1BQWhDO0FBQ0EsUUFBSXFnQixXQUFKLEVBQWlCQyxpQkFBakIsRUFBb0N4SixDQUFwQyxFQUF1Q2hCLENBQXZDLEVBQTBDc0IsSUFBMUMsRUFBZ0RELEVBQWhEOztBQUNBLFFBQUlTLGVBQWUsS0FBSyxDQUF4QixFQUEyQjtBQUN6QnlJLE1BQUFBLFdBQVcsR0FBR0MsaUJBQWlCLEdBQUcsQ0FBbEM7QUFDRCxLQUZELE1BRU8sSUFBSTFJLGVBQWUsS0FBSyxDQUF4QixFQUEyQjtBQUNoQ3lJLE1BQUFBLFdBQVcsR0FBRyxDQUFkO0FBQ0FDLE1BQUFBLGlCQUFpQixHQUFHMUssR0FBRyxHQUFHd0ssV0FBMUI7QUFDRCxLQUhNLE1BR0E7QUFDTEMsTUFBQUEsV0FBVyxHQUFHekksZUFBZSxHQUFHLENBQWhDO0FBQ0EwSSxNQUFBQSxpQkFBaUIsR0FBRzlZLEtBQUcsQ0FBQ0QsS0FBRyxDQUFDRCxxQkFBbUIsQ0FBQzZZLFdBQUQsQ0FBcEIsRUFBbUMsQ0FBbkMsQ0FBSixFQUEyQ3ZLLEdBQUcsR0FBR3dLLFdBQWpELENBQXZCO0FBQ0Q7O0FBQ0QsUUFBSXhLLEdBQUcsR0FBR3lLLFdBQU4sR0FBb0JDLGlCQUFwQixHQUF3Qy9KLGtCQUE1QyxFQUE4RDtBQUM1RCxZQUFNaFgsU0FBUyxDQUFDMGdCLCtCQUFELENBQWY7QUFDRDs7QUFDRG5KLElBQUFBLENBQUMsR0FBR3JJLG9CQUFrQixDQUFDdEssQ0FBRCxFQUFJbWMsaUJBQUosQ0FBdEI7O0FBQ0EsU0FBS3hLLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR3dLLGlCQUFoQixFQUFtQ3hLLENBQUMsRUFBcEMsRUFBd0M7QUFDdENzQixNQUFBQSxJQUFJLEdBQUdnSixXQUFXLEdBQUd0SyxDQUFyQjtBQUNBLFVBQUlzQixJQUFJLElBQUlqVCxDQUFaLEVBQWVpUyxnQkFBYyxDQUFDVSxDQUFELEVBQUloQixDQUFKLEVBQU8zUixDQUFDLENBQUNpVCxJQUFELENBQVIsQ0FBZDtBQUNoQjs7QUFDRE4sSUFBQUEsQ0FBQyxDQUFDOVcsTUFBRixHQUFXc2dCLGlCQUFYOztBQUNBLFFBQUlELFdBQVcsR0FBR0MsaUJBQWxCLEVBQXFDO0FBQ25DLFdBQUt4SyxDQUFDLEdBQUdzSyxXQUFULEVBQXNCdEssQ0FBQyxHQUFHRixHQUFHLEdBQUcwSyxpQkFBaEMsRUFBbUR4SyxDQUFDLEVBQXBELEVBQXdEO0FBQ3REc0IsUUFBQUEsSUFBSSxHQUFHdEIsQ0FBQyxHQUFHd0ssaUJBQVg7QUFDQW5KLFFBQUFBLEVBQUUsR0FBR3JCLENBQUMsR0FBR3VLLFdBQVQ7QUFDQSxZQUFJakosSUFBSSxJQUFJalQsQ0FBWixFQUFlQSxDQUFDLENBQUNnVCxFQUFELENBQUQsR0FBUWhULENBQUMsQ0FBQ2lULElBQUQsQ0FBVCxDQUFmLEtBQ0ssT0FBT2pULENBQUMsQ0FBQ2dULEVBQUQsQ0FBUjtBQUNOOztBQUNELFdBQUtyQixDQUFDLEdBQUdGLEdBQVQsRUFBY0UsQ0FBQyxHQUFHRixHQUFHLEdBQUcwSyxpQkFBTixHQUEwQkQsV0FBNUMsRUFBeUR2SyxDQUFDLEVBQTFELEVBQThELE9BQU8zUixDQUFDLENBQUMyUixDQUFDLEdBQUcsQ0FBTCxDQUFSO0FBQy9ELEtBUkQsTUFRTyxJQUFJdUssV0FBVyxHQUFHQyxpQkFBbEIsRUFBcUM7QUFDMUMsV0FBS3hLLENBQUMsR0FBR0YsR0FBRyxHQUFHMEssaUJBQWYsRUFBa0N4SyxDQUFDLEdBQUdzSyxXQUF0QyxFQUFtRHRLLENBQUMsRUFBcEQsRUFBd0Q7QUFDdERzQixRQUFBQSxJQUFJLEdBQUd0QixDQUFDLEdBQUd3SyxpQkFBSixHQUF3QixDQUEvQjtBQUNBbkosUUFBQUEsRUFBRSxHQUFHckIsQ0FBQyxHQUFHdUssV0FBSixHQUFrQixDQUF2QjtBQUNBLFlBQUlqSixJQUFJLElBQUlqVCxDQUFaLEVBQWVBLENBQUMsQ0FBQ2dULEVBQUQsQ0FBRCxHQUFRaFQsQ0FBQyxDQUFDaVQsSUFBRCxDQUFULENBQWYsS0FDSyxPQUFPalQsQ0FBQyxDQUFDZ1QsRUFBRCxDQUFSO0FBQ047QUFDRjs7QUFDRCxTQUFLckIsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHdUssV0FBaEIsRUFBNkJ2SyxDQUFDLEVBQTlCLEVBQWtDO0FBQ2hDM1IsTUFBQUEsQ0FBQyxDQUFDMlIsQ0FBQyxHQUFHc0ssV0FBTCxDQUFELEdBQXFCcmdCLFNBQVMsQ0FBQytWLENBQUMsR0FBRyxDQUFMLENBQTlCO0FBQ0Q7O0FBQ0QzUixJQUFBQSxDQUFDLENBQUNuRSxNQUFGLEdBQVc0VixHQUFHLEdBQUcwSyxpQkFBTixHQUEwQkQsV0FBckM7QUFDQSxXQUFPdkosQ0FBUDtBQUNEO0FBOUMrRCxDQUFqRSxDQUFEOztBQ3BCQTtBQUNBO0FBQ0EsSUFBSXBCLGtCQUFnQixHQUFHeFgsa0JBQXZCOzs7QUFHQXdYLGtCQUFnQixDQUFDLE1BQUQsQ0FBaEI7O0FDTEE7QUFDQTtBQUNBLElBQUlBLGtCQUFnQixHQUFHeFgsa0JBQXZCOzs7QUFHQXdYLGtCQUFnQixDQUFDLFNBQUQsQ0FBaEI7O0FDTEE7SUFDQWpZLGlCQUFBLEdBQWlCLE9BQU84aUIsV0FBUCxLQUF1QixXQUF2QixJQUFzQyxPQUFPQyxRQUFQLEtBQW9CLFdBQTNFOztBQ0RBLElBQUk3VyxVQUFRLEdBQUd6TCxrQkFBZjs7SUFFQVQsYUFBQSxHQUFpQixVQUFVdUwsTUFBVixFQUFrQndELEdBQWxCLEVBQXVCNUYsT0FBdkIsRUFBZ0M7QUFDL0MsT0FBSyxJQUFJL0UsR0FBVCxJQUFnQjJLLEdBQWhCLEVBQXFCN0MsVUFBUSxDQUFDWCxNQUFELEVBQVNuSCxHQUFULEVBQWMySyxHQUFHLENBQUMzSyxHQUFELENBQWpCLEVBQXdCK0UsT0FBeEIsQ0FBUjs7QUFDckIsU0FBT29DLE1BQVA7QUFDRCxDQUhEOztJQ0ZBdkwsWUFBQSxHQUFpQixVQUFVRixFQUFWLEVBQWNvZ0IsV0FBZCxFQUEyQjVhLElBQTNCLEVBQWlDO0FBQ2hELE1BQUl4RixFQUFFLFlBQVlvZ0IsV0FBbEIsRUFBK0IsT0FBT3BnQixFQUFQO0FBQy9CLFFBQU1nQyxTQUFTLENBQUMsZ0JBQWdCd0QsSUFBSSxHQUFHQSxJQUFJLEdBQUcsR0FBVixHQUFnQixFQUFwQyxJQUEwQyxZQUEzQyxDQUFmO0FBQ0QsQ0FIRDs7QUNBQSxJQUFJdUUscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSXlKLFVBQVEsR0FBR3pKLFVBQWY7QUFHQTs7O0lBQ0FULFNBQUEsR0FBaUIsVUFBVUYsRUFBVixFQUFjO0FBQzdCLE1BQUlBLEVBQUUsS0FBSytCLFNBQVgsRUFBc0IsT0FBTyxDQUFQO0FBQ3RCLE1BQUkrSCxNQUFNLEdBQUdDLHFCQUFtQixDQUFDL0osRUFBRCxDQUFoQztBQUNBLE1BQUl5QyxNQUFNLEdBQUcySCxVQUFRLENBQUNOLE1BQUQsQ0FBckI7QUFDQSxNQUFJQSxNQUFNLEtBQUtySCxNQUFmLEVBQXVCLE1BQU15Z0IsVUFBVSxDQUFDLHVCQUFELENBQWhCO0FBQ3ZCLFNBQU96Z0IsTUFBUDtBQUNELENBTkQ7O0FDTEE7QUFDQSxJQUFJMGdCLEtBQUcsR0FBR2xqQixJQUFJLENBQUNrakIsR0FBZjtBQUNBLElBQUlDLEtBQUcsR0FBR25qQixJQUFJLENBQUNtakIsR0FBZjtBQUNBLElBQUl2WixPQUFLLEdBQUc1SixJQUFJLENBQUM0SixLQUFqQjtBQUNBLElBQUl3WixLQUFHLEdBQUdwakIsSUFBSSxDQUFDb2pCLEdBQWY7QUFDQSxJQUFJQyxLQUFHLEdBQUdyakIsSUFBSSxDQUFDcWpCLEdBQWY7O0FBRUEsSUFBSUMsSUFBSSxHQUFHLFVBQVV6WixNQUFWLEVBQWtCMFosY0FBbEIsRUFBa0NDLEtBQWxDLEVBQXlDO0FBQ2xELE1BQUlDLE1BQU0sR0FBRyxJQUFJNVcsS0FBSixDQUFVMlcsS0FBVixDQUFiO0FBQ0EsTUFBSUUsY0FBYyxHQUFHRixLQUFLLEdBQUcsQ0FBUixHQUFZRCxjQUFaLEdBQTZCLENBQWxEO0FBQ0EsTUFBSUksSUFBSSxHQUFHLENBQUMsS0FBS0QsY0FBTixJQUF3QixDQUFuQztBQUNBLE1BQUlFLEtBQUssR0FBR0QsSUFBSSxJQUFJLENBQXBCO0FBQ0EsTUFBSUUsRUFBRSxHQUFHTixjQUFjLEtBQUssRUFBbkIsR0FBd0JKLEtBQUcsQ0FBQyxDQUFELEVBQUksQ0FBQyxFQUFMLENBQUgsR0FBY0EsS0FBRyxDQUFDLENBQUQsRUFBSSxDQUFDLEVBQUwsQ0FBekMsR0FBb0QsQ0FBN0Q7QUFDQSxNQUFJVyxJQUFJLEdBQUdqYSxNQUFNLEdBQUcsQ0FBVCxJQUFjQSxNQUFNLEtBQUssQ0FBWCxJQUFnQixJQUFJQSxNQUFKLEdBQWEsQ0FBM0MsR0FBK0MsQ0FBL0MsR0FBbUQsQ0FBOUQ7QUFDQSxNQUFJSSxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUk4WixRQUFKLEVBQWNDLFFBQWQsRUFBd0IvVCxDQUF4QjtBQUNBcEcsRUFBQUEsTUFBTSxHQUFHcVosS0FBRyxDQUFDclosTUFBRCxDQUFaLENBVGtEOztBQVdsRCxNQUFJQSxNQUFNLElBQUlBLE1BQVYsSUFBb0JBLE1BQU0sS0FBS29hLFFBQW5DLEVBQTZDO0FBQzNDO0FBQ0FELElBQUFBLFFBQVEsR0FBR25hLE1BQU0sSUFBSUEsTUFBVixHQUFtQixDQUFuQixHQUF1QixDQUFsQztBQUNBa2EsSUFBQUEsUUFBUSxHQUFHSixJQUFYO0FBQ0QsR0FKRCxNQUlPO0FBQ0xJLElBQUFBLFFBQVEsR0FBR25hLE9BQUssQ0FBQ3daLEtBQUcsQ0FBQ3ZaLE1BQUQsQ0FBSCxHQUFjd1osS0FBZixDQUFoQjs7QUFDQSxRQUFJeFosTUFBTSxJQUFJb0csQ0FBQyxHQUFHa1QsS0FBRyxDQUFDLENBQUQsRUFBSSxDQUFDWSxRQUFMLENBQVgsQ0FBTixHQUFtQyxDQUF2QyxFQUEwQztBQUN4Q0EsTUFBQUEsUUFBUTtBQUNSOVQsTUFBQUEsQ0FBQyxJQUFJLENBQUw7QUFDRDs7QUFDRCxRQUFJOFQsUUFBUSxHQUFHSCxLQUFYLElBQW9CLENBQXhCLEVBQTJCO0FBQ3pCL1osTUFBQUEsTUFBTSxJQUFJZ2EsRUFBRSxHQUFHNVQsQ0FBZjtBQUNELEtBRkQsTUFFTztBQUNMcEcsTUFBQUEsTUFBTSxJQUFJZ2EsRUFBRSxHQUFHVixLQUFHLENBQUMsQ0FBRCxFQUFJLElBQUlTLEtBQVIsQ0FBbEI7QUFDRDs7QUFDRCxRQUFJL1osTUFBTSxHQUFHb0csQ0FBVCxJQUFjLENBQWxCLEVBQXFCO0FBQ25COFQsTUFBQUEsUUFBUTtBQUNSOVQsTUFBQUEsQ0FBQyxJQUFJLENBQUw7QUFDRDs7QUFDRCxRQUFJOFQsUUFBUSxHQUFHSCxLQUFYLElBQW9CRCxJQUF4QixFQUE4QjtBQUM1QkssTUFBQUEsUUFBUSxHQUFHLENBQVg7QUFDQUQsTUFBQUEsUUFBUSxHQUFHSixJQUFYO0FBQ0QsS0FIRCxNQUdPLElBQUlJLFFBQVEsR0FBR0gsS0FBWCxJQUFvQixDQUF4QixFQUEyQjtBQUNoQ0ksTUFBQUEsUUFBUSxHQUFHLENBQUNuYSxNQUFNLEdBQUdvRyxDQUFULEdBQWEsQ0FBZCxJQUFtQmtULEtBQUcsQ0FBQyxDQUFELEVBQUlJLGNBQUosQ0FBakM7QUFDQVEsTUFBQUEsUUFBUSxHQUFHQSxRQUFRLEdBQUdILEtBQXRCO0FBQ0QsS0FITSxNQUdBO0FBQ0xJLE1BQUFBLFFBQVEsR0FBR25hLE1BQU0sR0FBR3NaLEtBQUcsQ0FBQyxDQUFELEVBQUlTLEtBQUssR0FBRyxDQUFaLENBQVosR0FBNkJULEtBQUcsQ0FBQyxDQUFELEVBQUlJLGNBQUosQ0FBM0M7QUFDQVEsTUFBQUEsUUFBUSxHQUFHLENBQVg7QUFDRDtBQUNGOztBQUNELFNBQU9SLGNBQWMsSUFBSSxDQUF6QixFQUE0QkUsTUFBTSxDQUFDeFosS0FBSyxFQUFOLENBQU4sR0FBa0IrWixRQUFRLEdBQUcsR0FBN0IsRUFBa0NBLFFBQVEsSUFBSSxHQUE5QyxFQUFtRFQsY0FBYyxJQUFJLENBQWpHLENBQW1HOztBQUNuR1EsRUFBQUEsUUFBUSxHQUFHQSxRQUFRLElBQUlSLGNBQVosR0FBNkJTLFFBQXhDO0FBQ0FOLEVBQUFBLGNBQWMsSUFBSUgsY0FBbEI7O0FBQ0EsU0FBT0csY0FBYyxHQUFHLENBQXhCLEVBQTJCRCxNQUFNLENBQUN4WixLQUFLLEVBQU4sQ0FBTixHQUFrQjhaLFFBQVEsR0FBRyxHQUE3QixFQUFrQ0EsUUFBUSxJQUFJLEdBQTlDLEVBQW1ETCxjQUFjLElBQUksQ0FBaEcsQ0FBa0c7O0FBQ2xHRCxFQUFBQSxNQUFNLENBQUMsRUFBRXhaLEtBQUgsQ0FBTixJQUFtQjZaLElBQUksR0FBRyxHQUExQjtBQUNBLFNBQU9MLE1BQVA7QUFDRCxDQS9DRDs7QUFpREEsSUFBSVMsTUFBTSxHQUFHLFVBQVVULE1BQVYsRUFBa0JGLGNBQWxCLEVBQWtDO0FBQzdDLE1BQUlDLEtBQUssR0FBR0MsTUFBTSxDQUFDamhCLE1BQW5CO0FBQ0EsTUFBSWtoQixjQUFjLEdBQUdGLEtBQUssR0FBRyxDQUFSLEdBQVlELGNBQVosR0FBNkIsQ0FBbEQ7QUFDQSxNQUFJSSxJQUFJLEdBQUcsQ0FBQyxLQUFLRCxjQUFOLElBQXdCLENBQW5DO0FBQ0EsTUFBSUUsS0FBSyxHQUFHRCxJQUFJLElBQUksQ0FBcEI7QUFDQSxNQUFJUSxLQUFLLEdBQUdULGNBQWMsR0FBRyxDQUE3QjtBQUNBLE1BQUl6WixLQUFLLEdBQUd1WixLQUFLLEdBQUcsQ0FBcEI7QUFDQSxNQUFJTSxJQUFJLEdBQUdMLE1BQU0sQ0FBQ3haLEtBQUssRUFBTixDQUFqQjtBQUNBLE1BQUk4WixRQUFRLEdBQUdELElBQUksR0FBRyxHQUF0QjtBQUNBLE1BQUlFLFFBQUo7QUFDQUYsRUFBQUEsSUFBSSxLQUFLLENBQVQ7O0FBQ0EsU0FBT0ssS0FBSyxHQUFHLENBQWYsRUFBa0JKLFFBQVEsR0FBR0EsUUFBUSxHQUFHLEdBQVgsR0FBaUJOLE1BQU0sQ0FBQ3haLEtBQUQsQ0FBbEMsRUFBMkNBLEtBQUssRUFBaEQsRUFBb0RrYSxLQUFLLElBQUksQ0FBL0UsQ0FBaUY7O0FBQ2pGSCxFQUFBQSxRQUFRLEdBQUdELFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQ0ksS0FBUCxJQUFnQixDQUF0QztBQUNBSixFQUFBQSxRQUFRLEtBQUssQ0FBQ0ksS0FBZDtBQUNBQSxFQUFBQSxLQUFLLElBQUlaLGNBQVQ7O0FBQ0EsU0FBT1ksS0FBSyxHQUFHLENBQWYsRUFBa0JILFFBQVEsR0FBR0EsUUFBUSxHQUFHLEdBQVgsR0FBaUJQLE1BQU0sQ0FBQ3haLEtBQUQsQ0FBbEMsRUFBMkNBLEtBQUssRUFBaEQsRUFBb0RrYSxLQUFLLElBQUksQ0FBL0UsQ0FBaUY7O0FBQ2pGLE1BQUlKLFFBQVEsS0FBSyxDQUFqQixFQUFvQjtBQUNsQkEsSUFBQUEsUUFBUSxHQUFHLElBQUlILEtBQWY7QUFDRCxHQUZELE1BRU8sSUFBSUcsUUFBUSxLQUFLSixJQUFqQixFQUF1QjtBQUM1QixXQUFPSyxRQUFRLEdBQUdJLEdBQUgsR0FBU04sSUFBSSxHQUFHLENBQUNHLFFBQUosR0FBZUEsUUFBM0M7QUFDRCxHQUZNLE1BRUE7QUFDTEQsSUFBQUEsUUFBUSxHQUFHQSxRQUFRLEdBQUdiLEtBQUcsQ0FBQyxDQUFELEVBQUlJLGNBQUosQ0FBekI7QUFDQVEsSUFBQUEsUUFBUSxHQUFHQSxRQUFRLEdBQUdILEtBQXRCO0FBQ0Q7O0FBQUMsU0FBTyxDQUFDRSxJQUFJLEdBQUcsQ0FBQyxDQUFKLEdBQVEsQ0FBYixJQUFrQkUsUUFBbEIsR0FBNkJiLEtBQUcsQ0FBQyxDQUFELEVBQUlZLFFBQVEsR0FBR1IsY0FBZixDQUF2QztBQUNILENBeEJEOztJQTBCQXRqQixPQUFBLEdBQWlCO0FBQ2ZxakIsRUFBQUEsSUFBSSxFQUFFQSxJQURTO0FBRWZZLEVBQUFBLE1BQU0sRUFBRUE7QUFGTyxDQUFqQjs7QUNqRkEsSUFBSTdqQixRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSXlGLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUkyakIscUJBQW1CLEdBQUczakIsaUJBQTFCOztBQUNBLElBQUl5YyxZQUFZLEdBQUd6YyxZQUFuQjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSTRqQixhQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUlvSixxQkFBbUIsR0FBR3BKLHFCQUExQjs7QUFDQSxJQUFJeUosVUFBUSxHQUFHekosVUFBZjs7QUFDQSxJQUFJOGpCLFNBQU8sR0FBRzlqQixTQUFkOztBQUNBLElBQUkrakIsT0FBTyxHQUFHL2pCLE9BQWQ7O0FBQ0EsSUFBSTZVLGdCQUFjLEdBQUc3VSxzQkFBckI7O0FBQ0EsSUFBSWdWLGdCQUFjLEdBQUdoVixzQkFBckI7O0FBQ0EsSUFBSXlLLHFCQUFtQixHQUFHeksseUJBQUEsQ0FBc0RrRyxDQUFoRjs7QUFDQSxJQUFJaEcsZ0JBQWMsR0FBR0Ysb0JBQUEsQ0FBK0NrRyxDQUFwRTs7QUFDQSxJQUFJOGQsU0FBUyxHQUFHaGtCLFdBQWhCOztBQUNBLElBQUkrUixnQkFBYyxHQUFHL1IsZ0JBQXJCOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUVBLElBQUk0YyxzQkFBb0IsR0FBR0gsWUFBWSxDQUFDdlUsTUFBeEM7QUFDQSxJQUFJSSwwQkFBMEIsR0FBR21VLFlBQVksQ0FBQ3JVLFlBQTlDO0FBQ0EsSUFBSUcsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDbEksR0FBM0M7QUFDQSxJQUFJZ1Msa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSStjLGNBQVksR0FBRyxhQUFuQjtBQUNBLElBQUlDLFNBQVMsR0FBRyxVQUFoQjtBQUNBLElBQUkvVyxTQUFTLEdBQUcsV0FBaEI7QUFDQSxJQUFJZ1gsY0FBWSxHQUFHLGNBQW5CO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWxCO0FBQ0EsSUFBSUMsbUJBQWlCLEdBQUcxa0IsUUFBTSxDQUFDc2tCLGNBQUQsQ0FBOUI7QUFDQSxJQUFJSyxZQUFZLEdBQUdELG1CQUFuQjtBQUNBLElBQUlFLFNBQVMsR0FBRzVrQixRQUFNLENBQUN1a0IsU0FBRCxDQUF0QjtBQUNBLElBQUlNLGtCQUFrQixHQUFHRCxTQUFTLElBQUlBLFNBQVMsQ0FBQ3BYLFNBQUQsQ0FBL0M7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR25TLE1BQU0sQ0FBQytILFNBQTdCO0FBQ0EsSUFBSXVhLFlBQVUsR0FBRzVpQixRQUFNLENBQUM0aUIsVUFBeEI7QUFFQSxJQUFJa0MsV0FBVyxHQUFHVixPQUFPLENBQUNuQixJQUExQjtBQUNBLElBQUk4QixhQUFhLEdBQUdYLE9BQU8sQ0FBQ1AsTUFBNUI7O0FBRUEsSUFBSW1CLFFBQVEsR0FBRyxVQUFVeGIsTUFBVixFQUFrQjtBQUMvQixTQUFPLENBQUNBLE1BQU0sR0FBRyxJQUFWLENBQVA7QUFDRCxDQUZEOztBQUlBLElBQUl5YixTQUFTLEdBQUcsVUFBVXpiLE1BQVYsRUFBa0I7QUFDaEMsU0FBTyxDQUFDQSxNQUFNLEdBQUcsSUFBVixFQUFnQkEsTUFBTSxJQUFJLENBQVYsR0FBYyxJQUE5QixDQUFQO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJMGIsU0FBUyxHQUFHLFVBQVUxYixNQUFWLEVBQWtCO0FBQ2hDLFNBQU8sQ0FBQ0EsTUFBTSxHQUFHLElBQVYsRUFBZ0JBLE1BQU0sSUFBSSxDQUFWLEdBQWMsSUFBOUIsRUFBb0NBLE1BQU0sSUFBSSxFQUFWLEdBQWUsSUFBbkQsRUFBeURBLE1BQU0sSUFBSSxFQUFWLEdBQWUsSUFBeEUsQ0FBUDtBQUNELENBRkQ7O0FBSUEsSUFBSTJiLFdBQVcsR0FBRyxVQUFVL0IsTUFBVixFQUFrQjtBQUNsQyxTQUFPQSxNQUFNLENBQUMsQ0FBRCxDQUFOLElBQWEsRUFBYixHQUFrQkEsTUFBTSxDQUFDLENBQUQsQ0FBTixJQUFhLEVBQS9CLEdBQW9DQSxNQUFNLENBQUMsQ0FBRCxDQUFOLElBQWEsQ0FBakQsR0FBcURBLE1BQU0sQ0FBQyxDQUFELENBQWxFO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJZ0MsV0FBVyxHQUFHLFVBQVU1YixNQUFWLEVBQWtCO0FBQ2xDLFNBQU9zYixXQUFXLENBQUN0YixNQUFELEVBQVMsRUFBVCxFQUFhLENBQWIsQ0FBbEI7QUFDRCxDQUZEOztBQUlBLElBQUk2YixXQUFXLEdBQUcsVUFBVTdiLE1BQVYsRUFBa0I7QUFDbEMsU0FBT3NiLFdBQVcsQ0FBQ3RiLE1BQUQsRUFBUyxFQUFULEVBQWEsQ0FBYixDQUFsQjtBQUNELENBRkQ7O0FBSUEsSUFBSThiLFdBQVMsR0FBRyxVQUFVeEYsV0FBVixFQUF1QjliLEdBQXZCLEVBQTRCO0FBQzFDekQsRUFBQUEsZ0JBQWMsQ0FBQ3VmLFdBQVcsQ0FBQ3RTLFNBQUQsQ0FBWixFQUF5QnhKLEdBQXpCLEVBQThCO0FBQUV4RCxJQUFBQSxHQUFHLEVBQUUsWUFBWTtBQUFFLGFBQU9vSSxrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCNUUsR0FBdkIsQ0FBUDtBQUFxQztBQUExRCxHQUE5QixDQUFkO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJeEQsS0FBRyxHQUFHLFVBQVUra0IsSUFBVixFQUFnQjlMLEtBQWhCLEVBQXVCN1AsS0FBdkIsRUFBOEI0YixjQUE5QixFQUE4QztBQUN0RCxNQUFJQyxRQUFRLEdBQUd0QixTQUFPLENBQUN2YSxLQUFELENBQXRCO0FBQ0EsTUFBSXpGLEtBQUssR0FBR3lFLGtCQUFnQixDQUFDMmMsSUFBRCxDQUE1QjtBQUNBLE1BQUlFLFFBQVEsR0FBR2hNLEtBQVgsR0FBbUJ0VixLQUFLLENBQUN1aEIsVUFBN0IsRUFBeUMsTUFBTTlDLFlBQVUsQ0FBQzZCLFdBQUQsQ0FBaEI7QUFDekMsTUFBSXRCLEtBQUssR0FBR3ZhLGtCQUFnQixDQUFDekUsS0FBSyxDQUFDaWYsTUFBUCxDQUFoQixDQUErQkQsS0FBM0M7QUFDQSxNQUFJOUosS0FBSyxHQUFHb00sUUFBUSxHQUFHdGhCLEtBQUssQ0FBQ3doQixVQUE3QjtBQUNBLE1BQUkxQyxJQUFJLEdBQUdFLEtBQUssQ0FBQzdoQixLQUFOLENBQVkrWCxLQUFaLEVBQW1CQSxLQUFLLEdBQUdJLEtBQTNCLENBQVg7QUFDQSxTQUFPK0wsY0FBYyxHQUFHdkMsSUFBSCxHQUFVQSxJQUFJLENBQUN0RCxPQUFMLEVBQS9CO0FBQ0QsQ0FSRDs7QUFVQSxJQUFJcFksS0FBRyxHQUFHLFVBQVVnZSxJQUFWLEVBQWdCOUwsS0FBaEIsRUFBdUI3UCxLQUF2QixFQUE4QmdjLFVBQTlCLEVBQTBDMWtCLEtBQTFDLEVBQWlEc2tCLGNBQWpELEVBQWlFO0FBQ3pFLE1BQUlDLFFBQVEsR0FBR3RCLFNBQU8sQ0FBQ3ZhLEtBQUQsQ0FBdEI7QUFDQSxNQUFJekYsS0FBSyxHQUFHeUUsa0JBQWdCLENBQUMyYyxJQUFELENBQTVCO0FBQ0EsTUFBSUUsUUFBUSxHQUFHaE0sS0FBWCxHQUFtQnRWLEtBQUssQ0FBQ3VoQixVQUE3QixFQUF5QyxNQUFNOUMsWUFBVSxDQUFDNkIsV0FBRCxDQUFoQjtBQUN6QyxNQUFJdEIsS0FBSyxHQUFHdmEsa0JBQWdCLENBQUN6RSxLQUFLLENBQUNpZixNQUFQLENBQWhCLENBQStCRCxLQUEzQztBQUNBLE1BQUk5SixLQUFLLEdBQUdvTSxRQUFRLEdBQUd0aEIsS0FBSyxDQUFDd2hCLFVBQTdCO0FBQ0EsTUFBSTFDLElBQUksR0FBRzJDLFVBQVUsQ0FBQyxDQUFDMWtCLEtBQUYsQ0FBckI7O0FBQ0EsT0FBSyxJQUFJd0osQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRytPLEtBQXBCLEVBQTJCL08sQ0FBQyxFQUE1QixFQUFnQ3lZLEtBQUssQ0FBQzlKLEtBQUssR0FBRzNPLENBQVQsQ0FBTCxHQUFtQnVZLElBQUksQ0FBQ3VDLGNBQWMsR0FBRzlhLENBQUgsR0FBTytPLEtBQUssR0FBRy9PLENBQVIsR0FBWSxDQUFsQyxDQUF2QjtBQUNqQyxDQVJEOztBQVVBLElBQUksQ0FBQ3NaLHFCQUFMLEVBQTBCO0FBQ3hCVyxFQUFBQSxZQUFZLEdBQUcsU0FBU2pDLFdBQVQsQ0FBcUJ2Z0IsTUFBckIsRUFBNkI7QUFDMUMraEIsSUFBQUEsWUFBVSxDQUFDLElBQUQsRUFBT1MsWUFBUCxFQUFxQkwsY0FBckIsQ0FBVjtBQUNBLFFBQUlvQixVQUFVLEdBQUd2QixTQUFPLENBQUNoaUIsTUFBRCxDQUF4QjtBQUNBcVEsSUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCMlEsTUFBQUEsS0FBSyxFQUFFa0IsU0FBUyxDQUFDeGpCLElBQVYsQ0FBZSxJQUFJMkwsS0FBSixDQUFVa1osVUFBVixDQUFmLEVBQXNDLENBQXRDLENBRGM7QUFFckJBLE1BQUFBLFVBQVUsRUFBRUE7QUFGUyxLQUFQLENBQWhCO0FBSUEsUUFBSSxDQUFDNWYsYUFBTCxFQUFrQixLQUFLNGYsVUFBTCxHQUFrQkEsVUFBbEI7QUFDbkIsR0FSRDs7QUFVQWQsRUFBQUEsU0FBUyxHQUFHLFNBQVNqQyxRQUFULENBQWtCUyxNQUFsQixFQUEwQnVDLFVBQTFCLEVBQXNDRCxVQUF0QyxFQUFrRDtBQUM1RHhCLElBQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU9VLFNBQVAsRUFBa0JMLFNBQWxCLENBQVY7QUFDQUwsSUFBQUEsWUFBVSxDQUFDZCxNQUFELEVBQVN1QixZQUFULEVBQXVCSixTQUF2QixDQUFWO0FBQ0EsUUFBSXNCLFlBQVksR0FBR2pkLGtCQUFnQixDQUFDd2EsTUFBRCxDQUFoQixDQUF5QnNDLFVBQTVDO0FBQ0EsUUFBSUksTUFBTSxHQUFHcmMscUJBQW1CLENBQUNrYyxVQUFELENBQWhDO0FBQ0EsUUFBSUcsTUFBTSxHQUFHLENBQVQsSUFBY0EsTUFBTSxHQUFHRCxZQUEzQixFQUF5QyxNQUFNakQsWUFBVSxDQUFDLGNBQUQsQ0FBaEI7QUFDekM4QyxJQUFBQSxVQUFVLEdBQUdBLFVBQVUsS0FBS2prQixTQUFmLEdBQTJCb2tCLFlBQVksR0FBR0MsTUFBMUMsR0FBbURoYyxVQUFRLENBQUM0YixVQUFELENBQXhFO0FBQ0EsUUFBSUksTUFBTSxHQUFHSixVQUFULEdBQXNCRyxZQUExQixFQUF3QyxNQUFNakQsWUFBVSxDQUFDNEIsY0FBRCxDQUFoQjtBQUN4Q2hTLElBQUFBLGtCQUFnQixDQUFDLElBQUQsRUFBTztBQUNyQjRRLE1BQUFBLE1BQU0sRUFBRUEsTUFEYTtBQUVyQnNDLE1BQUFBLFVBQVUsRUFBRUEsVUFGUztBQUdyQkMsTUFBQUEsVUFBVSxFQUFFRztBQUhTLEtBQVAsQ0FBaEI7O0FBS0EsUUFBSSxDQUFDaGdCLGFBQUwsRUFBa0I7QUFDaEIsV0FBS3NkLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFdBQUtzQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUNBLFdBQUtDLFVBQUwsR0FBa0JHLE1BQWxCO0FBQ0Q7QUFDRixHQWxCRDs7QUFvQkEsTUFBSWhnQixhQUFKLEVBQWlCO0FBQ2Z3ZixJQUFBQSxXQUFTLENBQUNYLFlBQUQsRUFBZSxZQUFmLENBQVQ7QUFDQVcsSUFBQUEsV0FBUyxDQUFDVixTQUFELEVBQVksUUFBWixDQUFUO0FBQ0FVLElBQUFBLFdBQVMsQ0FBQ1YsU0FBRCxFQUFZLFlBQVosQ0FBVDtBQUNBVSxJQUFBQSxXQUFTLENBQUNWLFNBQUQsRUFBWSxZQUFaLENBQVQ7QUFDRDs7QUFFRFgsRUFBQUEsYUFBVyxDQUFDVyxTQUFTLENBQUNwWCxTQUFELENBQVYsRUFBdUI7QUFDaEN1WSxJQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQkosVUFBakIsRUFBNkI7QUFDcEMsYUFBT25sQixLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW1sQixVQUFWLENBQUgsQ0FBeUIsQ0FBekIsS0FBK0IsRUFBL0IsSUFBcUMsRUFBNUM7QUFDRCxLQUgrQjtBQUloQ0ssSUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JMLFVBQWxCLEVBQThCO0FBQ3RDLGFBQU9ubEIsS0FBRyxDQUFDLElBQUQsRUFBTyxDQUFQLEVBQVVtbEIsVUFBVixDQUFILENBQXlCLENBQXpCLENBQVA7QUFDRCxLQU4rQjtBQU9oQ00sSUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JOO0FBQVc7QUFBN0IsTUFBbUQ7QUFDM0QsVUFBSXhDLEtBQUssR0FBRzNpQixLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW1sQixVQUFWLEVBQXNCempCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQTVELENBQWY7QUFDQSxhQUFPLENBQUMwaEIsS0FBSyxDQUFDLENBQUQsQ0FBTCxJQUFZLENBQVosR0FBZ0JBLEtBQUssQ0FBQyxDQUFELENBQXRCLEtBQThCLEVBQTlCLElBQW9DLEVBQTNDO0FBQ0QsS0FWK0I7QUFXaEMrQyxJQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQlA7QUFBVztBQUE5QixNQUFvRDtBQUM3RCxVQUFJeEMsS0FBSyxHQUFHM2lCLEtBQUcsQ0FBQyxJQUFELEVBQU8sQ0FBUCxFQUFVbWxCLFVBQVYsRUFBc0J6akIsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBNUQsQ0FBZjtBQUNBLGFBQU8waEIsS0FBSyxDQUFDLENBQUQsQ0FBTCxJQUFZLENBQVosR0FBZ0JBLEtBQUssQ0FBQyxDQUFELENBQTVCO0FBQ0QsS0FkK0I7QUFlaENnRCxJQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQlI7QUFBVztBQUE3QixNQUFtRDtBQUMzRCxhQUFPUixXQUFXLENBQUMza0IsS0FBRyxDQUFDLElBQUQsRUFBTyxDQUFQLEVBQVVtbEIsVUFBVixFQUFzQnpqQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUE1RCxDQUFKLENBQWxCO0FBQ0QsS0FqQitCO0FBa0JoQzJrQixJQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQlQ7QUFBVztBQUE5QixNQUFvRDtBQUM3RCxhQUFPUixXQUFXLENBQUMza0IsS0FBRyxDQUFDLElBQUQsRUFBTyxDQUFQLEVBQVVtbEIsVUFBVixFQUFzQnpqQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUE1RCxDQUFKLENBQVgsS0FBMkYsQ0FBbEc7QUFDRCxLQXBCK0I7QUFxQmhDNGtCLElBQUFBLFVBQVUsRUFBRSxTQUFTQSxVQUFULENBQW9CVjtBQUFXO0FBQS9CLE1BQXFEO0FBQy9ELGFBQU9aLGFBQWEsQ0FBQ3ZrQixLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW1sQixVQUFWLEVBQXNCempCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQTVELENBQUosRUFBNEUsRUFBNUUsQ0FBcEI7QUFDRCxLQXZCK0I7QUF3QmhDNmtCLElBQUFBLFVBQVUsRUFBRSxTQUFTQSxVQUFULENBQW9CWDtBQUFXO0FBQS9CLE1BQXFEO0FBQy9ELGFBQU9aLGFBQWEsQ0FBQ3ZrQixLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW1sQixVQUFWLEVBQXNCempCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQTVELENBQUosRUFBNEUsRUFBNUUsQ0FBcEI7QUFDRCxLQTFCK0I7QUEyQmhDOGtCLElBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCWixVQUFqQixFQUE2QnprQixLQUE3QixFQUFvQztBQUMzQ3FHLE1BQUFBLEtBQUcsQ0FBQyxJQUFELEVBQU8sQ0FBUCxFQUFVb2UsVUFBVixFQUFzQlgsUUFBdEIsRUFBZ0M5akIsS0FBaEMsQ0FBSDtBQUNELEtBN0IrQjtBQThCaENzbEIsSUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JiLFVBQWxCLEVBQThCemtCLEtBQTlCLEVBQXFDO0FBQzdDcUcsTUFBQUEsS0FBRyxDQUFDLElBQUQsRUFBTyxDQUFQLEVBQVVvZSxVQUFWLEVBQXNCWCxRQUF0QixFQUFnQzlqQixLQUFoQyxDQUFIO0FBQ0QsS0FoQytCO0FBaUNoQ3VsQixJQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQmQsVUFBbEIsRUFBOEJ6a0I7QUFBTTtBQUFwQyxNQUEwRDtBQUNsRXFHLE1BQUFBLEtBQUcsQ0FBQyxJQUFELEVBQU8sQ0FBUCxFQUFVb2UsVUFBVixFQUFzQlYsU0FBdEIsRUFBaUMvakIsS0FBakMsRUFBd0NnQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUE5RSxDQUFIO0FBQ0QsS0FuQytCO0FBb0NoQ2lsQixJQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQmYsVUFBbkIsRUFBK0J6a0I7QUFBTTtBQUFyQyxNQUEyRDtBQUNwRXFHLE1BQUFBLEtBQUcsQ0FBQyxJQUFELEVBQU8sQ0FBUCxFQUFVb2UsVUFBVixFQUFzQlYsU0FBdEIsRUFBaUMvakIsS0FBakMsRUFBd0NnQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUE5RSxDQUFIO0FBQ0QsS0F0QytCO0FBdUNoQ2tsQixJQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQmhCLFVBQWxCLEVBQThCemtCO0FBQU07QUFBcEMsTUFBMEQ7QUFDbEVxRyxNQUFBQSxLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW9lLFVBQVYsRUFBc0JULFNBQXRCLEVBQWlDaGtCLEtBQWpDLEVBQXdDZ0IsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBOUUsQ0FBSDtBQUNELEtBekMrQjtBQTBDaENtbEIsSUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsQ0FBbUJqQixVQUFuQixFQUErQnprQjtBQUFNO0FBQXJDLE1BQTJEO0FBQ3BFcUcsTUFBQUEsS0FBRyxDQUFDLElBQUQsRUFBTyxDQUFQLEVBQVVvZSxVQUFWLEVBQXNCVCxTQUF0QixFQUFpQ2hrQixLQUFqQyxFQUF3Q2dCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQTlFLENBQUg7QUFDRCxLQTVDK0I7QUE2Q2hDb2xCLElBQUFBLFVBQVUsRUFBRSxTQUFTQSxVQUFULENBQW9CbEIsVUFBcEIsRUFBZ0N6a0I7QUFBTTtBQUF0QyxNQUE0RDtBQUN0RXFHLE1BQUFBLEtBQUcsQ0FBQyxJQUFELEVBQU8sQ0FBUCxFQUFVb2UsVUFBVixFQUFzQlAsV0FBdEIsRUFBbUNsa0IsS0FBbkMsRUFBMENnQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFoRixDQUFIO0FBQ0QsS0EvQytCO0FBZ0RoQ3FsQixJQUFBQSxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQm5CLFVBQXBCLEVBQWdDemtCO0FBQU07QUFBdEMsTUFBNEQ7QUFDdEVxRyxNQUFBQSxLQUFHLENBQUMsSUFBRCxFQUFPLENBQVAsRUFBVW9lLFVBQVYsRUFBc0JOLFdBQXRCLEVBQW1DbmtCLEtBQW5DLEVBQTBDZ0IsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBaEYsQ0FBSDtBQUNEO0FBbEQrQixHQUF2QixDQUFYO0FBb0RELENBMUZELE1BMEZPO0FBQ0wsTUFBSXNsQiwyQkFBMkIsR0FBRzlKLHNCQUFvQixJQUFJeUgsbUJBQWlCLENBQUN4ZixJQUFsQixLQUEyQm9mLGNBQXJGO0FBQ0E7O0FBQ0EsTUFBSSxDQUFDbGtCLE9BQUssQ0FBQyxZQUFZO0FBQ3JCc2tCLElBQUFBLG1CQUFpQixDQUFDLENBQUQsQ0FBakI7QUFDRCxHQUZTLENBQU4sSUFFRSxDQUFDdGtCLE9BQUssQ0FBQyxZQUFZO0FBQ3ZCLFFBQUlza0IsbUJBQUosQ0FBc0IsQ0FBQyxDQUF2QjtBQUNELEdBRlcsQ0FGUixJQUlFdGtCLE9BQUssQ0FBQyxZQUFZO0FBQ3RCLFFBQUlza0IsbUJBQUo7QUFDQSxRQUFJQSxtQkFBSixDQUFzQixHQUF0QjtBQUNBLFFBQUlBLG1CQUFKLENBQXNCWCxHQUF0QjtBQUNBLFdBQU9nRCwyQkFBMkIsSUFBSSxDQUFDcGUsMEJBQXZDO0FBQ0QsR0FMVSxDQUpYLEVBU0k7QUFDSjtBQUNFZ2MsSUFBQUEsWUFBWSxHQUFHLFNBQVNqQyxXQUFULENBQXFCdmdCLE1BQXJCLEVBQTZCO0FBQzFDK2hCLE1BQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU9TLFlBQVAsQ0FBVjtBQUNBLGFBQU8sSUFBSUQsbUJBQUosQ0FBc0JQLFNBQU8sQ0FBQ2hpQixNQUFELENBQTdCLENBQVA7QUFDRCxLQUhEOztBQUlBLFFBQUk2a0Isb0JBQW9CLEdBQUdyQyxZQUFZLENBQUNuWCxTQUFELENBQVosR0FBMEJrWCxtQkFBaUIsQ0FBQ2xYLFNBQUQsQ0FBdEU7O0FBQ0EsU0FBSyxJQUFJdkcsTUFBSSxHQUFHNkQscUJBQW1CLENBQUM0WixtQkFBRCxDQUE5QixFQUFtRHJFLEdBQUMsR0FBRyxDQUF2RCxFQUEwRHJjLEtBQS9ELEVBQW9FaUQsTUFBSSxDQUFDOUUsTUFBTCxHQUFja2UsR0FBbEYsR0FBc0Y7QUFDcEYsVUFBSSxFQUFFLENBQUNyYyxLQUFHLEdBQUdpRCxNQUFJLENBQUNvWixHQUFDLEVBQUYsQ0FBWCxLQUFxQnNFLFlBQXZCLENBQUosRUFBMEM7QUFDeEN4ZCxRQUFBQSw2QkFBMkIsQ0FBQ3dkLFlBQUQsRUFBZTNnQixLQUFmLEVBQW9CMGdCLG1CQUFpQixDQUFDMWdCLEtBQUQsQ0FBckMsQ0FBM0I7QUFDRDtBQUNGOztBQUNEZ2pCLElBQUFBLG9CQUFvQixDQUFDdlcsV0FBckIsR0FBbUNrVSxZQUFuQztBQUNELEdBdEJELE1Bc0JPLElBQUlvQywyQkFBMkIsSUFBSXBlLDBCQUFuQyxFQUErRDtBQUNwRXhCLElBQUFBLDZCQUEyQixDQUFDdWQsbUJBQUQsRUFBb0IsTUFBcEIsRUFBNEJKLGNBQTVCLENBQTNCO0FBQ0QsR0EzQkk7OztBQThCTCxNQUFJalAsZ0JBQWMsSUFBSUgsZ0JBQWMsQ0FBQzJQLGtCQUFELENBQWQsS0FBdUNwUyxpQkFBN0QsRUFBOEU7QUFDNUU0QyxJQUFBQSxnQkFBYyxDQUFDd1Asa0JBQUQsRUFBcUJwUyxpQkFBckIsQ0FBZDtBQUNELEdBaENJOzs7QUFtQ0wsTUFBSXdVLFFBQVEsR0FBRyxJQUFJckMsU0FBSixDQUFjLElBQUlELFlBQUosQ0FBaUIsQ0FBakIsQ0FBZCxDQUFmO0FBQ0EsTUFBSXVDLFFBQVEsR0FBR3JDLGtCQUFrQixDQUFDMEIsT0FBbEM7QUFDQVUsRUFBQUEsUUFBUSxDQUFDVixPQUFULENBQWlCLENBQWpCLEVBQW9CLFVBQXBCO0FBQ0FVLEVBQUFBLFFBQVEsQ0FBQ1YsT0FBVCxDQUFpQixDQUFqQixFQUFvQixVQUFwQjtBQUNBLE1BQUlVLFFBQVEsQ0FBQ2xCLE9BQVQsQ0FBaUIsQ0FBakIsS0FBdUIsQ0FBQ2tCLFFBQVEsQ0FBQ2xCLE9BQVQsQ0FBaUIsQ0FBakIsQ0FBNUIsRUFBaUQ5QixhQUFXLENBQUNZLGtCQUFELEVBQXFCO0FBQy9FMEIsSUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJaLFVBQWpCLEVBQTZCemtCLEtBQTdCLEVBQW9DO0FBQzNDZ21CLE1BQUFBLFFBQVEsQ0FBQ3JtQixJQUFULENBQWMsSUFBZCxFQUFvQjhrQixVQUFwQixFQUFnQ3prQixLQUFLLElBQUksRUFBVCxJQUFlLEVBQS9DO0FBQ0QsS0FIOEU7QUFJL0VzbEIsSUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JiLFVBQWxCLEVBQThCemtCLEtBQTlCLEVBQXFDO0FBQzdDZ21CLE1BQUFBLFFBQVEsQ0FBQ3JtQixJQUFULENBQWMsSUFBZCxFQUFvQjhrQixVQUFwQixFQUFnQ3prQixLQUFLLElBQUksRUFBVCxJQUFlLEVBQS9DO0FBQ0Q7QUFOOEUsR0FBckIsRUFPekQ7QUFBRThILElBQUFBLE1BQU0sRUFBRTtBQUFWLEdBUHlELENBQVg7QUFRbEQ7O0FBRURvSixnQkFBYyxDQUFDdVMsWUFBRCxFQUFlTCxjQUFmLENBQWQ7QUFDQWxTLGdCQUFjLENBQUN3UyxTQUFELEVBQVlMLFNBQVosQ0FBZDtJQUVBM2tCLFdBQUEsR0FBaUI7QUFDZjhpQixFQUFBQSxXQUFXLEVBQUVpQyxZQURFO0FBRWZoQyxFQUFBQSxRQUFRLEVBQUVpQztBQUZLLENBQWpCOztBQ3JPQSxJQUFJN1MsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSThtQixpQkFBaUIsR0FBRzltQixXQUF4Qjs7QUFDQSxJQUFJOGhCLFlBQVUsR0FBRzloQixZQUFqQjs7QUFFQSxJQUFJaWtCLFlBQVksR0FBRyxhQUFuQjtBQUNBLElBQUk1QixhQUFXLEdBQUd5RSxpQkFBaUIsQ0FBQzdDLFlBQUQsQ0FBbkM7QUFDQSxJQUFJSSxpQkFBaUIsR0FBRzFrQixRQUFNLENBQUNza0IsWUFBRCxDQUE5QjtBQUdBOztBQUNBdlMsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLEVBQUFBLE1BQU0sRUFBRW1ZLGlCQUFpQixLQUFLaEM7QUFBOUMsQ0FBRCxFQUE4RDtBQUM3REEsRUFBQUEsV0FBVyxFQUFFQTtBQURnRCxDQUE5RCxDQUFEO0FBSUFQLFlBQVUsQ0FBQ21DLFlBQUQsQ0FBVjs7QUNmQSxJQUFJTixxQkFBbUIsR0FBRzNqQixpQkFBMUI7O0FBQ0EsSUFBSXlGLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSW9FLFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUlrQixTQUFPLEdBQUdsQixTQUFkOztBQUNBLElBQUlpRCxhQUFXLEdBQUdqRCxhQUFsQjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUlFLGdCQUFjLEdBQUdGLG9CQUFBLENBQStDa0csQ0FBcEU7O0FBQ0EsSUFBSTJPLGdCQUFjLEdBQUc3VSxzQkFBckI7O0FBQ0EsSUFBSWdWLGdCQUFjLEdBQUdoVixzQkFBckI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXlFLEtBQUcsR0FBR3pFLEtBQVY7O0FBRUEsSUFBSSttQixXQUFTLEdBQUdwbkIsUUFBTSxDQUFDb25CLFNBQXZCO0FBQ0EsSUFBSUMsa0JBQWtCLEdBQUdELFdBQVMsSUFBSUEsV0FBUyxDQUFDL2UsU0FBaEQ7QUFDQSxJQUFJaWYsaUJBQWlCLEdBQUd0bkIsUUFBTSxDQUFDc25CLGlCQUEvQjtBQUNBLElBQUlDLDBCQUEwQixHQUFHRCxpQkFBaUIsSUFBSUEsaUJBQWlCLENBQUNqZixTQUF4RTtBQUNBLElBQUltZixZQUFVLEdBQUdKLFdBQVMsSUFBSWxTLGdCQUFjLENBQUNrUyxXQUFELENBQTVDO0FBQ0EsSUFBSUsscUJBQW1CLEdBQUdKLGtCQUFrQixJQUFJblMsZ0JBQWMsQ0FBQ21TLGtCQUFELENBQTlEO0FBQ0EsSUFBSTVVLGVBQWUsR0FBR25TLE1BQU0sQ0FBQytILFNBQTdCO0FBQ0EsSUFBSXFmLGVBQWEsR0FBR2pWLGVBQWUsQ0FBQ2lWLGFBQXBDO0FBRUEsSUFBSWhiLGVBQWEsR0FBR3BILGlCQUFlLENBQUMsYUFBRCxDQUFuQztBQUNBLElBQUlxaUIsaUJBQWUsR0FBRzdpQixLQUFHLENBQUMsaUJBQUQsQ0FBekI7QUFDQSxJQUFJOGlCLHlCQUF1QixHQUFHOWlCLEtBQUcsQ0FBQyx5QkFBRCxDQUFqQzs7QUFFQSxJQUFJK2lCLDJCQUF5QixHQUFHN0QscUJBQW1CLElBQUksQ0FBQyxDQUFDM08sZ0JBQXpCLElBQTJDOVQsU0FBTyxDQUFDdkIsUUFBTSxDQUFDOG5CLEtBQVIsQ0FBUCxLQUEwQixPQUFyRztBQUNBLElBQUlDLHVCQUF1QixHQUFHLEtBQTlCO0FBQ0EsSUFBSXZZLE1BQUosRUFBVXNRLFdBQVYsRUFBdUJrSSxTQUF2QjtBQUVBLElBQUlDLDBCQUEwQixHQUFHO0FBQy9CYixFQUFBQSxTQUFTLEVBQUUsQ0FEb0I7QUFFL0JjLEVBQUFBLFVBQVUsRUFBRSxDQUZtQjtBQUcvQlosRUFBQUEsaUJBQWlCLEVBQUUsQ0FIWTtBQUkvQmEsRUFBQUEsVUFBVSxFQUFFLENBSm1CO0FBSy9CQyxFQUFBQSxXQUFXLEVBQUUsQ0FMa0I7QUFNL0JDLEVBQUFBLFVBQVUsRUFBRSxDQU5tQjtBQU8vQkMsRUFBQUEsV0FBVyxFQUFFLENBUGtCO0FBUS9CQyxFQUFBQSxZQUFZLEVBQUUsQ0FSaUI7QUFTL0JDLEVBQUFBLFlBQVksRUFBRTtBQVRpQixDQUFqQztBQVlBLElBQUlDLDJCQUEyQixHQUFHO0FBQ2hDQyxFQUFBQSxhQUFhLEVBQUUsQ0FEaUI7QUFFaENDLEVBQUFBLGNBQWMsRUFBRTtBQUZnQixDQUFsQzs7QUFLQSxJQUFJQyxNQUFNLEdBQUcsU0FBU0EsTUFBVCxDQUFnQmxwQixFQUFoQixFQUFvQjtBQUMvQixNQUFJLENBQUNnRSxVQUFRLENBQUNoRSxFQUFELENBQWIsRUFBbUIsT0FBTyxLQUFQO0FBQ25CLE1BQUltcEIsS0FBSyxHQUFHdG5CLFNBQU8sQ0FBQzdCLEVBQUQsQ0FBbkI7QUFDQSxTQUFPbXBCLEtBQUssS0FBSyxVQUFWLElBQ0Zwa0IsUUFBTSxDQUFDd2pCLDBCQUFELEVBQTZCWSxLQUE3QixDQURKLElBRUZwa0IsUUFBTSxDQUFDZ2tCLDJCQUFELEVBQThCSSxLQUE5QixDQUZYO0FBR0QsQ0FORDs7QUFRQSxJQUFJQyxjQUFZLEdBQUcsVUFBVXBwQixFQUFWLEVBQWM7QUFDL0IsTUFBSSxDQUFDZ0UsVUFBUSxDQUFDaEUsRUFBRCxDQUFiLEVBQW1CLE9BQU8sS0FBUDtBQUNuQixNQUFJbXBCLEtBQUssR0FBR3RuQixTQUFPLENBQUM3QixFQUFELENBQW5CO0FBQ0EsU0FBTytFLFFBQU0sQ0FBQ3dqQiwwQkFBRCxFQUE2QlksS0FBN0IsQ0FBTixJQUNGcGtCLFFBQU0sQ0FBQ2drQiwyQkFBRCxFQUE4QkksS0FBOUIsQ0FEWDtBQUVELENBTEQ7O0FBT0EsSUFBSUUsYUFBVyxHQUFHLFVBQVVycEIsRUFBVixFQUFjO0FBQzlCLE1BQUlvcEIsY0FBWSxDQUFDcHBCLEVBQUQsQ0FBaEIsRUFBc0IsT0FBT0EsRUFBUDtBQUN0QixRQUFNZ0MsU0FBUyxDQUFDLDZCQUFELENBQWY7QUFDRCxDQUhEOztBQUtBLElBQUlzbkIsd0JBQXNCLEdBQUcsVUFBVXhZLENBQVYsRUFBYTtBQUN4QyxNQUFJMU8sWUFBVSxDQUFDME8sQ0FBRCxDQUFWLEtBQWtCLENBQUM2RSxnQkFBRCxJQUFtQnFTLGVBQWEsQ0FBQzdtQixJQUFkLENBQW1CMm1CLFlBQW5CLEVBQStCaFgsQ0FBL0IsQ0FBckMsQ0FBSixFQUE2RSxPQUFPQSxDQUFQO0FBQzdFLFFBQU05TyxTQUFTLENBQUM0QixhQUFXLENBQUNrTixDQUFELENBQVgsR0FBaUIsbUNBQWxCLENBQWY7QUFDRCxDQUhEOztBQUtBLElBQUl5WSx3QkFBc0IsR0FBRyxVQUFVL0ssR0FBVixFQUFlZ0wsUUFBZixFQUF5QjNjLE1BQXpCLEVBQWlDO0FBQzVELE1BQUksQ0FBQ3pHLGFBQUwsRUFBa0I7QUFDbEIsTUFBSXlHLE1BQUosRUFBWSxLQUFLLElBQUk0YyxLQUFULElBQWtCbEIsMEJBQWxCLEVBQThDO0FBQ3hELFFBQUltQixxQkFBcUIsR0FBR3BwQixRQUFNLENBQUNtcEIsS0FBRCxDQUFsQztBQUNBLFFBQUlDLHFCQUFxQixJQUFJM2tCLFFBQU0sQ0FBQzJrQixxQkFBcUIsQ0FBQy9nQixTQUF2QixFQUFrQzZWLEdBQWxDLENBQW5DLEVBQTJFLElBQUk7QUFDN0UsYUFBT2tMLHFCQUFxQixDQUFDL2dCLFNBQXRCLENBQWdDNlYsR0FBaEMsQ0FBUDtBQUNELEtBRjBFLENBRXpFLE9BQU8vZCxLQUFQLEVBQWM7QUFBRTtBQUFhO0FBQ2hDOztBQUNELE1BQUksQ0FBQ3NuQixxQkFBbUIsQ0FBQ3ZKLEdBQUQsQ0FBcEIsSUFBNkIzUixNQUFqQyxFQUF5QztBQUN2Q1QsSUFBQUEsVUFBUSxDQUFDMmIscUJBQUQsRUFBc0J2SixHQUF0QixFQUEyQjNSLE1BQU0sR0FBRzJjLFFBQUgsR0FDckNyQiwyQkFBeUIsSUFBSVIsa0JBQWtCLENBQUNuSixHQUFELENBQS9DLElBQXdEZ0wsUUFEcEQsQ0FBUjtBQUVEO0FBQ0YsQ0FaRDs7QUFjQSxJQUFJRyw4QkFBNEIsR0FBRyxVQUFVbkwsR0FBVixFQUFlZ0wsUUFBZixFQUF5QjNjLE1BQXpCLEVBQWlDO0FBQ2xFLE1BQUk0YyxLQUFKLEVBQVdDLHFCQUFYO0FBQ0EsTUFBSSxDQUFDdGpCLGFBQUwsRUFBa0I7O0FBQ2xCLE1BQUl1UCxnQkFBSixFQUFvQjtBQUNsQixRQUFJOUksTUFBSixFQUFZLEtBQUs0YyxLQUFMLElBQWNsQiwwQkFBZCxFQUEwQztBQUNwRG1CLE1BQUFBLHFCQUFxQixHQUFHcHBCLFFBQU0sQ0FBQ21wQixLQUFELENBQTlCO0FBQ0EsVUFBSUMscUJBQXFCLElBQUkza0IsUUFBTSxDQUFDMmtCLHFCQUFELEVBQXdCbEwsR0FBeEIsQ0FBbkMsRUFBaUUsSUFBSTtBQUNuRSxlQUFPa0wscUJBQXFCLENBQUNsTCxHQUFELENBQTVCO0FBQ0QsT0FGZ0UsQ0FFL0QsT0FBTy9kLEtBQVAsRUFBYztBQUFFO0FBQWE7QUFDaEM7O0FBQ0QsUUFBSSxDQUFDcW5CLFlBQVUsQ0FBQ3RKLEdBQUQsQ0FBWCxJQUFvQjNSLE1BQXhCLEVBQWdDO0FBQzlCO0FBQ0EsVUFBSTtBQUNGLGVBQU9ULFVBQVEsQ0FBQzBiLFlBQUQsRUFBYXRKLEdBQWIsRUFBa0IzUixNQUFNLEdBQUcyYyxRQUFILEdBQWNyQiwyQkFBeUIsSUFBSUwsWUFBVSxDQUFDdEosR0FBRCxDQUF2QyxJQUFnRGdMLFFBQXRGLENBQWY7QUFDRCxPQUZELENBRUUsT0FBTy9vQixLQUFQLEVBQWM7QUFBRTtBQUFhO0FBQ2hDLEtBTEQsTUFLTztBQUNSOztBQUNELE9BQUtncEIsS0FBTCxJQUFjbEIsMEJBQWQsRUFBMEM7QUFDeENtQixJQUFBQSxxQkFBcUIsR0FBR3BwQixRQUFNLENBQUNtcEIsS0FBRCxDQUE5Qjs7QUFDQSxRQUFJQyxxQkFBcUIsS0FBSyxDQUFDQSxxQkFBcUIsQ0FBQ2xMLEdBQUQsQ0FBdEIsSUFBK0IzUixNQUFwQyxDQUF6QixFQUFzRTtBQUNwRVQsTUFBQUEsVUFBUSxDQUFDc2QscUJBQUQsRUFBd0JsTCxHQUF4QixFQUE2QmdMLFFBQTdCLENBQVI7QUFDRDtBQUNGO0FBQ0YsQ0F2QkQ7O0FBeUJBLEtBQUsxWixNQUFMLElBQWF5WSwwQkFBYixFQUF5QztBQUN2Q25JLEVBQUFBLFdBQVcsR0FBRzlmLFFBQU0sQ0FBQ3dQLE1BQUQsQ0FBcEI7QUFDQXdZLEVBQUFBLFNBQVMsR0FBR2xJLFdBQVcsSUFBSUEsV0FBVyxDQUFDelgsU0FBdkM7QUFDQSxNQUFJMmYsU0FBSixFQUFlN2dCLDZCQUEyQixDQUFDNmdCLFNBQUQsRUFBWUoseUJBQVosRUFBcUM5SCxXQUFyQyxDQUEzQixDQUFmLEtBQ0srSCwyQkFBeUIsR0FBRyxLQUE1QjtBQUNOOztBQUVELEtBQUtyWSxNQUFMLElBQWFpWiwyQkFBYixFQUEwQztBQUN4QzNJLEVBQUFBLFdBQVcsR0FBRzlmLFFBQU0sQ0FBQ3dQLE1BQUQsQ0FBcEI7QUFDQXdZLEVBQUFBLFNBQVMsR0FBR2xJLFdBQVcsSUFBSUEsV0FBVyxDQUFDelgsU0FBdkM7QUFDQSxNQUFJMmYsU0FBSixFQUFlN2dCLDZCQUEyQixDQUFDNmdCLFNBQUQsRUFBWUoseUJBQVosRUFBcUM5SCxXQUFyQyxDQUEzQjtBQUNoQjs7O0FBR0QsSUFBSSxDQUFDK0gsMkJBQUQsSUFBOEIsQ0FBQy9sQixZQUFVLENBQUMwbEIsWUFBRCxDQUF6QyxJQUF5REEsWUFBVSxLQUFLdm5CLFFBQVEsQ0FBQ29JLFNBQXJGLEVBQWdHO0FBQzlGO0FBQ0FtZixFQUFBQSxZQUFVLEdBQUcsU0FBU0EsVUFBVCxHQUFzQjtBQUNqQyxVQUFNOWxCLFNBQVMsQ0FBQyxzQkFBRCxDQUFmO0FBQ0QsR0FGRDs7QUFHQSxNQUFJbW1CLDJCQUFKLEVBQStCLEtBQUtyWSxNQUFMLElBQWF5WSwwQkFBYixFQUF5QztBQUN0RSxRQUFJam9CLFFBQU0sQ0FBQ3dQLE1BQUQsQ0FBVixFQUFrQjZGLGdCQUFjLENBQUNyVixRQUFNLENBQUN3UCxNQUFELENBQVAsRUFBZWdZLFlBQWYsQ0FBZDtBQUNuQjtBQUNGOztBQUVELElBQUksQ0FBQ0ssMkJBQUQsSUFBOEIsQ0FBQ0oscUJBQS9CLElBQXNEQSxxQkFBbUIsS0FBS2hWLGVBQWxGLEVBQW1HO0FBQ2pHZ1YsRUFBQUEscUJBQW1CLEdBQUdELFlBQVUsQ0FBQ25mLFNBQWpDO0FBQ0EsTUFBSXdmLDJCQUFKLEVBQStCLEtBQUtyWSxNQUFMLElBQWF5WSwwQkFBYixFQUF5QztBQUN0RSxRQUFJam9CLFFBQU0sQ0FBQ3dQLE1BQUQsQ0FBVixFQUFrQjZGLGdCQUFjLENBQUNyVixRQUFNLENBQUN3UCxNQUFELENBQU4sQ0FBYW5ILFNBQWQsRUFBeUJvZixxQkFBekIsQ0FBZDtBQUNuQjtBQUNGOzs7QUFHRCxJQUFJSSwyQkFBeUIsSUFBSTNTLGdCQUFjLENBQUNxUywwQkFBRCxDQUFkLEtBQStDRSxxQkFBaEYsRUFBcUc7QUFDbkdwUyxFQUFBQSxnQkFBYyxDQUFDa1MsMEJBQUQsRUFBNkJFLHFCQUE3QixDQUFkO0FBQ0Q7O0FBRUQsSUFBSTNoQixhQUFXLElBQUksQ0FBQ3JCLFFBQU0sQ0FBQ2dqQixxQkFBRCxFQUFzQi9hLGVBQXRCLENBQTFCLEVBQWdFO0FBQzlEcWIsRUFBQUEsdUJBQXVCLEdBQUcsSUFBMUI7QUFDQXhuQixFQUFBQSxnQkFBYyxDQUFDa25CLHFCQUFELEVBQXNCL2EsZUFBdEIsRUFBcUM7QUFBRWxNLElBQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ3BFLGFBQU9rRCxVQUFRLENBQUMsSUFBRCxDQUFSLEdBQWlCLEtBQUtpa0IsaUJBQUwsQ0FBakIsR0FBeUNsbUIsU0FBaEQ7QUFDRDtBQUZrRCxHQUFyQyxDQUFkOztBQUdBLE9BQUsrTixNQUFMLElBQWF5WSwwQkFBYixFQUF5QyxJQUFJam9CLFFBQU0sQ0FBQ3dQLE1BQUQsQ0FBVixFQUFrQjtBQUN6RHJJLElBQUFBLDZCQUEyQixDQUFDbkgsUUFBTSxDQUFDd1AsTUFBRCxDQUFQLEVBQWVtWSxpQkFBZixFQUFnQ25ZLE1BQWhDLENBQTNCO0FBQ0Q7QUFDRjs7SUFFRDVQLG1CQUFBLEdBQWlCO0FBQ2Zpb0IsRUFBQUEseUJBQXlCLEVBQUVBLDJCQURaO0FBRWZELEVBQUFBLHVCQUF1QixFQUFFQSx5QkFGVjtBQUdmRCxFQUFBQSxlQUFlLEVBQUVJLHVCQUF1QixJQUFJSixpQkFIN0I7QUFJZm9CLEVBQUFBLFdBQVcsRUFBRUEsYUFKRTtBQUtmQyxFQUFBQSxzQkFBc0IsRUFBRUEsd0JBTFQ7QUFNZkMsRUFBQUEsc0JBQXNCLEVBQUVBLHdCQU5UO0FBT2ZJLEVBQUFBLDRCQUE0QixFQUFFQSw4QkFQZjtBQVFmVCxFQUFBQSxNQUFNLEVBQUVBLE1BUk87QUFTZkUsRUFBQUEsWUFBWSxFQUFFQSxjQVRDO0FBVWZ0QixFQUFBQSxVQUFVLEVBQUVBLFlBVkc7QUFXZkMsRUFBQUEsbUJBQW1CLEVBQUVBO0FBWE4sQ0FBakI7O0FDaktBLElBQUkxVixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlpcEIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUVBLElBQUl3bkIsMkJBQXlCLEdBQUd5QixxQkFBbUIsQ0FBQ3pCLHlCQUFwRDtBQUdBOztBQUNBOVYsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsYUFBVjtBQUF5QmdCLEVBQUFBLElBQUksRUFBRSxJQUEvQjtBQUFxQ0ksRUFBQUEsTUFBTSxFQUFFLENBQUNzYjtBQUE5QyxDQUFELEVBQTRFO0FBQzNFZSxFQUFBQSxNQUFNLEVBQUVVLHFCQUFtQixDQUFDVjtBQUQrQyxDQUE1RSxDQUFEOztBQ1BBLElBQUl2WSxlQUFhLEdBQUdoUSxlQUFwQjs7QUFDQSxJQUFJaUQsV0FBVyxHQUFHakQsYUFBbEI7OztJQUdBVCxjQUFBLEdBQWlCLFVBQVVpQyxRQUFWLEVBQW9CO0FBQ25DLE1BQUl3TyxlQUFhLENBQUN4TyxRQUFELENBQWpCLEVBQTZCLE9BQU9BLFFBQVA7QUFDN0IsUUFBTUgsU0FBUyxDQUFDNEIsV0FBVyxDQUFDekIsUUFBRCxDQUFYLEdBQXdCLHVCQUF6QixDQUFmO0FBQ0QsQ0FIRDs7QUNKQSxJQUFJMkUsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJa3BCLGNBQVksR0FBR2xwQixjQUFuQjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJaVEsU0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCO0FBR0E7O0lBQ0ExRixvQkFBQSxHQUFpQixVQUFVMEcsQ0FBVixFQUFha2pCLGtCQUFiLEVBQWlDO0FBQ2hELE1BQUloWixDQUFDLEdBQUdoSyxXQUFRLENBQUNGLENBQUQsQ0FBUixDQUFZbUssV0FBcEI7QUFDQSxNQUFJZ1osQ0FBSjtBQUNBLFNBQU9qWixDQUFDLEtBQUsvTyxTQUFOLElBQW1CLENBQUNnb0IsQ0FBQyxHQUFHampCLFdBQVEsQ0FBQ2dLLENBQUQsQ0FBUixDQUFZRixTQUFaLENBQUwsS0FBOEI3TyxTQUFqRCxHQUE2RCtuQixrQkFBN0QsR0FBa0ZELGNBQVksQ0FBQ0UsQ0FBRCxDQUFyRztBQUNELENBSkQ7O0FDUEEsSUFBSTFYLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlxcEIsbUJBQWlCLEdBQUdycEIsV0FBeEI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTJKLGlCQUFlLEdBQUczSixpQkFBdEI7O0FBQ0EsSUFBSXlKLFVBQVEsR0FBR3pKLFVBQWY7O0FBQ0EsSUFBSXNwQixvQkFBa0IsR0FBR3RwQixvQkFBekI7O0FBRUEsSUFBSXFpQixhQUFXLEdBQUdnSCxtQkFBaUIsQ0FBQ2hILFdBQXBDO0FBQ0EsSUFBSUMsVUFBUSxHQUFHK0csbUJBQWlCLENBQUMvRyxRQUFqQztBQUNBLElBQUlpSCxzQkFBc0IsR0FBR2xILGFBQVcsQ0FBQ3JhLFNBQVosQ0FBc0IvRyxLQUFuRDtBQUVBLElBQUl1b0IsZUFBZSxHQUFHenBCLE9BQUssQ0FBQyxZQUFZO0FBQ3RDLFNBQU8sQ0FBQyxJQUFJc2lCLGFBQUosQ0FBZ0IsQ0FBaEIsRUFBbUJwaEIsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEJHLFNBQTVCLEVBQXVDaWtCLFVBQS9DO0FBQ0QsQ0FGMEIsQ0FBM0I7QUFLQTs7QUFDQTNULElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGFBQVY7QUFBeUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBaEM7QUFBc0N2TSxFQUFBQSxNQUFNLEVBQUUsSUFBOUM7QUFBb0R1RCxFQUFBQSxNQUFNLEVBQUVzZDtBQUE1RCxDQUFELEVBQWdGO0FBQy9Fdm9CLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWUrWCxLQUFmLEVBQXNCRyxHQUF0QixFQUEyQjtBQUNoQyxRQUFJb1Esc0JBQXNCLEtBQUtub0IsU0FBM0IsSUFBd0MrWCxHQUFHLEtBQUsvWCxTQUFwRCxFQUErRDtBQUM3RCxhQUFPbW9CLHNCQUFzQixDQUFDL29CLElBQXZCLENBQTRCMkYsV0FBUSxDQUFDLElBQUQsQ0FBcEMsRUFBNEM2UyxLQUE1QyxDQUFQLENBRDZEO0FBRTlEOztBQUNELFFBQUlsWCxNQUFNLEdBQUdxRSxXQUFRLENBQUMsSUFBRCxDQUFSLENBQWVrZixVQUE1QjtBQUNBLFFBQUlvRSxLQUFLLEdBQUc5ZixpQkFBZSxDQUFDcVAsS0FBRCxFQUFRbFgsTUFBUixDQUEzQjtBQUNBLFFBQUkwZCxHQUFHLEdBQUc3VixpQkFBZSxDQUFDd1AsR0FBRyxLQUFLL1gsU0FBUixHQUFvQlUsTUFBcEIsR0FBNkJxWCxHQUE5QixFQUFtQ3JYLE1BQW5DLENBQXpCO0FBQ0EsUUFBSXNELE1BQU0sR0FBRyxLQUFLa2tCLG9CQUFrQixDQUFDLElBQUQsRUFBT2pILGFBQVAsQ0FBdkIsRUFBNEM1WSxVQUFRLENBQUMrVixHQUFHLEdBQUdpSyxLQUFQLENBQXBELENBQWI7QUFDQSxRQUFJQyxVQUFVLEdBQUcsSUFBSXBILFVBQUosQ0FBYSxJQUFiLENBQWpCO0FBQ0EsUUFBSXFILFVBQVUsR0FBRyxJQUFJckgsVUFBSixDQUFhbGQsTUFBYixDQUFqQjtBQUNBLFFBQUltRSxLQUFLLEdBQUcsQ0FBWjs7QUFDQSxXQUFPa2dCLEtBQUssR0FBR2pLLEdBQWYsRUFBb0I7QUFDbEJtSyxNQUFBQSxVQUFVLENBQUN4RCxRQUFYLENBQW9CNWMsS0FBSyxFQUF6QixFQUE2Qm1nQixVQUFVLENBQUMvRCxRQUFYLENBQW9COEQsS0FBSyxFQUF6QixDQUE3QjtBQUNEOztBQUFDLFdBQU9ya0IsTUFBUDtBQUNIO0FBZjhFLENBQWhGLENBQUQ7O0FDbkJBLElBQUlzTSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEIsbUJBQWlCLEdBQUdycEIsV0FBeEI7O0FBQ0EsSUFBSTJqQixtQkFBbUIsR0FBRzNqQixpQkFBMUI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRS9SLEVBQUFBLE1BQU0sRUFBRSxJQUFWO0FBQWdCdU0sRUFBQUEsTUFBTSxFQUFFLENBQUN5WDtBQUF6QixDQUFELEVBQWlEO0FBQ2hEckIsRUFBQUEsUUFBUSxFQUFFK0csbUJBQWlCLENBQUMvRztBQURvQixDQUFqRCxDQUFEOztBQ0xBLElBQUk1USxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJK0wsUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBTyxJQUFJNnBCLElBQUosQ0FBUyxLQUFULEVBQWdCQyxPQUFoQixPQUE4QixHQUFyQztBQUNELENBRmlCLENBQWxCO0FBSUEsSUFBSUMsV0FBVyxHQUFHRixJQUFJLENBQUM1aEIsU0FBTCxDQUFlOGhCLFdBQWpDO0FBR0E7O0FBQ0FwWSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXpCO0FBQStCaEosRUFBQUEsTUFBTSxFQUFFSDtBQUF2QyxDQUFELEVBQWtEO0FBQ2pEOGQsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsR0FBbUI7QUFDMUIsV0FBT0MsV0FBVyxDQUFDdHBCLElBQVosQ0FBaUIsSUFBakIsSUFBeUIsSUFBaEM7QUFDRDtBQUhnRCxDQUFsRCxDQUFEOztBQ1pBLElBQUlrUixJQUFDLEdBQUcxUixPQUFSO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDaWUsRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsR0FBZTtBQUNsQixXQUFPLElBQUlILElBQUosR0FBV0ksT0FBWCxFQUFQO0FBQ0Q7QUFIK0IsQ0FBakMsQ0FBRDs7QUNIQSxJQUFJdFksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb0oscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBRUEsSUFBSWdxQixTQUFPLEdBQUdKLElBQUksQ0FBQzVoQixTQUFMLENBQWVnaUIsT0FBN0I7QUFDQSxJQUFJQyxXQUFXLEdBQUdMLElBQUksQ0FBQzVoQixTQUFMLENBQWVpaUIsV0FBakM7QUFHQTs7QUFDQXZZLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JvSyxFQUFBQSxLQUFLLEVBQUU7QUFBekIsQ0FBRCxFQUFrQztBQUNqQ2dWLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCQyxJQUFqQixFQUF1QjtBQUM5QjtBQUNBSCxJQUFBQSxTQUFPLENBQUN4cEIsSUFBUixDQUFhLElBQWI7QUFDQSxRQUFJNHBCLEVBQUUsR0FBR2hoQixxQkFBbUIsQ0FBQytnQixJQUFELENBQTVCO0FBQ0EsUUFBSUUsSUFBSSxHQUFHLEtBQUtELEVBQUwsSUFBV0EsRUFBRSxJQUFJLEVBQWpCLEdBQXNCQSxFQUFFLEdBQUcsSUFBM0IsR0FBa0NBLEVBQTdDO0FBQ0EsV0FBT0gsV0FBVyxDQUFDenBCLElBQVosQ0FBaUIsSUFBakIsRUFBdUI2cEIsSUFBdkIsQ0FBUDtBQUNEO0FBUGdDLENBQWxDLENBQUQ7O0FDVEEsSUFBSTNZLElBQUMsR0FBRzFSLE9BQVI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCb0ssRUFBQUEsS0FBSyxFQUFFO0FBQXpCLENBQUQsRUFBa0M7QUFDakNvVixFQUFBQSxXQUFXLEVBQUVWLElBQUksQ0FBQzVoQixTQUFMLENBQWV1aUI7QUFESyxDQUFsQyxDQUFEOztBQ0hBLElBQUluaEIscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCO0FBR0E7OztJQUNBVCxZQUFBLEdBQWlCLFNBQVNpckIsTUFBVCxDQUFnQnBSLEtBQWhCLEVBQXVCO0FBQ3RDLE1BQUlxUixHQUFHLEdBQUd6cEIsVUFBUSxDQUFDTyx3QkFBc0IsQ0FBQyxJQUFELENBQXZCLENBQWxCO0FBQ0EsTUFBSTZELE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSXlULENBQUMsR0FBR3pQLHFCQUFtQixDQUFDZ1EsS0FBRCxDQUEzQjtBQUNBLE1BQUlQLENBQUMsR0FBRyxDQUFKLElBQVNBLENBQUMsSUFBSTBLLFFBQWxCLEVBQTRCLE1BQU1oQixVQUFVLENBQUMsNkJBQUQsQ0FBaEI7O0FBQzVCLFNBQU0xSixDQUFDLEdBQUcsQ0FBVixFQUFhLENBQUNBLENBQUMsTUFBTSxDQUFSLE1BQWU0UixHQUFHLElBQUlBLEdBQXRCLENBQWIsRUFBeUMsSUFBSTVSLENBQUMsR0FBRyxDQUFSLEVBQVd6VCxNQUFNLElBQUlxbEIsR0FBVjs7QUFDcEQsU0FBT3JsQixNQUFQO0FBQ0QsQ0FQRDs7QUNQQTtBQUNBLElBQUlxRSxVQUFRLEdBQUd6SixVQUFmOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUl3cUIsUUFBTSxHQUFHeHFCLFlBQWI7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCOztBQUVBLElBQUlpSixNQUFJLEdBQUczSixJQUFJLENBQUMySixJQUFoQjs7QUFHQSxJQUFJWSxjQUFZLEdBQUcsVUFBVTZnQixNQUFWLEVBQWtCO0FBQ25DLFNBQU8sVUFBVTNnQixLQUFWLEVBQWlCNGdCLFNBQWpCLEVBQTRCQyxVQUE1QixFQUF3QztBQUM3QyxRQUFJeEIsQ0FBQyxHQUFHcG9CLFVBQVEsQ0FBQ08sd0JBQXNCLENBQUN3SSxLQUFELENBQXZCLENBQWhCO0FBQ0EsUUFBSThnQixZQUFZLEdBQUdwaEIsVUFBUSxDQUFDa2hCLFNBQUQsQ0FBM0I7QUFDQSxRQUFJRyxZQUFZLEdBQUcxQixDQUFDLENBQUN0bkIsTUFBckI7QUFDQSxRQUFJaXBCLE9BQU8sR0FBR0gsVUFBVSxLQUFLeHBCLFNBQWYsR0FBMkIsR0FBM0IsR0FBaUNKLFVBQVEsQ0FBQzRwQixVQUFELENBQXZEO0FBQ0EsUUFBSUksT0FBSixFQUFhQyxZQUFiO0FBQ0EsUUFBSUosWUFBWSxJQUFJQyxZQUFoQixJQUFnQ0MsT0FBTyxJQUFJLEVBQS9DLEVBQW1ELE9BQU8zQixDQUFQO0FBQ25ENEIsSUFBQUEsT0FBTyxHQUFHSCxZQUFZLEdBQUdDLFlBQXpCO0FBQ0FHLElBQUFBLFlBQVksR0FBR1QsUUFBTSxDQUFDaHFCLElBQVAsQ0FBWXVxQixPQUFaLEVBQXFCOWhCLE1BQUksQ0FBQytoQixPQUFPLEdBQUdELE9BQU8sQ0FBQ2pwQixNQUFuQixDQUF6QixDQUFmO0FBQ0EsUUFBSW1wQixZQUFZLENBQUNucEIsTUFBYixHQUFzQmtwQixPQUExQixFQUFtQ0MsWUFBWSxHQUFHQSxZQUFZLENBQUNocUIsS0FBYixDQUFtQixDQUFuQixFQUFzQitwQixPQUF0QixDQUFmO0FBQ25DLFdBQU9OLE1BQU0sR0FBR3RCLENBQUMsR0FBRzZCLFlBQVAsR0FBc0JBLFlBQVksR0FBRzdCLENBQWxEO0FBQ0QsR0FYRDtBQVlELENBYkQ7O0lBZUE3cEIsU0FBQSxHQUFpQjtBQUNmO0FBQ0E7QUFDQXlaLEVBQUFBLEtBQUssRUFBRW5QLGNBQVksQ0FBQyxLQUFELENBSEo7QUFJZjtBQUNBO0FBQ0FzUCxFQUFBQSxHQUFHLEVBQUV0UCxjQUFZLENBQUMsSUFBRDtBQU5GLENBQWpCOztBQ3ZCQSxJQUFJOUosT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlrckIsUUFBUSxHQUFHbHJCLFNBQUEsQ0FBbUNnWixLQUFsRDs7QUFFQSxJQUFJd0osS0FBRyxHQUFHbGpCLElBQUksQ0FBQ2tqQixHQUFmO0FBQ0EsSUFBSTJJLGVBQWEsR0FBR3ZCLElBQUksQ0FBQzVoQixTQUF6QjtBQUNBLElBQUlnaUIsU0FBTyxHQUFHbUIsZUFBYSxDQUFDbkIsT0FBNUI7QUFDQSxJQUFJb0IscUJBQXFCLEdBQUdELGVBQWEsQ0FBQ0UsV0FBMUM7QUFHQTtBQUNBOztJQUNBOXJCLGVBQUEsR0FBa0JRLE9BQUssQ0FBQyxZQUFZO0FBQ2xDLFNBQU9xckIscUJBQXFCLENBQUM1cUIsSUFBdEIsQ0FBMkIsSUFBSW9wQixJQUFKLENBQVMsQ0FBQyxJQUFELEdBQVEsQ0FBakIsQ0FBM0IsS0FBbUQsMEJBQTFEO0FBQ0QsQ0FGc0IsQ0FBTCxJQUVaLENBQUM3cEIsT0FBSyxDQUFDLFlBQVk7QUFDdkJxckIsRUFBQUEscUJBQXFCLENBQUM1cUIsSUFBdEIsQ0FBMkIsSUFBSW9wQixJQUFKLENBQVNsRyxHQUFULENBQTNCO0FBQ0QsQ0FGVyxDQUZLLEdBSVgsU0FBUzJILFdBQVQsR0FBdUI7QUFDM0IsTUFBSSxDQUFDQyxRQUFRLENBQUN0QixTQUFPLENBQUN4cEIsSUFBUixDQUFhLElBQWIsQ0FBRCxDQUFiLEVBQW1DLE1BQU0raEIsVUFBVSxDQUFDLG9CQUFELENBQWhCO0FBQ25DLE1BQUlnSixJQUFJLEdBQUcsSUFBWDtBQUNBLE1BQUlwQixJQUFJLEdBQUdvQixJQUFJLENBQUNDLGNBQUwsRUFBWDtBQUNBLE1BQUlDLFlBQVksR0FBR0YsSUFBSSxDQUFDRyxrQkFBTCxFQUFuQjtBQUNBLE1BQUl0SSxJQUFJLEdBQUcrRyxJQUFJLEdBQUcsQ0FBUCxHQUFXLEdBQVgsR0FBaUJBLElBQUksR0FBRyxJQUFQLEdBQWMsR0FBZCxHQUFvQixFQUFoRDtBQUNBLFNBQU8vRyxJQUFJLEdBQUc4SCxRQUFRLENBQUMxSSxLQUFHLENBQUMySCxJQUFELENBQUosRUFBWS9HLElBQUksR0FBRyxDQUFILEdBQU8sQ0FBdkIsRUFBMEIsQ0FBMUIsQ0FBZixHQUNMLEdBREssR0FDQzhILFFBQVEsQ0FBQ0ssSUFBSSxDQUFDSSxXQUFMLEtBQXFCLENBQXRCLEVBQXlCLENBQXpCLEVBQTRCLENBQTVCLENBRFQsR0FFTCxHQUZLLEdBRUNULFFBQVEsQ0FBQ0ssSUFBSSxDQUFDSyxVQUFMLEVBQUQsRUFBb0IsQ0FBcEIsRUFBdUIsQ0FBdkIsQ0FGVCxHQUdMLEdBSEssR0FHQ1YsUUFBUSxDQUFDSyxJQUFJLENBQUNNLFdBQUwsRUFBRCxFQUFxQixDQUFyQixFQUF3QixDQUF4QixDQUhULEdBSUwsR0FKSyxHQUlDWCxRQUFRLENBQUNLLElBQUksQ0FBQ08sYUFBTCxFQUFELEVBQXVCLENBQXZCLEVBQTBCLENBQTFCLENBSlQsR0FLTCxHQUxLLEdBS0NaLFFBQVEsQ0FBQ0ssSUFBSSxDQUFDUSxhQUFMLEVBQUQsRUFBdUIsQ0FBdkIsRUFBMEIsQ0FBMUIsQ0FMVCxHQU1MLEdBTkssR0FNQ2IsUUFBUSxDQUFDTyxZQUFELEVBQWUsQ0FBZixFQUFrQixDQUFsQixDQU5ULEdBT0wsR0FQRjtBQVFELENBbEJnQixHQWtCYkwscUJBbEJKOztBQ1pBLElBQUkxWixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxckIsV0FBVyxHQUFHcnJCLGVBQWxCO0FBR0E7QUFDQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXpCO0FBQStCaEosRUFBQUEsTUFBTSxFQUFFMGQsSUFBSSxDQUFDNWhCLFNBQUwsQ0FBZXFqQixXQUFmLEtBQStCQTtBQUF0RSxDQUFELEVBQXNGO0FBQ3JGQSxFQUFBQSxXQUFXLEVBQUVBO0FBRHdFLENBQXRGLENBQUQ7O0FDTEEsSUFBSTNaLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUlxRixhQUFXLEdBQUdyRixhQUFsQjs7QUFFQSxJQUFJK0wsUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBTyxJQUFJNnBCLElBQUosQ0FBU2xHLEdBQVQsRUFBY3NJLE1BQWQsT0FBMkIsSUFBM0IsSUFDRnBDLElBQUksQ0FBQzVoQixTQUFMLENBQWVna0IsTUFBZixDQUFzQnhyQixJQUF0QixDQUEyQjtBQUFFNnFCLElBQUFBLFdBQVcsRUFBRSxZQUFZO0FBQUUsYUFBTyxDQUFQO0FBQVc7QUFBeEMsR0FBM0IsTUFBMkUsQ0FEaEY7QUFFRCxDQUhpQixDQUFsQjtBQU1BOztBQUNBM1osSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF6QjtBQUErQmhKLEVBQUFBLE1BQU0sRUFBRUg7QUFBdkMsQ0FBRCxFQUFrRDtBQUNqRDtBQUNBaWdCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCcm9CLEdBQWhCLEVBQXFCO0FBQzNCLFFBQUlzQyxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLFFBQUkrbkIsRUFBRSxHQUFHNW1CLGFBQVcsQ0FBQ1ksQ0FBRCxFQUFJLFFBQUosQ0FBcEI7QUFDQSxXQUFPLE9BQU9nbUIsRUFBUCxJQUFhLFFBQWIsSUFBeUIsQ0FBQ1gsUUFBUSxDQUFDVyxFQUFELENBQWxDLEdBQXlDLElBQXpDLEdBQWdEaG1CLENBQUMsQ0FBQ29sQixXQUFGLEVBQXZEO0FBQ0Q7QUFOZ0QsQ0FBbEQsQ0FBRDs7QUNaQSxJQUFJbGxCLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWdGLG1CQUFtQixHQUFHaEYscUJBQTFCO0FBR0E7OztJQUNBVCxpQkFBQSxHQUFpQixVQUFVMnNCLElBQVYsRUFBZ0I7QUFDL0IvbEIsRUFBQUEsV0FBUSxDQUFDLElBQUQsQ0FBUjtBQUNBLE1BQUkrbEIsSUFBSSxLQUFLLFFBQVQsSUFBcUJBLElBQUksS0FBSyxTQUFsQyxFQUE2Q0EsSUFBSSxHQUFHLFFBQVAsQ0FBN0MsS0FDSyxJQUFJQSxJQUFJLEtBQUssUUFBYixFQUF1QixNQUFNN3FCLFNBQVMsQ0FBQyxnQkFBRCxDQUFmO0FBQzVCLFNBQU8yRCxtQkFBbUIsQ0FBQyxJQUFELEVBQU9rbkIsSUFBUCxDQUExQjtBQUNELENBTEQ7O0FDTkEsSUFBSXpnQixVQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJbXNCLGVBQWUsR0FBR25zQixpQkFBdEI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBRUEsSUFBSWtGLFlBQVksR0FBR0QsaUJBQWUsQ0FBQyxhQUFELENBQWxDO0FBQ0EsSUFBSWttQixlQUFhLEdBQUd2QixJQUFJLENBQUM1aEIsU0FBekI7QUFHQTs7QUFDQSxJQUFJLEVBQUU5QyxZQUFZLElBQUlpbUIsZUFBbEIsQ0FBSixFQUFzQztBQUNwQzFmLEVBQUFBLFVBQVEsQ0FBQzBmLGVBQUQsRUFBZ0JqbUIsWUFBaEIsRUFBOEJpbkIsZUFBOUIsQ0FBUjtBQUNEOztBQ1hELElBQUkxZ0IsVUFBUSxHQUFHekwsa0JBQWY7O0FBRUEsSUFBSW1yQixhQUFhLEdBQUd2QixJQUFJLENBQUM1aEIsU0FBekI7QUFDQSxJQUFJb2tCLFlBQVksR0FBRyxjQUFuQjtBQUNBLElBQUlDLFdBQVMsR0FBRyxVQUFoQjtBQUNBLElBQUlDLGtCQUFrQixHQUFHbkIsYUFBYSxDQUFDa0IsV0FBRCxDQUF0QztBQUNBLElBQUlyQyxPQUFPLEdBQUdtQixhQUFhLENBQUNuQixPQUE1QjtBQUdBOztBQUNBLElBQUlybkIsTUFBTSxDQUFDLElBQUlpbkIsSUFBSixDQUFTbEcsR0FBVCxDQUFELENBQU4sSUFBeUIwSSxZQUE3QixFQUEyQztBQUN6QzNnQixFQUFBQSxVQUFRLENBQUMwZixhQUFELEVBQWdCa0IsV0FBaEIsRUFBMkIsU0FBU3JyQixRQUFULEdBQW9CO0FBQ3JELFFBQUlILEtBQUssR0FBR21wQixPQUFPLENBQUN4cEIsSUFBUixDQUFhLElBQWIsQ0FBWixDQURxRDs7QUFHckQsV0FBT0ssS0FBSyxLQUFLQSxLQUFWLEdBQWtCeXJCLGtCQUFrQixDQUFDOXJCLElBQW5CLENBQXdCLElBQXhCLENBQWxCLEdBQWtENHJCLFlBQXpEO0FBQ0QsR0FKTyxDQUFSO0FBS0Q7O0FDZkQsSUFBSTFhLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBRUEsSUFBSXVzQixHQUFHLEdBQUcsYUFBVjs7QUFFQSxJQUFJQyxLQUFHLEdBQUcsVUFBVXRMLElBQVYsRUFBZ0JwZixNQUFoQixFQUF3QjtBQUNoQyxNQUFJc0QsTUFBTSxHQUFHOGIsSUFBSSxDQUFDbGdCLFFBQUwsQ0FBYyxFQUFkLENBQWI7O0FBQ0EsU0FBT29FLE1BQU0sQ0FBQ3RELE1BQVAsR0FBZ0JBLE1BQXZCLEVBQStCc0QsTUFBTSxHQUFHLE1BQU1BLE1BQWY7O0FBQy9CLFNBQU9BLE1BQVA7QUFDRCxDQUpEO0FBT0E7OztBQUNBc00sSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CO0FBQ2xCOHNCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCbGhCLE1BQWhCLEVBQXdCO0FBQzlCLFFBQUlrZixHQUFHLEdBQUd6cEIsVUFBUSxDQUFDdUssTUFBRCxDQUFsQjtBQUNBLFFBQUluRyxNQUFNLEdBQUcsRUFBYjtBQUNBLFFBQUl0RCxNQUFNLEdBQUcyb0IsR0FBRyxDQUFDM29CLE1BQWpCO0FBQ0EsUUFBSXlILEtBQUssR0FBRyxDQUFaO0FBQ0EsUUFBSTRYLEdBQUosRUFBU0QsSUFBVDs7QUFDQSxXQUFPM1gsS0FBSyxHQUFHekgsTUFBZixFQUF1QjtBQUNyQnFmLE1BQUFBLEdBQUcsR0FBR3NKLEdBQUcsQ0FBQ25KLE1BQUosQ0FBVy9YLEtBQUssRUFBaEIsQ0FBTjs7QUFDQSxVQUFJZ2pCLEdBQUcsQ0FBQzVsQixJQUFKLENBQVN3YSxHQUFULENBQUosRUFBbUI7QUFDakIvYixRQUFBQSxNQUFNLElBQUkrYixHQUFWO0FBQ0QsT0FGRCxNQUVPO0FBQ0xELFFBQUFBLElBQUksR0FBR0MsR0FBRyxDQUFDdUwsVUFBSixDQUFlLENBQWYsQ0FBUDs7QUFDQSxZQUFJeEwsSUFBSSxHQUFHLEdBQVgsRUFBZ0I7QUFDZDliLFVBQUFBLE1BQU0sSUFBSSxNQUFNb25CLEtBQUcsQ0FBQ3RMLElBQUQsRUFBTyxDQUFQLENBQW5CO0FBQ0QsU0FGRCxNQUVPO0FBQ0w5YixVQUFBQSxNQUFNLElBQUksT0FBT29uQixLQUFHLENBQUN0TCxJQUFELEVBQU8sQ0FBUCxDQUFILENBQWF5TCxXQUFiLEVBQWpCO0FBQ0Q7QUFDRjtBQUNGOztBQUFDLFdBQU92bkIsTUFBUDtBQUNIO0FBcEJpQixDQUFuQixDQUFEOztBQ2JBLElBQUlsQyxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFFQSxJQUFJaUIsT0FBSyxHQUFHLEdBQUdBLEtBQWY7QUFDQSxJQUFJMnJCLFNBQVMsR0FBRyxFQUFoQjs7QUFFQSxJQUFJbGQsU0FBUyxHQUFHLFVBQVVTLENBQVYsRUFBYTBjLFVBQWIsRUFBeUIxWSxJQUF6QixFQUErQjtBQUM3QyxNQUFJLEVBQUUwWSxVQUFVLElBQUlELFNBQWhCLENBQUosRUFBZ0M7QUFDOUIsU0FBSyxJQUFJRSxJQUFJLEdBQUcsRUFBWCxFQUFlemlCLENBQUMsR0FBRyxDQUF4QixFQUEyQkEsQ0FBQyxHQUFHd2lCLFVBQS9CLEVBQTJDeGlCLENBQUMsRUFBNUMsRUFBZ0R5aUIsSUFBSSxDQUFDemlCLENBQUQsQ0FBSixHQUFVLE9BQU9BLENBQVAsR0FBVyxHQUFyQixDQURsQjs7O0FBRzlCdWlCLElBQUFBLFNBQVMsQ0FBQ0MsVUFBRCxDQUFULEdBQXdCanRCLFFBQVEsQ0FBQyxLQUFELEVBQVEsa0JBQWtCa3RCLElBQUksQ0FBQzlqQixJQUFMLENBQVUsR0FBVixDQUFsQixHQUFtQyxHQUEzQyxDQUFoQztBQUNEOztBQUFDLFNBQU80akIsU0FBUyxDQUFDQyxVQUFELENBQVQsQ0FBc0IxYyxDQUF0QixFQUF5QmdFLElBQXpCLENBQVA7QUFDSCxDQU5EO0FBU0E7OztJQUNBNVUsWUFBQSxHQUFpQkssUUFBUSxDQUFDMFEsSUFBVCxJQUFpQixTQUFTQSxJQUFULENBQWNqQjtBQUFLO0FBQW5CLEVBQW9DO0FBQ3BFLE1BQUk3TCxFQUFFLEdBQUdOLFdBQVMsQ0FBQyxJQUFELENBQWxCO0FBQ0EsTUFBSTZwQixRQUFRLEdBQUc5ckIsT0FBSyxDQUFDVCxJQUFOLENBQVdxQixTQUFYLEVBQXNCLENBQXRCLENBQWY7O0FBQ0EsTUFBSW9QLGFBQWEsR0FBRyxTQUFTK2IsS0FBVCxHQUE4QjtBQUNoRCxRQUFJN1ksSUFBSSxHQUFHNFksUUFBUSxDQUFDdmlCLE1BQVQsQ0FBZ0J2SixPQUFLLENBQUNULElBQU4sQ0FBV3FCLFNBQVgsQ0FBaEIsQ0FBWDtBQUNBLFdBQU8sZ0JBQWdCb1AsYUFBaEIsR0FBZ0N2QixTQUFTLENBQUNsTSxFQUFELEVBQUsyUSxJQUFJLENBQUNyUyxNQUFWLEVBQWtCcVMsSUFBbEIsQ0FBekMsR0FBbUUzUSxFQUFFLENBQUNnTSxLQUFILENBQVNILElBQVQsRUFBZThFLElBQWYsQ0FBMUU7QUFDRCxHQUhEOztBQUlBLE1BQUk5USxVQUFRLENBQUNHLEVBQUUsQ0FBQ3dFLFNBQUosQ0FBWixFQUE0QmlKLGFBQWEsQ0FBQ2pKLFNBQWQsR0FBMEJ4RSxFQUFFLENBQUN3RSxTQUE3QjtBQUM1QixTQUFPaUosYUFBUDtBQUNELENBVEQ7O0FDakJBLElBQUlTLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLFlBQVg7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxVQUFWO0FBQXNCb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTdCLENBQUQsRUFBc0M7QUFDckM1RSxFQUFBQSxJQUFJLEVBQUVBO0FBRCtCLENBQXRDLENBQUQ7O0FDSkEsSUFBSTdPLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJaXRCLFlBQVksR0FBR2hvQixpQkFBZSxDQUFDLGFBQUQsQ0FBbEM7QUFDQSxJQUFJOEMsbUJBQWlCLEdBQUduSSxRQUFRLENBQUNvSSxTQUFqQztBQUdBOztBQUNBLElBQUksRUFBRWlsQixZQUFZLElBQUlsbEIsbUJBQWxCLENBQUosRUFBMEM7QUFDeEN6QixFQUFBQSxzQkFBb0IsQ0FBQ0osQ0FBckIsQ0FBdUI2QixtQkFBdkIsRUFBMENrbEIsWUFBMUMsRUFBd0Q7QUFBRXBzQixJQUFBQSxLQUFLLEVBQUUsVUFBVW9GLENBQVYsRUFBYTtBQUM1RSxVQUFJLENBQUN4RSxZQUFVLENBQUMsSUFBRCxDQUFYLElBQXFCLENBQUM0QixVQUFRLENBQUM0QyxDQUFELENBQWxDLEVBQXVDLE9BQU8sS0FBUDtBQUN2QyxVQUFJLENBQUM1QyxVQUFRLENBQUMsS0FBSzJFLFNBQU4sQ0FBYixFQUErQixPQUFPL0IsQ0FBQyxZQUFZLElBQXBCLENBRjZDOztBQUk1RSxhQUFPQSxDQUFDLEdBQUc0TyxnQkFBYyxDQUFDNU8sQ0FBRCxDQUF6QixFQUE4QixJQUFJLEtBQUsrQixTQUFMLEtBQW1CL0IsQ0FBdkIsRUFBMEIsT0FBTyxJQUFQOztBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQU51RCxHQUF4RDtBQU9EOztBQ3BCRCxJQUFJUixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJa3RCLG9CQUFvQixHQUFHbHRCLFlBQUEsQ0FBc0N1RixNQUFqRTs7QUFDQSxJQUFJckYsZ0JBQWMsR0FBR0Ysb0JBQUEsQ0FBK0NrRyxDQUFwRTs7QUFFQSxJQUFJNkIsaUJBQWlCLEdBQUduSSxRQUFRLENBQUNvSSxTQUFqQztBQUNBLElBQUltbEIseUJBQXlCLEdBQUdwbEIsaUJBQWlCLENBQUMvRyxRQUFsRDtBQUNBLElBQUlvc0IsTUFBTSxHQUFHLHVCQUFiO0FBQ0EsSUFBSWplLElBQUksR0FBRyxNQUFYO0FBR0E7O0FBQ0EsSUFBSTFKLGFBQVcsSUFBSSxDQUFDeW5CLG9CQUFwQixFQUEwQztBQUN4Q2h0QixFQUFBQSxnQkFBYyxDQUFDNkgsaUJBQUQsRUFBb0JvSCxJQUFwQixFQUEwQjtBQUN0Q3JPLElBQUFBLFlBQVksRUFBRSxJQUR3QjtBQUV0Q1gsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFDZixVQUFJO0FBQ0YsZUFBT2d0Qix5QkFBeUIsQ0FBQzNzQixJQUExQixDQUErQixJQUEvQixFQUFxQzhCLEtBQXJDLENBQTJDOHFCLE1BQTNDLEVBQW1ELENBQW5ELENBQVA7QUFDRCxPQUZELENBRUUsT0FBT3R0QixLQUFQLEVBQWM7QUFDZCxlQUFPLEVBQVA7QUFDRDtBQUNGO0FBUnFDLEdBQTFCLENBQWQ7QUFVRDs7QUN0QkQsSUFBSTRSLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CO0FBQ2xCSCxFQUFBQSxVQUFVLEVBQUVHO0FBRE0sQ0FBbkIsQ0FBRDs7QUNMQSxJQUFJK1IsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUVBLElBQUlxUyxVQUFVLEdBQUd0USxZQUFVLENBQUMsTUFBRCxFQUFTLFdBQVQsQ0FBM0I7QUFDQSxJQUFJc3JCLEVBQUUsR0FBRyxrQkFBVDtBQUNBLElBQUlDLEdBQUcsR0FBRyxtQkFBVjtBQUNBLElBQUlDLEVBQUUsR0FBRyxtQkFBVDs7QUFFQSxJQUFJQyxHQUFHLEdBQUcsVUFBVWxyQixLQUFWLEVBQWlCbWpCLE1BQWpCLEVBQXlCbGEsTUFBekIsRUFBaUM7QUFDekMsTUFBSWtpQixJQUFJLEdBQUdsaUIsTUFBTSxDQUFDK1YsTUFBUCxDQUFjbUUsTUFBTSxHQUFHLENBQXZCLENBQVg7QUFDQSxNQUFJaFAsSUFBSSxHQUFHbEwsTUFBTSxDQUFDK1YsTUFBUCxDQUFjbUUsTUFBTSxHQUFHLENBQXZCLENBQVg7O0FBQ0EsTUFBSzZILEdBQUcsQ0FBQzNtQixJQUFKLENBQVNyRSxLQUFULEtBQW1CLENBQUNpckIsRUFBRSxDQUFDNW1CLElBQUgsQ0FBUThQLElBQVIsQ0FBckIsSUFBd0M4VyxFQUFFLENBQUM1bUIsSUFBSCxDQUFRckUsS0FBUixLQUFrQixDQUFDZ3JCLEdBQUcsQ0FBQzNtQixJQUFKLENBQVM4bUIsSUFBVCxDQUEvRCxFQUFnRjtBQUM5RSxXQUFPLFFBQVFuckIsS0FBSyxDQUFDb3FCLFVBQU4sQ0FBaUIsQ0FBakIsRUFBb0IxckIsUUFBcEIsQ0FBNkIsRUFBN0IsQ0FBZjtBQUNEOztBQUFDLFNBQU9zQixLQUFQO0FBQ0gsQ0FORDs7QUFRQSxJQUFJeUosUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBT3NTLFVBQVUsQ0FBQyxjQUFELENBQVYsS0FBK0Isa0JBQS9CLElBQ0ZBLFVBQVUsQ0FBQyxRQUFELENBQVYsS0FBeUIsV0FEOUI7QUFFRCxDQUhpQixDQUFsQjs7QUFLQSxJQUFJQSxVQUFKLEVBQWdCO0FBQ2Q7QUFDQTtBQUNBO0FBQ0FYLEVBQUFBLElBQUMsQ0FBQztBQUFFNUcsSUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixJQUFBQSxJQUFJLEVBQUUsSUFBeEI7QUFBOEJJLElBQUFBLE1BQU0sRUFBRUg7QUFBdEMsR0FBRCxFQUFpRDtBQUNoRDtBQUNBaUksSUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsQ0FBbUIzVSxFQUFuQixFQUF1QjRVLFFBQXZCLEVBQWlDQyxLQUFqQyxFQUF3QztBQUNqRCxVQUFJOU8sTUFBTSxHQUFHaU4sVUFBVSxDQUFDN0MsS0FBWCxDQUFpQixJQUFqQixFQUF1QjNOLFNBQXZCLENBQWI7QUFDQSxhQUFPLE9BQU91RCxNQUFQLElBQWlCLFFBQWpCLEdBQTRCQSxNQUFNLENBQUMwRCxPQUFQLENBQWV1a0IsRUFBZixFQUFtQkcsR0FBbkIsQ0FBNUIsR0FBc0Rwb0IsTUFBN0Q7QUFDRDtBQUwrQyxHQUFqRCxDQUFEO0FBT0Q7O0FDakNELElBQUl6RixRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSStSLGdCQUFjLEdBQUcvUixnQkFBckI7QUFHQTs7O0FBQ0ErUixnQkFBYyxDQUFDcFMsUUFBTSxDQUFDK3RCLElBQVIsRUFBYyxNQUFkLEVBQXNCLElBQXRCLENBQWQ7Ozs7QUNMQSxJQUFJM3RCLE9BQUssR0FBR0MsUUFBWjs7SUFFQVQsUUFBQSxHQUFpQixDQUFDUSxPQUFLLENBQUMsWUFBWTtBQUNsQztBQUNBLFNBQU9FLE1BQU0sQ0FBQzB0QixZQUFQLENBQW9CMXRCLE1BQU0sQ0FBQzJ0QixpQkFBUCxDQUF5QixFQUF6QixDQUFwQixDQUFQO0FBQ0QsQ0FIc0IsQ0FBdkI7O0FDRkEsSUFBSWxjLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWdILFVBQVUsR0FBR2hILFlBQWpCOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJRSxnQkFBYyxHQUFHRixvQkFBQSxDQUErQ2tHLENBQXBFOztBQUNBLElBQUl3RSx5QkFBeUIsR0FBRzFLLHlCQUFoQzs7QUFDQSxJQUFJNnRCLGlDQUFpQyxHQUFHN3RCLGlDQUF4Qzs7QUFDQSxJQUFJeUUsR0FBRyxHQUFHekUsS0FBVjs7QUFDQSxJQUFJOHRCLFVBQVEsR0FBRzl0QixRQUFmOztBQUVBLElBQUkrdEIsUUFBUSxHQUFHLEtBQWY7QUFDQSxJQUFJQyxRQUFRLEdBQUd2cEIsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJSixJQUFFLEdBQUcsQ0FBVDs7QUFHQSxJQUFJc3BCLGNBQVksR0FBRzF0QixNQUFNLENBQUMwdEIsWUFBUCxJQUF1QixZQUFZO0FBQ3BELFNBQU8sSUFBUDtBQUNELENBRkQ7O0FBSUEsSUFBSU0sV0FBVyxHQUFHLFVBQVU1dUIsRUFBVixFQUFjO0FBQzlCYSxFQUFBQSxnQkFBYyxDQUFDYixFQUFELEVBQUsydUIsUUFBTCxFQUFlO0FBQUVudEIsSUFBQUEsS0FBSyxFQUFFO0FBQ3BDcXRCLE1BQUFBLFFBQVEsRUFBRSxNQUFNN3BCLElBQUUsRUFEa0I7QUFDZDtBQUN0QjhwQixNQUFBQSxRQUFRLEVBQUUsRUFGMEI7O0FBQUE7QUFBVCxHQUFmLENBQWQ7QUFJRCxDQUxEOztBQU9BLElBQUlDLFNBQU8sR0FBRyxVQUFVL3VCLEVBQVYsRUFBY3dQLE1BQWQsRUFBc0I7QUFDbEM7QUFDQSxNQUFJLENBQUN4TCxVQUFRLENBQUNoRSxFQUFELENBQWIsRUFBbUIsT0FBTyxPQUFPQSxFQUFQLElBQWEsUUFBYixHQUF3QkEsRUFBeEIsR0FBNkIsQ0FBQyxPQUFPQSxFQUFQLElBQWEsUUFBYixHQUF3QixHQUF4QixHQUE4QixHQUEvQixJQUFzQ0EsRUFBMUU7O0FBQ25CLE1BQUksQ0FBQytFLFFBQU0sQ0FBQy9FLEVBQUQsRUFBSzJ1QixRQUFMLENBQVgsRUFBMkI7QUFDekI7QUFDQSxRQUFJLENBQUNMLGNBQVksQ0FBQ3R1QixFQUFELENBQWpCLEVBQXVCLE9BQU8sR0FBUCxDQUZFOztBQUl6QixRQUFJLENBQUN3UCxNQUFMLEVBQWEsT0FBTyxHQUFQLENBSlk7O0FBTXpCb2YsSUFBQUEsV0FBVyxDQUFDNXVCLEVBQUQsQ0FBWCxDQU55QjtBQVExQjs7QUFBQyxTQUFPQSxFQUFFLENBQUMydUIsUUFBRCxDQUFGLENBQWFFLFFBQXBCO0FBQ0gsQ0FaRDs7QUFjQSxJQUFJRyxhQUFXLEdBQUcsVUFBVWh2QixFQUFWLEVBQWN3UCxNQUFkLEVBQXNCO0FBQ3RDLE1BQUksQ0FBQ3pLLFFBQU0sQ0FBQy9FLEVBQUQsRUFBSzJ1QixRQUFMLENBQVgsRUFBMkI7QUFDekI7QUFDQSxRQUFJLENBQUNMLGNBQVksQ0FBQ3R1QixFQUFELENBQWpCLEVBQXVCLE9BQU8sSUFBUCxDQUZFOztBQUl6QixRQUFJLENBQUN3UCxNQUFMLEVBQWEsT0FBTyxLQUFQLENBSlk7O0FBTXpCb2YsSUFBQUEsV0FBVyxDQUFDNXVCLEVBQUQsQ0FBWCxDQU55QjtBQVExQjs7QUFBQyxTQUFPQSxFQUFFLENBQUMydUIsUUFBRCxDQUFGLENBQWFHLFFBQXBCO0FBQ0gsQ0FWRDs7O0FBYUEsSUFBSUcsVUFBUSxHQUFHLFVBQVVqdkIsRUFBVixFQUFjO0FBQzNCLE1BQUl5dUIsVUFBUSxJQUFJQyxRQUFaLElBQXdCSixjQUFZLENBQUN0dUIsRUFBRCxDQUFwQyxJQUE0QyxDQUFDK0UsUUFBTSxDQUFDL0UsRUFBRCxFQUFLMnVCLFFBQUwsQ0FBdkQsRUFBdUVDLFdBQVcsQ0FBQzV1QixFQUFELENBQVg7QUFDdkUsU0FBT0EsRUFBUDtBQUNELENBSEQ7O0FBS0EsSUFBSWt2QixNQUFNLEdBQUcsWUFBWTtBQUN2QkMsRUFBQUEsSUFBSSxDQUFDRCxNQUFMLEdBQWMsWUFBWTtBQUFFO0FBQWEsR0FBekM7O0FBQ0FSLEVBQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0EsTUFBSXRqQixtQkFBbUIsR0FBR0MseUJBQXlCLENBQUN4RSxDQUFwRDtBQUNBLE1BQUk4YixNQUFNLEdBQUcsR0FBR0EsTUFBaEI7QUFDQSxNQUFJcmIsSUFBSSxHQUFHLEVBQVg7QUFDQUEsRUFBQUEsSUFBSSxDQUFDcW5CLFFBQUQsQ0FBSixHQUFpQixDQUFqQixDQU51Qjs7QUFTdkIsTUFBSXZqQixtQkFBbUIsQ0FBQzlELElBQUQsQ0FBbkIsQ0FBMEI3RSxNQUE5QixFQUFzQztBQUNwQzRJLElBQUFBLHlCQUF5QixDQUFDeEUsQ0FBMUIsR0FBOEIsVUFBVTdHLEVBQVYsRUFBYztBQUMxQyxVQUFJK0YsTUFBTSxHQUFHcUYsbUJBQW1CLENBQUNwTCxFQUFELENBQWhDOztBQUNBLFdBQUssSUFBSWdMLENBQUMsR0FBRyxDQUFSLEVBQVd2SSxNQUFNLEdBQUdzRCxNQUFNLENBQUN0RCxNQUFoQyxFQUF3Q3VJLENBQUMsR0FBR3ZJLE1BQTVDLEVBQW9EdUksQ0FBQyxFQUFyRCxFQUF5RDtBQUN2RCxZQUFJakYsTUFBTSxDQUFDaUYsQ0FBRCxDQUFOLEtBQWMyakIsUUFBbEIsRUFBNEI7QUFDMUJoTSxVQUFBQSxNQUFNLENBQUN4aEIsSUFBUCxDQUFZNEUsTUFBWixFQUFvQmlGLENBQXBCLEVBQXVCLENBQXZCO0FBQ0E7QUFDRDtBQUNGOztBQUFDLGFBQU9qRixNQUFQO0FBQ0gsS0FSRDs7QUFVQXNNLElBQUFBLElBQUMsQ0FBQztBQUFFNUcsTUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixNQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLE1BQUFBLE1BQU0sRUFBRTtBQUF4QyxLQUFELEVBQWlEO0FBQ2hEekIsTUFBQUEsbUJBQW1CLEVBQUVvakIsaUNBQWlDLENBQUMzbkI7QUFEUCxLQUFqRCxDQUFEO0FBR0Q7QUFDRixDQXhCRDs7QUEwQkEsSUFBSXNvQixJQUFJLEdBQUdqdkIsd0JBQUEsR0FBaUI7QUFDMUJndkIsRUFBQUEsTUFBTSxFQUFFQSxNQURrQjtBQUUxQkgsRUFBQUEsT0FBTyxFQUFFQSxTQUZpQjtBQUcxQkMsRUFBQUEsV0FBVyxFQUFFQSxhQUhhO0FBSTFCQyxFQUFBQSxRQUFRLEVBQUVBO0FBSmdCLENBQTVCO0FBT0F0bkIsVUFBVSxDQUFDZ25CLFFBQUQsQ0FBVixHQUF1QixJQUF2Qjs7QUMzRkEsSUFBSXZzQixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJZ1YsZ0JBQWMsR0FBR2hWLHNCQUFyQjs7O0lBR0FULG1CQUFBLEdBQWlCLFVBQVV3SyxLQUFWLEVBQWlCMGtCLEtBQWpCLEVBQXdCQyxPQUF4QixFQUFpQztBQUNoRCxNQUFJQyxTQUFKLEVBQWVDLGtCQUFmO0FBQ0E7QUFFRTVaLEVBQUFBLGdCQUFjO0FBRWR2VCxFQUFBQSxZQUFVLENBQUNrdEIsU0FBUyxHQUFHRixLQUFLLENBQUNyZSxXQUFuQixDQUZWLElBR0F1ZSxTQUFTLEtBQUtELE9BSGQsSUFJQXJyQixVQUFRLENBQUN1ckIsa0JBQWtCLEdBQUdELFNBQVMsQ0FBQzNtQixTQUFoQyxDQUpSLElBS0E0bUIsa0JBQWtCLEtBQUtGLE9BQU8sQ0FBQzFtQixTQVBqQyxFQVFFZ04sZ0JBQWMsQ0FBQ2pMLEtBQUQsRUFBUTZrQixrQkFBUixDQUFkO0FBQ0YsU0FBTzdrQixLQUFQO0FBQ0QsQ0FaRDs7QUNKQSxJQUFJMkgsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSWdMLFVBQVEsR0FBR2hMLFVBQWY7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUk2dUIsd0JBQXNCLEdBQUc3dUIsd0JBQTdCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSTJiLDZCQUEyQixHQUFHM2IsNkJBQWxDOztBQUNBLElBQUkrUixnQkFBYyxHQUFHL1IsZ0JBQXJCOztBQUNBLElBQUk4dUIsbUJBQWlCLEdBQUc5dUIsbUJBQXhCOztJQUVBVCxZQUFBLEdBQWlCLFVBQVVzaUIsZ0JBQVYsRUFBNEJrTixPQUE1QixFQUFxQ0MsTUFBckMsRUFBNkM7QUFDNUQsTUFBSXhlLE1BQU0sR0FBR3FSLGdCQUFnQixDQUFDMVgsT0FBakIsQ0FBeUIsS0FBekIsTUFBb0MsQ0FBQyxDQUFsRDtBQUNBLE1BQUk4a0IsT0FBTyxHQUFHcE4sZ0JBQWdCLENBQUMxWCxPQUFqQixDQUF5QixNQUF6QixNQUFxQyxDQUFDLENBQXBEO0FBQ0EsTUFBSStrQixLQUFLLEdBQUcxZSxNQUFNLEdBQUcsS0FBSCxHQUFXLEtBQTdCO0FBQ0EsTUFBSTJlLGlCQUFpQixHQUFHeHZCLFFBQU0sQ0FBQ2tpQixnQkFBRCxDQUE5QjtBQUNBLE1BQUl1TixlQUFlLEdBQUdELGlCQUFpQixJQUFJQSxpQkFBaUIsQ0FBQ25uQixTQUE3RDtBQUNBLE1BQUl5WCxXQUFXLEdBQUcwUCxpQkFBbEI7QUFDQSxNQUFJRSxRQUFRLEdBQUcsRUFBZjs7QUFFQSxNQUFJQyxTQUFTLEdBQUcsVUFBVXpSLEdBQVYsRUFBZTtBQUM3QixRQUFJMFIsWUFBWSxHQUFHSCxlQUFlLENBQUN2UixHQUFELENBQWxDO0FBQ0FwUyxJQUFBQSxVQUFRLENBQUMyakIsZUFBRCxFQUFrQnZSLEdBQWxCLEVBQ05BLEdBQUcsSUFBSSxLQUFQLEdBQWUsU0FBUzJSLEdBQVQsQ0FBYTN1QixLQUFiLEVBQW9CO0FBQ2pDMHVCLE1BQUFBLFlBQVksQ0FBQy91QixJQUFiLENBQWtCLElBQWxCLEVBQXdCSyxLQUFLLEtBQUssQ0FBVixHQUFjLENBQWQsR0FBa0JBLEtBQTFDO0FBQ0EsYUFBTyxJQUFQO0FBQ0QsS0FIRCxHQUdJZ2QsR0FBRyxJQUFJLFFBQVAsR0FBa0IsVUFBVWxhLEdBQVYsRUFBZTtBQUNuQyxhQUFPc3JCLE9BQU8sSUFBSSxDQUFDNXJCLFVBQVEsQ0FBQ00sR0FBRCxDQUFwQixHQUE0QixLQUE1QixHQUFvQzRyQixZQUFZLENBQUMvdUIsSUFBYixDQUFrQixJQUFsQixFQUF3Qm1ELEdBQUcsS0FBSyxDQUFSLEdBQVksQ0FBWixHQUFnQkEsR0FBeEMsQ0FBM0M7QUFDRCxLQUZHLEdBRUFrYSxHQUFHLElBQUksS0FBUCxHQUFlLFNBQVMxZCxHQUFULENBQWF3RCxHQUFiLEVBQWtCO0FBQ25DLGFBQU9zckIsT0FBTyxJQUFJLENBQUM1ckIsVUFBUSxDQUFDTSxHQUFELENBQXBCLEdBQTRCdkMsU0FBNUIsR0FBd0NtdUIsWUFBWSxDQUFDL3VCLElBQWIsQ0FBa0IsSUFBbEIsRUFBd0JtRCxHQUFHLEtBQUssQ0FBUixHQUFZLENBQVosR0FBZ0JBLEdBQXhDLENBQS9DO0FBQ0QsS0FGRyxHQUVBa2EsR0FBRyxJQUFJLEtBQVAsR0FBZSxTQUFTMVcsR0FBVCxDQUFheEQsR0FBYixFQUFrQjtBQUNuQyxhQUFPc3JCLE9BQU8sSUFBSSxDQUFDNXJCLFVBQVEsQ0FBQ00sR0FBRCxDQUFwQixHQUE0QixLQUE1QixHQUFvQzRyQixZQUFZLENBQUMvdUIsSUFBYixDQUFrQixJQUFsQixFQUF3Qm1ELEdBQUcsS0FBSyxDQUFSLEdBQVksQ0FBWixHQUFnQkEsR0FBeEMsQ0FBM0M7QUFDRCxLQUZHLEdBRUEsU0FBU3VELEdBQVQsQ0FBYXZELEdBQWIsRUFBa0I5QyxLQUFsQixFQUF5QjtBQUMzQjB1QixNQUFBQSxZQUFZLENBQUMvdUIsSUFBYixDQUFrQixJQUFsQixFQUF3Qm1ELEdBQUcsS0FBSyxDQUFSLEdBQVksQ0FBWixHQUFnQkEsR0FBeEMsRUFBNkM5QyxLQUE3QztBQUNBLGFBQU8sSUFBUDtBQUNELEtBYkssQ0FBUjtBQWVELEdBakJEOztBQW1CQSxNQUFJNHVCLE9BQU8sR0FBR3prQixVQUFRLENBQ3BCNlcsZ0JBRG9CLEVBRXBCLENBQUNwZ0IsWUFBVSxDQUFDMHRCLGlCQUFELENBQVgsSUFBa0MsRUFBRUYsT0FBTyxJQUFJRyxlQUFlLENBQUNsZSxPQUFoQixJQUEyQixDQUFDblIsT0FBSyxDQUFDLFlBQVk7QUFDM0YsUUFBSW92QixpQkFBSixHQUF3QjVSLE9BQXhCLEdBQWtDOUcsSUFBbEM7QUFDRCxHQUYrRSxDQUE5QyxDQUZkLENBQXRCOztBQU9BLE1BQUlnWixPQUFKLEVBQWE7QUFDWDtBQUNBaFEsSUFBQUEsV0FBVyxHQUFHdVAsTUFBTSxDQUFDVSxjQUFQLENBQXNCWCxPQUF0QixFQUErQmxOLGdCQUEvQixFQUFpRHJSLE1BQWpELEVBQXlEMGUsS0FBekQsQ0FBZDtBQUNBTCxJQUFBQSx3QkFBc0IsQ0FBQ04sTUFBdkI7QUFDRCxHQUpELE1BSU8sSUFBSXZqQixVQUFRLENBQUM2VyxnQkFBRCxFQUFtQixJQUFuQixDQUFaLEVBQXNDO0FBQzNDLFFBQUk4TixRQUFRLEdBQUcsSUFBSWxRLFdBQUosRUFBZixDQUQyQzs7QUFHM0MsUUFBSW1RLGNBQWMsR0FBR0QsUUFBUSxDQUFDVCxLQUFELENBQVIsQ0FBZ0JELE9BQU8sR0FBRyxFQUFILEdBQVEsQ0FBQyxDQUFoQyxFQUFtQyxDQUFuQyxLQUF5Q1UsUUFBOUQsQ0FIMkM7O0FBSzNDLFFBQUlFLG9CQUFvQixHQUFHOXZCLE9BQUssQ0FBQyxZQUFZO0FBQUU0dkIsTUFBQUEsUUFBUSxDQUFDeG9CLEdBQVQsQ0FBYSxDQUFiO0FBQWtCLEtBQWpDLENBQWhDLENBTDJDO0FBTzNDOztBQUNBLFFBQUkyb0IsZ0JBQWdCLEdBQUduVSw2QkFBMkIsQ0FBQyxVQUFVeEYsUUFBVixFQUFvQjtBQUFFLFVBQUlnWixpQkFBSixDQUFzQmhaLFFBQXRCO0FBQWtDLEtBQXpELENBQWxELENBUjJDOztBQVUzQyxRQUFJNFosVUFBVSxHQUFHLENBQUNkLE9BQUQsSUFBWWx2QixPQUFLLENBQUMsWUFBWTtBQUM3QztBQUNBLFVBQUlpd0IsU0FBUyxHQUFHLElBQUliLGlCQUFKLEVBQWhCO0FBQ0EsVUFBSTVsQixLQUFLLEdBQUcsQ0FBWjs7QUFDQSxhQUFPQSxLQUFLLEVBQVosRUFBZ0J5bUIsU0FBUyxDQUFDZCxLQUFELENBQVQsQ0FBaUIzbEIsS0FBakIsRUFBd0JBLEtBQXhCOztBQUNoQixhQUFPLENBQUN5bUIsU0FBUyxDQUFDN29CLEdBQVYsQ0FBYyxDQUFDLENBQWYsQ0FBUjtBQUNELEtBTmlDLENBQWxDOztBQVFBLFFBQUksQ0FBQzJvQixnQkFBTCxFQUF1QjtBQUNyQnJRLE1BQUFBLFdBQVcsR0FBR3NQLE9BQU8sQ0FBQyxVQUFVTixLQUFWLEVBQWlCdFksUUFBakIsRUFBMkI7QUFDL0MwTixRQUFBQSxZQUFVLENBQUM0SyxLQUFELEVBQVFoUCxXQUFSLEVBQXFCb0MsZ0JBQXJCLENBQVY7QUFDQSxZQUFJeFMsSUFBSSxHQUFHeWYsbUJBQWlCLENBQUMsSUFBSUssaUJBQUosRUFBRCxFQUEwQlYsS0FBMUIsRUFBaUNoUCxXQUFqQyxDQUE1QjtBQUNBLFlBQUl0SixRQUFRLElBQUkvVSxTQUFoQixFQUEyQjRWLFNBQU8sQ0FBQ2IsUUFBRCxFQUFXOUcsSUFBSSxDQUFDNmYsS0FBRCxDQUFmLEVBQXdCO0FBQUU3ZixVQUFBQSxJQUFJLEVBQUVBLElBQVI7QUFBY2dILFVBQUFBLFVBQVUsRUFBRTdGO0FBQTFCLFNBQXhCLENBQVA7QUFDM0IsZUFBT25CLElBQVA7QUFDRCxPQUxvQixDQUFyQjtBQU1Bb1EsTUFBQUEsV0FBVyxDQUFDelgsU0FBWixHQUF3Qm9uQixlQUF4QjtBQUNBQSxNQUFBQSxlQUFlLENBQUNoZixXQUFoQixHQUE4QnFQLFdBQTlCO0FBQ0Q7O0FBRUQsUUFBSW9RLG9CQUFvQixJQUFJRSxVQUE1QixFQUF3QztBQUN0Q1QsTUFBQUEsU0FBUyxDQUFDLFFBQUQsQ0FBVDtBQUNBQSxNQUFBQSxTQUFTLENBQUMsS0FBRCxDQUFUO0FBQ0E5ZSxNQUFBQSxNQUFNLElBQUk4ZSxTQUFTLENBQUMsS0FBRCxDQUFuQjtBQUNEOztBQUVELFFBQUlTLFVBQVUsSUFBSUgsY0FBbEIsRUFBa0NOLFNBQVMsQ0FBQ0osS0FBRCxDQUFULENBbkNTOztBQXNDM0MsUUFBSUQsT0FBTyxJQUFJRyxlQUFlLENBQUNhLEtBQS9CLEVBQXNDLE9BQU9iLGVBQWUsQ0FBQ2EsS0FBdkI7QUFDdkM7O0FBRURaLEVBQUFBLFFBQVEsQ0FBQ3hOLGdCQUFELENBQVIsR0FBNkJwQyxXQUE3QjtBQUNBL04sRUFBQUEsSUFBQyxDQUFDO0FBQUUvUixJQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLElBQUFBLE1BQU0sRUFBRXVULFdBQVcsSUFBSTBQO0FBQXZDLEdBQUQsRUFBNkRFLFFBQTdELENBQUQ7QUFFQXRkLEVBQUFBLGdCQUFjLENBQUMwTixXQUFELEVBQWNvQyxnQkFBZCxDQUFkO0FBRUEsTUFBSSxDQUFDb04sT0FBTCxFQUFjRCxNQUFNLENBQUNrQixTQUFQLENBQWlCelEsV0FBakIsRUFBOEJvQyxnQkFBOUIsRUFBZ0RyUixNQUFoRDtBQUVkLFNBQU9pUCxXQUFQO0FBQ0QsQ0F4RkQ7O0FDZEEsSUFBSXZmLGdCQUFjLEdBQUdGLG9CQUFBLENBQStDa0csQ0FBcEU7O0FBQ0EsSUFBSTJJLFFBQU0sR0FBRzdPLGNBQWI7O0FBQ0EsSUFBSTRqQixhQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUk4ZCxnQkFBYyxHQUFHOWQsZ0JBQXJCOztBQUNBLElBQUk4aEIsWUFBVSxHQUFHOWhCLFlBQWpCOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJb3VCLE9BQU8sR0FBR3B1Qix3QkFBQSxDQUEwQ291QixPQUF4RDs7QUFDQSxJQUFJL2xCLHFCQUFtQixHQUFHckksYUFBMUI7O0FBRUEsSUFBSW1TLGtCQUFnQixHQUFHOUoscUJBQW1CLENBQUNuQixHQUEzQztBQUNBLElBQUlpcEIsd0JBQXNCLEdBQUc5bkIscUJBQW1CLENBQUNoQixTQUFqRDtJQUVBOUgsa0JBQUEsR0FBaUI7QUFDZm13QixFQUFBQSxjQUFjLEVBQUUsVUFBVVgsT0FBVixFQUFtQmxOLGdCQUFuQixFQUFxQ3JSLE1BQXJDLEVBQTZDMGUsS0FBN0MsRUFBb0Q7QUFDbEUsUUFBSS9lLENBQUMsR0FBRzRlLE9BQU8sQ0FBQyxVQUFVMWYsSUFBVixFQUFnQjhHLFFBQWhCLEVBQTBCO0FBQ3hDME4sTUFBQUEsWUFBVSxDQUFDeFUsSUFBRCxFQUFPYyxDQUFQLEVBQVUwUixnQkFBVixDQUFWO0FBQ0ExUCxNQUFBQSxrQkFBZ0IsQ0FBQzlDLElBQUQsRUFBTztBQUNyQjdILFFBQUFBLElBQUksRUFBRXFhLGdCQURlO0FBRXJCdFksUUFBQUEsS0FBSyxFQUFFc0YsUUFBTSxDQUFDLElBQUQsQ0FGUTtBQUdyQjRhLFFBQUFBLEtBQUssRUFBRXJvQixTQUhjO0FBSXJCZ3ZCLFFBQUFBLElBQUksRUFBRWh2QixTQUplO0FBS3JCaXZCLFFBQUFBLElBQUksRUFBRTtBQUxlLE9BQVAsQ0FBaEI7QUFPQSxVQUFJLENBQUM1cUIsYUFBTCxFQUFrQjRKLElBQUksQ0FBQ2doQixJQUFMLEdBQVksQ0FBWjtBQUNsQixVQUFJbGEsUUFBUSxJQUFJL1UsU0FBaEIsRUFBMkI0VixTQUFPLENBQUNiLFFBQUQsRUFBVzlHLElBQUksQ0FBQzZmLEtBQUQsQ0FBZixFQUF3QjtBQUFFN2YsUUFBQUEsSUFBSSxFQUFFQSxJQUFSO0FBQWNnSCxRQUFBQSxVQUFVLEVBQUU3RjtBQUExQixPQUF4QixDQUFQO0FBQzVCLEtBWGMsQ0FBZjtBQWFBLFFBQUlqSSxnQkFBZ0IsR0FBRzRuQix3QkFBc0IsQ0FBQ3RPLGdCQUFELENBQTdDOztBQUVBLFFBQUl5TyxNQUFNLEdBQUcsVUFBVWpoQixJQUFWLEVBQWdCMUwsR0FBaEIsRUFBcUI5QyxLQUFyQixFQUE0QjtBQUN2QyxVQUFJMEcsS0FBSyxHQUFHZ0IsZ0JBQWdCLENBQUM4RyxJQUFELENBQTVCO0FBQ0EsVUFBSWtoQixLQUFLLEdBQUdDLFFBQVEsQ0FBQ25oQixJQUFELEVBQU8xTCxHQUFQLENBQXBCO0FBQ0EsVUFBSThzQixRQUFKLEVBQWNsbkIsS0FBZCxDQUh1Qzs7QUFLdkMsVUFBSWduQixLQUFKLEVBQVc7QUFDVEEsUUFBQUEsS0FBSyxDQUFDMXZCLEtBQU4sR0FBY0EsS0FBZCxDQURTO0FBR1YsT0FIRCxNQUdPO0FBQ0wwRyxRQUFBQSxLQUFLLENBQUM2b0IsSUFBTixHQUFhRyxLQUFLLEdBQUc7QUFDbkJobkIsVUFBQUEsS0FBSyxFQUFFQSxLQUFLLEdBQUc2a0IsT0FBTyxDQUFDenFCLEdBQUQsRUFBTSxJQUFOLENBREg7QUFFbkJBLFVBQUFBLEdBQUcsRUFBRUEsR0FGYztBQUduQjlDLFVBQUFBLEtBQUssRUFBRUEsS0FIWTtBQUluQjR2QixVQUFBQSxRQUFRLEVBQUVBLFFBQVEsR0FBR2xwQixLQUFLLENBQUM2b0IsSUFKUjtBQUtuQjNaLFVBQUFBLElBQUksRUFBRXJWLFNBTGE7QUFNbkJzdkIsVUFBQUEsT0FBTyxFQUFFO0FBTlUsU0FBckI7QUFRQSxZQUFJLENBQUNucEIsS0FBSyxDQUFDa2lCLEtBQVgsRUFBa0JsaUIsS0FBSyxDQUFDa2lCLEtBQU4sR0FBYzhHLEtBQWQ7QUFDbEIsWUFBSUUsUUFBSixFQUFjQSxRQUFRLENBQUNoYSxJQUFULEdBQWdCOFosS0FBaEI7QUFDZCxZQUFJOXFCLGFBQUosRUFBaUI4QixLQUFLLENBQUM4b0IsSUFBTixHQUFqQixLQUNLaGhCLElBQUksQ0FBQ2doQixJQUFMLEdBWkE7O0FBY0wsWUFBSTltQixLQUFLLEtBQUssR0FBZCxFQUFtQmhDLEtBQUssQ0FBQ2dDLEtBQU4sQ0FBWUEsS0FBWixJQUFxQmduQixLQUFyQjtBQUNwQjs7QUFBQyxhQUFPbGhCLElBQVA7QUFDSCxLQXhCRDs7QUEwQkEsUUFBSW1oQixRQUFRLEdBQUcsVUFBVW5oQixJQUFWLEVBQWdCMUwsR0FBaEIsRUFBcUI7QUFDbEMsVUFBSTRELEtBQUssR0FBR2dCLGdCQUFnQixDQUFDOEcsSUFBRCxDQUE1QixDQURrQzs7QUFHbEMsVUFBSTlGLEtBQUssR0FBRzZrQixPQUFPLENBQUN6cUIsR0FBRCxDQUFuQjtBQUNBLFVBQUk0c0IsS0FBSjtBQUNBLFVBQUlobkIsS0FBSyxLQUFLLEdBQWQsRUFBbUIsT0FBT2hDLEtBQUssQ0FBQ2dDLEtBQU4sQ0FBWUEsS0FBWixDQUFQLENBTGU7O0FBT2xDLFdBQUtnbkIsS0FBSyxHQUFHaHBCLEtBQUssQ0FBQ2tpQixLQUFuQixFQUEwQjhHLEtBQTFCLEVBQWlDQSxLQUFLLEdBQUdBLEtBQUssQ0FBQzlaLElBQS9DLEVBQXFEO0FBQ25ELFlBQUk4WixLQUFLLENBQUM1c0IsR0FBTixJQUFhQSxHQUFqQixFQUFzQixPQUFPNHNCLEtBQVA7QUFDdkI7QUFDRixLQVZEOztBQVlBM00sSUFBQUEsYUFBVyxDQUFDelQsQ0FBQyxDQUFDbkksU0FBSCxFQUFjO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBaW9CLE1BQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULEdBQWlCO0FBQ3RCLFlBQUk1Z0IsSUFBSSxHQUFHLElBQVg7QUFDQSxZQUFJOUgsS0FBSyxHQUFHZ0IsZ0JBQWdCLENBQUM4RyxJQUFELENBQTVCO0FBQ0EsWUFBSWxFLElBQUksR0FBRzVELEtBQUssQ0FBQ2dDLEtBQWpCO0FBQ0EsWUFBSWduQixLQUFLLEdBQUdocEIsS0FBSyxDQUFDa2lCLEtBQWxCOztBQUNBLGVBQU84RyxLQUFQLEVBQWM7QUFDWkEsVUFBQUEsS0FBSyxDQUFDRyxPQUFOLEdBQWdCLElBQWhCO0FBQ0EsY0FBSUgsS0FBSyxDQUFDRSxRQUFWLEVBQW9CRixLQUFLLENBQUNFLFFBQU4sR0FBaUJGLEtBQUssQ0FBQ0UsUUFBTixDQUFlaGEsSUFBZixHQUFzQnJWLFNBQXZDO0FBQ3BCLGlCQUFPK0osSUFBSSxDQUFDb2xCLEtBQUssQ0FBQ2huQixLQUFQLENBQVg7QUFDQWduQixVQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQzlaLElBQWQ7QUFDRDs7QUFDRGxQLFFBQUFBLEtBQUssQ0FBQ2tpQixLQUFOLEdBQWNsaUIsS0FBSyxDQUFDNm9CLElBQU4sR0FBYWh2QixTQUEzQjtBQUNBLFlBQUlxRSxhQUFKLEVBQWlCOEIsS0FBSyxDQUFDOG9CLElBQU4sR0FBYSxDQUFiLENBQWpCLEtBQ0toaEIsSUFBSSxDQUFDZ2hCLElBQUwsR0FBWSxDQUFaO0FBQ04sT0FsQnNCO0FBbUJ2QjtBQUNBO0FBQ0E7QUFDQSxnQkFBVSxVQUFVMXNCLEdBQVYsRUFBZTtBQUN2QixZQUFJMEwsSUFBSSxHQUFHLElBQVg7QUFDQSxZQUFJOUgsS0FBSyxHQUFHZ0IsZ0JBQWdCLENBQUM4RyxJQUFELENBQTVCO0FBQ0EsWUFBSWtoQixLQUFLLEdBQUdDLFFBQVEsQ0FBQ25oQixJQUFELEVBQU8xTCxHQUFQLENBQXBCOztBQUNBLFlBQUk0c0IsS0FBSixFQUFXO0FBQ1QsY0FBSTlaLElBQUksR0FBRzhaLEtBQUssQ0FBQzlaLElBQWpCO0FBQ0EsY0FBSWdYLElBQUksR0FBRzhDLEtBQUssQ0FBQ0UsUUFBakI7QUFDQSxpQkFBT2xwQixLQUFLLENBQUNnQyxLQUFOLENBQVlnbkIsS0FBSyxDQUFDaG5CLEtBQWxCLENBQVA7QUFDQWduQixVQUFBQSxLQUFLLENBQUNHLE9BQU4sR0FBZ0IsSUFBaEI7QUFDQSxjQUFJakQsSUFBSixFQUFVQSxJQUFJLENBQUNoWCxJQUFMLEdBQVlBLElBQVo7QUFDVixjQUFJQSxJQUFKLEVBQVVBLElBQUksQ0FBQ2dhLFFBQUwsR0FBZ0JoRCxJQUFoQjtBQUNWLGNBQUlsbUIsS0FBSyxDQUFDa2lCLEtBQU4sSUFBZThHLEtBQW5CLEVBQTBCaHBCLEtBQUssQ0FBQ2tpQixLQUFOLEdBQWNoVCxJQUFkO0FBQzFCLGNBQUlsUCxLQUFLLENBQUM2b0IsSUFBTixJQUFjRyxLQUFsQixFQUF5QmhwQixLQUFLLENBQUM2b0IsSUFBTixHQUFhM0MsSUFBYjtBQUN6QixjQUFJaG9CLGFBQUosRUFBaUI4QixLQUFLLENBQUM4b0IsSUFBTixHQUFqQixLQUNLaGhCLElBQUksQ0FBQ2doQixJQUFMO0FBQ047O0FBQUMsZUFBTyxDQUFDLENBQUNFLEtBQVQ7QUFDSCxPQXRDc0I7QUF1Q3ZCO0FBQ0E7QUFDQTtBQUNBcmYsTUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJIO0FBQVc7QUFBNUIsUUFBc0Q7QUFDN0QsWUFBSXhKLEtBQUssR0FBR2dCLGdCQUFnQixDQUFDLElBQUQsQ0FBNUI7QUFDQSxZQUFJMEksYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsWUFBSW12QixLQUFKOztBQUNBLGVBQU9BLEtBQUssR0FBR0EsS0FBSyxHQUFHQSxLQUFLLENBQUM5WixJQUFULEdBQWdCbFAsS0FBSyxDQUFDa2lCLEtBQTFDLEVBQWlEO0FBQy9DeFksVUFBQUEsYUFBYSxDQUFDc2YsS0FBSyxDQUFDMXZCLEtBQVAsRUFBYzB2QixLQUFLLENBQUM1c0IsR0FBcEIsRUFBeUIsSUFBekIsQ0FBYixDQUQrQzs7QUFHL0MsaUJBQU80c0IsS0FBSyxJQUFJQSxLQUFLLENBQUNHLE9BQXRCLEVBQStCSCxLQUFLLEdBQUdBLEtBQUssQ0FBQ0UsUUFBZDtBQUNoQztBQUNGLE9BbkRzQjtBQW9EdkI7QUFDQTtBQUNBO0FBQ0F0cEIsTUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYXhELEdBQWIsRUFBa0I7QUFDckIsZUFBTyxDQUFDLENBQUM2c0IsUUFBUSxDQUFDLElBQUQsRUFBTzdzQixHQUFQLENBQWpCO0FBQ0Q7QUF6RHNCLEtBQWQsQ0FBWDtBQTREQWlnQixJQUFBQSxhQUFXLENBQUN6VCxDQUFDLENBQUNuSSxTQUFILEVBQWN3SSxNQUFNLEdBQUc7QUFDaEM7QUFDQTtBQUNBclEsTUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYXdELEdBQWIsRUFBa0I7QUFDckIsWUFBSTRzQixLQUFLLEdBQUdDLFFBQVEsQ0FBQyxJQUFELEVBQU83c0IsR0FBUCxDQUFwQjtBQUNBLGVBQU80c0IsS0FBSyxJQUFJQSxLQUFLLENBQUMxdkIsS0FBdEI7QUFDRCxPQU4rQjtBQU9oQztBQUNBO0FBQ0FxRyxNQUFBQSxHQUFHLEVBQUUsU0FBU0EsR0FBVCxDQUFhdkQsR0FBYixFQUFrQjlDLEtBQWxCLEVBQXlCO0FBQzVCLGVBQU95dkIsTUFBTSxDQUFDLElBQUQsRUFBTzNzQixHQUFHLEtBQUssQ0FBUixHQUFZLENBQVosR0FBZ0JBLEdBQXZCLEVBQTRCOUMsS0FBNUIsQ0FBYjtBQUNEO0FBWCtCLEtBQUgsR0FZM0I7QUFDRjtBQUNBO0FBQ0EydUIsTUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYTN1QixLQUFiLEVBQW9CO0FBQ3ZCLGVBQU95dkIsTUFBTSxDQUFDLElBQUQsRUFBT3p2QixLQUFLLEdBQUdBLEtBQUssS0FBSyxDQUFWLEdBQWMsQ0FBZCxHQUFrQkEsS0FBakMsRUFBd0NBLEtBQXhDLENBQWI7QUFDRDtBQUxDLEtBWk8sQ0FBWDtBQW1CQSxRQUFJNEUsYUFBSixFQUFpQnZGLGdCQUFjLENBQUNpUSxDQUFDLENBQUNuSSxTQUFILEVBQWMsTUFBZCxFQUFzQjtBQUNuRDdILE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsZUFBT29JLGdCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUI4bkIsSUFBOUI7QUFDRDtBQUhrRCxLQUF0QixDQUFkO0FBS2pCLFdBQU9sZ0IsQ0FBUDtBQUNELEdBNUljO0FBNklmK2YsRUFBQUEsU0FBUyxFQUFFLFVBQVUvZixDQUFWLEVBQWEwUixnQkFBYixFQUErQnJSLE1BQS9CLEVBQXVDO0FBQ2hELFFBQUltZ0IsYUFBYSxHQUFHOU8sZ0JBQWdCLEdBQUcsV0FBdkM7QUFDQSxRQUFJK08sMEJBQTBCLEdBQUdULHdCQUFzQixDQUFDdE8sZ0JBQUQsQ0FBdkQ7QUFDQSxRQUFJZ1Asd0JBQXdCLEdBQUdWLHdCQUFzQixDQUFDUSxhQUFELENBQXJELENBSGdEO0FBS2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E3UyxJQUFBQSxnQkFBYyxDQUFDM04sQ0FBRCxFQUFJMFIsZ0JBQUosRUFBc0IsVUFBVTdELFFBQVYsRUFBb0JySSxJQUFwQixFQUEwQjtBQUM1RHhELE1BQUFBLGtCQUFnQixDQUFDLElBQUQsRUFBTztBQUNyQjNLLFFBQUFBLElBQUksRUFBRW1wQixhQURlO0FBRXJCN2xCLFFBQUFBLE1BQU0sRUFBRWtULFFBRmE7QUFHckJ6VyxRQUFBQSxLQUFLLEVBQUVxcEIsMEJBQTBCLENBQUM1UyxRQUFELENBSFo7QUFJckJySSxRQUFBQSxJQUFJLEVBQUVBLElBSmU7QUFLckJ5YSxRQUFBQSxJQUFJLEVBQUVodkI7QUFMZSxPQUFQLENBQWhCO0FBT0QsS0FSYSxFQVFYLFlBQVk7QUFDYixVQUFJbUcsS0FBSyxHQUFHc3BCLHdCQUF3QixDQUFDLElBQUQsQ0FBcEM7QUFDQSxVQUFJbGIsSUFBSSxHQUFHcE8sS0FBSyxDQUFDb08sSUFBakI7QUFDQSxVQUFJNGEsS0FBSyxHQUFHaHBCLEtBQUssQ0FBQzZvQixJQUFsQixDQUhhOztBQUtiLGFBQU9HLEtBQUssSUFBSUEsS0FBSyxDQUFDRyxPQUF0QixFQUErQkgsS0FBSyxHQUFHQSxLQUFLLENBQUNFLFFBQWQsQ0FMbEI7OztBQU9iLFVBQUksQ0FBQ2xwQixLQUFLLENBQUN1RCxNQUFQLElBQWlCLEVBQUV2RCxLQUFLLENBQUM2b0IsSUFBTixHQUFhRyxLQUFLLEdBQUdBLEtBQUssR0FBR0EsS0FBSyxDQUFDOVosSUFBVCxHQUFnQmxQLEtBQUssQ0FBQ0EsS0FBTixDQUFZa2lCLEtBQXhELENBQXJCLEVBQXFGO0FBQ25GO0FBQ0FsaUIsUUFBQUEsS0FBSyxDQUFDdUQsTUFBTixHQUFlMUosU0FBZjtBQUNBLGVBQU87QUFBRVAsVUFBQUEsS0FBSyxFQUFFTyxTQUFUO0FBQW9CMFYsVUFBQUEsSUFBSSxFQUFFO0FBQTFCLFNBQVA7QUFDRCxPQVhZOzs7QUFhYixVQUFJbkIsSUFBSSxJQUFJLE1BQVosRUFBb0IsT0FBTztBQUFFOVUsUUFBQUEsS0FBSyxFQUFFMHZCLEtBQUssQ0FBQzVzQixHQUFmO0FBQW9CbVQsUUFBQUEsSUFBSSxFQUFFO0FBQTFCLE9BQVA7QUFDcEIsVUFBSW5CLElBQUksSUFBSSxRQUFaLEVBQXNCLE9BQU87QUFBRTlVLFFBQUFBLEtBQUssRUFBRTB2QixLQUFLLENBQUMxdkIsS0FBZjtBQUFzQmlXLFFBQUFBLElBQUksRUFBRTtBQUE1QixPQUFQO0FBQ3RCLGFBQU87QUFBRWpXLFFBQUFBLEtBQUssRUFBRSxDQUFDMHZCLEtBQUssQ0FBQzVzQixHQUFQLEVBQVk0c0IsS0FBSyxDQUFDMXZCLEtBQWxCLENBQVQ7QUFBbUNpVyxRQUFBQSxJQUFJLEVBQUU7QUFBekMsT0FBUDtBQUNELEtBeEJhLEVBd0JYdEcsTUFBTSxHQUFHLFNBQUgsR0FBZSxRQXhCVixFQXdCb0IsQ0FBQ0EsTUF4QnJCLEVBd0I2QixJQXhCN0IsQ0FBZCxDQWJnRDtBQXdDaEQ7QUFDQTs7QUFDQXNSLElBQUFBLFlBQVUsQ0FBQ0QsZ0JBQUQsQ0FBVjtBQUNEO0FBeExjLENBQWpCOztBQ2ZBLElBQUlpUCxZQUFVLEdBQUc5d0IsWUFBakI7O0FBQ0EsSUFBSSt3QixrQkFBZ0IsR0FBRy93QixrQkFBdkI7QUFHQTs7O0lBQ0FULE1BQUEsR0FBaUJ1eEIsWUFBVSxDQUFDLEtBQUQsRUFBUSxVQUFVRSxJQUFWLEVBQWdCO0FBQ2pELFNBQU8sU0FBU0MsR0FBVCxHQUFlO0FBQUUsV0FBT0QsSUFBSSxDQUFDLElBQUQsRUFBT252QixTQUFTLENBQUNDLE1BQVYsR0FBbUJELFNBQVMsQ0FBQyxDQUFELENBQTVCLEdBQWtDVCxTQUF6QyxDQUFYO0FBQWlFLEdBQXpGO0FBQ0QsQ0FGMEIsRUFFeEIydkIsa0JBRndCLENBQTNCOztBQ05BLElBQUlyTyxLQUFHLEdBQUdwakIsSUFBSSxDQUFDb2pCLEdBQWY7QUFHQTtBQUNBOztJQUNBbmpCLFNBQUEsR0FBaUJELElBQUksQ0FBQzR4QixLQUFMLElBQWMsU0FBU0EsS0FBVCxDQUFlMVAsQ0FBZixFQUFrQjtBQUMvQyxTQUFPLENBQUNBLENBQUMsR0FBRyxDQUFDQSxDQUFOLElBQVcsQ0FBQyxJQUFaLElBQW9CQSxDQUFDLEdBQUcsSUFBeEIsR0FBK0JBLENBQUMsR0FBR0EsQ0FBQyxHQUFHQSxDQUFKLEdBQVEsQ0FBM0MsR0FBK0NrQixLQUFHLENBQUMsSUFBSWxCLENBQUwsQ0FBekQ7QUFDRCxDQUZEOztBQ0xBLElBQUk5UCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlreEIsT0FBSyxHQUFHbHhCLFNBQVo7OztBQUdBLElBQUlteEIsTUFBTSxHQUFHN3hCLElBQUksQ0FBQzh4QixLQUFsQjtBQUNBLElBQUkxTyxLQUFHLEdBQUdwakIsSUFBSSxDQUFDb2pCLEdBQWY7QUFDQSxJQUFJMk8sTUFBSSxHQUFHL3hCLElBQUksQ0FBQyt4QixJQUFoQjtBQUNBLElBQUkxTyxLQUFHLEdBQUdyakIsSUFBSSxDQUFDcWpCLEdBQWY7QUFFQSxJQUFJNVcsUUFBTSxHQUFHLENBQUNvbEIsTUFBRDtBQUFBLEdBRVI3eEIsSUFBSSxDQUFDNEosS0FBTCxDQUFXaW9CLE1BQU0sQ0FBQ0csTUFBTSxDQUFDQyxTQUFSLENBQWpCLEtBQXdDLEdBRmhDO0FBQUEsR0FJUkosTUFBTSxDQUFDNU4sUUFBRCxDQUFOLElBQW9CQSxRQUp6QjtBQU9BOztBQUNBN1IsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRSxJQUF4QjtBQUE4QkksRUFBQUEsTUFBTSxFQUFFSDtBQUF0QyxDQUFELEVBQWlEO0FBQ2hEcWxCLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWU1UCxDQUFmLEVBQWtCO0FBQ3ZCLFdBQU8sQ0FBQ0EsQ0FBQyxHQUFHLENBQUNBLENBQU4sSUFBVyxDQUFYLEdBQWVrQyxHQUFmLEdBQXFCbEMsQ0FBQyxHQUFHLGlCQUFKLEdBQ3hCa0IsS0FBRyxDQUFDbEIsQ0FBRCxDQUFILEdBQVNtQixLQURlLEdBRXhCdU8sT0FBSyxDQUFDMVAsQ0FBQyxHQUFHLENBQUosR0FBUTZQLE1BQUksQ0FBQzdQLENBQUMsR0FBRyxDQUFMLENBQUosR0FBYzZQLE1BQUksQ0FBQzdQLENBQUMsR0FBRyxDQUFMLENBQTNCLENBRlQ7QUFHRDtBQUwrQyxDQUFqRCxDQUFEOztBQ2pCQSxJQUFJOVAsSUFBQyxHQUFHMVIsT0FBUjs7O0FBR0EsSUFBSXd4QixNQUFNLEdBQUdseUIsSUFBSSxDQUFDbXlCLEtBQWxCO0FBQ0EsSUFBSS9PLEtBQUcsR0FBR3BqQixJQUFJLENBQUNvakIsR0FBZjtBQUNBLElBQUkyTyxNQUFJLEdBQUcveEIsSUFBSSxDQUFDK3hCLElBQWhCOztBQUVBLFNBQVNJLEtBQVQsQ0FBZWpRLENBQWYsRUFBa0I7QUFDaEIsU0FBTyxDQUFDOEosUUFBUSxDQUFDOUosQ0FBQyxHQUFHLENBQUNBLENBQU4sQ0FBVCxJQUFxQkEsQ0FBQyxJQUFJLENBQTFCLEdBQThCQSxDQUE5QixHQUFrQ0EsQ0FBQyxHQUFHLENBQUosR0FBUSxDQUFDaVEsS0FBSyxDQUFDLENBQUNqUSxDQUFGLENBQWQsR0FBcUJrQixLQUFHLENBQUNsQixDQUFDLEdBQUc2UCxNQUFJLENBQUM3UCxDQUFDLEdBQUdBLENBQUosR0FBUSxDQUFULENBQVQsQ0FBakU7QUFDRDtBQUdEO0FBQ0E7OztBQUNBOVAsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRSxJQUF4QjtBQUE4QkksRUFBQUEsTUFBTSxFQUFFLEVBQUVzbEIsTUFBTSxJQUFJLElBQUlBLE1BQU0sQ0FBQyxDQUFELENBQVYsR0FBZ0IsQ0FBNUI7QUFBdEMsQ0FBRCxFQUF5RTtBQUN4RUMsRUFBQUEsS0FBSyxFQUFFQTtBQURpRSxDQUF6RSxDQUFEOztBQ2RBLElBQUkvZixJQUFDLEdBQUcxUixPQUFSOzs7QUFHQSxJQUFJMHhCLE1BQU0sR0FBR3B5QixJQUFJLENBQUNxeUIsS0FBbEI7QUFDQSxJQUFJalAsS0FBRyxHQUFHcGpCLElBQUksQ0FBQ29qQixHQUFmO0FBR0E7QUFDQTs7QUFDQWhSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBeEI7QUFBOEJJLEVBQUFBLE1BQU0sRUFBRSxFQUFFd2xCLE1BQU0sSUFBSSxJQUFJQSxNQUFNLENBQUMsQ0FBQyxDQUFGLENBQVYsR0FBaUIsQ0FBN0I7QUFBdEMsQ0FBRCxFQUEwRTtBQUN6RUMsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZW5RLENBQWYsRUFBa0I7QUFDdkIsV0FBTyxDQUFDQSxDQUFDLEdBQUcsQ0FBQ0EsQ0FBTixLQUFZLENBQVosR0FBZ0JBLENBQWhCLEdBQW9Ca0IsS0FBRyxDQUFDLENBQUMsSUFBSWxCLENBQUwsS0FBVyxJQUFJQSxDQUFmLENBQUQsQ0FBSCxHQUF5QixDQUFwRDtBQUNEO0FBSHdFLENBQTFFLENBQUQ7O0FDVEE7QUFDQTtBQUNBO0lBQ0FqaUIsUUFBQSxHQUFpQkQsSUFBSSxDQUFDOGpCLElBQUwsSUFBYSxTQUFTQSxJQUFULENBQWM1QixDQUFkLEVBQWlCO0FBQzdDO0FBQ0EsU0FBTyxDQUFDQSxDQUFDLEdBQUcsQ0FBQ0EsQ0FBTixLQUFZLENBQVosSUFBaUJBLENBQUMsSUFBSUEsQ0FBdEIsR0FBMEJBLENBQTFCLEdBQThCQSxDQUFDLEdBQUcsQ0FBSixHQUFRLENBQUMsQ0FBVCxHQUFhLENBQWxEO0FBQ0QsQ0FIRDs7QUNIQSxJQUFJOVAsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb2pCLE1BQUksR0FBR3BqQixRQUFYOztBQUVBLElBQUl3aUIsS0FBRyxHQUFHbGpCLElBQUksQ0FBQ2tqQixHQUFmO0FBQ0EsSUFBSUMsS0FBRyxHQUFHbmpCLElBQUksQ0FBQ21qQixHQUFmO0FBR0E7O0FBQ0EvUSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaEM4bEIsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3BRLENBQWQsRUFBaUI7QUFDckIsV0FBTzRCLE1BQUksQ0FBQzVCLENBQUMsR0FBRyxDQUFDQSxDQUFOLENBQUosR0FBZWlCLEtBQUcsQ0FBQ0QsS0FBRyxDQUFDaEIsQ0FBRCxDQUFKLEVBQVMsSUFBSSxDQUFiLENBQXpCO0FBQ0Q7QUFIK0IsQ0FBakMsQ0FBRDs7QUNSQSxJQUFJOVAsSUFBQyxHQUFHMVIsT0FBUjs7QUFFQSxJQUFJa0osT0FBSyxHQUFHNUosSUFBSSxDQUFDNEosS0FBakI7QUFDQSxJQUFJd1osS0FBRyxHQUFHcGpCLElBQUksQ0FBQ29qQixHQUFmO0FBQ0EsSUFBSW1QLEtBQUssR0FBR3Z5QixJQUFJLENBQUN1eUIsS0FBakI7QUFHQTs7QUFDQW5nQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaENnbUIsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZXRRLENBQWYsRUFBa0I7QUFDdkIsV0FBTyxDQUFDQSxDQUFDLE1BQU0sQ0FBUixJQUFhLEtBQUt0WSxPQUFLLENBQUN3WixLQUFHLENBQUNsQixDQUFDLEdBQUcsR0FBTCxDQUFILEdBQWVxUSxLQUFoQixDQUF2QixHQUFnRCxFQUF2RDtBQUNEO0FBSCtCLENBQWpDLENBQUQ7O0FDUkE7QUFDQSxJQUFJRSxNQUFNLEdBQUd6eUIsSUFBSSxDQUFDMHlCLEtBQWxCO0FBQ0EsSUFBSUMsS0FBRyxHQUFHM3lCLElBQUksQ0FBQzJ5QixHQUFmO0FBR0E7O0lBQ0ExeUIsU0FBQSxHQUFrQixDQUFDd3lCLE1BQUQ7QUFBQSxHQUViQSxNQUFNLENBQUMsRUFBRCxDQUFOLEdBQWEsa0JBRkEsSUFFc0JBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxzQkFGbkM7QUFBQSxHQUliQSxNQUFNLENBQUMsQ0FBQyxLQUFGLENBQU4sSUFBa0IsQ0FBQyxLQUpQLEdBS2IsU0FBU0MsS0FBVCxDQUFleFEsQ0FBZixFQUFrQjtBQUNwQixTQUFPLENBQUNBLENBQUMsR0FBRyxDQUFDQSxDQUFOLEtBQVksQ0FBWixHQUFnQkEsQ0FBaEIsR0FBb0JBLENBQUMsR0FBRyxDQUFDLElBQUwsSUFBYUEsQ0FBQyxHQUFHLElBQWpCLEdBQXdCQSxDQUFDLEdBQUdBLENBQUMsR0FBR0EsQ0FBSixHQUFRLENBQXBDLEdBQXdDeVEsS0FBRyxDQUFDelEsQ0FBRCxDQUFILEdBQVMsQ0FBNUU7QUFDRCxDQVBnQixHQU9idVEsTUFQSjs7QUNOQSxJQUFJcmdCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWd5QixPQUFLLEdBQUdoeUIsU0FBWjs7O0FBR0EsSUFBSWt5QixLQUFLLEdBQUc1eUIsSUFBSSxDQUFDNnlCLElBQWpCO0FBQ0EsSUFBSTNQLEtBQUcsR0FBR2xqQixJQUFJLENBQUNrakIsR0FBZjtBQUNBLElBQUkxSixHQUFDLEdBQUd4WixJQUFJLENBQUN3WixDQUFiO0FBR0E7O0FBQ0FwSCxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQXhCO0FBQThCSSxFQUFBQSxNQUFNLEVBQUUsQ0FBQ2dtQixLQUFELElBQVVBLEtBQUssQ0FBQyxHQUFELENBQUwsS0FBZTNPO0FBQS9ELENBQUQsRUFBNEU7QUFDM0U0TyxFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjM1EsQ0FBZCxFQUFpQjtBQUNyQixRQUFJNFEsQ0FBQyxHQUFHSixPQUFLLENBQUN4UCxLQUFHLENBQUNoQixDQUFELENBQUgsR0FBUyxDQUFWLENBQUwsR0FBb0IsQ0FBNUI7QUFDQSxXQUFPLENBQUM0USxDQUFDLEdBQUcsS0FBS0EsQ0FBQyxHQUFHdFosR0FBSixHQUFRQSxHQUFiLENBQUwsS0FBeUJBLEdBQUMsR0FBRyxDQUE3QixDQUFQO0FBQ0Q7QUFKMEUsQ0FBNUUsQ0FBRDs7QUNWQSxJQUFJcEgsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJZ3lCLE9BQUssR0FBR2h5QixTQUFaO0FBR0E7QUFDQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQXhCO0FBQThCSSxFQUFBQSxNQUFNLEVBQUU4bEIsT0FBSyxJQUFJMXlCLElBQUksQ0FBQzB5QjtBQUFwRCxDQUFELEVBQThEO0FBQUVBLEVBQUFBLEtBQUssRUFBRUE7QUFBVCxDQUE5RCxDQUFEOztBQ05BLElBQUk1TyxNQUFJLEdBQUdwakIsUUFBWDs7QUFFQSxJQUFJd2lCLEtBQUcsR0FBR2xqQixJQUFJLENBQUNrakIsR0FBZjtBQUNBLElBQUlDLEtBQUcsR0FBR25qQixJQUFJLENBQUNtakIsR0FBZjtBQUNBLElBQUk0UCxPQUFPLEdBQUc1UCxLQUFHLENBQUMsQ0FBRCxFQUFJLENBQUMsRUFBTCxDQUFqQjtBQUNBLElBQUk2UCxTQUFTLEdBQUc3UCxLQUFHLENBQUMsQ0FBRCxFQUFJLENBQUMsRUFBTCxDQUFuQjtBQUNBLElBQUk4UCxLQUFLLEdBQUc5UCxLQUFHLENBQUMsQ0FBRCxFQUFJLEdBQUosQ0FBSCxJQUFlLElBQUk2UCxTQUFuQixDQUFaO0FBQ0EsSUFBSUUsS0FBSyxHQUFHL1AsS0FBRyxDQUFDLENBQUQsRUFBSSxDQUFDLEdBQUwsQ0FBZjs7QUFFQSxJQUFJZ1EsZUFBZSxHQUFHLFVBQVU1WixDQUFWLEVBQWE7QUFDakMsU0FBT0EsQ0FBQyxHQUFHLElBQUl3WixPQUFSLEdBQWtCLElBQUlBLE9BQTdCO0FBQ0QsQ0FGRDtBQUtBO0FBQ0E7OztJQUNBOXlCLFVBQUEsR0FBaUJELElBQUksQ0FBQ296QixNQUFMLElBQWUsU0FBU0EsTUFBVCxDQUFnQmxSLENBQWhCLEVBQW1CO0FBQ2pELE1BQUltUixJQUFJLEdBQUduUSxLQUFHLENBQUNoQixDQUFELENBQWQ7QUFDQSxNQUFJb1IsS0FBSyxHQUFHeFAsTUFBSSxDQUFDNUIsQ0FBRCxDQUFoQjtBQUNBLE1BQUk5YixDQUFKLEVBQU9OLE1BQVA7QUFDQSxNQUFJdXRCLElBQUksR0FBR0gsS0FBWCxFQUFrQixPQUFPSSxLQUFLLEdBQUdILGVBQWUsQ0FBQ0UsSUFBSSxHQUFHSCxLQUFQLEdBQWVGLFNBQWhCLENBQXZCLEdBQW9ERSxLQUFwRCxHQUE0REYsU0FBbkU7QUFDbEI1c0IsRUFBQUEsQ0FBQyxHQUFHLENBQUMsSUFBSTRzQixTQUFTLEdBQUdELE9BQWpCLElBQTRCTSxJQUFoQztBQUNBdnRCLEVBQUFBLE1BQU0sR0FBR00sQ0FBQyxJQUFJQSxDQUFDLEdBQUdpdEIsSUFBUixDQUFWLENBTmlEOztBQVFqRCxNQUFJdnRCLE1BQU0sR0FBR210QixLQUFULElBQWtCbnRCLE1BQU0sSUFBSUEsTUFBaEMsRUFBd0MsT0FBT3d0QixLQUFLLEdBQUdyUCxRQUFmO0FBQ3hDLFNBQU9xUCxLQUFLLEdBQUd4dEIsTUFBZjtBQUNELENBVkQ7O0FDaEJBLElBQUlzTSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUkweUIsUUFBTSxHQUFHMXlCLFVBQWI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFBRTRtQixFQUFBQSxNQUFNLEVBQUVBO0FBQVYsQ0FBakMsQ0FBRDs7QUNMQSxJQUFJaGhCLElBQUMsR0FBRzFSLE9BQVI7OztBQUdBLElBQUk2eUIsTUFBTSxHQUFHdnpCLElBQUksQ0FBQ3d6QixLQUFsQjtBQUNBLElBQUl0USxLQUFHLEdBQUdsakIsSUFBSSxDQUFDa2pCLEdBQWY7QUFDQSxJQUFJNk8sSUFBSSxHQUFHL3hCLElBQUksQ0FBQyt4QixJQUFoQjtBQUdBOztBQUNBLElBQUkwQixLQUFLLEdBQUcsQ0FBQyxDQUFDRixNQUFGLElBQVlBLE1BQU0sQ0FBQ3RQLFFBQUQsRUFBV0csR0FBWCxDQUFOLEtBQTBCSCxRQUFsRDtBQUdBOztBQUNBN1IsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRSxJQUF4QjtBQUE4QkksRUFBQUEsTUFBTSxFQUFFNm1CO0FBQXRDLENBQUQsRUFBZ0Q7QUFDL0M7QUFDQUQsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZUUsTUFBZixFQUF1QkMsTUFBdkIsRUFBK0I7QUFDcEMsUUFBSUMsR0FBRyxHQUFHLENBQVY7QUFDQSxRQUFJN29CLENBQUMsR0FBRyxDQUFSO0FBQ0EsUUFBSThvQixJQUFJLEdBQUd0eEIsU0FBUyxDQUFDQyxNQUFyQjtBQUNBLFFBQUlzeEIsSUFBSSxHQUFHLENBQVg7QUFDQSxRQUFJemEsR0FBSixFQUFTMGEsR0FBVDs7QUFDQSxXQUFPaHBCLENBQUMsR0FBRzhvQixJQUFYLEVBQWlCO0FBQ2Z4YSxNQUFBQSxHQUFHLEdBQUc2SixLQUFHLENBQUMzZ0IsU0FBUyxDQUFDd0ksQ0FBQyxFQUFGLENBQVYsQ0FBVDs7QUFDQSxVQUFJK29CLElBQUksR0FBR3phLEdBQVgsRUFBZ0I7QUFDZDBhLFFBQUFBLEdBQUcsR0FBR0QsSUFBSSxHQUFHemEsR0FBYjtBQUNBdWEsUUFBQUEsR0FBRyxHQUFHQSxHQUFHLEdBQUdHLEdBQU4sR0FBWUEsR0FBWixHQUFrQixDQUF4QjtBQUNBRCxRQUFBQSxJQUFJLEdBQUd6YSxHQUFQO0FBQ0QsT0FKRCxNQUlPLElBQUlBLEdBQUcsR0FBRyxDQUFWLEVBQWE7QUFDbEIwYSxRQUFBQSxHQUFHLEdBQUcxYSxHQUFHLEdBQUd5YSxJQUFaO0FBQ0FGLFFBQUFBLEdBQUcsSUFBSUcsR0FBRyxHQUFHQSxHQUFiO0FBQ0QsT0FITSxNQUdBSCxHQUFHLElBQUl2YSxHQUFQO0FBQ1I7O0FBQ0QsV0FBT3lhLElBQUksS0FBSzdQLFFBQVQsR0FBb0JBLFFBQXBCLEdBQStCNlAsSUFBSSxHQUFHL0IsSUFBSSxDQUFDNkIsR0FBRCxDQUFqRDtBQUNEO0FBcEI4QyxDQUFoRCxDQUFEOztBQ2JBLElBQUl4aEIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7OztBQUdBLElBQUlzekIsS0FBSyxHQUFHaDBCLElBQUksQ0FBQ2kwQixJQUFqQjtBQUVBLElBQUl4bkIsUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBT3V6QixLQUFLLENBQUMsVUFBRCxFQUFhLENBQWIsQ0FBTCxJQUF3QixDQUFDLENBQXpCLElBQThCQSxLQUFLLENBQUN4eEIsTUFBTixJQUFnQixDQUFyRDtBQUNELENBRmlCLENBQWxCO0FBS0E7QUFDQTs7QUFDQTRQLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBeEI7QUFBOEJJLEVBQUFBLE1BQU0sRUFBRUg7QUFBdEMsQ0FBRCxFQUFpRDtBQUNoRHduQixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjL1IsQ0FBZCxFQUFpQkMsQ0FBakIsRUFBb0I7QUFDeEIsUUFBSStSLE1BQU0sR0FBRyxNQUFiO0FBQ0EsUUFBSUMsRUFBRSxHQUFHLENBQUNqUyxDQUFWO0FBQ0EsUUFBSWtTLEVBQUUsR0FBRyxDQUFDalMsQ0FBVjtBQUNBLFFBQUlrUyxFQUFFLEdBQUdILE1BQU0sR0FBR0MsRUFBbEI7QUFDQSxRQUFJRyxFQUFFLEdBQUdKLE1BQU0sR0FBR0UsRUFBbEI7QUFDQSxXQUFPLElBQUlDLEVBQUUsR0FBR0MsRUFBTCxJQUFXLENBQUNKLE1BQU0sR0FBR0MsRUFBRSxLQUFLLEVBQWpCLElBQXVCRyxFQUF2QixHQUE0QkQsRUFBRSxJQUFJSCxNQUFNLEdBQUdFLEVBQUUsS0FBSyxFQUFwQixDQUE5QixJQUF5RCxFQUF6RCxLQUFnRSxDQUEzRSxDQUFYO0FBQ0Q7QUFSK0MsQ0FBakQsQ0FBRDs7QUNiQSxJQUFJaGlCLElBQUMsR0FBRzFSLE9BQVI7O0FBRUEsSUFBSTBpQixLQUFHLEdBQUdwakIsSUFBSSxDQUFDb2pCLEdBQWY7QUFDQSxJQUFJbVIsTUFBTSxHQUFHdjBCLElBQUksQ0FBQ3UwQixNQUFsQjtBQUdBOztBQUNBbmlCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBeEIsQ0FBRCxFQUFpQztBQUNoQ2dvQixFQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFldFMsQ0FBZixFQUFrQjtBQUN2QixXQUFPa0IsS0FBRyxDQUFDbEIsQ0FBRCxDQUFILEdBQVNxUyxNQUFoQjtBQUNEO0FBSCtCLENBQWpDLENBQUQ7O0FDUEEsSUFBSW5pQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlreEIsS0FBSyxHQUFHbHhCLFNBQVo7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFBRW9sQixFQUFBQSxLQUFLLEVBQUVBO0FBQVQsQ0FBakMsQ0FBRDs7QUNMQSxJQUFJeGYsSUFBQyxHQUFHMVIsT0FBUjs7QUFFQSxJQUFJMGlCLEtBQUcsR0FBR3BqQixJQUFJLENBQUNvakIsR0FBZjtBQUNBLElBQUlDLEdBQUcsR0FBR3JqQixJQUFJLENBQUNxakIsR0FBZjtBQUdBOztBQUNBalIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDaW9CLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWN2UyxDQUFkLEVBQWlCO0FBQ3JCLFdBQU9rQixLQUFHLENBQUNsQixDQUFELENBQUgsR0FBU21CLEdBQWhCO0FBQ0Q7QUFIK0IsQ0FBakMsQ0FBRDs7QUNQQSxJQUFJalIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb2pCLElBQUksR0FBR3BqQixRQUFYO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDc1gsRUFBQUEsSUFBSSxFQUFFQTtBQUQwQixDQUFqQyxDQUFEOztBQ0xBLElBQUkxUixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJZ3lCLE9BQUssR0FBR2h5QixTQUFaOztBQUVBLElBQUl3aUIsS0FBRyxHQUFHbGpCLElBQUksQ0FBQ2tqQixHQUFmO0FBQ0EsSUFBSXlQLEtBQUcsR0FBRzN5QixJQUFJLENBQUMyeUIsR0FBZjtBQUNBLElBQUluWixDQUFDLEdBQUd4WixJQUFJLENBQUN3WixDQUFiO0FBRUEsSUFBSS9NLFFBQU0sR0FBR2hNLE9BQUssQ0FBQyxZQUFZO0FBQzdCO0FBQ0EsU0FBT1QsSUFBSSxDQUFDMDBCLElBQUwsQ0FBVSxDQUFDLEtBQVgsS0FBcUIsQ0FBQyxLQUE3QjtBQUNELENBSGlCLENBQWxCO0FBTUE7QUFDQTs7QUFDQXRpQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQXhCO0FBQThCSSxFQUFBQSxNQUFNLEVBQUVIO0FBQXRDLENBQUQsRUFBaUQ7QUFDaERpb0IsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3hTLENBQWQsRUFBaUI7QUFDckIsV0FBT2dCLEtBQUcsQ0FBQ2hCLENBQUMsR0FBRyxDQUFDQSxDQUFOLENBQUgsR0FBYyxDQUFkLEdBQWtCLENBQUN3USxPQUFLLENBQUN4USxDQUFELENBQUwsR0FBV3dRLE9BQUssQ0FBQyxDQUFDeFEsQ0FBRixDQUFqQixJQUF5QixDQUEzQyxHQUErQyxDQUFDeVEsS0FBRyxDQUFDelEsQ0FBQyxHQUFHLENBQUwsQ0FBSCxHQUFheVEsS0FBRyxDQUFDLENBQUN6USxDQUFELEdBQUssQ0FBTixDQUFqQixLQUE4QjFJLENBQUMsR0FBRyxDQUFsQyxDQUF0RDtBQUNEO0FBSCtDLENBQWpELENBQUQ7O0FDaEJBLElBQUlwSCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlneUIsS0FBSyxHQUFHaHlCLFNBQVo7O0FBRUEsSUFBSWl5QixHQUFHLEdBQUczeUIsSUFBSSxDQUFDMnlCLEdBQWY7QUFHQTs7QUFDQXZnQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaENtb0IsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3pTLENBQWQsRUFBaUI7QUFDckIsUUFBSTliLENBQUMsR0FBR3NzQixLQUFLLENBQUN4USxDQUFDLEdBQUcsQ0FBQ0EsQ0FBTixDQUFiO0FBQ0EsUUFBSWxTLENBQUMsR0FBRzBpQixLQUFLLENBQUMsQ0FBQ3hRLENBQUYsQ0FBYjtBQUNBLFdBQU85YixDQUFDLElBQUk2ZCxRQUFMLEdBQWdCLENBQWhCLEdBQW9CalUsQ0FBQyxJQUFJaVUsUUFBTCxHQUFnQixDQUFDLENBQWpCLEdBQXFCLENBQUM3ZCxDQUFDLEdBQUc0SixDQUFMLEtBQVcyaUIsR0FBRyxDQUFDelEsQ0FBRCxDQUFILEdBQVN5USxHQUFHLENBQUMsQ0FBQ3pRLENBQUYsQ0FBdkIsQ0FBaEQ7QUFDRDtBQUwrQixDQUFqQyxDQUFEOztBQ1BBLElBQUl6UCxnQkFBYyxHQUFHL1IsZ0JBQXJCO0FBR0E7OztBQUNBK1IsZ0JBQWMsQ0FBQ3pTLElBQUQsRUFBTyxNQUFQLEVBQWUsSUFBZixDQUFkOztBQ0pBLElBQUlvUyxJQUFDLEdBQUcxUixPQUFSOztBQUVBLElBQUlpSixJQUFJLEdBQUczSixJQUFJLENBQUMySixJQUFoQjtBQUNBLElBQUlDLE9BQUssR0FBRzVKLElBQUksQ0FBQzRKLEtBQWpCO0FBR0E7O0FBQ0F3SSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaENvb0IsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZTcwQixFQUFmLEVBQW1CO0FBQ3hCLFdBQU8sQ0FBQ0EsRUFBRSxHQUFHLENBQUwsR0FBUzZKLE9BQVQsR0FBaUJELElBQWxCLEVBQXdCNUosRUFBeEIsQ0FBUDtBQUNEO0FBSCtCLENBQWpDLENBQUQ7O0FDUEEsSUFBSXFFLE9BQU8sR0FBRyxJQUFJQSxPQUFsQjtBQUdBOztJQUNBbkUsaUJBQUEsR0FBaUIsVUFBVXNCLEtBQVYsRUFBaUI7QUFDaEMsU0FBTzZDLE9BQU8sQ0FBQ2xELElBQVIsQ0FBYUssS0FBYixDQUFQO0FBQ0QsQ0FGRDs7QUNKQTtJQUNBdEIsYUFBQSxHQUFpQix1RUFDZixzRkFERjs7QUNEQSxJQUFJZ0Msd0JBQXNCLEdBQUd2Qix3QkFBN0I7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSW0wQixhQUFXLEdBQUduMEIsYUFBbEI7O0FBRUEsSUFBSW8wQixVQUFVLEdBQUcsTUFBTUQsYUFBTixHQUFvQixHQUFyQztBQUNBLElBQUlFLEtBQUssR0FBR0MsTUFBTSxDQUFDLE1BQU1GLFVBQU4sR0FBbUJBLFVBQW5CLEdBQWdDLEdBQWpDLENBQWxCO0FBQ0EsSUFBSUcsS0FBSyxHQUFHRCxNQUFNLENBQUNGLFVBQVUsR0FBR0EsVUFBYixHQUEwQixJQUEzQixDQUFsQjs7QUFHQSxJQUFJdnFCLGNBQVksR0FBRyxVQUFVdkMsSUFBVixFQUFnQjtBQUNqQyxTQUFPLFVBQVV5QyxLQUFWLEVBQWlCO0FBQ3RCLFFBQUl3QixNQUFNLEdBQUd2SyxVQUFRLENBQUNPLHdCQUFzQixDQUFDd0ksS0FBRCxDQUF2QixDQUFyQjtBQUNBLFFBQUl6QyxJQUFJLEdBQUcsQ0FBWCxFQUFjaUUsTUFBTSxHQUFHQSxNQUFNLENBQUN6QyxPQUFQLENBQWV1ckIsS0FBZixFQUFzQixFQUF0QixDQUFUO0FBQ2QsUUFBSS9zQixJQUFJLEdBQUcsQ0FBWCxFQUFjaUUsTUFBTSxHQUFHQSxNQUFNLENBQUN6QyxPQUFQLENBQWV5ckIsS0FBZixFQUFzQixFQUF0QixDQUFUO0FBQ2QsV0FBT2hwQixNQUFQO0FBQ0QsR0FMRDtBQU1ELENBUEQ7O0lBU0FoTSxVQUFBLEdBQWlCO0FBQ2Y7QUFDQTtBQUNBeVosRUFBQUEsS0FBSyxFQUFFblAsY0FBWSxDQUFDLENBQUQsQ0FISjtBQUlmO0FBQ0E7QUFDQXNQLEVBQUFBLEdBQUcsRUFBRXRQLGNBQVksQ0FBQyxDQUFELENBTkY7QUFPZjtBQUNBO0FBQ0EycUIsRUFBQUEsSUFBSSxFQUFFM3FCLGNBQVksQ0FBQyxDQUFEO0FBVEgsQ0FBakI7O0FDakJBLElBQUlwRSxhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSWdMLFVBQVEsR0FBR2hMLFVBQWY7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJOHVCLG1CQUFpQixHQUFHOXVCLG1CQUF4Qjs7QUFDQSxJQUFJOEUsVUFBUSxHQUFHOUUsVUFBZjs7QUFDQSxJQUFJcUYsV0FBVyxHQUFHckYsYUFBbEI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUl5SyxxQkFBbUIsR0FBR3pLLHlCQUFBLENBQXNEa0csQ0FBaEY7O0FBQ0EsSUFBSTVGLDBCQUF3QixHQUFHTiw4QkFBQSxDQUEyRGtHLENBQTFGOztBQUNBLElBQUloRyxnQkFBYyxHQUFHRixvQkFBQSxDQUErQ2tHLENBQXBFOztBQUNBLElBQUl1dUIsaUJBQWUsR0FBR3owQixpQkFBdEI7O0FBQ0EsSUFBSXcwQixNQUFJLEdBQUd4MEIsVUFBQSxDQUFvQ3cwQixJQUEvQzs7QUFFQSxJQUFJRSxNQUFNLEdBQUcsUUFBYjtBQUNBLElBQUlDLFlBQVksR0FBR2gxQixRQUFNLENBQUMrMEIsTUFBRCxDQUF6QjtBQUNBLElBQUlFLGVBQWUsR0FBR0QsWUFBWSxDQUFDM3NCLFNBQW5DO0FBR0E7O0FBQ0EsSUFBSTZzQixTQUFTLEdBQUcsVUFBVWgwQixLQUFWLEVBQWlCO0FBQy9CLE1BQUlpMEIsU0FBUyxHQUFHenZCLFdBQVcsQ0FBQ3hFLEtBQUQsRUFBUSxRQUFSLENBQTNCO0FBQ0EsU0FBTyxPQUFPaTBCLFNBQVAsS0FBcUIsUUFBckIsR0FBZ0NBLFNBQWhDLEdBQTRDQyxRQUFRLENBQUNELFNBQUQsQ0FBM0Q7QUFDRCxDQUhEO0FBTUE7OztBQUNBLElBQUlDLFFBQVEsR0FBRyxVQUFVdnpCLFFBQVYsRUFBb0I7QUFDakMsTUFBSW5DLEVBQUUsR0FBR2dHLFdBQVcsQ0FBQzdELFFBQUQsRUFBVyxRQUFYLENBQXBCO0FBQ0EsTUFBSWlvQixLQUFKLEVBQVd1TCxLQUFYLEVBQWtCQyxLQUFsQixFQUF5QkMsT0FBekIsRUFBa0NDLE1BQWxDLEVBQTBDcnpCLE1BQTFDLEVBQWtEeUgsS0FBbEQsRUFBeUQyWCxJQUF6RDtBQUNBLE1BQUlwYyxVQUFRLENBQUN6RixFQUFELENBQVosRUFBa0IsTUFBTWdDLFNBQVMsQ0FBQywyQ0FBRCxDQUFmOztBQUNsQixNQUFJLE9BQU9oQyxFQUFQLElBQWEsUUFBYixJQUF5QkEsRUFBRSxDQUFDeUMsTUFBSCxHQUFZLENBQXpDLEVBQTRDO0FBQzFDekMsSUFBQUEsRUFBRSxHQUFHbTFCLE1BQUksQ0FBQ24xQixFQUFELENBQVQ7QUFDQW9xQixJQUFBQSxLQUFLLEdBQUdwcUIsRUFBRSxDQUFDcXRCLFVBQUgsQ0FBYyxDQUFkLENBQVI7O0FBQ0EsUUFBSWpELEtBQUssS0FBSyxFQUFWLElBQWdCQSxLQUFLLEtBQUssRUFBOUIsRUFBa0M7QUFDaEN1TCxNQUFBQSxLQUFLLEdBQUczMUIsRUFBRSxDQUFDcXRCLFVBQUgsQ0FBYyxDQUFkLENBQVI7QUFDQSxVQUFJc0ksS0FBSyxLQUFLLEVBQVYsSUFBZ0JBLEtBQUssS0FBSyxHQUE5QixFQUFtQyxPQUFPdFIsR0FBUCxDQUZIO0FBR2pDLEtBSEQsTUFHTyxJQUFJK0YsS0FBSyxLQUFLLEVBQWQsRUFBa0I7QUFDdkIsY0FBUXBxQixFQUFFLENBQUNxdEIsVUFBSCxDQUFjLENBQWQsQ0FBUjtBQUNFLGFBQUssRUFBTDtBQUFTLGFBQUssRUFBTDtBQUFTdUksVUFBQUEsS0FBSyxHQUFHLENBQVI7QUFBV0MsVUFBQUEsT0FBTyxHQUFHLEVBQVY7QUFBYztBQUFPOztBQUNsRCxhQUFLLEVBQUw7QUFBUyxhQUFLLEdBQUw7QUFBVUQsVUFBQUEsS0FBSyxHQUFHLENBQVI7QUFBV0MsVUFBQUEsT0FBTyxHQUFHLEVBQVY7QUFBYztBQUFPOztBQUNuRDtBQUFTLGlCQUFPLENBQUM3MUIsRUFBUjtBQUhYOztBQUtBODFCLE1BQUFBLE1BQU0sR0FBRzkxQixFQUFFLENBQUM0QixLQUFILENBQVMsQ0FBVCxDQUFUO0FBQ0FhLE1BQUFBLE1BQU0sR0FBR3F6QixNQUFNLENBQUNyekIsTUFBaEI7O0FBQ0EsV0FBS3lILEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUd6SCxNQUF4QixFQUFnQ3lILEtBQUssRUFBckMsRUFBeUM7QUFDdkMyWCxRQUFBQSxJQUFJLEdBQUdpVSxNQUFNLENBQUN6SSxVQUFQLENBQWtCbmpCLEtBQWxCLENBQVAsQ0FEdUM7QUFHdkM7O0FBQ0EsWUFBSTJYLElBQUksR0FBRyxFQUFQLElBQWFBLElBQUksR0FBR2dVLE9BQXhCLEVBQWlDLE9BQU94UixHQUFQO0FBQ2xDOztBQUFDLGFBQU8wUixRQUFRLENBQUNELE1BQUQsRUFBU0YsS0FBVCxDQUFmO0FBQ0g7QUFDRjs7QUFBQyxTQUFPLENBQUM1MUIsRUFBUjtBQUNILENBMUJEO0FBNkJBOzs7QUFDQSxJQUFJMkwsVUFBUSxDQUFDMHBCLE1BQUQsRUFBUyxDQUFDQyxZQUFZLENBQUMsTUFBRCxDQUFiLElBQXlCLENBQUNBLFlBQVksQ0FBQyxLQUFELENBQXRDLElBQWlEQSxZQUFZLENBQUMsTUFBRCxDQUF0RSxDQUFaLEVBQTZGO0FBQzNGLE1BQUlVLGFBQWEsR0FBRyxTQUFTL0QsTUFBVCxDQUFnQnp3QixLQUFoQixFQUF1QjtBQUN6QyxRQUFJZ1ksQ0FBQyxHQUFHaFgsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCLENBQXZCLEdBQTJCNnlCLFlBQVksQ0FBQ0UsU0FBUyxDQUFDaDBCLEtBQUQsQ0FBVixDQUEvQztBQUNBLFFBQUk0dEIsS0FBSyxHQUFHLElBQVosQ0FGeUM7O0FBSXpDLFdBQU9BLEtBQUssWUFBWTRHLGFBQWpCLElBQWtDdDFCLE9BQUssQ0FBQyxZQUFZO0FBQUUwMEIsTUFBQUEsaUJBQWUsQ0FBQ2hHLEtBQUQsQ0FBZjtBQUF5QixLQUF4QyxDQUF2QyxHQUNISyxtQkFBaUIsQ0FBQzd1QixNQUFNLENBQUM0WSxDQUFELENBQVAsRUFBWTRWLEtBQVosRUFBbUI0RyxhQUFuQixDQURkLEdBQ2tEeGMsQ0FEekQ7QUFFRCxHQU5EOztBQU9BLE9BQUssSUFBSWpTLE1BQUksR0FBR25CLGFBQVcsR0FBR2dGLHFCQUFtQixDQUFDa3FCLFlBQUQsQ0FBdEIsR0FBdUM7QUFFaEU7QUFFQSx5R0FGQTtBQUlBLG9CQU5nRSxFQU9oRXh6QixLQVBnRSxDQU8xRCxHQVAwRCxDQUE3RCxFQU9TNmUsQ0FBQyxHQUFHLENBUGIsRUFPZ0JyYyxHQVByQixFQU8wQmlELE1BQUksQ0FBQzlFLE1BQUwsR0FBY2tlLENBUHhDLEVBTzJDQSxDQUFDLEVBUDVDLEVBT2dEO0FBQzlDLFFBQUk1YixRQUFNLENBQUN1d0IsWUFBRCxFQUFlaHhCLEdBQUcsR0FBR2lELE1BQUksQ0FBQ29aLENBQUQsQ0FBekIsQ0FBTixJQUF1QyxDQUFDNWIsUUFBTSxDQUFDaXhCLGFBQUQsRUFBZ0IxeEIsR0FBaEIsQ0FBbEQsRUFBd0U7QUFDdEV6RCxNQUFBQSxnQkFBYyxDQUFDbTFCLGFBQUQsRUFBZ0IxeEIsR0FBaEIsRUFBcUJyRCwwQkFBd0IsQ0FBQ3EwQixZQUFELEVBQWVoeEIsR0FBZixDQUE3QyxDQUFkO0FBQ0Q7QUFDRjs7QUFDRDB4QixFQUFBQSxhQUFhLENBQUNydEIsU0FBZCxHQUEwQjRzQixlQUExQjtBQUNBQSxFQUFBQSxlQUFlLENBQUN4a0IsV0FBaEIsR0FBOEJpbEIsYUFBOUI7QUFDQTVwQixFQUFBQSxVQUFRLENBQUM5TCxRQUFELEVBQVMrMEIsTUFBVCxFQUFpQlcsYUFBakIsQ0FBUjtBQUNEOztBQ2xGRCxJQUFJM2pCLElBQUMsR0FBRzFSLE9BQVI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEN1bUIsRUFBQUEsT0FBTyxFQUFFL3lCLElBQUksQ0FBQ21qQixHQUFMLENBQVMsQ0FBVCxFQUFZLENBQUMsRUFBYjtBQUR5QixDQUFuQyxDQUFEOztBQ0pBLElBQUk5aUIsUUFBTSxHQUFHSyxRQUFiOztBQUVBLElBQUlzMUIsY0FBYyxHQUFHMzFCLFFBQU0sQ0FBQzJyQixRQUE1QjtBQUdBO0FBQ0E7O0lBQ0EvckIsZ0JBQUEsR0FBaUIreEIsTUFBTSxDQUFDaEcsUUFBUCxJQUFtQixTQUFTQSxRQUFULENBQWtCanNCLEVBQWxCLEVBQXNCO0FBQ3hELFNBQU8sT0FBT0EsRUFBUCxJQUFhLFFBQWIsSUFBeUJpMkIsY0FBYyxDQUFDajJCLEVBQUQsQ0FBOUM7QUFDRCxDQUZEOztBQ1BBLElBQUlxUyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl1MUIsZ0JBQWMsR0FBR3YxQixnQkFBckI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFBRXdmLEVBQUFBLFFBQVEsRUFBRWlLO0FBQVosQ0FBbkMsQ0FBRDs7QUNMQSxJQUFJbHlCLFVBQVEsR0FBR3JELFVBQWY7O0FBRUEsSUFBSWtKLE9BQUssR0FBRzVKLElBQUksQ0FBQzRKLEtBQWpCO0FBR0E7QUFDQTs7SUFDQTNKLGtCQUFBLEdBQWlCK3hCLE1BQU0sQ0FBQ2tFLFNBQVAsSUFBb0IsU0FBU0EsU0FBVCxDQUFtQm4yQixFQUFuQixFQUF1QjtBQUMxRCxTQUFPLENBQUNnRSxVQUFRLENBQUNoRSxFQUFELENBQVQsSUFBaUJpc0IsUUFBUSxDQUFDanNCLEVBQUQsQ0FBekIsSUFBaUM2SixPQUFLLENBQUM3SixFQUFELENBQUwsS0FBY0EsRUFBdEQ7QUFDRCxDQUZEOztBQ1BBLElBQUlxUyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5MUIsa0JBQWdCLEdBQUd6MUIsa0JBQXZCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDMHBCLEVBQUFBLFNBQVMsRUFBRUM7QUFEdUIsQ0FBbkMsQ0FBRDs7QUNMQSxJQUFJL2pCLElBQUMsR0FBRzFSLE9BQVI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEM0cEIsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZXZzQixNQUFmLEVBQXVCO0FBQzVCO0FBQ0EsV0FBT0EsTUFBTSxJQUFJQSxNQUFqQjtBQUNEO0FBSmlDLENBQW5DLENBQUQ7O0FDSkEsSUFBSXVJLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXkxQixrQkFBZ0IsR0FBR3oxQixrQkFBdkI7O0FBRUEsSUFBSXdpQixHQUFHLEdBQUdsakIsSUFBSSxDQUFDa2pCLEdBQWY7QUFHQTs7QUFDQTlRLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQzZwQixFQUFBQSxhQUFhLEVBQUUsU0FBU0EsYUFBVCxDQUF1QnhzQixNQUF2QixFQUErQjtBQUM1QyxXQUFPc3NCLGtCQUFnQixDQUFDdHNCLE1BQUQsQ0FBaEIsSUFBNEJxWixHQUFHLENBQUNyWixNQUFELENBQUgsSUFBZSxnQkFBbEQ7QUFDRDtBQUhpQyxDQUFuQyxDQUFEOztBQ1BBLElBQUl1SSxJQUFDLEdBQUcxUixPQUFSO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDdU0sRUFBQUEsZ0JBQWdCLEVBQUU7QUFEZ0IsQ0FBbkMsQ0FBRDs7QUNKQSxJQUFJM0csSUFBQyxHQUFHMVIsT0FBUjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQzhwQixFQUFBQSxnQkFBZ0IsRUFBRSxDQUFDO0FBRGUsQ0FBbkMsQ0FBRDs7QUNKQSxJQUFJajJCLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXcwQixNQUFJLEdBQUd4MEIsVUFBQSxDQUFvQ3cwQixJQUEvQzs7QUFDQSxJQUFJTCxhQUFXLEdBQUduMEIsYUFBbEI7O0FBRUEsSUFBSTYxQixhQUFXLEdBQUdsMkIsUUFBTSxDQUFDbTJCLFVBQXpCO0FBQ0EsSUFBSXB6QixRQUFNLEdBQUcvQyxRQUFNLENBQUMrQyxNQUFwQjtBQUNBLElBQUk0UyxVQUFRLEdBQUc1UyxRQUFNLElBQUlBLFFBQU0sQ0FBQ0ksUUFBaEM7QUFDQSxJQUFJaUosUUFBTSxHQUFHLElBQUk4cEIsYUFBVyxDQUFDMUIsYUFBVyxHQUFHLElBQWYsQ0FBZixLQUF3QyxDQUFDNVEsUUFBekM7QUFBQSxHQUVQak8sVUFBUSxJQUFJLENBQUN2VixPQUFLLENBQUMsWUFBWTtBQUFFODFCLEVBQUFBLGFBQVcsQ0FBQzUxQixNQUFNLENBQUNxVixVQUFELENBQVAsQ0FBWDtBQUFnQyxDQUEvQyxDQUZ4QjtBQUtBOztJQUNBL1YsZ0JBQUEsR0FBaUJ3TSxRQUFNLEdBQUcsU0FBUytwQixVQUFULENBQW9CdnFCLE1BQXBCLEVBQTRCO0FBQ3BELE1BQUl3cUIsYUFBYSxHQUFHdkIsTUFBSSxDQUFDeHpCLFVBQVEsQ0FBQ3VLLE1BQUQsQ0FBVCxDQUF4QjtBQUNBLE1BQUluRyxNQUFNLEdBQUd5d0IsYUFBVyxDQUFDRSxhQUFELENBQXhCO0FBQ0EsU0FBTzN3QixNQUFNLEtBQUssQ0FBWCxJQUFnQjJ3QixhQUFhLENBQUN6VSxNQUFkLENBQXFCLENBQXJCLEtBQTJCLEdBQTNDLEdBQWlELENBQUMsQ0FBbEQsR0FBc0RsYyxNQUE3RDtBQUNELENBSnNCLEdBSW5CeXdCLGFBSko7O0FDZkEsSUFBSW5rQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk4MUIsWUFBVSxHQUFHOTFCLGdCQUFqQjtBQUdBO0FBQ0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFb2xCLE1BQU0sQ0FBQ3dFLFVBQVAsSUFBcUJBO0FBQTdELENBQUQsRUFBNEU7QUFDM0VBLEVBQUFBLFVBQVUsRUFBRUE7QUFEK0QsQ0FBNUUsQ0FBRDs7QUNOQSxJQUFJbjJCLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXcwQixNQUFJLEdBQUd4MEIsVUFBQSxDQUFvQ3cwQixJQUEvQzs7QUFDQSxJQUFJTCxhQUFXLEdBQUduMEIsYUFBbEI7O0FBRUEsSUFBSWcyQixXQUFTLEdBQUdyMkIsUUFBTSxDQUFDeTFCLFFBQXZCO0FBQ0EsSUFBSTF5QixRQUFNLEdBQUcvQyxRQUFNLENBQUMrQyxNQUFwQjtBQUNBLElBQUk0UyxVQUFRLEdBQUc1UyxRQUFNLElBQUlBLFFBQU0sQ0FBQ0ksUUFBaEM7QUFDQSxJQUFJMHBCLEdBQUcsR0FBRyxXQUFWO0FBQ0EsSUFBSXpnQixRQUFNLEdBQUdpcUIsV0FBUyxDQUFDN0IsYUFBVyxHQUFHLElBQWYsQ0FBVCxLQUFrQyxDQUFsQyxJQUF1QzZCLFdBQVMsQ0FBQzdCLGFBQVcsR0FBRyxNQUFmLENBQVQsS0FBb0MsRUFBM0U7QUFBQSxHQUVQN2UsVUFBUSxJQUFJLENBQUN2VixPQUFLLENBQUMsWUFBWTtBQUFFaTJCLEVBQUFBLFdBQVMsQ0FBQy8xQixNQUFNLENBQUNxVixVQUFELENBQVAsQ0FBVDtBQUE4QixDQUE3QyxDQUZ4QjtBQUtBOztJQUNBL1YsY0FBQSxHQUFpQndNLFFBQU0sR0FBRyxTQUFTcXBCLFFBQVQsQ0FBa0I3cEIsTUFBbEIsRUFBMEIwcEIsS0FBMUIsRUFBaUM7QUFDekQsTUFBSTdMLENBQUMsR0FBR29MLE1BQUksQ0FBQ3h6QixVQUFRLENBQUN1SyxNQUFELENBQVQsQ0FBWjtBQUNBLFNBQU95cUIsV0FBUyxDQUFDNU0sQ0FBRCxFQUFLNkwsS0FBSyxLQUFLLENBQVgsS0FBa0J6SSxHQUFHLENBQUM3bEIsSUFBSixDQUFTeWlCLENBQVQsSUFBYyxFQUFkLEdBQW1CLEVBQXJDLENBQUosQ0FBaEI7QUFDRCxDQUhzQixHQUduQjRNLFdBSEo7O0FDaEJBLElBQUl0a0IsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbzFCLFVBQVEsR0FBR3AxQixjQUFmO0FBR0E7QUFDQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTFCO0FBQWdDSSxFQUFBQSxNQUFNLEVBQUVvbEIsTUFBTSxDQUFDOEQsUUFBUCxJQUFtQkE7QUFBM0QsQ0FBRCxFQUF3RTtBQUN2RUEsRUFBQUEsUUFBUSxFQUFFQTtBQUQ2RCxDQUF4RSxDQUFEOztBQ0xBLElBQUkxakIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb0oscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSXkwQixpQkFBZSxHQUFHejBCLGlCQUF0Qjs7QUFDQSxJQUFJd3FCLFFBQU0sR0FBR3hxQixZQUFiOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJaTJCLGFBQWEsR0FBRyxJQUFJQyxPQUF4QjtBQUNBLElBQUlodEIsT0FBSyxHQUFHNUosSUFBSSxDQUFDNEosS0FBakI7O0FBRUEsSUFBSXVaLEtBQUcsR0FBRyxVQUFVakIsQ0FBVixFQUFhM0ksQ0FBYixFQUFnQnNkLEdBQWhCLEVBQXFCO0FBQzdCLFNBQU90ZCxDQUFDLEtBQUssQ0FBTixHQUFVc2QsR0FBVixHQUFnQnRkLENBQUMsR0FBRyxDQUFKLEtBQVUsQ0FBVixHQUFjNEosS0FBRyxDQUFDakIsQ0FBRCxFQUFJM0ksQ0FBQyxHQUFHLENBQVIsRUFBV3NkLEdBQUcsR0FBRzNVLENBQWpCLENBQWpCLEdBQXVDaUIsS0FBRyxDQUFDakIsQ0FBQyxHQUFHQSxDQUFMLEVBQVEzSSxDQUFDLEdBQUcsQ0FBWixFQUFlc2QsR0FBZixDQUFqRTtBQUNELENBRkQ7O0FBSUEsSUFBSXpULEdBQUcsR0FBRyxVQUFVbEIsQ0FBVixFQUFhO0FBQ3JCLE1BQUkzSSxDQUFDLEdBQUcsQ0FBUjtBQUNBLE1BQUl1ZCxFQUFFLEdBQUc1VSxDQUFUOztBQUNBLFNBQU80VSxFQUFFLElBQUksSUFBYixFQUFtQjtBQUNqQnZkLElBQUFBLENBQUMsSUFBSSxFQUFMO0FBQ0F1ZCxJQUFBQSxFQUFFLElBQUksSUFBTjtBQUNEOztBQUNELFNBQU9BLEVBQUUsSUFBSSxDQUFiLEVBQWdCO0FBQ2R2ZCxJQUFBQSxDQUFDLElBQUksQ0FBTDtBQUNBdWQsSUFBQUEsRUFBRSxJQUFJLENBQU47QUFDRDs7QUFBQyxTQUFPdmQsQ0FBUDtBQUNILENBWEQ7O0FBYUEsSUFBSXdkLFFBQVEsR0FBRyxVQUFVbHJCLElBQVYsRUFBZ0IwTixDQUFoQixFQUFtQnRKLENBQW5CLEVBQXNCO0FBQ25DLE1BQUloRyxLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQ0EsTUFBSStzQixFQUFFLEdBQUcvbUIsQ0FBVDs7QUFDQSxTQUFPLEVBQUVoRyxLQUFGLEdBQVUsQ0FBakIsRUFBb0I7QUFDbEIrc0IsSUFBQUEsRUFBRSxJQUFJemQsQ0FBQyxHQUFHMU4sSUFBSSxDQUFDNUIsS0FBRCxDQUFkO0FBQ0E0QixJQUFBQSxJQUFJLENBQUM1QixLQUFELENBQUosR0FBYytzQixFQUFFLEdBQUcsR0FBbkI7QUFDQUEsSUFBQUEsRUFBRSxHQUFHcHRCLE9BQUssQ0FBQ290QixFQUFFLEdBQUcsR0FBTixDQUFWO0FBQ0Q7QUFDRixDQVJEOztBQVVBLElBQUlDLE1BQU0sR0FBRyxVQUFVcHJCLElBQVYsRUFBZ0IwTixDQUFoQixFQUFtQjtBQUM5QixNQUFJdFAsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJZ0csQ0FBQyxHQUFHLENBQVI7O0FBQ0EsU0FBTyxFQUFFaEcsS0FBRixJQUFXLENBQWxCLEVBQXFCO0FBQ25CZ0csSUFBQUEsQ0FBQyxJQUFJcEUsSUFBSSxDQUFDNUIsS0FBRCxDQUFUO0FBQ0E0QixJQUFBQSxJQUFJLENBQUM1QixLQUFELENBQUosR0FBY0wsT0FBSyxDQUFDcUcsQ0FBQyxHQUFHc0osQ0FBTCxDQUFuQjtBQUNBdEosSUFBQUEsQ0FBQyxHQUFJQSxDQUFDLEdBQUdzSixDQUFMLEdBQVUsR0FBZDtBQUNEO0FBQ0YsQ0FSRDs7QUFVQSxJQUFJMmQsWUFBWSxHQUFHLFVBQVVyckIsSUFBVixFQUFnQjtBQUNqQyxNQUFJNUIsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJa3RCLENBQUMsR0FBRyxFQUFSOztBQUNBLFNBQU8sRUFBRWx0QixLQUFGLElBQVcsQ0FBbEIsRUFBcUI7QUFDbkIsUUFBSWt0QixDQUFDLEtBQUssRUFBTixJQUFZbHRCLEtBQUssS0FBSyxDQUF0QixJQUEyQjRCLElBQUksQ0FBQzVCLEtBQUQsQ0FBSixLQUFnQixDQUEvQyxFQUFrRDtBQUNoRCxVQUFJNm9CLENBQUMsR0FBR3p2QixNQUFNLENBQUN3SSxJQUFJLENBQUM1QixLQUFELENBQUwsQ0FBZDtBQUNBa3RCLE1BQUFBLENBQUMsR0FBR0EsQ0FBQyxLQUFLLEVBQU4sR0FBV3JFLENBQVgsR0FBZXFFLENBQUMsR0FBR2pNLFFBQU0sQ0FBQ2hxQixJQUFQLENBQVksR0FBWixFQUFpQixJQUFJNHhCLENBQUMsQ0FBQ3R3QixNQUF2QixDQUFKLEdBQXFDc3dCLENBQXhEO0FBQ0Q7QUFDRjs7QUFBQyxTQUFPcUUsQ0FBUDtBQUNILENBVEQ7O0FBV0EsSUFBSTFxQixRQUFNLEdBQUdrcUIsYUFBYSxLQUN4QixRQUFRQyxPQUFSLENBQWdCLENBQWhCLE1BQXVCLE9BQXZCLElBQ0EsSUFBSUEsT0FBSixDQUFZLENBQVosTUFBbUIsR0FEbkIsSUFFQSxNQUFNQSxPQUFOLENBQWMsQ0FBZCxNQUFxQixNQUZyQixJQUdBLHNCQUFzQkEsT0FBdEIsQ0FBOEIsQ0FBOUIsTUFBcUMscUJBSmIsQ0FBYixJQUtSLENBQUNuMkIsT0FBSyxDQUFDLFlBQVk7QUFDdEI7QUFDQWsyQixFQUFBQSxhQUFhLENBQUN6MUIsSUFBZCxDQUFtQixFQUFuQjtBQUNELENBSFUsQ0FMWDtBQVdBOztBQUNBa1IsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRUg7QUFBekMsQ0FBRCxFQUFvRDtBQUNuRG1xQixFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQlEsY0FBakIsRUFBaUM7QUFDeEMsUUFBSXZ0QixNQUFNLEdBQUdzckIsaUJBQWUsQ0FBQyxJQUFELENBQTVCO0FBQ0EsUUFBSWtDLFdBQVcsR0FBR3Z0QixxQkFBbUIsQ0FBQ3N0QixjQUFELENBQXJDO0FBQ0EsUUFBSXZyQixJQUFJLEdBQUcsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLEVBQWEsQ0FBYixFQUFnQixDQUFoQixDQUFYO0FBQ0EsUUFBSWlZLElBQUksR0FBRyxFQUFYO0FBQ0EsUUFBSWhlLE1BQU0sR0FBRyxHQUFiO0FBQ0EsUUFBSXd4QixDQUFKLEVBQU9DLENBQVAsRUFBVTdXLENBQVYsRUFBYXBJLENBQWI7QUFFQSxRQUFJK2UsV0FBVyxHQUFHLENBQWQsSUFBbUJBLFdBQVcsR0FBRyxFQUFyQyxFQUF5QyxNQUFNcFUsVUFBVSxDQUFDLDJCQUFELENBQWhCLENBUkQ7O0FBVXhDLFFBQUlwWixNQUFNLElBQUlBLE1BQWQsRUFBc0IsT0FBTyxLQUFQO0FBQ3RCLFFBQUlBLE1BQU0sSUFBSSxDQUFDLElBQVgsSUFBbUJBLE1BQU0sSUFBSSxJQUFqQyxFQUF1QyxPQUFPeEcsTUFBTSxDQUFDd0csTUFBRCxDQUFiOztBQUN2QyxRQUFJQSxNQUFNLEdBQUcsQ0FBYixFQUFnQjtBQUNkaWEsTUFBQUEsSUFBSSxHQUFHLEdBQVA7QUFDQWphLE1BQUFBLE1BQU0sR0FBRyxDQUFDQSxNQUFWO0FBQ0Q7O0FBQ0QsUUFBSUEsTUFBTSxHQUFHLEtBQWIsRUFBb0I7QUFDbEJ5dEIsTUFBQUEsQ0FBQyxHQUFHbFUsR0FBRyxDQUFDdlosTUFBTSxHQUFHc1osS0FBRyxDQUFDLENBQUQsRUFBSSxFQUFKLEVBQVEsQ0FBUixDQUFiLENBQUgsR0FBOEIsRUFBbEM7QUFDQW9VLE1BQUFBLENBQUMsR0FBR0QsQ0FBQyxHQUFHLENBQUosR0FBUXp0QixNQUFNLEdBQUdzWixLQUFHLENBQUMsQ0FBRCxFQUFJLENBQUNtVSxDQUFMLEVBQVEsQ0FBUixDQUFwQixHQUFpQ3p0QixNQUFNLEdBQUdzWixLQUFHLENBQUMsQ0FBRCxFQUFJbVUsQ0FBSixFQUFPLENBQVAsQ0FBakQ7QUFDQUMsTUFBQUEsQ0FBQyxJQUFJLGdCQUFMO0FBQ0FELE1BQUFBLENBQUMsR0FBRyxLQUFLQSxDQUFUOztBQUNBLFVBQUlBLENBQUMsR0FBRyxDQUFSLEVBQVc7QUFDVFAsUUFBQUEsUUFBUSxDQUFDbHJCLElBQUQsRUFBTyxDQUFQLEVBQVUwckIsQ0FBVixDQUFSO0FBQ0E3VyxRQUFBQSxDQUFDLEdBQUcyVyxXQUFKOztBQUNBLGVBQU8zVyxDQUFDLElBQUksQ0FBWixFQUFlO0FBQ2JxVyxVQUFBQSxRQUFRLENBQUNsckIsSUFBRCxFQUFPLEdBQVAsRUFBWSxDQUFaLENBQVI7QUFDQTZVLFVBQUFBLENBQUMsSUFBSSxDQUFMO0FBQ0Q7O0FBQ0RxVyxRQUFBQSxRQUFRLENBQUNsckIsSUFBRCxFQUFPc1gsS0FBRyxDQUFDLEVBQUQsRUFBS3pDLENBQUwsRUFBUSxDQUFSLENBQVYsRUFBc0IsQ0FBdEIsQ0FBUjtBQUNBQSxRQUFBQSxDQUFDLEdBQUc0VyxDQUFDLEdBQUcsQ0FBUjs7QUFDQSxlQUFPNVcsQ0FBQyxJQUFJLEVBQVosRUFBZ0I7QUFDZHVXLFVBQUFBLE1BQU0sQ0FBQ3ByQixJQUFELEVBQU8sS0FBSyxFQUFaLENBQU47QUFDQTZVLFVBQUFBLENBQUMsSUFBSSxFQUFMO0FBQ0Q7O0FBQ0R1VyxRQUFBQSxNQUFNLENBQUNwckIsSUFBRCxFQUFPLEtBQUs2VSxDQUFaLENBQU47QUFDQXFXLFFBQUFBLFFBQVEsQ0FBQ2xyQixJQUFELEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FBUjtBQUNBb3JCLFFBQUFBLE1BQU0sQ0FBQ3ByQixJQUFELEVBQU8sQ0FBUCxDQUFOO0FBQ0EvRixRQUFBQSxNQUFNLEdBQUdveEIsWUFBWSxDQUFDcnJCLElBQUQsQ0FBckI7QUFDRCxPQWpCRCxNQWlCTztBQUNMa3JCLFFBQUFBLFFBQVEsQ0FBQ2xyQixJQUFELEVBQU8sQ0FBUCxFQUFVMHJCLENBQVYsQ0FBUjtBQUNBUixRQUFBQSxRQUFRLENBQUNsckIsSUFBRCxFQUFPLEtBQUssQ0FBQ3lyQixDQUFiLEVBQWdCLENBQWhCLENBQVI7QUFDQXh4QixRQUFBQSxNQUFNLEdBQUdveEIsWUFBWSxDQUFDcnJCLElBQUQsQ0FBWixHQUFxQnFmLFFBQU0sQ0FBQ2hxQixJQUFQLENBQVksR0FBWixFQUFpQm0yQixXQUFqQixDQUE5QjtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSUEsV0FBVyxHQUFHLENBQWxCLEVBQXFCO0FBQ25CL2UsTUFBQUEsQ0FBQyxHQUFHeFMsTUFBTSxDQUFDdEQsTUFBWDtBQUNBc0QsTUFBQUEsTUFBTSxHQUFHZ2UsSUFBSSxJQUFJeEwsQ0FBQyxJQUFJK2UsV0FBTCxHQUNiLE9BQU9uTSxRQUFNLENBQUNocUIsSUFBUCxDQUFZLEdBQVosRUFBaUJtMkIsV0FBVyxHQUFHL2UsQ0FBL0IsQ0FBUCxHQUEyQ3hTLE1BRDlCLEdBRWJBLE1BQU0sQ0FBQ25FLEtBQVAsQ0FBYSxDQUFiLEVBQWdCMlcsQ0FBQyxHQUFHK2UsV0FBcEIsSUFBbUMsR0FBbkMsR0FBeUN2eEIsTUFBTSxDQUFDbkUsS0FBUCxDQUFhMlcsQ0FBQyxHQUFHK2UsV0FBakIsQ0FGaEMsQ0FBYjtBQUdELEtBTEQsTUFLTztBQUNMdnhCLE1BQUFBLE1BQU0sR0FBR2dlLElBQUksR0FBR2hlLE1BQWhCO0FBQ0Q7O0FBQUMsV0FBT0EsTUFBUDtBQUNIO0FBckRrRCxDQUFwRCxDQUFEOztBQ3JFQSxJQUFJc00sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXkwQixlQUFlLEdBQUd6MEIsaUJBQXRCOztBQUVBLElBQUk4MkIsaUJBQWlCLEdBQUcsSUFBSUMsV0FBNUI7QUFFQSxJQUFJaHJCLFFBQU0sR0FBR2hNLE9BQUssQ0FBQyxZQUFZO0FBQzdCO0FBQ0EsU0FBTysyQixpQkFBaUIsQ0FBQ3QyQixJQUFsQixDQUF1QixDQUF2QixFQUEwQlksU0FBMUIsTUFBeUMsR0FBaEQ7QUFDRCxDQUhpQixDQUFMLElBR1AsQ0FBQ3JCLE9BQUssQ0FBQyxZQUFZO0FBQ3ZCO0FBQ0ErMkIsRUFBQUEsaUJBQWlCLENBQUN0MkIsSUFBbEIsQ0FBdUIsRUFBdkI7QUFDRCxDQUhXLENBSFo7QUFTQTs7QUFDQWtSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUVIO0FBQXpDLENBQUQsRUFBb0Q7QUFDbkRnckIsRUFBQUEsV0FBVyxFQUFFLFNBQVNBLFdBQVQsQ0FBcUJDLFNBQXJCLEVBQWdDO0FBQzNDLFdBQU9BLFNBQVMsS0FBSzUxQixTQUFkLEdBQ0gwMUIsaUJBQWlCLENBQUN0MkIsSUFBbEIsQ0FBdUJpMEIsZUFBZSxDQUFDLElBQUQsQ0FBdEMsQ0FERyxHQUVIcUMsaUJBQWlCLENBQUN0MkIsSUFBbEIsQ0FBdUJpMEIsZUFBZSxDQUFDLElBQUQsQ0FBdEMsRUFBOEN1QyxTQUE5QyxDQUZKO0FBR0Q7QUFMa0QsQ0FBcEQsQ0FBRDs7QUNoQkEsSUFBSXZ4QixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSTRNLFlBQVUsR0FBRzVNLFlBQWpCOztBQUNBLElBQUkySywyQkFBMkIsR0FBRzNLLDJCQUFsQzs7QUFDQSxJQUFJMkYsMEJBQTBCLEdBQUczRiwwQkFBakM7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSXNCLGVBQWEsR0FBR3RCLGFBQXBCOzs7QUFHQSxJQUFJaTNCLE9BQU8sR0FBR2gzQixNQUFNLENBQUNpM0IsTUFBckI7O0FBRUEsSUFBSWgzQixnQkFBYyxHQUFHRCxNQUFNLENBQUNDLGNBQTVCO0FBR0E7O0lBQ0FYLGNBQUEsR0FBaUIsQ0FBQzAzQixPQUFELElBQVlsM0IsT0FBSyxDQUFDLFlBQVk7QUFDN0M7QUFDQSxNQUFJMEYsYUFBVyxJQUFJd3hCLE9BQU8sQ0FBQztBQUFFM25CLElBQUFBLENBQUMsRUFBRTtBQUFMLEdBQUQsRUFBVzJuQixPQUFPLENBQUMvMkIsZ0JBQWMsQ0FBQyxFQUFELEVBQUssR0FBTCxFQUFVO0FBQ25FUyxJQUFBQSxVQUFVLEVBQUUsSUFEdUQ7QUFFbkVSLElBQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2ZELE1BQUFBLGdCQUFjLENBQUMsSUFBRCxFQUFPLEdBQVAsRUFBWTtBQUN4QlcsUUFBQUEsS0FBSyxFQUFFLENBRGlCO0FBRXhCRixRQUFBQSxVQUFVLEVBQUU7QUFGWSxPQUFaLENBQWQ7QUFJRDtBQVBrRSxHQUFWLENBQWYsRUFReEM7QUFBRTJPLElBQUFBLENBQUMsRUFBRTtBQUFMLEdBUndDLENBQWxCLENBQVAsQ0FRSkEsQ0FSSSxLQVFFLENBUnJCLEVBUXdCLE9BQU8sSUFBUCxDQVZxQjs7QUFZN0MsTUFBSXNKLENBQUMsR0FBRyxFQUFSO0FBQ0EsTUFBSXVlLENBQUMsR0FBRyxFQUFSLENBYjZDOztBQWU3QyxNQUFJMTBCLE1BQU0sR0FBR0MsTUFBTSxFQUFuQjtBQUNBLE1BQUkwMEIsUUFBUSxHQUFHLHNCQUFmO0FBQ0F4ZSxFQUFBQSxDQUFDLENBQUNuVyxNQUFELENBQUQsR0FBWSxDQUFaO0FBQ0EyMEIsRUFBQUEsUUFBUSxDQUFDajJCLEtBQVQsQ0FBZSxFQUFmLEVBQW1CK1AsT0FBbkIsQ0FBMkIsVUFBVWlRLEdBQVYsRUFBZTtBQUFFZ1csSUFBQUEsQ0FBQyxDQUFDaFcsR0FBRCxDQUFELEdBQVNBLEdBQVQ7QUFBZSxHQUEzRDtBQUNBLFNBQU84VixPQUFPLENBQUMsRUFBRCxFQUFLcmUsQ0FBTCxDQUFQLENBQWVuVyxNQUFmLEtBQTBCLENBQTFCLElBQStCbUssWUFBVSxDQUFDcXFCLE9BQU8sQ0FBQyxFQUFELEVBQUtFLENBQUwsQ0FBUixDQUFWLENBQTJCbnVCLElBQTNCLENBQWdDLEVBQWhDLEtBQXVDb3VCLFFBQTdFO0FBQ0QsQ0FwQmlDLENBQWpCLEdBb0JaLFNBQVNGLE1BQVQsQ0FBZ0Jwc0IsTUFBaEIsRUFBd0IvQixNQUF4QixFQUFnQztBQUFFO0FBQ3JDLE1BQUlzdUIsQ0FBQyxHQUFHbnpCLFVBQVEsQ0FBQzRHLE1BQUQsQ0FBaEI7QUFDQSxNQUFJNE8sZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLE1BQUl5SCxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUkvRyxxQkFBcUIsR0FBR21JLDJCQUEyQixDQUFDekUsQ0FBeEQ7QUFDQSxNQUFJN0Ysb0JBQW9CLEdBQUdzRiwwQkFBMEIsQ0FBQ08sQ0FBdEQ7O0FBQ0EsU0FBT3dULGVBQWUsR0FBR25RLEtBQXpCLEVBQWdDO0FBQzlCLFFBQUk2ZixDQUFDLEdBQUc5bkIsZUFBYSxDQUFDTyxTQUFTLENBQUMwSCxLQUFLLEVBQU4sQ0FBVixDQUFyQjtBQUNBLFFBQUkzQyxJQUFJLEdBQUdwRSxxQkFBcUIsR0FBR29LLFlBQVUsQ0FBQ3djLENBQUQsQ0FBVixDQUFjNWUsTUFBZCxDQUFxQmhJLHFCQUFxQixDQUFDNG1CLENBQUQsQ0FBMUMsQ0FBSCxHQUFvRHhjLFlBQVUsQ0FBQ3djLENBQUQsQ0FBOUY7QUFDQSxRQUFJdG5CLE1BQU0sR0FBRzhFLElBQUksQ0FBQzlFLE1BQWxCO0FBQ0EsUUFBSWtlLENBQUMsR0FBRyxDQUFSO0FBQ0EsUUFBSXJjLEdBQUo7O0FBQ0EsV0FBTzdCLE1BQU0sR0FBR2tlLENBQWhCLEVBQW1CO0FBQ2pCcmMsTUFBQUEsR0FBRyxHQUFHaUQsSUFBSSxDQUFDb1osQ0FBQyxFQUFGLENBQVY7QUFDQSxVQUFJLENBQUN2YSxhQUFELElBQWdCcEYsb0JBQW9CLENBQUNHLElBQXJCLENBQTBCNG9CLENBQTFCLEVBQTZCemxCLEdBQTdCLENBQXBCLEVBQXVEMHpCLENBQUMsQ0FBQzF6QixHQUFELENBQUQsR0FBU3lsQixDQUFDLENBQUN6bEIsR0FBRCxDQUFWO0FBQ3hEO0FBQ0Y7O0FBQUMsU0FBTzB6QixDQUFQO0FBQ0gsQ0FyQ2dCLEdBcUNiSixPQXJDSjs7QUNoQkEsSUFBSXZsQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrM0IsUUFBTSxHQUFHbDNCLGNBQWI7QUFHQTtBQUNBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRWpNLE1BQU0sQ0FBQ2kzQixNQUFQLEtBQWtCQTtBQUExRCxDQUFELEVBQXFFO0FBQ3BFQSxFQUFBQSxNQUFNLEVBQUVBO0FBRDRELENBQXJFLENBQUQ7O0FDTkEsSUFBSXhsQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJNk8sUUFBTSxHQUFHN08sY0FBYjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NsSixFQUFBQSxJQUFJLEVBQUUsQ0FBQzZDO0FBQXZDLENBQUQsRUFBdUQ7QUFDdERvSixFQUFBQSxNQUFNLEVBQUVBO0FBRDhDLENBQXZELENBQUQ7O0FDSkEsSUFBSWxQLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSTRnQixRQUFNLEdBQUc1Z0IsbUJBQWI7OztJQUdBVCw4QkFBQSxHQUE0QixDQUFDUSxPQUFLLENBQUMsWUFBWTtBQUM3QztBQUNBO0FBQ0EsTUFBSTZnQixRQUFNLElBQUlBLFFBQU0sR0FBRyxHQUF2QixFQUE0QjtBQUM1QixNQUFJamQsR0FBRyxHQUFHckUsSUFBSSxDQUFDaUYsTUFBTCxFQUFWLENBSjZDO0FBTTdDOztBQUNBK3lCLEVBQUFBLGdCQUFnQixDQUFDOTJCLElBQWpCLENBQXNCLElBQXRCLEVBQTRCbUQsR0FBNUIsRUFBaUMsWUFBWTtBQUFFO0FBQWEsR0FBNUQ7O0FBQ0EsU0FBT2hFLFFBQU0sQ0FBQ2dFLEdBQUQsQ0FBYjtBQUNELENBVGlDLENBQWxDOztBQ05BLElBQUkrTixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJK0wsUUFBTSxHQUFHL0wsOEJBQWI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUlzRyxzQkFBb0IsR0FBR3RHLG9CQUEzQjtBQUdBOzs7QUFDQSxJQUFJeUYsYUFBSixFQUFpQjtBQUNmaU0sRUFBQUEsSUFBQyxDQUFDO0FBQUU1RyxJQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLElBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLElBQUFBLE1BQU0sRUFBRUg7QUFBekMsR0FBRCxFQUFvRDtBQUNuRHdyQixJQUFBQSxnQkFBZ0IsRUFBRSxTQUFTQSxnQkFBVCxDQUEwQnAwQixDQUExQixFQUE2QnEwQixNQUE3QixFQUFxQztBQUNyRGx4QixNQUFBQSxzQkFBb0IsQ0FBQ0osQ0FBckIsQ0FBdUJoQyxVQUFRLENBQUMsSUFBRCxDQUEvQixFQUF1Q2YsQ0FBdkMsRUFBMEM7QUFBRWhELFFBQUFBLEdBQUcsRUFBRStDLFdBQVMsQ0FBQ3MwQixNQUFELENBQWhCO0FBQTBCNzJCLFFBQUFBLFVBQVUsRUFBRSxJQUF0QztBQUE0Q0csUUFBQUEsWUFBWSxFQUFFO0FBQTFELE9BQTFDO0FBQ0Q7QUFIa0QsR0FBcEQsQ0FBRDtBQUtEOztBQ2hCRCxJQUFJNFEsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSTZNLGtCQUFnQixHQUFHN00sc0JBQXZCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFLENBQUN6RyxhQUF6QztBQUFzRDdDLEVBQUFBLElBQUksRUFBRSxDQUFDNkM7QUFBN0QsQ0FBRCxFQUE2RTtBQUM1RW9ILEVBQUFBLGdCQUFnQixFQUFFQTtBQUQwRCxDQUE3RSxDQUFEOztBQ05BLElBQUk2RSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJeTNCLDBCQUEwQixHQUFHejNCLG9CQUFqQztBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRSxDQUFDekcsYUFBekM7QUFBc0Q3QyxFQUFBQSxJQUFJLEVBQUUsQ0FBQzZDO0FBQTdELENBQUQsRUFBNkU7QUFDNUV2RixFQUFBQSxjQUFjLEVBQUV1M0IsMEJBQTBCLENBQUN2eEI7QUFEaUMsQ0FBN0UsQ0FBRDs7QUNMQSxJQUFJd0wsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSStMLFFBQU0sR0FBRy9MLDhCQUFiOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJc0csc0JBQW9CLEdBQUd0RyxvQkFBM0I7QUFHQTs7O0FBQ0EsSUFBSXlGLGFBQUosRUFBaUI7QUFDZmlNLEVBQUFBLElBQUMsQ0FBQztBQUFFNUcsSUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxJQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixJQUFBQSxNQUFNLEVBQUVIO0FBQXpDLEdBQUQsRUFBb0Q7QUFDbkR1ckIsSUFBQUEsZ0JBQWdCLEVBQUUsU0FBU0EsZ0JBQVQsQ0FBMEJuMEIsQ0FBMUIsRUFBNkJ1USxNQUE3QixFQUFxQztBQUNyRHBOLE1BQUFBLHNCQUFvQixDQUFDSixDQUFyQixDQUF1QmhDLFVBQVEsQ0FBQyxJQUFELENBQS9CLEVBQXVDZixDQUF2QyxFQUEwQztBQUFFK0QsUUFBQUEsR0FBRyxFQUFFaEUsV0FBUyxDQUFDd1EsTUFBRCxDQUFoQjtBQUEwQi9TLFFBQUFBLFVBQVUsRUFBRSxJQUF0QztBQUE0Q0csUUFBQUEsWUFBWSxFQUFFO0FBQTFELE9BQTFDO0FBQ0Q7QUFIa0QsR0FBcEQsQ0FBRDtBQUtEOztBQ2hCRCxJQUFJMkUsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSTRNLFlBQVUsR0FBRzVNLFlBQWpCOztBQUNBLElBQUk2RixpQkFBZSxHQUFHN0YsaUJBQXRCOztBQUNBLElBQUlLLG9CQUFvQixHQUFHTCwwQkFBQSxDQUFzRGtHLENBQWpGOzs7QUFHQSxJQUFJMkQsY0FBWSxHQUFHLFVBQVU2dEIsVUFBVixFQUFzQjtBQUN2QyxTQUFPLFVBQVVyNEIsRUFBVixFQUFjO0FBQ25CLFFBQUk0RyxDQUFDLEdBQUdKLGlCQUFlLENBQUN4RyxFQUFELENBQXZCO0FBQ0EsUUFBSXVILElBQUksR0FBR2dHLFlBQVUsQ0FBQzNHLENBQUQsQ0FBckI7QUFDQSxRQUFJbkUsTUFBTSxHQUFHOEUsSUFBSSxDQUFDOUUsTUFBbEI7QUFDQSxRQUFJdUksQ0FBQyxHQUFHLENBQVI7QUFDQSxRQUFJakYsTUFBTSxHQUFHLEVBQWI7QUFDQSxRQUFJekIsR0FBSjs7QUFDQSxXQUFPN0IsTUFBTSxHQUFHdUksQ0FBaEIsRUFBbUI7QUFDakIxRyxNQUFBQSxHQUFHLEdBQUdpRCxJQUFJLENBQUN5RCxDQUFDLEVBQUYsQ0FBVjs7QUFDQSxVQUFJLENBQUM1RSxhQUFELElBQWdCcEYsb0JBQW9CLENBQUNHLElBQXJCLENBQTBCeUYsQ0FBMUIsRUFBNkJ0QyxHQUE3QixDQUFwQixFQUF1RDtBQUNyRHlCLFFBQUFBLE1BQU0sQ0FBQ3JCLElBQVAsQ0FBWTJ6QixVQUFVLEdBQUcsQ0FBQy96QixHQUFELEVBQU1zQyxDQUFDLENBQUN0QyxHQUFELENBQVAsQ0FBSCxHQUFtQnNDLENBQUMsQ0FBQ3RDLEdBQUQsQ0FBMUM7QUFDRDtBQUNGOztBQUNELFdBQU95QixNQUFQO0FBQ0QsR0FkRDtBQWVELENBaEJEOztJQWtCQTdGLGFBQUEsR0FBaUI7QUFDZjtBQUNBO0FBQ0FnZSxFQUFBQSxPQUFPLEVBQUUxVCxjQUFZLENBQUMsSUFBRCxDQUhOO0FBSWY7QUFDQTtBQUNBeVQsRUFBQUEsTUFBTSxFQUFFelQsY0FBWSxDQUFDLEtBQUQ7QUFOTCxDQUFqQjs7QUN4QkEsSUFBSTZILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTIzQixRQUFRLEdBQUczM0IsYUFBQSxDQUF3Q3VkLE9BQXZEO0FBR0E7OztBQUNBN0wsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDeVIsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJ0WCxDQUFqQixFQUFvQjtBQUMzQixXQUFPMHhCLFFBQVEsQ0FBQzF4QixDQUFELENBQWY7QUFDRDtBQUhpQyxDQUFuQyxDQUFEOztBQ0xBLElBQUl5TCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk4dEIsVUFBUSxHQUFHOXRCLFFBQWY7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUlzdUIsVUFBUSxHQUFHdHVCLHdCQUFBLENBQTBDc3VCLFFBQXpEOzs7QUFHQSxJQUFJc0osT0FBTyxHQUFHMzNCLE1BQU0sQ0FBQzQzQixNQUFyQjtBQUNBLElBQUlDLHFCQUFtQixHQUFHLzNCLE9BQUssQ0FBQyxZQUFZO0FBQUU2M0IsRUFBQUEsT0FBTyxDQUFDLENBQUQsQ0FBUDtBQUFhLENBQTVCLENBQS9CO0FBR0E7O0FBQ0FsbUIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNHJCLHFCQUF4QztBQUE2RGwxQixFQUFBQSxJQUFJLEVBQUUsQ0FBQ2tyQjtBQUFwRSxDQUFELEVBQWlGO0FBQ2hGK0osRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0J4NEIsRUFBaEIsRUFBb0I7QUFDMUIsV0FBT3U0QixPQUFPLElBQUl2MEIsVUFBUSxDQUFDaEUsRUFBRCxDQUFuQixHQUEwQnU0QixPQUFPLENBQUN0SixVQUFRLENBQUNqdkIsRUFBRCxDQUFULENBQWpDLEdBQWtEQSxFQUF6RDtBQUNEO0FBSCtFLENBQWpGLENBQUQ7O0FDWkEsSUFBSXFTLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7O0FBQ0EsSUFBSWtZLGdCQUFjLEdBQUdsWSxnQkFBckI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbENpc0IsRUFBQUEsV0FBVyxFQUFFLFNBQVNBLFdBQVQsQ0FBcUI1aEIsUUFBckIsRUFBK0I7QUFDMUMsUUFBSXpNLEdBQUcsR0FBRyxFQUFWO0FBQ0FzTixJQUFBQSxTQUFPLENBQUNiLFFBQUQsRUFBVyxVQUFVeUIsQ0FBVixFQUFheUosQ0FBYixFQUFnQjtBQUNoQ25KLE1BQUFBLGdCQUFjLENBQUN4TyxHQUFELEVBQU1rTyxDQUFOLEVBQVN5SixDQUFULENBQWQ7QUFDRCxLQUZNLEVBRUo7QUFBRWhMLE1BQUFBLFVBQVUsRUFBRTtBQUFkLEtBRkksQ0FBUDtBQUdBLFdBQU8zTSxHQUFQO0FBQ0Q7QUFQaUMsQ0FBbkMsQ0FBRDs7QUNOQSxJQUFJZ0ksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSTZGLGlCQUFlLEdBQUc3RixpQkFBdEI7O0FBQ0EsSUFBSXNTLGdDQUE4QixHQUFHdFMsOEJBQUEsQ0FBMkRrRyxDQUFoRzs7QUFDQSxJQUFJVCxhQUFXLEdBQUd6RixXQUFsQjs7QUFFQSxJQUFJODNCLHFCQUFtQixHQUFHLzNCLE9BQUssQ0FBQyxZQUFZO0FBQUV1UyxFQUFBQSxnQ0FBOEIsQ0FBQyxDQUFELENBQTlCO0FBQW9DLENBQW5ELENBQS9CO0FBQ0EsSUFBSXZHLFFBQU0sR0FBRyxDQUFDdEcsYUFBRCxJQUFnQnF5QixxQkFBN0I7QUFHQTs7QUFDQXBtQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTFCO0FBQWdDSSxFQUFBQSxNQUFNLEVBQUVILFFBQXhDO0FBQWdEbkosRUFBQUEsSUFBSSxFQUFFLENBQUM2QztBQUF2RCxDQUFELEVBQXVFO0FBQ3RFbkYsRUFBQUEsd0JBQXdCLEVBQUUsU0FBU0Esd0JBQVQsQ0FBa0NqQixFQUFsQyxFQUFzQ3NFLEdBQXRDLEVBQTJDO0FBQ25FLFdBQU8yTyxnQ0FBOEIsQ0FBQ3pNLGlCQUFlLENBQUN4RyxFQUFELENBQWhCLEVBQXNCc0UsR0FBdEIsQ0FBckM7QUFDRDtBQUhxRSxDQUF2RSxDQUFEOztBQ1hBLElBQUkrTixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJNEssU0FBTyxHQUFHNUssU0FBZDs7QUFDQSxJQUFJNkYsaUJBQWUsR0FBRzdGLGlCQUF0Qjs7QUFDQSxJQUFJNkssZ0NBQThCLEdBQUc3Syw4QkFBckM7O0FBQ0EsSUFBSWtZLGNBQWMsR0FBR2xZLGdCQUFyQjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NsSixFQUFBQSxJQUFJLEVBQUUsQ0FBQzZDO0FBQXZDLENBQUQsRUFBdUQ7QUFDdER1eUIsRUFBQUEseUJBQXlCLEVBQUUsU0FBU0EseUJBQVQsQ0FBbUN6eEIsTUFBbkMsRUFBMkM7QUFDcEUsUUFBSU4sQ0FBQyxHQUFHSixpQkFBZSxDQUFDVSxNQUFELENBQXZCO0FBQ0EsUUFBSWpHLHdCQUF3QixHQUFHdUssZ0NBQThCLENBQUMzRSxDQUE5RDtBQUNBLFFBQUlVLElBQUksR0FBR2dFLFNBQU8sQ0FBQzNFLENBQUQsQ0FBbEI7QUFDQSxRQUFJYixNQUFNLEdBQUcsRUFBYjtBQUNBLFFBQUltRSxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUk1RixHQUFKLEVBQVNqRCxVQUFUOztBQUNBLFdBQU9rRyxJQUFJLENBQUM5RSxNQUFMLEdBQWN5SCxLQUFyQixFQUE0QjtBQUMxQjdJLE1BQUFBLFVBQVUsR0FBR0osd0JBQXdCLENBQUMyRixDQUFELEVBQUl0QyxHQUFHLEdBQUdpRCxJQUFJLENBQUMyQyxLQUFLLEVBQU4sQ0FBZCxDQUFyQztBQUNBLFVBQUk3SSxVQUFVLEtBQUtVLFNBQW5CLEVBQThCOFcsY0FBYyxDQUFDOVMsTUFBRCxFQUFTekIsR0FBVCxFQUFjakQsVUFBZCxDQUFkO0FBQy9COztBQUNELFdBQU8wRSxNQUFQO0FBQ0Q7QUFicUQsQ0FBdkQsQ0FBRDs7QUNUQSxJQUFJc00sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXlLLHFCQUFtQixHQUFHekssaUNBQUEsQ0FBK0RrRyxDQUF6Rjs7O0FBR0EsSUFBSTR4QixxQkFBbUIsR0FBRy8zQixPQUFLLENBQUMsWUFBWTtBQUFFLFNBQU8sQ0FBQ0UsTUFBTSxDQUFDd0ssbUJBQVAsQ0FBMkIsQ0FBM0IsQ0FBUjtBQUF3QyxDQUF2RCxDQUEvQjtBQUdBOztBQUNBaUgsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNHJCO0FBQXhDLENBQUQsRUFBZ0U7QUFDL0RydEIsRUFBQUEsbUJBQW1CLEVBQUVBO0FBRDBDLENBQWhFLENBQUQ7O0FDVEEsSUFBSWlILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUlpNEIsb0JBQW9CLEdBQUdqNEIsc0JBQTNCOztBQUNBLElBQUk4VSwwQkFBd0IsR0FBRzlVLHNCQUEvQjs7QUFFQSxJQUFJODNCLHFCQUFtQixHQUFHLzNCLE9BQUssQ0FBQyxZQUFZO0FBQUVrNEIsRUFBQUEsb0JBQW9CLENBQUMsQ0FBRCxDQUFwQjtBQUEwQixDQUF6QyxDQUEvQjtBQUdBOztBQUNBdm1CLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLEVBQUFBLE1BQU0sRUFBRTRyQixxQkFBeEM7QUFBNkRsMUIsRUFBQUEsSUFBSSxFQUFFLENBQUNrUztBQUFwRSxDQUFELEVBQWlHO0FBQ2hHRCxFQUFBQSxjQUFjLEVBQUUsU0FBU0EsY0FBVCxDQUF3QnhWLEVBQXhCLEVBQTRCO0FBQzFDLFdBQU80NEIsb0JBQW9CLENBQUMvekIsVUFBUSxDQUFDN0UsRUFBRCxDQUFULENBQTNCO0FBQ0Q7QUFIK0YsQ0FBakcsQ0FBRDs7QUNWQSxJQUFJcVMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEMxSCxFQUFBQSxNQUFNLEVBQUVBO0FBRDBCLENBQW5DLENBQUQ7O0FDTEE7QUFDQTtBQUNBO0lBQ0E3RSxXQUFBLEdBQWlCVSxNQUFNLENBQUNpNEIsRUFBUCxJQUFhLFNBQVNBLEVBQVQsQ0FBWTFXLENBQVosRUFBZUMsQ0FBZixFQUFrQjtBQUM5QztBQUNBLFNBQU9ELENBQUMsS0FBS0MsQ0FBTixHQUFVRCxDQUFDLEtBQUssQ0FBTixJQUFXLElBQUlBLENBQUosS0FBVSxJQUFJQyxDQUFuQyxHQUF1Q0QsQ0FBQyxJQUFJQSxDQUFMLElBQVVDLENBQUMsSUFBSUEsQ0FBN0Q7QUFDRCxDQUhEOztBQ0hBLElBQUkvUCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrNEIsRUFBRSxHQUFHbDRCLFdBQVQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbENvc0IsRUFBQUEsRUFBRSxFQUFFQTtBQUQ4QixDQUFuQyxDQUFEOztBQ0xBLElBQUl4bUIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7OztBQUdBLElBQUltNEIsYUFBYSxHQUFHbDRCLE1BQU0sQ0FBQzB0QixZQUEzQjtBQUNBLElBQUltSyxxQkFBbUIsR0FBRy8zQixPQUFLLENBQUMsWUFBWTtBQUFFbzRCLEVBQUFBLGFBQWEsQ0FBQyxDQUFELENBQWI7QUFBbUIsQ0FBbEMsQ0FBL0I7QUFHQTs7QUFDQXptQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTFCO0FBQWdDSSxFQUFBQSxNQUFNLEVBQUU0ckI7QUFBeEMsQ0FBRCxFQUFnRTtBQUMvRG5LLEVBQUFBLFlBQVksRUFBRSxTQUFTQSxZQUFULENBQXNCdHVCLEVBQXRCLEVBQTBCO0FBQ3RDLFdBQU9nRSxVQUFRLENBQUNoRSxFQUFELENBQVIsR0FBZTg0QixhQUFhLEdBQUdBLGFBQWEsQ0FBQzk0QixFQUFELENBQWhCLEdBQXVCLElBQW5ELEdBQTBELEtBQWpFO0FBQ0Q7QUFIOEQsQ0FBaEUsQ0FBRDs7QUNWQSxJQUFJcVMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7OztBQUdBLElBQUlvNEIsU0FBUyxHQUFHbjRCLE1BQU0sQ0FBQ280QixRQUF2QjtBQUNBLElBQUlQLHFCQUFtQixHQUFHLzNCLE9BQUssQ0FBQyxZQUFZO0FBQUVxNEIsRUFBQUEsU0FBUyxDQUFDLENBQUQsQ0FBVDtBQUFlLENBQTlCLENBQS9CO0FBR0E7O0FBQ0ExbUIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNHJCO0FBQXhDLENBQUQsRUFBZ0U7QUFDL0RPLEVBQUFBLFFBQVEsRUFBRSxTQUFTQSxRQUFULENBQWtCaDVCLEVBQWxCLEVBQXNCO0FBQzlCLFdBQU9nRSxVQUFRLENBQUNoRSxFQUFELENBQVIsR0FBZSs0QixTQUFTLEdBQUdBLFNBQVMsQ0FBQy80QixFQUFELENBQVosR0FBbUIsS0FBM0MsR0FBbUQsSUFBMUQ7QUFDRDtBQUg4RCxDQUFoRSxDQUFEOztBQ1ZBLElBQUlxUyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7O0FBR0EsSUFBSXM0QixTQUFTLEdBQUdyNEIsTUFBTSxDQUFDczRCLFFBQXZCO0FBQ0EsSUFBSVQscUJBQW1CLEdBQUcvM0IsT0FBSyxDQUFDLFlBQVk7QUFBRXU0QixFQUFBQSxTQUFTLENBQUMsQ0FBRCxDQUFUO0FBQWUsQ0FBOUIsQ0FBL0I7QUFHQTs7QUFDQTVtQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTFCO0FBQWdDSSxFQUFBQSxNQUFNLEVBQUU0ckI7QUFBeEMsQ0FBRCxFQUFnRTtBQUMvRFMsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JsNUIsRUFBbEIsRUFBc0I7QUFDOUIsV0FBT2dFLFVBQVEsQ0FBQ2hFLEVBQUQsQ0FBUixHQUFlaTVCLFNBQVMsR0FBR0EsU0FBUyxDQUFDajVCLEVBQUQsQ0FBWixHQUFtQixLQUEzQyxHQUFtRCxJQUExRDtBQUNEO0FBSDhELENBQWhFLENBQUQ7O0FDVkEsSUFBSXFTLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSXc0QixVQUFVLEdBQUd4NEIsWUFBakI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUVBLElBQUk4M0IscUJBQW1CLEdBQUcvM0IsT0FBSyxDQUFDLFlBQVk7QUFBRXk0QixFQUFBQSxVQUFVLENBQUMsQ0FBRCxDQUFWO0FBQWdCLENBQS9CLENBQS9CO0FBR0E7O0FBQ0E5bUIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNHJCO0FBQXhDLENBQUQsRUFBZ0U7QUFDL0RseEIsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3ZILEVBQWQsRUFBa0I7QUFDdEIsV0FBT201QixVQUFVLENBQUN0MEIsVUFBUSxDQUFDN0UsRUFBRCxDQUFULENBQWpCO0FBQ0Q7QUFIOEQsQ0FBaEUsQ0FBRDs7QUNSQSxJQUFJcVMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSStMLFFBQU0sR0FBRy9MLDhCQUFiOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUk4RixlQUFhLEdBQUc5RixlQUFwQjs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFDQSxJQUFJTSwwQkFBd0IsR0FBR04sOEJBQUEsQ0FBMkRrRyxDQUExRjtBQUdBOzs7QUFDQSxJQUFJVCxhQUFKLEVBQWlCO0FBQ2ZpTSxFQUFBQSxJQUFDLENBQUM7QUFBRTVHLElBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssSUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosSUFBQUEsTUFBTSxFQUFFSDtBQUF6QyxHQUFELEVBQW9EO0FBQ25EMHNCLElBQUFBLGdCQUFnQixFQUFFLFNBQVNBLGdCQUFULENBQTBCdDFCLENBQTFCLEVBQTZCO0FBQzdDLFVBQUk4QyxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLFVBQUlQLEdBQUcsR0FBR21DLGVBQWEsQ0FBQzNDLENBQUQsQ0FBdkI7QUFDQSxVQUFJeVIsSUFBSjs7QUFDQSxTQUFHO0FBQ0QsWUFBSUEsSUFBSSxHQUFHdFUsMEJBQXdCLENBQUMyRixDQUFELEVBQUl0QyxHQUFKLENBQW5DLEVBQTZDLE9BQU9pUixJQUFJLENBQUN6VSxHQUFaO0FBQzlDLE9BRkQsUUFFUzhGLENBQUMsR0FBRzRPLGdCQUFjLENBQUM1TyxDQUFELENBRjNCO0FBR0Q7QUFSa0QsR0FBcEQsQ0FBRDtBQVVEOztBQ3JCRCxJQUFJeUwsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSStMLFFBQU0sR0FBRy9MLDhCQUFiOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUk4RixlQUFhLEdBQUc5RixlQUFwQjs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFDQSxJQUFJTSwwQkFBd0IsR0FBR04sOEJBQUEsQ0FBMkRrRyxDQUExRjtBQUdBOzs7QUFDQSxJQUFJVCxhQUFKLEVBQWlCO0FBQ2ZpTSxFQUFBQSxJQUFDLENBQUM7QUFBRTVHLElBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssSUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosSUFBQUEsTUFBTSxFQUFFSDtBQUF6QyxHQUFELEVBQW9EO0FBQ25EMnNCLElBQUFBLGdCQUFnQixFQUFFLFNBQVNBLGdCQUFULENBQTBCdjFCLENBQTFCLEVBQTZCO0FBQzdDLFVBQUk4QyxDQUFDLEdBQUcvQixVQUFRLENBQUMsSUFBRCxDQUFoQjtBQUNBLFVBQUlQLEdBQUcsR0FBR21DLGVBQWEsQ0FBQzNDLENBQUQsQ0FBdkI7QUFDQSxVQUFJeVIsSUFBSjs7QUFDQSxTQUFHO0FBQ0QsWUFBSUEsSUFBSSxHQUFHdFUsMEJBQXdCLENBQUMyRixDQUFELEVBQUl0QyxHQUFKLENBQW5DLEVBQTZDLE9BQU9pUixJQUFJLENBQUMxTixHQUFaO0FBQzlDLE9BRkQsUUFFU2pCLENBQUMsR0FBRzRPLGdCQUFjLENBQUM1TyxDQUFELENBRjNCO0FBR0Q7QUFSa0QsR0FBcEQsQ0FBRDtBQVVEOztBQ3RCRCxJQUFJeUwsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJc3VCLFVBQVEsR0FBR3R1Qix3QkFBQSxDQUEwQ3N1QixRQUF6RDs7QUFDQSxJQUFJUixVQUFRLEdBQUc5dEIsUUFBZjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7OztBQUdBLElBQUkyNEIsa0JBQWtCLEdBQUcxNEIsTUFBTSxDQUFDMnRCLGlCQUFoQztBQUNBLElBQUlrSyxxQkFBbUIsR0FBRy8zQixPQUFLLENBQUMsWUFBWTtBQUFFNDRCLEVBQUFBLGtCQUFrQixDQUFDLENBQUQsQ0FBbEI7QUFBd0IsQ0FBdkMsQ0FBL0I7QUFHQTs7QUFDQWpuQixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTFCO0FBQWdDSSxFQUFBQSxNQUFNLEVBQUU0ckIscUJBQXhDO0FBQTZEbDFCLEVBQUFBLElBQUksRUFBRSxDQUFDa3JCO0FBQXBFLENBQUQsRUFBaUY7QUFDaEZGLEVBQUFBLGlCQUFpQixFQUFFLFNBQVNBLGlCQUFULENBQTJCdnVCLEVBQTNCLEVBQStCO0FBQ2hELFdBQU9zNUIsa0JBQWtCLElBQUl0MUIsVUFBUSxDQUFDaEUsRUFBRCxDQUE5QixHQUFxQ3M1QixrQkFBa0IsQ0FBQ3JLLFVBQVEsQ0FBQ2p2QixFQUFELENBQVQsQ0FBdkQsR0FBd0VBLEVBQS9FO0FBQ0Q7QUFIK0UsQ0FBakYsQ0FBRDs7QUNaQSxJQUFJcVMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJc3VCLFFBQVEsR0FBR3R1Qix3QkFBQSxDQUEwQ3N1QixRQUF6RDs7QUFDQSxJQUFJUixVQUFRLEdBQUc5dEIsUUFBZjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7OztBQUdBLElBQUk0NEIsS0FBSyxHQUFHMzRCLE1BQU0sQ0FBQzQ0QixJQUFuQjtBQUNBLElBQUlmLG1CQUFtQixHQUFHLzNCLE9BQUssQ0FBQyxZQUFZO0FBQUU2NEIsRUFBQUEsS0FBSyxDQUFDLENBQUQsQ0FBTDtBQUFXLENBQTFCLENBQS9CO0FBR0E7O0FBQ0FsbkIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNHJCLG1CQUF4QztBQUE2RGwxQixFQUFBQSxJQUFJLEVBQUUsQ0FBQ2tyQjtBQUFwRSxDQUFELEVBQWlGO0FBQ2hGK0ssRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3g1QixFQUFkLEVBQWtCO0FBQ3RCLFdBQU91NUIsS0FBSyxJQUFJdjFCLFVBQVEsQ0FBQ2hFLEVBQUQsQ0FBakIsR0FBd0J1NUIsS0FBSyxDQUFDdEssUUFBUSxDQUFDanZCLEVBQUQsQ0FBVCxDQUE3QixHQUE4Q0EsRUFBckQ7QUFDRDtBQUgrRSxDQUFqRixDQUFEOztBQ1pBLElBQUlxUyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnVixnQkFBYyxHQUFHaFYsc0JBQXJCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDa0osRUFBQUEsY0FBYyxFQUFFQTtBQURrQixDQUFuQyxDQUFEOztBQ0pBLElBQUkxSSx1QkFBcUIsR0FBR3RNLGtCQUE1Qjs7QUFDQSxJQUFJa0IsU0FBTyxHQUFHbEIsU0FBZDtBQUdBOzs7SUFDQVQsY0FBQSxHQUFpQitNLHVCQUFxQixHQUFHLEdBQUd0TCxRQUFOLEdBQWlCLFNBQVNBLFFBQVQsR0FBb0I7QUFDekUsU0FBTyxhQUFhRSxTQUFPLENBQUMsSUFBRCxDQUFwQixHQUE2QixHQUFwQztBQUNELENBRkQ7O0FDTkEsSUFBSW9MLHFCQUFxQixHQUFHdE0sa0JBQTVCOztBQUNBLElBQUl5TCxVQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsY0FBZjtBQUdBOzs7QUFDQSxJQUFJLENBQUNzTSxxQkFBTCxFQUE0QjtBQUMxQmIsRUFBQUEsVUFBUSxDQUFDeEwsTUFBTSxDQUFDK0gsU0FBUixFQUFtQixVQUFuQixFQUErQmhILFVBQS9CLEVBQXlDO0FBQUUySCxJQUFBQSxNQUFNLEVBQUU7QUFBVixHQUF6QyxDQUFSO0FBQ0Q7O0FDUkQsSUFBSStJLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTg0QixPQUFPLEdBQUc5NEIsYUFBQSxDQUF3Q3NkLE1BQXREO0FBR0E7OztBQUNBNUwsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDd1IsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JyWCxDQUFoQixFQUFtQjtBQUN6QixXQUFPNnlCLE9BQU8sQ0FBQzd5QixDQUFELENBQWQ7QUFDRDtBQUhpQyxDQUFuQyxDQUFEOztBQ0xBLElBQUl5TCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2MUIsV0FBVyxHQUFHNzFCLGdCQUFsQjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0J1TSxFQUFBQSxNQUFNLEVBQUU0cEIsVUFBVSxJQUFJRDtBQUF0QyxDQUFELEVBQXNEO0FBQ3JEQyxFQUFBQSxVQUFVLEVBQUVEO0FBRHlDLENBQXRELENBQUQ7O0FDTEEsSUFBSW5rQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnMkIsU0FBUyxHQUFHaDJCLGNBQWhCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLEVBQUFBLE1BQU0sRUFBRWtwQixRQUFRLElBQUlZO0FBQXBDLENBQUQsRUFBa0Q7QUFDakRaLEVBQUFBLFFBQVEsRUFBRVk7QUFEdUMsQ0FBbEQsQ0FBRDs7QUNMQSxJQUFJcjJCLFFBQU0sR0FBR0ssUUFBYjs7SUFFQVQsd0JBQUEsR0FBaUJJLFFBQU0sQ0FBQ281QixPQUF4Qjs7QUNGQSxJQUFJLzJCLFdBQVMsR0FBR2hDLGVBQWhCOztJQUVBVCxXQUFBLEdBQWlCLHFDQUFxQ29ILElBQXJDLENBQTBDM0UsV0FBMUMsQ0FBakI7O0FDRkEsSUFBSXJDLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJK00sSUFBSSxHQUFHL00sTUFBWDs7QUFDQSxJQUFJd0YsYUFBYSxHQUFHeEYsdUJBQXBCOztBQUNBLElBQUlnNUIsUUFBTSxHQUFHaDVCLFdBQWI7O0FBQ0EsSUFBSWdmLFNBQU8sR0FBR2hmLFlBQWQ7O0FBRUEsSUFBSWtILEtBQUcsR0FBR3ZILFFBQU0sQ0FBQ3M1QixZQUFqQjtBQUNBLElBQUloSixLQUFLLEdBQUd0d0IsUUFBTSxDQUFDdTVCLGNBQW5CO0FBQ0EsSUFBSWozQixTQUFPLEdBQUd0QyxRQUFNLENBQUNzQyxPQUFyQjtBQUNBLElBQUlrM0IsY0FBYyxHQUFHeDVCLFFBQU0sQ0FBQ3c1QixjQUE1QjtBQUNBLElBQUlDLFVBQVEsR0FBR3o1QixRQUFNLENBQUN5NUIsUUFBdEI7QUFDQSxJQUFJQyxPQUFPLEdBQUcsQ0FBZDtBQUNBLElBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsSUFBSUMsa0JBQWtCLEdBQUcsb0JBQXpCO0FBQ0EsSUFBSUMsVUFBSixFQUFjQyxLQUFkLEVBQXFCQyxPQUFyQixFQUE4QkMsSUFBOUI7O0FBRUEsSUFBSTtBQUNGO0FBQ0FILEVBQUFBLFVBQVEsR0FBRzc1QixRQUFNLENBQUM2NUIsUUFBbEI7QUFDRCxDQUhELENBR0UsT0FBTzE1QixLQUFQLEVBQWM7QUFBRTtBQUFhOztBQUUvQixJQUFJODVCLEdBQUcsR0FBRyxVQUFVdjFCLEVBQVYsRUFBYztBQUN0QjtBQUNBLE1BQUlpMUIsS0FBSyxDQUFDbjFCLGNBQU4sQ0FBcUJFLEVBQXJCLENBQUosRUFBOEI7QUFDNUIsUUFBSWIsRUFBRSxHQUFHODFCLEtBQUssQ0FBQ2oxQixFQUFELENBQWQ7QUFDQSxXQUFPaTFCLEtBQUssQ0FBQ2oxQixFQUFELENBQVo7QUFDQWIsSUFBQUEsRUFBRTtBQUNIO0FBQ0YsQ0FQRDs7QUFTQSxJQUFJcTJCLE1BQU0sR0FBRyxVQUFVeDFCLEVBQVYsRUFBYztBQUN6QixTQUFPLFlBQVk7QUFDakJ1MUIsSUFBQUEsR0FBRyxDQUFDdjFCLEVBQUQsQ0FBSDtBQUNELEdBRkQ7QUFHRCxDQUpEOztBQU1BLElBQUl5MUIsUUFBUSxHQUFHLFVBQVVDLEtBQVYsRUFBaUI7QUFDOUJILEVBQUFBLEdBQUcsQ0FBQ0csS0FBSyxDQUFDNXVCLElBQVAsQ0FBSDtBQUNELENBRkQ7O0FBSUEsSUFBSTZ1QixJQUFJLEdBQUcsVUFBVTMxQixFQUFWLEVBQWM7QUFDdkI7QUFDQTFFLEVBQUFBLFFBQU0sQ0FBQ3M2QixXQUFQLENBQW1CdDNCLE1BQU0sQ0FBQzBCLEVBQUQsQ0FBekIsRUFBK0JtMUIsVUFBUSxDQUFDVSxRQUFULEdBQW9CLElBQXBCLEdBQTJCVixVQUFRLENBQUNXLElBQW5FO0FBQ0QsQ0FIRDs7O0FBTUEsSUFBSSxDQUFDanpCLEtBQUQsSUFBUSxDQUFDK29CLEtBQWIsRUFBb0I7QUFDbEIvb0IsRUFBQUEsS0FBRyxHQUFHLFNBQVMreEIsWUFBVCxDQUFzQnoxQixFQUF0QixFQUEwQjtBQUM5QixRQUFJMlEsSUFBSSxHQUFHLEVBQVg7QUFDQSxRQUFJdUYsZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLFFBQUl1SSxDQUFDLEdBQUcsQ0FBUjs7QUFDQSxXQUFPcVAsZUFBZSxHQUFHclAsQ0FBekIsRUFBNEI4SixJQUFJLENBQUNwUSxJQUFMLENBQVVsQyxTQUFTLENBQUN3SSxDQUFDLEVBQUYsQ0FBbkI7O0FBQzVCaXZCLElBQUFBLEtBQUssQ0FBQyxFQUFFRCxPQUFILENBQUwsR0FBbUIsWUFBWTtBQUM3QjtBQUNBLE9BQUM1M0IsWUFBVSxDQUFDK0IsRUFBRCxDQUFWLEdBQWlCQSxFQUFqQixHQUFzQjVELFFBQVEsQ0FBQzRELEVBQUQsQ0FBL0IsRUFBcUNnTSxLQUFyQyxDQUEyQ3BPLFNBQTNDLEVBQXNEK1MsSUFBdEQ7QUFDRCxLQUhEOztBQUlBc2xCLElBQUFBLEtBQUssQ0FBQ0osT0FBRCxDQUFMO0FBQ0EsV0FBT0EsT0FBUDtBQUNELEdBWEQ7O0FBWUFwSixFQUFBQSxLQUFLLEdBQUcsU0FBU2lKLGNBQVQsQ0FBd0I3MEIsRUFBeEIsRUFBNEI7QUFDbEMsV0FBT2kxQixLQUFLLENBQUNqMUIsRUFBRCxDQUFaO0FBQ0QsR0FGRCxDQWJrQjs7O0FBaUJsQixNQUFJMmEsU0FBSixFQUFhO0FBQ1h5YSxJQUFBQSxLQUFLLEdBQUcsVUFBVXAxQixFQUFWLEVBQWM7QUFDcEJwQyxNQUFBQSxTQUFPLENBQUNtNEIsUUFBUixDQUFpQlAsTUFBTSxDQUFDeDFCLEVBQUQsQ0FBdkI7QUFDRCxLQUZELENBRFc7O0FBS1osR0FMRCxNQUtPLElBQUkrMEIsVUFBUSxJQUFJQSxVQUFRLENBQUNyUCxHQUF6QixFQUE4QjtBQUNuQzBQLElBQUFBLEtBQUssR0FBRyxVQUFVcDFCLEVBQVYsRUFBYztBQUNwQiswQixNQUFBQSxVQUFRLENBQUNyUCxHQUFULENBQWE4UCxNQUFNLENBQUN4MUIsRUFBRCxDQUFuQjtBQUNELEtBRkQsQ0FEbUM7QUFLckM7O0FBQ0MsR0FOTSxNQU1BLElBQUk4MEIsY0FBYyxJQUFJLENBQUNILFFBQXZCLEVBQStCO0FBQ3BDVSxJQUFBQSxPQUFPLEdBQUcsSUFBSVAsY0FBSixFQUFWO0FBQ0FRLElBQUFBLElBQUksR0FBR0QsT0FBTyxDQUFDVyxLQUFmO0FBQ0FYLElBQUFBLE9BQU8sQ0FBQ1ksS0FBUixDQUFjQyxTQUFkLEdBQTBCVCxRQUExQjtBQUNBTCxJQUFBQSxLQUFLLEdBQUducEIsTUFBSSxDQUFDcXBCLElBQUksQ0FBQ00sV0FBTixFQUFtQk4sSUFBbkIsRUFBeUIsQ0FBekIsQ0FBWixDQUpvQztBQU10QztBQUNDLEdBUE0sTUFPQSxJQUNMaDZCLFFBQU0sQ0FBQzY2QixnQkFBUCxJQUNBLzRCLFlBQVUsQ0FBQzlCLFFBQU0sQ0FBQ3M2QixXQUFSLENBRFYsSUFFQSxDQUFDdDZCLFFBQU0sQ0FBQzg2QixhQUZSLElBR0FqQixVQUhBLElBR1lBLFVBQVEsQ0FBQ1UsUUFBVCxLQUFzQixPQUhsQyxJQUlBLENBQUNuNkIsT0FBSyxDQUFDaTZCLElBQUQsQ0FMRCxFQU1MO0FBQ0FQLElBQUFBLEtBQUssR0FBR08sSUFBUjtBQUNBcjZCLElBQUFBLFFBQU0sQ0FBQzY2QixnQkFBUCxDQUF3QixTQUF4QixFQUFtQ1YsUUFBbkMsRUFBNkMsS0FBN0MsRUFGQTtBQUlELEdBVk0sTUFVQSxJQUFJUCxrQkFBa0IsSUFBSS96QixhQUFhLENBQUMsUUFBRCxDQUF2QyxFQUFtRDtBQUN4RGkwQixJQUFBQSxLQUFLLEdBQUcsVUFBVXAxQixFQUFWLEVBQWM7QUFDcEIwSSxNQUFBQSxJQUFJLENBQUNzQixXQUFMLENBQWlCN0ksYUFBYSxDQUFDLFFBQUQsQ0FBOUIsRUFBMEMrekIsa0JBQTFDLElBQWdFLFlBQVk7QUFDMUV4c0IsUUFBQUEsSUFBSSxDQUFDMnRCLFdBQUwsQ0FBaUIsSUFBakI7QUFDQWQsUUFBQUEsR0FBRyxDQUFDdjFCLEVBQUQsQ0FBSDtBQUNELE9BSEQ7QUFJRCxLQUxELENBRHdEOztBQVF6RCxHQVJNLE1BUUE7QUFDTG8xQixJQUFBQSxLQUFLLEdBQUcsVUFBVXAxQixFQUFWLEVBQWM7QUFDcEJzMkIsTUFBQUEsVUFBVSxDQUFDZCxNQUFNLENBQUN4MUIsRUFBRCxDQUFQLEVBQWEsQ0FBYixDQUFWO0FBQ0QsS0FGRDtBQUdEO0FBQ0Y7O0lBRUQ5RSxNQUFBLEdBQWlCO0FBQ2YySCxFQUFBQSxHQUFHLEVBQUVBLEtBRFU7QUFFZitvQixFQUFBQSxLQUFLLEVBQUVBO0FBRlEsQ0FBakI7O0FDN0dBLElBQUlqdUIsV0FBUyxHQUFHaEMsZUFBaEI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztJQUVBVCxpQkFBQSxHQUFpQixvQkFBb0JvSCxJQUFwQixDQUF5QjNFLFdBQXpCLEtBQXVDckMsUUFBTSxDQUFDaTdCLE1BQVAsS0FBa0J4NUIsU0FBMUU7O0FDSEEsSUFBSVksV0FBUyxHQUFHaEMsZUFBaEI7O0lBRUFULG1CQUFBLEdBQWlCLHFCQUFxQm9ILElBQXJCLENBQTBCM0UsV0FBMUIsQ0FBakI7O0FDRkEsSUFBSXJDLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJTSwwQkFBd0IsR0FBR04sOEJBQUEsQ0FBMkRrRyxDQUExRjs7QUFDQSxJQUFJMjBCLFNBQVMsR0FBRzc2QixNQUFBLENBQTZCa0gsR0FBN0M7O0FBQ0EsSUFBSTh4QixNQUFNLEdBQUdoNUIsV0FBYjs7QUFDQSxJQUFJODZCLGFBQWEsR0FBRzk2QixpQkFBcEI7O0FBQ0EsSUFBSSs2QixlQUFlLEdBQUcvNkIsbUJBQXRCOztBQUNBLElBQUlnZixTQUFPLEdBQUdoZixZQUFkOztBQUVBLElBQUlnN0IsZ0JBQWdCLEdBQUdyN0IsUUFBTSxDQUFDcTdCLGdCQUFQLElBQTJCcjdCLFFBQU0sQ0FBQ3M3QixzQkFBekQ7QUFDQSxJQUFJMzFCLFVBQVEsR0FBRzNGLFFBQU0sQ0FBQzJGLFFBQXRCO0FBQ0EsSUFBSXJELFNBQU8sR0FBR3RDLFFBQU0sQ0FBQ3NDLE9BQXJCO0FBQ0EsSUFBSTgyQixTQUFPLEdBQUdwNUIsUUFBTSxDQUFDbzVCLE9BQXJCOztBQUVBLElBQUltQyx3QkFBd0IsR0FBRzU2QiwwQkFBd0IsQ0FBQ1gsUUFBRCxFQUFTLGdCQUFULENBQXZEO0FBQ0EsSUFBSXc3QixjQUFjLEdBQUdELHdCQUF3QixJQUFJQSx3QkFBd0IsQ0FBQ3I2QixLQUExRTtBQUVBLElBQUl1NkIsS0FBSixFQUFXQyxJQUFYLEVBQWlCakwsSUFBakIsRUFBdUJrTCxRQUF2QixFQUErQkMsTUFBL0IsRUFBdUNDLElBQXZDLEVBQTZDQyxPQUE3QyxFQUFzREMsSUFBdEQ7O0FBR0EsSUFBSSxDQUFDUCxjQUFMLEVBQXFCO0FBQ25CQyxFQUFBQSxLQUFLLEdBQUcsWUFBWTtBQUNsQixRQUFJTyxNQUFKLEVBQVluNEIsRUFBWjtBQUNBLFFBQUl3YixTQUFPLEtBQUsyYyxNQUFNLEdBQUcxNUIsU0FBTyxDQUFDMk0sTUFBdEIsQ0FBWCxFQUEwQytzQixNQUFNLENBQUNDLElBQVA7O0FBQzFDLFdBQU9QLElBQVAsRUFBYTtBQUNYNzNCLE1BQUFBLEVBQUUsR0FBRzYzQixJQUFJLENBQUM3M0IsRUFBVjtBQUNBNjNCLE1BQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDNWtCLElBQVo7O0FBQ0EsVUFBSTtBQUNGalQsUUFBQUEsRUFBRTtBQUNILE9BRkQsQ0FFRSxPQUFPMUQsS0FBUCxFQUFjO0FBQ2QsWUFBSXU3QixJQUFKLEVBQVVDLFFBQU0sR0FBaEIsS0FDS2xMLElBQUksR0FBR2h2QixTQUFQO0FBQ0wsY0FBTXRCLEtBQU47QUFDRDtBQUNGOztBQUFDc3dCLElBQUFBLElBQUksR0FBR2h2QixTQUFQO0FBQ0YsUUFBSXU2QixNQUFKLEVBQVlBLE1BQU0sQ0FBQ0UsS0FBUDtBQUNiLEdBZkQsQ0FEbUI7QUFtQm5COzs7QUFDQSxNQUFJLENBQUM3QyxNQUFELElBQVcsQ0FBQ2hhLFNBQVosSUFBdUIsQ0FBQytiLGVBQXhCLElBQTJDQyxnQkFBM0MsSUFBK0QxMUIsVUFBbkUsRUFBNkU7QUFDM0VpMkIsSUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQUMsSUFBQUEsSUFBSSxHQUFHbDJCLFVBQVEsQ0FBQ3cyQixjQUFULENBQXdCLEVBQXhCLENBQVA7QUFDQSxRQUFJZCxnQkFBSixDQUFxQkksS0FBckIsRUFBNEJXLE9BQTVCLENBQW9DUCxJQUFwQyxFQUEwQztBQUFFUSxNQUFBQSxhQUFhLEVBQUU7QUFBakIsS0FBMUM7O0FBQ0FWLElBQUFBLFFBQU0sR0FBRyxZQUFZO0FBQ25CRSxNQUFBQSxJQUFJLENBQUNyd0IsSUFBTCxHQUFZb3dCLE1BQU0sR0FBRyxDQUFDQSxNQUF0QjtBQUNELEtBRkQsQ0FKMkU7O0FBUTVFLEdBUkQsTUFRTyxJQUFJLENBQUNULGFBQUQsSUFBa0IvQixTQUFsQixJQUE2QkEsU0FBTyxDQUFDa0QsT0FBekMsRUFBa0Q7QUFDdkQ7QUFDQVIsSUFBQUEsT0FBTyxHQUFHMUMsU0FBTyxDQUFDa0QsT0FBUixDQUFnQjc2QixTQUFoQixDQUFWLENBRnVEOztBQUl2RHE2QixJQUFBQSxPQUFPLENBQUNyckIsV0FBUixHQUFzQjJvQixTQUF0QjtBQUNBMkMsSUFBQUEsSUFBSSxHQUFHRCxPQUFPLENBQUNDLElBQWY7O0FBQ0FKLElBQUFBLFFBQU0sR0FBRyxZQUFZO0FBQ25CSSxNQUFBQSxJQUFJLENBQUNsN0IsSUFBTCxDQUFVaTdCLE9BQVYsRUFBbUJMLEtBQW5CO0FBQ0QsS0FGRCxDQU51RDs7QUFVeEQsR0FWTSxNQVVBLElBQUlwYyxTQUFKLEVBQWE7QUFDbEJzYyxJQUFBQSxRQUFNLEdBQUcsWUFBWTtBQUNuQnI1QixNQUFBQSxTQUFPLENBQUNtNEIsUUFBUixDQUFpQmdCLEtBQWpCO0FBQ0QsS0FGRCxDQURrQjtBQUtwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNDLEdBVk0sTUFVQTtBQUNMRSxJQUFBQSxRQUFNLEdBQUcsWUFBWTtBQUNuQjtBQUNBVCxNQUFBQSxTQUFTLENBQUNyNkIsSUFBVixDQUFlYixRQUFmLEVBQXVCeTdCLEtBQXZCO0FBQ0QsS0FIRDtBQUlEO0FBQ0Y7O0lBRUQ3N0IsV0FBQSxHQUFpQjQ3QixjQUFjLElBQUksVUFBVTMzQixFQUFWLEVBQWM7QUFDL0MsTUFBSTA0QixJQUFJLEdBQUc7QUFBRTE0QixJQUFBQSxFQUFFLEVBQUVBLEVBQU47QUFBVWlULElBQUFBLElBQUksRUFBRXJWO0FBQWhCLEdBQVg7QUFDQSxNQUFJZ3ZCLElBQUosRUFBVUEsSUFBSSxDQUFDM1osSUFBTCxHQUFZeWxCLElBQVo7O0FBQ1YsTUFBSSxDQUFDYixJQUFMLEVBQVc7QUFDVEEsSUFBQUEsSUFBSSxHQUFHYSxJQUFQO0FBQ0FaLElBQUFBLFFBQU07QUFDUDs7QUFBQ2xMLEVBQUFBLElBQUksR0FBRzhMLElBQVA7QUFDSCxDQVBEOzs7O0FDMUVBLElBQUloNUIsV0FBUyxHQUFHbEQsV0FBaEI7O0FBRUEsSUFBSW04QixpQkFBaUIsR0FBRyxVQUFVaHNCLENBQVYsRUFBYTtBQUNuQyxNQUFJOHJCLE9BQUosRUFBYUcsTUFBYjtBQUNBLE9BQUtYLE9BQUwsR0FBZSxJQUFJdHJCLENBQUosQ0FBTSxVQUFVa3NCLFNBQVYsRUFBcUJDLFFBQXJCLEVBQStCO0FBQ2xELFFBQUlMLE9BQU8sS0FBSzc2QixTQUFaLElBQXlCZzdCLE1BQU0sS0FBS2g3QixTQUF4QyxFQUFtRCxNQUFNQyxTQUFTLENBQUMseUJBQUQsQ0FBZjtBQUNuRDQ2QixJQUFBQSxPQUFPLEdBQUdJLFNBQVY7QUFDQUQsSUFBQUEsTUFBTSxHQUFHRSxRQUFUO0FBQ0QsR0FKYyxDQUFmO0FBS0EsT0FBS0wsT0FBTCxHQUFlLzRCLFdBQVMsQ0FBQys0QixPQUFELENBQXhCO0FBQ0EsT0FBS0csTUFBTCxHQUFjbDVCLFdBQVMsQ0FBQ2s1QixNQUFELENBQXZCO0FBQ0QsQ0FURDtBQVlBOzs7d0JBQ0EsR0FBbUIsVUFBVWpzQixDQUFWLEVBQWE7QUFDOUIsU0FBTyxJQUFJZ3NCLGlCQUFKLENBQXNCaHNCLENBQXRCLENBQVA7QUFDRDs7QUNsQkQsSUFBSWhLLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSXU4QixzQkFBb0IsR0FBR3Y4QixzQkFBM0I7O0lBRUFULGdCQUFBLEdBQWlCLFVBQVU0USxDQUFWLEVBQWFxUixDQUFiLEVBQWdCO0FBQy9CcmIsRUFBQUEsV0FBUSxDQUFDZ0ssQ0FBRCxDQUFSO0FBQ0EsTUFBSTlNLFVBQVEsQ0FBQ21lLENBQUQsQ0FBUixJQUFlQSxDQUFDLENBQUNwUixXQUFGLEtBQWtCRCxDQUFyQyxFQUF3QyxPQUFPcVIsQ0FBUDtBQUN4QyxNQUFJZ2IsaUJBQWlCLEdBQUdELHNCQUFvQixDQUFDcjJCLENBQXJCLENBQXVCaUssQ0FBdkIsQ0FBeEI7QUFDQSxNQUFJOHJCLE9BQU8sR0FBR08saUJBQWlCLENBQUNQLE9BQWhDO0FBQ0FBLEVBQUFBLE9BQU8sQ0FBQ3phLENBQUQsQ0FBUDtBQUNBLFNBQU9nYixpQkFBaUIsQ0FBQ2YsT0FBekI7QUFDRCxDQVBEOztBQ0pBLElBQUk5N0IsUUFBTSxHQUFHSyxRQUFiOztJQUVBVCxrQkFBQSxHQUFpQixVQUFVbUcsQ0FBVixFQUFhNEosQ0FBYixFQUFnQjtBQUMvQixNQUFJbXRCLE9BQU8sR0FBRzk4QixRQUFNLENBQUM4OEIsT0FBckI7O0FBQ0EsTUFBSUEsT0FBTyxJQUFJQSxPQUFPLENBQUMzOEIsS0FBdkIsRUFBOEI7QUFDNUIrQixJQUFBQSxTQUFTLENBQUNDLE1BQVYsS0FBcUIsQ0FBckIsR0FBeUIyNkIsT0FBTyxDQUFDMzhCLEtBQVIsQ0FBYzRGLENBQWQsQ0FBekIsR0FBNEMrMkIsT0FBTyxDQUFDMzhCLEtBQVIsQ0FBYzRGLENBQWQsRUFBaUI0SixDQUFqQixDQUE1QztBQUNEO0FBQ0YsQ0FMRDs7SUNGQS9QLFNBQUEsR0FBaUIsVUFBVU0sSUFBVixFQUFnQjtBQUMvQixNQUFJO0FBQ0YsV0FBTztBQUFFQyxNQUFBQSxLQUFLLEVBQUUsS0FBVDtBQUFnQmUsTUFBQUEsS0FBSyxFQUFFaEIsSUFBSTtBQUEzQixLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9DLEtBQVAsRUFBYztBQUNkLFdBQU87QUFBRUEsTUFBQUEsS0FBSyxFQUFFLElBQVQ7QUFBZWUsTUFBQUEsS0FBSyxFQUFFZjtBQUF0QixLQUFQO0FBQ0Q7QUFDRixDQU5EOztJQ0FBUCxlQUFBLEdBQWlCLE9BQU9FLE1BQVAsSUFBaUIsUUFBbEM7O0FDQ0EsSUFBSWlTLElBQUMsR0FBRzFSLE9BQVI7O0FBRUEsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJMDhCLGVBQWEsR0FBRzE4Qix3QkFBcEI7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUk0akIsYUFBVyxHQUFHNWpCLGFBQWxCOztBQUNBLElBQUlnVixnQkFBYyxHQUFHaFYsc0JBQXJCOztBQUNBLElBQUkrUixnQkFBYyxHQUFHL1IsZ0JBQXJCOztBQUNBLElBQUk4aEIsWUFBVSxHQUFHOWhCLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSTZqQixZQUFVLEdBQUc3akIsWUFBakI7O0FBQ0EsSUFBSXlHLGFBQWEsR0FBR3pHLGVBQXBCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUkyYiw2QkFBMkIsR0FBRzNiLDZCQUFsQzs7QUFDQSxJQUFJc3BCLG9CQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJazhCLE1BQUksR0FBR2w4QixNQUFBLENBQTZCa0gsR0FBeEM7O0FBQ0EsSUFBSXkxQixXQUFTLEdBQUczOEIsV0FBaEI7O0FBQ0EsSUFBSTQ4QixnQkFBYyxHQUFHNThCLGdCQUFyQjs7QUFDQSxJQUFJNjhCLGtCQUFnQixHQUFHNzhCLGtCQUF2Qjs7QUFDQSxJQUFJODhCLDRCQUEwQixHQUFHOThCLHNCQUFqQzs7QUFDQSxJQUFJKzhCLFNBQU8sR0FBRy84QixTQUFkOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUNBLElBQUlnTCxVQUFRLEdBQUdoTCxVQUFmOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUlnOUIsVUFBVSxHQUFHaDlCLGVBQWpCOztBQUNBLElBQUlnZixTQUFPLEdBQUdoZixZQUFkOztBQUNBLElBQUl1QyxVQUFVLEdBQUd2QyxlQUFqQjs7QUFFQSxJQUFJaVEsU0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCO0FBQ0EsSUFBSWc0QixPQUFPLEdBQUcsU0FBZDtBQUNBLElBQUkxMEIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDbEksR0FBM0M7QUFDQSxJQUFJZ1Msa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSWcyQix1QkFBdUIsR0FBRzcwQixxQkFBbUIsQ0FBQ2hCLFNBQXBCLENBQThCNDFCLE9BQTlCLENBQTlCO0FBQ0EsSUFBSUUsc0JBQXNCLEdBQUdULGVBQWEsSUFBSUEsZUFBYSxDQUFDMTBCLFNBQTVEO0FBQ0EsSUFBSW8xQixrQkFBa0IsR0FBR1YsZUFBekI7QUFDQSxJQUFJVywyQkFBMkIsR0FBR0Ysc0JBQWxDO0FBQ0EsSUFBSTk3QixXQUFTLEdBQUcxQixRQUFNLENBQUMwQixTQUF2QjtBQUNBLElBQUlpRSxVQUFRLEdBQUczRixRQUFNLENBQUMyRixRQUF0QjtBQUNBLElBQUlyRCxTQUFPLEdBQUd0QyxRQUFNLENBQUNzQyxPQUFyQjtBQUNBLElBQUlzNkIsb0JBQW9CLEdBQUdPLDRCQUEwQixDQUFDNTJCLENBQXREO0FBQ0EsSUFBSW8zQiwyQkFBMkIsR0FBR2Ysb0JBQWxDO0FBQ0EsSUFBSWdCLGNBQWMsR0FBRyxDQUFDLEVBQUVqNEIsVUFBUSxJQUFJQSxVQUFRLENBQUNrNEIsV0FBckIsSUFBb0M3OUIsUUFBTSxDQUFDODlCLGFBQTdDLENBQXRCO0FBQ0EsSUFBSUMsc0JBQXNCLEdBQUdqOEIsWUFBVSxDQUFDOUIsUUFBTSxDQUFDZytCLHFCQUFSLENBQXZDO0FBQ0EsSUFBSUMsbUJBQW1CLEdBQUcsb0JBQTFCO0FBQ0EsSUFBSUMsaUJBQWlCLEdBQUcsa0JBQXhCO0FBQ0EsSUFBSUMsT0FBTyxHQUFHLENBQWQ7QUFDQSxJQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFDQSxJQUFJQyxRQUFRLEdBQUcsQ0FBZjtBQUNBLElBQUlDLE9BQU8sR0FBRyxDQUFkO0FBQ0EsSUFBSUMsU0FBUyxHQUFHLENBQWhCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLEtBQWxCO0FBQ0EsSUFBSUMsUUFBSixFQUFjQyxvQkFBZCxFQUFvQ0MsY0FBcEMsRUFBb0RDLFVBQXBEO0FBRUEsSUFBSXh5QixRQUFNLEdBQUdmLFVBQVEsQ0FBQ2l5QixPQUFELEVBQVUsWUFBWTtBQUN6QyxNQUFJdUIsMEJBQTBCLEdBQUcvM0IsYUFBYSxDQUFDMjJCLGtCQUFELENBQTlDO0FBQ0EsTUFBSXFCLHNCQUFzQixHQUFHRCwwQkFBMEIsS0FBSzc3QixNQUFNLENBQUN5NkIsa0JBQUQsQ0FBbEUsQ0FGeUM7QUFJekM7QUFDQTs7QUFDQSxNQUFJLENBQUNxQixzQkFBRCxJQUEyQmw4QixVQUFVLEtBQUssRUFBOUMsRUFBa0QsT0FBTyxJQUFQLENBTlQ7QUFVekM7QUFDQTs7QUFDQSxNQUFJQSxVQUFVLElBQUksRUFBZCxJQUFvQixjQUFjb0UsSUFBZCxDQUFtQjYzQiwwQkFBbkIsQ0FBeEIsRUFBd0UsT0FBTyxLQUFQLENBWi9COztBQWN6QyxNQUFJL0MsT0FBTyxHQUFHLElBQUkyQixrQkFBSixDQUF1QixVQUFVbkIsT0FBVixFQUFtQjtBQUFFQSxJQUFBQSxPQUFPLENBQUMsQ0FBRCxDQUFQO0FBQWEsR0FBekQsQ0FBZDs7QUFDQSxNQUFJeUMsV0FBVyxHQUFHLFVBQVU3K0IsSUFBVixFQUFnQjtBQUNoQ0EsSUFBQUEsSUFBSSxDQUFDLFlBQVk7QUFBRTtBQUFhLEtBQTVCLEVBQThCLFlBQVk7QUFBRTtBQUFhLEtBQXpELENBQUo7QUFDRCxHQUZEOztBQUdBLE1BQUl1USxXQUFXLEdBQUdxckIsT0FBTyxDQUFDcnJCLFdBQVIsR0FBc0IsRUFBeEM7QUFDQUEsRUFBQUEsV0FBVyxDQUFDSCxTQUFELENBQVgsR0FBdUJ5dUIsV0FBdkI7QUFDQVAsRUFBQUEsV0FBVyxHQUFHMUMsT0FBTyxDQUFDQyxJQUFSLENBQWEsWUFBWTtBQUFFO0FBQWEsR0FBeEMsYUFBcURnRCxXQUFuRTtBQUNBLE1BQUksQ0FBQ1AsV0FBTCxFQUFrQixPQUFPLElBQVAsQ0FyQnVCOztBQXVCekMsU0FBTyxDQUFDTSxzQkFBRCxJQUEyQnpCLFVBQTNCLElBQXlDLENBQUNVLHNCQUFqRDtBQUNELENBeEJvQixDQUFyQjtBQTBCQSxJQUFJOWhCLG1CQUFtQixHQUFHN1AsUUFBTSxJQUFJLENBQUM0UCw2QkFBMkIsQ0FBQyxVQUFVeEYsUUFBVixFQUFvQjtBQUNuRmluQixFQUFBQSxrQkFBa0IsQ0FBQ3VCLEdBQW5CLENBQXVCeG9CLFFBQXZCLEVBQWlDLE9BQWpDLEVBQTBDLFlBQVk7QUFBRTtBQUFhLEdBQXJFO0FBQ0QsQ0FGK0QsQ0FBaEU7O0FBS0EsSUFBSXlvQixVQUFVLEdBQUcsVUFBVXYvQixFQUFWLEVBQWM7QUFDN0IsTUFBSXE4QixJQUFKO0FBQ0EsU0FBT3I0QixVQUFRLENBQUNoRSxFQUFELENBQVIsSUFBZ0JvQyxZQUFVLENBQUNpNkIsSUFBSSxHQUFHcjhCLEVBQUUsQ0FBQ3E4QixJQUFYLENBQTFCLEdBQTZDQSxJQUE3QyxHQUFvRCxLQUEzRDtBQUNELENBSEQ7O0FBS0EsSUFBSUosTUFBTSxHQUFHLFVBQVUvekIsS0FBVixFQUFpQnMzQixRQUFqQixFQUEyQjtBQUN0QyxNQUFJdDNCLEtBQUssQ0FBQ3UzQixRQUFWLEVBQW9CO0FBQ3BCdjNCLEVBQUFBLEtBQUssQ0FBQ3UzQixRQUFOLEdBQWlCLElBQWpCO0FBQ0EsTUFBSUMsS0FBSyxHQUFHeDNCLEtBQUssQ0FBQ3kzQixTQUFsQjtBQUNBckMsRUFBQUEsV0FBUyxDQUFDLFlBQVk7QUFDcEIsUUFBSTk3QixLQUFLLEdBQUcwRyxLQUFLLENBQUMxRyxLQUFsQjtBQUNBLFFBQUlvK0IsRUFBRSxHQUFHMTNCLEtBQUssQ0FBQ0EsS0FBTixJQUFldzJCLFNBQXhCO0FBQ0EsUUFBSXgwQixLQUFLLEdBQUcsQ0FBWixDQUhvQjs7QUFLcEIsV0FBT3cxQixLQUFLLENBQUNqOUIsTUFBTixHQUFleUgsS0FBdEIsRUFBNkI7QUFDM0IsVUFBSTIxQixRQUFRLEdBQUdILEtBQUssQ0FBQ3gxQixLQUFLLEVBQU4sQ0FBcEI7QUFDQSxVQUFJNDFCLE9BQU8sR0FBR0YsRUFBRSxHQUFHQyxRQUFRLENBQUNELEVBQVosR0FBaUJDLFFBQVEsQ0FBQ0UsSUFBMUM7QUFDQSxVQUFJbkQsT0FBTyxHQUFHaUQsUUFBUSxDQUFDakQsT0FBdkI7QUFDQSxVQUFJRyxNQUFNLEdBQUc4QyxRQUFRLENBQUM5QyxNQUF0QjtBQUNBLFVBQUl4dEIsTUFBTSxHQUFHc3dCLFFBQVEsQ0FBQ3R3QixNQUF0QjtBQUNBLFVBQUl4SixNQUFKLEVBQVlzMkIsSUFBWixFQUFrQjJELE1BQWxCOztBQUNBLFVBQUk7QUFDRixZQUFJRixPQUFKLEVBQWE7QUFDWCxjQUFJLENBQUNGLEVBQUwsRUFBUztBQUNQLGdCQUFJMTNCLEtBQUssQ0FBQyszQixTQUFOLEtBQW9CcEIsU0FBeEIsRUFBbUNxQixpQkFBaUIsQ0FBQ2g0QixLQUFELENBQWpCO0FBQ25DQSxZQUFBQSxLQUFLLENBQUMrM0IsU0FBTixHQUFrQnJCLE9BQWxCO0FBQ0Q7O0FBQ0QsY0FBSWtCLE9BQU8sS0FBSyxJQUFoQixFQUFzQi81QixNQUFNLEdBQUd2RSxLQUFULENBQXRCLEtBQ0s7QUFDSCxnQkFBSStOLE1BQUosRUFBWUEsTUFBTSxDQUFDaXRCLEtBQVA7QUFDWnoyQixZQUFBQSxNQUFNLEdBQUcrNUIsT0FBTyxDQUFDdCtCLEtBQUQsQ0FBaEIsQ0FGRzs7QUFHSCxnQkFBSStOLE1BQUosRUFBWTtBQUNWQSxjQUFBQSxNQUFNLENBQUNndEIsSUFBUDtBQUNBeUQsY0FBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGOztBQUNELGNBQUlqNkIsTUFBTSxLQUFLODVCLFFBQVEsQ0FBQ3pELE9BQXhCLEVBQWlDO0FBQy9CVyxZQUFBQSxNQUFNLENBQUMvNkIsV0FBUyxDQUFDLHFCQUFELENBQVYsQ0FBTjtBQUNELFdBRkQsTUFFTyxJQUFJcTZCLElBQUksR0FBR2tELFVBQVUsQ0FBQ3g1QixNQUFELENBQXJCLEVBQStCO0FBQ3BDczJCLFlBQUFBLElBQUksQ0FBQ2w3QixJQUFMLENBQVU0RSxNQUFWLEVBQWtCNjJCLE9BQWxCLEVBQTJCRyxNQUEzQjtBQUNELFdBRk0sTUFFQUgsT0FBTyxDQUFDNzJCLE1BQUQsQ0FBUDtBQUNSLFNBbkJELE1BbUJPZzNCLE1BQU0sQ0FBQ3Y3QixLQUFELENBQU47QUFDUixPQXJCRCxDQXFCRSxPQUFPZixLQUFQLEVBQWM7QUFDZCxZQUFJOE8sTUFBTSxJQUFJLENBQUN5d0IsTUFBZixFQUF1Qnp3QixNQUFNLENBQUNndEIsSUFBUDtBQUN2QlEsUUFBQUEsTUFBTSxDQUFDdDhCLEtBQUQsQ0FBTjtBQUNEO0FBQ0Y7O0FBQ0R5SCxJQUFBQSxLQUFLLENBQUN5M0IsU0FBTixHQUFrQixFQUFsQjtBQUNBejNCLElBQUFBLEtBQUssQ0FBQ3UzQixRQUFOLEdBQWlCLEtBQWpCO0FBQ0EsUUFBSUQsUUFBUSxJQUFJLENBQUN0M0IsS0FBSyxDQUFDKzNCLFNBQXZCLEVBQWtDRSxXQUFXLENBQUNqNEIsS0FBRCxDQUFYO0FBQ25DLEdBekNRLENBQVQ7QUEwQ0QsQ0E5Q0Q7O0FBZ0RBLElBQUlrMkIsZUFBYSxHQUFHLFVBQVU1NEIsSUFBVixFQUFnQjQyQixPQUFoQixFQUF5QmdFLE1BQXpCLEVBQWlDO0FBQ25ELE1BQUkxRixLQUFKLEVBQVdvRixPQUFYOztBQUNBLE1BQUk1QixjQUFKLEVBQW9CO0FBQ2xCeEQsSUFBQUEsS0FBSyxHQUFHejBCLFVBQVEsQ0FBQ2s0QixXQUFULENBQXFCLE9BQXJCLENBQVI7QUFDQXpELElBQUFBLEtBQUssQ0FBQzBCLE9BQU4sR0FBZ0JBLE9BQWhCO0FBQ0ExQixJQUFBQSxLQUFLLENBQUMwRixNQUFOLEdBQWVBLE1BQWY7QUFDQTFGLElBQUFBLEtBQUssQ0FBQzJGLFNBQU4sQ0FBZ0I3NkIsSUFBaEIsRUFBc0IsS0FBdEIsRUFBNkIsSUFBN0I7QUFDQWxGLElBQUFBLFFBQU0sQ0FBQzg5QixhQUFQLENBQXFCMUQsS0FBckI7QUFDRCxHQU5ELE1BTU9BLEtBQUssR0FBRztBQUFFMEIsSUFBQUEsT0FBTyxFQUFFQSxPQUFYO0FBQW9CZ0UsSUFBQUEsTUFBTSxFQUFFQTtBQUE1QixHQUFSOztBQUNQLE1BQUksQ0FBQy9CLHNCQUFELEtBQTRCeUIsT0FBTyxHQUFHeC9CLFFBQU0sQ0FBQyxPQUFPa0YsSUFBUixDQUE1QyxDQUFKLEVBQWdFczZCLE9BQU8sQ0FBQ3BGLEtBQUQsQ0FBUCxDQUFoRSxLQUNLLElBQUlsMUIsSUFBSSxLQUFLKzRCLG1CQUFiLEVBQWtDZixrQkFBZ0IsQ0FBQyw2QkFBRCxFQUFnQzRDLE1BQWhDLENBQWhCO0FBQ3hDLENBWEQ7O0FBYUEsSUFBSUQsV0FBVyxHQUFHLFVBQVVqNEIsS0FBVixFQUFpQjtBQUNqQzIwQixFQUFBQSxNQUFJLENBQUMxN0IsSUFBTCxDQUFVYixRQUFWLEVBQWtCLFlBQVk7QUFDNUIsUUFBSTg3QixPQUFPLEdBQUdsMEIsS0FBSyxDQUFDTSxNQUFwQjtBQUNBLFFBQUloSCxLQUFLLEdBQUcwRyxLQUFLLENBQUMxRyxLQUFsQjtBQUNBLFFBQUk4K0IsWUFBWSxHQUFHQyxXQUFXLENBQUNyNEIsS0FBRCxDQUE5QjtBQUNBLFFBQUluQyxNQUFKOztBQUNBLFFBQUl1NkIsWUFBSixFQUFrQjtBQUNoQnY2QixNQUFBQSxNQUFNLEdBQUcyM0IsU0FBTyxDQUFDLFlBQVk7QUFDM0IsWUFBSS9kLFNBQUosRUFBYTtBQUNYL2MsVUFBQUEsU0FBTyxDQUFDNDlCLElBQVIsQ0FBYSxvQkFBYixFQUFtQ2gvQixLQUFuQyxFQUEwQzQ2QixPQUExQztBQUNELFNBRkQsTUFFT2dDLGVBQWEsQ0FBQ0csbUJBQUQsRUFBc0JuQyxPQUF0QixFQUErQjU2QixLQUEvQixDQUFiO0FBQ1IsT0FKZSxDQUFoQixDQURnQjs7QUFPaEIwRyxNQUFBQSxLQUFLLENBQUMrM0IsU0FBTixHQUFrQnRnQixTQUFPLElBQUk0Z0IsV0FBVyxDQUFDcjRCLEtBQUQsQ0FBdEIsR0FBZ0MyMkIsU0FBaEMsR0FBNENELE9BQTlEO0FBQ0EsVUFBSTc0QixNQUFNLENBQUN0RixLQUFYLEVBQWtCLE1BQU1zRixNQUFNLENBQUN2RSxLQUFiO0FBQ25CO0FBQ0YsR0FmRDtBQWdCRCxDQWpCRDs7QUFtQkEsSUFBSSsrQixXQUFXLEdBQUcsVUFBVXI0QixLQUFWLEVBQWlCO0FBQ2pDLFNBQU9BLEtBQUssQ0FBQyszQixTQUFOLEtBQW9CckIsT0FBcEIsSUFBK0IsQ0FBQzEyQixLQUFLLENBQUNvMEIsTUFBN0M7QUFDRCxDQUZEOztBQUlBLElBQUk0RCxpQkFBaUIsR0FBRyxVQUFVaDRCLEtBQVYsRUFBaUI7QUFDdkMyMEIsRUFBQUEsTUFBSSxDQUFDMTdCLElBQUwsQ0FBVWIsUUFBVixFQUFrQixZQUFZO0FBQzVCLFFBQUk4N0IsT0FBTyxHQUFHbDBCLEtBQUssQ0FBQ00sTUFBcEI7O0FBQ0EsUUFBSW1YLFNBQUosRUFBYTtBQUNYL2MsTUFBQUEsU0FBTyxDQUFDNDlCLElBQVIsQ0FBYSxrQkFBYixFQUFpQ3BFLE9BQWpDO0FBQ0QsS0FGRCxNQUVPZ0MsZUFBYSxDQUFDSSxpQkFBRCxFQUFvQnBDLE9BQXBCLEVBQTZCbDBCLEtBQUssQ0FBQzFHLEtBQW5DLENBQWI7QUFDUixHQUxEO0FBTUQsQ0FQRDs7QUFTQSxJQUFJeVAsTUFBSSxHQUFHLFVBQVU5TSxFQUFWLEVBQWMrRCxLQUFkLEVBQXFCdTRCLE1BQXJCLEVBQTZCO0FBQ3RDLFNBQU8sVUFBVWovQixLQUFWLEVBQWlCO0FBQ3RCMkMsSUFBQUEsRUFBRSxDQUFDK0QsS0FBRCxFQUFRMUcsS0FBUixFQUFlaS9CLE1BQWYsQ0FBRjtBQUNELEdBRkQ7QUFHRCxDQUpEOztBQU1BLElBQUlDLGNBQWMsR0FBRyxVQUFVeDRCLEtBQVYsRUFBaUIxRyxLQUFqQixFQUF3QmkvQixNQUF4QixFQUFnQztBQUNuRCxNQUFJdjRCLEtBQUssQ0FBQ3VQLElBQVYsRUFBZ0I7QUFDaEJ2UCxFQUFBQSxLQUFLLENBQUN1UCxJQUFOLEdBQWEsSUFBYjtBQUNBLE1BQUlncEIsTUFBSixFQUFZdjRCLEtBQUssR0FBR3U0QixNQUFSO0FBQ1p2NEIsRUFBQUEsS0FBSyxDQUFDMUcsS0FBTixHQUFjQSxLQUFkO0FBQ0EwRyxFQUFBQSxLQUFLLENBQUNBLEtBQU4sR0FBY3kyQixRQUFkO0FBQ0ExQyxFQUFBQSxNQUFNLENBQUMvekIsS0FBRCxFQUFRLElBQVIsQ0FBTjtBQUNELENBUEQ7O0FBU0EsSUFBSXk0QixlQUFlLEdBQUcsVUFBVXo0QixLQUFWLEVBQWlCMUcsS0FBakIsRUFBd0JpL0IsTUFBeEIsRUFBZ0M7QUFDcEQsTUFBSXY0QixLQUFLLENBQUN1UCxJQUFWLEVBQWdCO0FBQ2hCdlAsRUFBQUEsS0FBSyxDQUFDdVAsSUFBTixHQUFhLElBQWI7QUFDQSxNQUFJZ3BCLE1BQUosRUFBWXY0QixLQUFLLEdBQUd1NEIsTUFBUjs7QUFDWixNQUFJO0FBQ0YsUUFBSXY0QixLQUFLLENBQUNNLE1BQU4sS0FBaUJoSCxLQUFyQixFQUE0QixNQUFNUSxXQUFTLENBQUMsa0NBQUQsQ0FBZjtBQUM1QixRQUFJcTZCLElBQUksR0FBR2tELFVBQVUsQ0FBQy85QixLQUFELENBQXJCOztBQUNBLFFBQUk2NkIsSUFBSixFQUFVO0FBQ1JpQixNQUFBQSxXQUFTLENBQUMsWUFBWTtBQUNwQixZQUFJNU4sT0FBTyxHQUFHO0FBQUVqWSxVQUFBQSxJQUFJLEVBQUU7QUFBUixTQUFkOztBQUNBLFlBQUk7QUFDRjRrQixVQUFBQSxJQUFJLENBQUNsN0IsSUFBTCxDQUFVSyxLQUFWLEVBQ0V5UCxNQUFJLENBQUMwdkIsZUFBRCxFQUFrQmpSLE9BQWxCLEVBQTJCeG5CLEtBQTNCLENBRE4sRUFFRStJLE1BQUksQ0FBQ3l2QixjQUFELEVBQWlCaFIsT0FBakIsRUFBMEJ4bkIsS0FBMUIsQ0FGTjtBQUlELFNBTEQsQ0FLRSxPQUFPekgsS0FBUCxFQUFjO0FBQ2RpZ0MsVUFBQUEsY0FBYyxDQUFDaFIsT0FBRCxFQUFVanZCLEtBQVYsRUFBaUJ5SCxLQUFqQixDQUFkO0FBQ0Q7QUFDRixPQVZRLENBQVQ7QUFXRCxLQVpELE1BWU87QUFDTEEsTUFBQUEsS0FBSyxDQUFDMUcsS0FBTixHQUFjQSxLQUFkO0FBQ0EwRyxNQUFBQSxLQUFLLENBQUNBLEtBQU4sR0FBY3cyQixTQUFkO0FBQ0F6QyxNQUFBQSxNQUFNLENBQUMvekIsS0FBRCxFQUFRLEtBQVIsQ0FBTjtBQUNEO0FBQ0YsR0FwQkQsQ0FvQkUsT0FBT3pILEtBQVAsRUFBYztBQUNkaWdDLElBQUFBLGNBQWMsQ0FBQztBQUFFanBCLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBQUQsRUFBa0JoWCxLQUFsQixFQUF5QnlILEtBQXpCLENBQWQ7QUFDRDtBQUNGLENBM0JEOzs7QUE4QkEsSUFBSXdFLFFBQUosRUFBWTtBQUNWO0FBQ0FxeEIsRUFBQUEsa0JBQWtCLEdBQUcsU0FBU3JFLE9BQVQsQ0FBaUJrSCxRQUFqQixFQUEyQjtBQUM5Q3BjLElBQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU91WixrQkFBUCxFQUEyQkgsT0FBM0IsQ0FBVjtBQUNBLzVCLElBQUFBLFdBQVMsQ0FBQys4QixRQUFELENBQVQ7QUFDQTdCLElBQUFBLFFBQVEsQ0FBQzU5QixJQUFULENBQWMsSUFBZDtBQUNBLFFBQUkrRyxLQUFLLEdBQUdnQixrQkFBZ0IsQ0FBQyxJQUFELENBQTVCOztBQUNBLFFBQUk7QUFDRjAzQixNQUFBQSxRQUFRLENBQUMzdkIsTUFBSSxDQUFDMHZCLGVBQUQsRUFBa0J6NEIsS0FBbEIsQ0FBTCxFQUErQitJLE1BQUksQ0FBQ3l2QixjQUFELEVBQWlCeDRCLEtBQWpCLENBQW5DLENBQVI7QUFDRCxLQUZELENBRUUsT0FBT3pILEtBQVAsRUFBYztBQUNkaWdDLE1BQUFBLGNBQWMsQ0FBQ3g0QixLQUFELEVBQVF6SCxLQUFSLENBQWQ7QUFDRDtBQUNGLEdBVkQ7O0FBV0F1OUIsRUFBQUEsMkJBQTJCLEdBQUdELGtCQUFrQixDQUFDcDFCLFNBQWpELENBYlU7O0FBZVZvMkIsRUFBQUEsUUFBUSxHQUFHLFNBQVNyRixPQUFULENBQWlCa0gsUUFBakIsRUFBMkI7QUFDcEM5dEIsSUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssTUFBQUEsSUFBSSxFQUFFeTFCLE9BRGU7QUFFckJubUIsTUFBQUEsSUFBSSxFQUFFLEtBRmU7QUFHckJnb0IsTUFBQUEsUUFBUSxFQUFFLEtBSFc7QUFJckJuRCxNQUFBQSxNQUFNLEVBQUUsS0FKYTtBQUtyQnFELE1BQUFBLFNBQVMsRUFBRSxFQUxVO0FBTXJCTSxNQUFBQSxTQUFTLEVBQUUsS0FOVTtBQU9yQi8zQixNQUFBQSxLQUFLLEVBQUV1MkIsT0FQYztBQVFyQmo5QixNQUFBQSxLQUFLLEVBQUVPO0FBUmMsS0FBUCxDQUFoQjtBQVVELEdBWEQ7O0FBWUFnOUIsRUFBQUEsUUFBUSxDQUFDcDJCLFNBQVQsR0FBcUI0YixhQUFXLENBQUN5WiwyQkFBRCxFQUE4QjtBQUM1RDtBQUNBO0FBQ0EzQixJQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjd0UsV0FBZCxFQUEyQkMsVUFBM0IsRUFBdUM7QUFDM0MsVUFBSTU0QixLQUFLLEdBQUcyMUIsdUJBQXVCLENBQUMsSUFBRCxDQUFuQztBQUNBLFVBQUlnQyxRQUFRLEdBQUczQyxvQkFBb0IsQ0FBQ2pULG9CQUFrQixDQUFDLElBQUQsRUFBTzhULGtCQUFQLENBQW5CLENBQW5DO0FBQ0E4QixNQUFBQSxRQUFRLENBQUNELEVBQVQsR0FBY3g5QixZQUFVLENBQUN5K0IsV0FBRCxDQUFWLEdBQTBCQSxXQUExQixHQUF3QyxJQUF0RDtBQUNBaEIsTUFBQUEsUUFBUSxDQUFDRSxJQUFULEdBQWdCMzlCLFlBQVUsQ0FBQzArQixVQUFELENBQVYsSUFBMEJBLFVBQTFDO0FBQ0FqQixNQUFBQSxRQUFRLENBQUN0d0IsTUFBVCxHQUFrQm9RLFNBQU8sR0FBRy9jLFNBQU8sQ0FBQzJNLE1BQVgsR0FBb0J4TixTQUE3QztBQUNBbUcsTUFBQUEsS0FBSyxDQUFDbzBCLE1BQU4sR0FBZSxJQUFmO0FBQ0FwMEIsTUFBQUEsS0FBSyxDQUFDeTNCLFNBQU4sQ0FBZ0JqN0IsSUFBaEIsQ0FBcUJtN0IsUUFBckI7QUFDQSxVQUFJMzNCLEtBQUssQ0FBQ0EsS0FBTixJQUFldTJCLE9BQW5CLEVBQTRCeEMsTUFBTSxDQUFDL3pCLEtBQUQsRUFBUSxLQUFSLENBQU47QUFDNUIsYUFBTzIzQixRQUFRLENBQUN6RCxPQUFoQjtBQUNELEtBYjJEO0FBYzVEO0FBQ0E7QUFDQSxhQUFTLFVBQVUwRSxVQUFWLEVBQXNCO0FBQzdCLGFBQU8sS0FBS3pFLElBQUwsQ0FBVXQ2QixTQUFWLEVBQXFCKytCLFVBQXJCLENBQVA7QUFDRDtBQWxCMkQsR0FBOUIsQ0FBaEM7O0FBb0JBOUIsRUFBQUEsb0JBQW9CLEdBQUcsWUFBWTtBQUNqQyxRQUFJNUMsT0FBTyxHQUFHLElBQUkyQyxRQUFKLEVBQWQ7QUFDQSxRQUFJNzJCLEtBQUssR0FBR2dCLGtCQUFnQixDQUFDa3pCLE9BQUQsQ0FBNUI7QUFDQSxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLUSxPQUFMLEdBQWUzckIsTUFBSSxDQUFDMHZCLGVBQUQsRUFBa0J6NEIsS0FBbEIsQ0FBbkI7QUFDQSxTQUFLNjBCLE1BQUwsR0FBYzlyQixNQUFJLENBQUN5dkIsY0FBRCxFQUFpQng0QixLQUFqQixDQUFsQjtBQUNELEdBTkQ7O0FBT0F1MUIsRUFBQUEsNEJBQTBCLENBQUM1MkIsQ0FBM0IsR0FBK0JxMkIsb0JBQW9CLEdBQUcsVUFBVXBzQixDQUFWLEVBQWE7QUFDakUsV0FBT0EsQ0FBQyxLQUFLaXRCLGtCQUFOLElBQTRCanRCLENBQUMsS0FBS211QixjQUFsQyxHQUNILElBQUlELG9CQUFKLENBQXlCbHVCLENBQXpCLENBREcsR0FFSG10QiwyQkFBMkIsQ0FBQ250QixDQUFELENBRi9CO0FBR0QsR0FKRDs7QUFNQSxNQUFnQjFPLFlBQVUsQ0FBQ2k3QixlQUFELENBQXRCLElBQXlDUyxzQkFBc0IsS0FBS2w5QixNQUFNLENBQUMrSCxTQUEvRSxFQUEwRjtBQUN4RnUyQixJQUFBQSxVQUFVLEdBQUdwQixzQkFBc0IsQ0FBQ3pCLElBQXBDOztBQUVBLFFBQUksQ0FBQ3lDLFdBQUwsRUFBa0I7QUFDaEI7QUFDQTF5QixNQUFBQSxVQUFRLENBQUMweEIsc0JBQUQsRUFBeUIsTUFBekIsRUFBaUMsU0FBU3pCLElBQVQsQ0FBY3dFLFdBQWQsRUFBMkJDLFVBQTNCLEVBQXVDO0FBQzlFLFlBQUk5d0IsSUFBSSxHQUFHLElBQVg7QUFDQSxlQUFPLElBQUkrdEIsa0JBQUosQ0FBdUIsVUFBVW5CLE9BQVYsRUFBbUJHLE1BQW5CLEVBQTJCO0FBQ3ZEbUMsVUFBQUEsVUFBVSxDQUFDLzlCLElBQVgsQ0FBZ0I2TyxJQUFoQixFQUFzQjRzQixPQUF0QixFQUErQkcsTUFBL0I7QUFDRCxTQUZNLEVBRUpWLElBRkksQ0FFQ3dFLFdBRkQsRUFFY0MsVUFGZCxDQUFQLENBRjhFO0FBTS9FLE9BTk8sRUFNTDtBQUFFeDNCLFFBQUFBLE1BQU0sRUFBRTtBQUFWLE9BTkssQ0FBUixDQUZnQjs7QUFXaEI4QyxNQUFBQSxVQUFRLENBQUMweEIsc0JBQUQsRUFBeUIsT0FBekIsRUFBa0NFLDJCQUEyQixDQUFDLE9BQUQsQ0FBN0QsRUFBd0U7QUFBRTEwQixRQUFBQSxNQUFNLEVBQUU7QUFBVixPQUF4RSxDQUFSO0FBQ0QsS0FmdUY7OztBQWtCeEYsUUFBSTtBQUNGLGFBQU93MEIsc0JBQXNCLENBQUMvc0IsV0FBOUI7QUFDRCxLQUZELENBRUUsT0FBT3RRLEtBQVAsRUFBYztBQUFFO0FBQWEsS0FwQnlEOzs7QUF1QnhGLFFBQUlrVixnQkFBSixFQUFvQjtBQUNsQkEsTUFBQUEsZ0JBQWMsQ0FBQ21vQixzQkFBRCxFQUF5QkUsMkJBQXpCLENBQWQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQzckIsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQndULEVBQUFBLElBQUksRUFBRSxJQUF0QjtBQUE0QmpILEVBQUFBLE1BQU0sRUFBRUg7QUFBcEMsQ0FBRCxFQUErQztBQUM5Q2d0QixFQUFBQSxPQUFPLEVBQUVxRTtBQURxQyxDQUEvQyxDQUFEO0FBSUFyckIsZ0JBQWMsQ0FBQ3FyQixrQkFBRCxFQUFxQkgsT0FBckIsRUFBOEIsS0FBOUIsQ0FBZDtBQUNBbmIsWUFBVSxDQUFDbWIsT0FBRCxDQUFWO0FBRUFxQixjQUFjLEdBQUd2OEIsWUFBVSxDQUFDazdCLE9BQUQsQ0FBM0I7O0FBR0F2ckIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUVteUIsT0FBVjtBQUFtQm54QixFQUFBQSxJQUFJLEVBQUUsSUFBekI7QUFBK0JJLEVBQUFBLE1BQU0sRUFBRUg7QUFBdkMsQ0FBRCxFQUFrRDtBQUNqRDtBQUNBO0FBQ0Fxd0IsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JnRSxDQUFoQixFQUFtQjtBQUN6QixRQUFJQyxVQUFVLEdBQUc5RCxvQkFBb0IsQ0FBQyxJQUFELENBQXJDO0FBQ0E4RCxJQUFBQSxVQUFVLENBQUNqRSxNQUFYLENBQWtCNTdCLElBQWxCLENBQXVCWSxTQUF2QixFQUFrQ2cvQixDQUFsQztBQUNBLFdBQU9DLFVBQVUsQ0FBQzVFLE9BQWxCO0FBQ0Q7QUFQZ0QsQ0FBbEQsQ0FBRDtBQVVBL3BCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFbXlCLE9BQVY7QUFBbUJueEIsRUFBQUEsSUFBSSxFQUFFLElBQXpCO0FBQStCSSxFQUFBQSxNQUFNLEVBQWFIO0FBQWxELENBQUQsRUFBNkQ7QUFDNUQ7QUFDQTtBQUNBa3dCLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCemEsQ0FBakIsRUFBb0I7QUFDM0IsV0FBT29iLGdCQUFjLENBQTJELElBQTNELEVBQWlFcGIsQ0FBakUsQ0FBckI7QUFDRDtBQUwyRCxDQUE3RCxDQUFEO0FBUUE5UCxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRW15QixPQUFWO0FBQW1CbnhCLEVBQUFBLElBQUksRUFBRSxJQUF6QjtBQUErQkksRUFBQUEsTUFBTSxFQUFFMFA7QUFBdkMsQ0FBRCxFQUErRDtBQUM5RDtBQUNBO0FBQ0EraUIsRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYXhvQixRQUFiLEVBQXVCO0FBQzFCLFFBQUloRyxDQUFDLEdBQUcsSUFBUjtBQUNBLFFBQUlrd0IsVUFBVSxHQUFHOUQsb0JBQW9CLENBQUNwc0IsQ0FBRCxDQUFyQztBQUNBLFFBQUk4ckIsT0FBTyxHQUFHb0UsVUFBVSxDQUFDcEUsT0FBekI7QUFDQSxRQUFJRyxNQUFNLEdBQUdpRSxVQUFVLENBQUNqRSxNQUF4QjtBQUNBLFFBQUloM0IsTUFBTSxHQUFHMjNCLFNBQU8sQ0FBQyxZQUFZO0FBQy9CLFVBQUl1RCxlQUFlLEdBQUdwOUIsV0FBUyxDQUFDaU4sQ0FBQyxDQUFDOHJCLE9BQUgsQ0FBL0I7QUFDQSxVQUFJM2UsTUFBTSxHQUFHLEVBQWI7QUFDQSxVQUFJK2IsT0FBTyxHQUFHLENBQWQ7QUFDQSxVQUFJa0gsU0FBUyxHQUFHLENBQWhCO0FBQ0F2cEIsTUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXNsQixPQUFWLEVBQW1CO0FBQ25DLFlBQUlseUIsS0FBSyxHQUFHOHZCLE9BQU8sRUFBbkI7QUFDQSxZQUFJbUgsYUFBYSxHQUFHLEtBQXBCO0FBQ0FsakIsUUFBQUEsTUFBTSxDQUFDdlosSUFBUCxDQUFZM0MsU0FBWjtBQUNBbS9CLFFBQUFBLFNBQVM7QUFDVEQsUUFBQUEsZUFBZSxDQUFDOS9CLElBQWhCLENBQXFCMlAsQ0FBckIsRUFBd0JzckIsT0FBeEIsRUFBaUNDLElBQWpDLENBQXNDLFVBQVU3NkIsS0FBVixFQUFpQjtBQUNyRCxjQUFJMi9CLGFBQUosRUFBbUI7QUFDbkJBLFVBQUFBLGFBQWEsR0FBRyxJQUFoQjtBQUNBbGpCLFVBQUFBLE1BQU0sQ0FBQy9ULEtBQUQsQ0FBTixHQUFnQjFJLEtBQWhCO0FBQ0EsWUFBRTAvQixTQUFGLElBQWV0RSxPQUFPLENBQUMzZSxNQUFELENBQXRCO0FBQ0QsU0FMRCxFQUtHOGUsTUFMSDtBQU1ELE9BWE0sQ0FBUDtBQVlBLFFBQUVtRSxTQUFGLElBQWV0RSxPQUFPLENBQUMzZSxNQUFELENBQXRCO0FBQ0QsS0FsQm1CLENBQXBCO0FBbUJBLFFBQUlsWSxNQUFNLENBQUN0RixLQUFYLEVBQWtCczhCLE1BQU0sQ0FBQ2gzQixNQUFNLENBQUN2RSxLQUFSLENBQU47QUFDbEIsV0FBT3cvQixVQUFVLENBQUM1RSxPQUFsQjtBQUNELEdBN0I2RDtBQThCOUQ7QUFDQTtBQUNBZ0YsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY3RxQixRQUFkLEVBQXdCO0FBQzVCLFFBQUloRyxDQUFDLEdBQUcsSUFBUjtBQUNBLFFBQUlrd0IsVUFBVSxHQUFHOUQsb0JBQW9CLENBQUNwc0IsQ0FBRCxDQUFyQztBQUNBLFFBQUlpc0IsTUFBTSxHQUFHaUUsVUFBVSxDQUFDakUsTUFBeEI7QUFDQSxRQUFJaDNCLE1BQU0sR0FBRzIzQixTQUFPLENBQUMsWUFBWTtBQUMvQixVQUFJdUQsZUFBZSxHQUFHcDlCLFdBQVMsQ0FBQ2lOLENBQUMsQ0FBQzhyQixPQUFILENBQS9CO0FBQ0FqbEIsTUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXNsQixPQUFWLEVBQW1CO0FBQ25DNkUsUUFBQUEsZUFBZSxDQUFDOS9CLElBQWhCLENBQXFCMlAsQ0FBckIsRUFBd0JzckIsT0FBeEIsRUFBaUNDLElBQWpDLENBQXNDMkUsVUFBVSxDQUFDcEUsT0FBakQsRUFBMERHLE1BQTFEO0FBQ0QsT0FGTSxDQUFQO0FBR0QsS0FMbUIsQ0FBcEI7QUFNQSxRQUFJaDNCLE1BQU0sQ0FBQ3RGLEtBQVgsRUFBa0JzOEIsTUFBTSxDQUFDaDNCLE1BQU0sQ0FBQ3ZFLEtBQVIsQ0FBTjtBQUNsQixXQUFPdy9CLFVBQVUsQ0FBQzVFLE9BQWxCO0FBQ0Q7QUE1QzZELENBQS9ELENBQUQ7O0FDM1ZBLElBQUkvcEIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSTg4Qiw0QkFBMEIsR0FBRzk4QixzQkFBakM7O0FBQ0EsSUFBSSs4QixTQUFPLEdBQUcvOEIsU0FBZDs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQzQwQixFQUFBQSxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQnZxQixRQUFwQixFQUE4QjtBQUN4QyxRQUFJaEcsQ0FBQyxHQUFHLElBQVI7QUFDQSxRQUFJa3dCLFVBQVUsR0FBR3ZELDRCQUEwQixDQUFDNTJCLENBQTNCLENBQTZCaUssQ0FBN0IsQ0FBakI7QUFDQSxRQUFJOHJCLE9BQU8sR0FBR29FLFVBQVUsQ0FBQ3BFLE9BQXpCO0FBQ0EsUUFBSUcsTUFBTSxHQUFHaUUsVUFBVSxDQUFDakUsTUFBeEI7QUFDQSxRQUFJaDNCLE1BQU0sR0FBRzIzQixTQUFPLENBQUMsWUFBWTtBQUMvQixVQUFJSCxjQUFjLEdBQUcxNUIsV0FBUyxDQUFDaU4sQ0FBQyxDQUFDOHJCLE9BQUgsQ0FBOUI7QUFDQSxVQUFJM2UsTUFBTSxHQUFHLEVBQWI7QUFDQSxVQUFJK2IsT0FBTyxHQUFHLENBQWQ7QUFDQSxVQUFJa0gsU0FBUyxHQUFHLENBQWhCO0FBQ0F2cEIsTUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXNsQixPQUFWLEVBQW1CO0FBQ25DLFlBQUlseUIsS0FBSyxHQUFHOHZCLE9BQU8sRUFBbkI7QUFDQSxZQUFJbUgsYUFBYSxHQUFHLEtBQXBCO0FBQ0FsakIsUUFBQUEsTUFBTSxDQUFDdlosSUFBUCxDQUFZM0MsU0FBWjtBQUNBbS9CLFFBQUFBLFNBQVM7QUFDVDNELFFBQUFBLGNBQWMsQ0FBQ3A4QixJQUFmLENBQW9CMlAsQ0FBcEIsRUFBdUJzckIsT0FBdkIsRUFBZ0NDLElBQWhDLENBQXFDLFVBQVU3NkIsS0FBVixFQUFpQjtBQUNwRCxjQUFJMi9CLGFBQUosRUFBbUI7QUFDbkJBLFVBQUFBLGFBQWEsR0FBRyxJQUFoQjtBQUNBbGpCLFVBQUFBLE1BQU0sQ0FBQy9ULEtBQUQsQ0FBTixHQUFnQjtBQUFFbzNCLFlBQUFBLE1BQU0sRUFBRSxXQUFWO0FBQXVCOS9CLFlBQUFBLEtBQUssRUFBRUE7QUFBOUIsV0FBaEI7QUFDQSxZQUFFMC9CLFNBQUYsSUFBZXRFLE9BQU8sQ0FBQzNlLE1BQUQsQ0FBdEI7QUFDRCxTQUxELEVBS0csVUFBVXhkLEtBQVYsRUFBaUI7QUFDbEIsY0FBSTBnQyxhQUFKLEVBQW1CO0FBQ25CQSxVQUFBQSxhQUFhLEdBQUcsSUFBaEI7QUFDQWxqQixVQUFBQSxNQUFNLENBQUMvVCxLQUFELENBQU4sR0FBZ0I7QUFBRW8zQixZQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQmxCLFlBQUFBLE1BQU0sRUFBRTMvQjtBQUE5QixXQUFoQjtBQUNBLFlBQUV5Z0MsU0FBRixJQUFldEUsT0FBTyxDQUFDM2UsTUFBRCxDQUF0QjtBQUNELFNBVkQ7QUFXRCxPQWhCTSxDQUFQO0FBaUJBLFFBQUVpakIsU0FBRixJQUFldEUsT0FBTyxDQUFDM2UsTUFBRCxDQUF0QjtBQUNELEtBdkJtQixDQUFwQjtBQXdCQSxRQUFJbFksTUFBTSxDQUFDdEYsS0FBWCxFQUFrQnM4QixNQUFNLENBQUNoM0IsTUFBTSxDQUFDdkUsS0FBUixDQUFOO0FBQ2xCLFdBQU93L0IsVUFBVSxDQUFDNUUsT0FBbEI7QUFDRDtBQWhDa0MsQ0FBcEMsQ0FBRDs7QUNSQSxJQUFJL3BCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJODhCLDRCQUEwQixHQUFHOThCLHNCQUFqQzs7QUFDQSxJQUFJKzhCLFNBQU8sR0FBRy84QixTQUFkOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUVBLElBQUk0Z0MsaUJBQWlCLEdBQUcseUJBQXhCO0FBR0E7O0FBQ0FsdkIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DKzBCLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWExcUIsUUFBYixFQUF1QjtBQUMxQixRQUFJaEcsQ0FBQyxHQUFHLElBQVI7QUFDQSxRQUFJa3dCLFVBQVUsR0FBR3ZELDRCQUEwQixDQUFDNTJCLENBQTNCLENBQTZCaUssQ0FBN0IsQ0FBakI7QUFDQSxRQUFJOHJCLE9BQU8sR0FBR29FLFVBQVUsQ0FBQ3BFLE9BQXpCO0FBQ0EsUUFBSUcsTUFBTSxHQUFHaUUsVUFBVSxDQUFDakUsTUFBeEI7QUFDQSxRQUFJaDNCLE1BQU0sR0FBRzIzQixTQUFPLENBQUMsWUFBWTtBQUMvQixVQUFJSCxjQUFjLEdBQUcxNUIsV0FBUyxDQUFDaU4sQ0FBQyxDQUFDOHJCLE9BQUgsQ0FBOUI7QUFDQSxVQUFJOWtCLE1BQU0sR0FBRyxFQUFiO0FBQ0EsVUFBSWtpQixPQUFPLEdBQUcsQ0FBZDtBQUNBLFVBQUlrSCxTQUFTLEdBQUcsQ0FBaEI7QUFDQSxVQUFJTyxlQUFlLEdBQUcsS0FBdEI7QUFDQTlwQixNQUFBQSxTQUFPLENBQUNiLFFBQUQsRUFBVyxVQUFVc2xCLE9BQVYsRUFBbUI7QUFDbkMsWUFBSWx5QixLQUFLLEdBQUc4dkIsT0FBTyxFQUFuQjtBQUNBLFlBQUkwSCxlQUFlLEdBQUcsS0FBdEI7QUFDQTVwQixRQUFBQSxNQUFNLENBQUNwVCxJQUFQLENBQVkzQyxTQUFaO0FBQ0FtL0IsUUFBQUEsU0FBUztBQUNUM0QsUUFBQUEsY0FBYyxDQUFDcDhCLElBQWYsQ0FBb0IyUCxDQUFwQixFQUF1QnNyQixPQUF2QixFQUFnQ0MsSUFBaEMsQ0FBcUMsVUFBVTc2QixLQUFWLEVBQWlCO0FBQ3BELGNBQUlrZ0MsZUFBZSxJQUFJRCxlQUF2QixFQUF3QztBQUN4Q0EsVUFBQUEsZUFBZSxHQUFHLElBQWxCO0FBQ0E3RSxVQUFBQSxPQUFPLENBQUNwN0IsS0FBRCxDQUFQO0FBQ0QsU0FKRCxFQUlHLFVBQVVmLEtBQVYsRUFBaUI7QUFDbEIsY0FBSWloQyxlQUFlLElBQUlELGVBQXZCLEVBQXdDO0FBQ3hDQyxVQUFBQSxlQUFlLEdBQUcsSUFBbEI7QUFDQTVwQixVQUFBQSxNQUFNLENBQUM1TixLQUFELENBQU4sR0FBZ0J6SixLQUFoQjtBQUNBLFlBQUV5Z0MsU0FBRixJQUFlbkUsTUFBTSxDQUFDLEtBQUtyNkIsWUFBVSxDQUFDLGdCQUFELENBQWYsRUFBbUNvVixNQUFuQyxFQUEyQ3lwQixpQkFBM0MsQ0FBRCxDQUFyQjtBQUNELFNBVEQ7QUFVRCxPQWZNLENBQVA7QUFnQkEsUUFBRUwsU0FBRixJQUFlbkUsTUFBTSxDQUFDLEtBQUtyNkIsWUFBVSxDQUFDLGdCQUFELENBQWYsRUFBbUNvVixNQUFuQyxFQUEyQ3lwQixpQkFBM0MsQ0FBRCxDQUFyQjtBQUNELEtBdkJtQixDQUFwQjtBQXdCQSxRQUFJeDdCLE1BQU0sQ0FBQ3RGLEtBQVgsRUFBa0JzOEIsTUFBTSxDQUFDaDNCLE1BQU0sQ0FBQ3ZFLEtBQVIsQ0FBTjtBQUNsQixXQUFPdy9CLFVBQVUsQ0FBQzVFLE9BQWxCO0FBQ0Q7QUFoQ2tDLENBQXBDLENBQUQ7O0FDWEEsSUFBSS9wQixJQUFDLEdBQUcxUixPQUFSOztBQUVBLElBQUkwOEIsYUFBYSxHQUFHMThCLHdCQUFwQjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJc3BCLG9CQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJNDhCLGNBQWMsR0FBRzU4QixnQkFBckI7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOzs7QUFHQSxJQUFJZ2hDLFdBQVcsR0FBRyxDQUFDLENBQUN0RSxhQUFGLElBQW1CMzhCLE9BQUssQ0FBQyxZQUFZO0FBQ3JEMjhCLEVBQUFBLGFBQWEsQ0FBQzEwQixTQUFkLENBQXdCLFNBQXhCLEVBQW1DeEgsSUFBbkMsQ0FBd0M7QUFBRWs3QixJQUFBQSxJQUFJLEVBQUUsWUFBWTtBQUFFO0FBQWE7QUFBbkMsR0FBeEMsRUFBK0UsWUFBWTtBQUFFO0FBQWEsR0FBMUc7QUFDRCxDQUZ5QyxDQUExQztBQUtBOztBQUNBaHFCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBNUI7QUFBa0MrckIsRUFBQUEsSUFBSSxFQUFFLElBQXhDO0FBQThDLzBCLEVBQUFBLE1BQU0sRUFBRTgwQjtBQUF0RCxDQUFELEVBQXNFO0FBQ3JFLGFBQVcsVUFBVUUsU0FBVixFQUFxQjtBQUM5QixRQUFJL3dCLENBQUMsR0FBR21aLG9CQUFrQixDQUFDLElBQUQsRUFBT3ZuQixZQUFVLENBQUMsU0FBRCxDQUFqQixDQUExQjtBQUNBLFFBQUlvL0IsVUFBVSxHQUFHMS9CLFlBQVUsQ0FBQ3kvQixTQUFELENBQTNCO0FBQ0EsV0FBTyxLQUFLeEYsSUFBTCxDQUNMeUYsVUFBVSxHQUFHLFVBQVUzZixDQUFWLEVBQWE7QUFDeEIsYUFBT29iLGNBQWMsQ0FBQ3pzQixDQUFELEVBQUkrd0IsU0FBUyxFQUFiLENBQWQsQ0FBK0J4RixJQUEvQixDQUFvQyxZQUFZO0FBQUUsZUFBT2xhLENBQVA7QUFBVyxPQUE3RCxDQUFQO0FBQ0QsS0FGUyxHQUVOMGYsU0FIQyxFQUlMQyxVQUFVLEdBQUcsVUFBVXZLLENBQVYsRUFBYTtBQUN4QixhQUFPZ0csY0FBYyxDQUFDenNCLENBQUQsRUFBSSt3QixTQUFTLEVBQWIsQ0FBZCxDQUErQnhGLElBQS9CLENBQW9DLFlBQVk7QUFBRSxjQUFNOUUsQ0FBTjtBQUFVLE9BQTVELENBQVA7QUFDRCxLQUZTLEdBRU5zSyxTQU5DLENBQVA7QUFRRDtBQVpvRSxDQUF0RSxDQUFEOztBQWdCQSxJQUFnQnovQixZQUFVLENBQUNpN0IsYUFBRCxDQUExQixFQUEyQztBQUN6QyxNQUFJOTZCLE1BQU0sR0FBR0csWUFBVSxDQUFDLFNBQUQsQ0FBVixDQUFzQmlHLFNBQXRCLENBQWdDLFNBQWhDLENBQWI7O0FBQ0EsTUFBSTAwQixhQUFhLENBQUMxMEIsU0FBZCxDQUF3QixTQUF4QixNQUF1Q3BHLE1BQTNDLEVBQW1EO0FBQ2pENkosSUFBQUEsVUFBUSxDQUFDaXhCLGFBQWEsQ0FBQzEwQixTQUFmLEVBQTBCLFNBQTFCLEVBQXFDcEcsTUFBckMsRUFBNkM7QUFBRStHLE1BQUFBLE1BQU0sRUFBRTtBQUFWLEtBQTdDLENBQVI7QUFDRDtBQUNGOztBQ3ZDRCxJQUFJK0ksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJb2hDLFdBQVcsR0FBR3IvQixZQUFVLENBQUMsU0FBRCxFQUFZLE9BQVosQ0FBNUI7QUFDQSxJQUFJcy9CLGFBQWEsR0FBR3poQyxRQUFRLENBQUM0UCxLQUE3Qjs7QUFHQSxJQUFJOHhCLHVCQUF1QixHQUFHLENBQUN2aEMsT0FBSyxDQUFDLFlBQVk7QUFDL0NxaEMsRUFBQUEsV0FBVyxDQUFDLFlBQVk7QUFBRTtBQUFhLEdBQTVCLENBQVg7QUFDRCxDQUZtQyxDQUFwQztBQUtBOztBQUNBMXZCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUUsSUFBM0I7QUFBaUNJLEVBQUFBLE1BQU0sRUFBRW8xQjtBQUF6QyxDQUFELEVBQXFFO0FBQ3BFOXhCLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWUxRSxNQUFmLEVBQXVCeTJCLFlBQXZCLEVBQXFDQyxhQUFyQyxFQUFvRDtBQUN6RHQrQixJQUFBQSxXQUFTLENBQUM0SCxNQUFELENBQVQ7QUFDQTNFLElBQUFBLFdBQVEsQ0FBQ3E3QixhQUFELENBQVI7QUFDQSxXQUFPSixXQUFXLEdBQ2RBLFdBQVcsQ0FBQ3QyQixNQUFELEVBQVN5MkIsWUFBVCxFQUF1QkMsYUFBdkIsQ0FERyxHQUVkSCxhQUFhLENBQUM3Z0MsSUFBZCxDQUFtQnNLLE1BQW5CLEVBQTJCeTJCLFlBQTNCLEVBQXlDQyxhQUF6QyxDQUZKO0FBR0Q7QUFQbUUsQ0FBckUsQ0FBRDs7QUNoQkEsSUFBSTl2QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJa3BCLGNBQVksR0FBR2xwQixjQUFuQjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJNk8sUUFBTSxHQUFHN08sY0FBYjs7QUFDQSxJQUFJc1EsTUFBSSxHQUFHdFEsWUFBWDs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBRUEsSUFBSXloQyxlQUFlLEdBQUcxL0IsWUFBVSxDQUFDLFNBQUQsRUFBWSxXQUFaLENBQWhDO0FBR0E7QUFDQTtBQUNBOztBQUNBLElBQUkyL0IsY0FBYyxHQUFHM2hDLE9BQUssQ0FBQyxZQUFZO0FBQ3JDLFdBQVMwTyxDQUFULEdBQWE7QUFBRTtBQUFhOztBQUM1QixTQUFPLEVBQUVnekIsZUFBZSxDQUFDLFlBQVk7QUFBRTtBQUFhLEdBQTVCLEVBQThCLEVBQTlCLEVBQWtDaHpCLENBQWxDLENBQWYsWUFBK0RBLENBQWpFLENBQVA7QUFDRCxDQUh5QixDQUExQjtBQUlBLElBQUlrekIsUUFBUSxHQUFHLENBQUM1aEMsT0FBSyxDQUFDLFlBQVk7QUFDaEMwaEMsRUFBQUEsZUFBZSxDQUFDLFlBQVk7QUFBRTtBQUFhLEdBQTVCLENBQWY7QUFDRCxDQUZvQixDQUFyQjtBQUdBLElBQUkxMUIsUUFBTSxHQUFHMjFCLGNBQWMsSUFBSUMsUUFBL0I7QUFFQWp3QixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTNCO0FBQWlDSSxFQUFBQSxNQUFNLEVBQUVILFFBQXpDO0FBQWlEbkosRUFBQUEsSUFBSSxFQUFFbUo7QUFBdkQsQ0FBRCxFQUFrRTtBQUNqRTJELEVBQUFBLFNBQVMsRUFBRSxTQUFTQSxTQUFULENBQW1Ca3lCLE1BQW5CLEVBQTJCenRCO0FBQUs7QUFBaEMsSUFBbUQ7QUFDNUQrVSxJQUFBQSxjQUFZLENBQUMwWSxNQUFELENBQVo7QUFDQXo3QixJQUFBQSxXQUFRLENBQUNnTyxJQUFELENBQVI7QUFDQSxRQUFJMHRCLFNBQVMsR0FBR2hnQyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUI4L0IsTUFBdkIsR0FBZ0MxWSxjQUFZLENBQUNybkIsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUE1RDtBQUNBLFFBQUk4L0IsUUFBUSxJQUFJLENBQUNELGNBQWpCLEVBQWlDLE9BQU9ELGVBQWUsQ0FBQ0csTUFBRCxFQUFTenRCLElBQVQsRUFBZTB0QixTQUFmLENBQXRCOztBQUNqQyxRQUFJRCxNQUFNLElBQUlDLFNBQWQsRUFBeUI7QUFDdkI7QUFDQSxjQUFRMXRCLElBQUksQ0FBQ3JTLE1BQWI7QUFDRSxhQUFLLENBQUw7QUFBUSxpQkFBTyxJQUFJOC9CLE1BQUosRUFBUDs7QUFDUixhQUFLLENBQUw7QUFBUSxpQkFBTyxJQUFJQSxNQUFKLENBQVd6dEIsSUFBSSxDQUFDLENBQUQsQ0FBZixDQUFQOztBQUNSLGFBQUssQ0FBTDtBQUFRLGlCQUFPLElBQUl5dEIsTUFBSixDQUFXenRCLElBQUksQ0FBQyxDQUFELENBQWYsRUFBb0JBLElBQUksQ0FBQyxDQUFELENBQXhCLENBQVA7O0FBQ1IsYUFBSyxDQUFMO0FBQVEsaUJBQU8sSUFBSXl0QixNQUFKLENBQVd6dEIsSUFBSSxDQUFDLENBQUQsQ0FBZixFQUFvQkEsSUFBSSxDQUFDLENBQUQsQ0FBeEIsRUFBNkJBLElBQUksQ0FBQyxDQUFELENBQWpDLENBQVA7O0FBQ1IsYUFBSyxDQUFMO0FBQVEsaUJBQU8sSUFBSXl0QixNQUFKLENBQVd6dEIsSUFBSSxDQUFDLENBQUQsQ0FBZixFQUFvQkEsSUFBSSxDQUFDLENBQUQsQ0FBeEIsRUFBNkJBLElBQUksQ0FBQyxDQUFELENBQWpDLEVBQXNDQSxJQUFJLENBQUMsQ0FBRCxDQUExQyxDQUFQO0FBTFYsT0FGdUI7OztBQVV2QixVQUFJMnRCLEtBQUssR0FBRyxDQUFDLElBQUQsQ0FBWjtBQUNBQSxNQUFBQSxLQUFLLENBQUMvOUIsSUFBTixDQUFXeUwsS0FBWCxDQUFpQnN5QixLQUFqQixFQUF3QjN0QixJQUF4QjtBQUNBLGFBQU8sS0FBSzdELE1BQUksQ0FBQ2QsS0FBTCxDQUFXb3lCLE1BQVgsRUFBbUJFLEtBQW5CLENBQUwsR0FBUDtBQUNELEtBbEIyRDs7O0FBb0I1RCxRQUFJNXNCLEtBQUssR0FBRzJzQixTQUFTLENBQUM3NUIsU0FBdEI7QUFDQSxRQUFJMm5CLFFBQVEsR0FBRzlnQixRQUFNLENBQUN4TCxVQUFRLENBQUM2UixLQUFELENBQVIsR0FBa0JBLEtBQWxCLEdBQTBCalYsTUFBTSxDQUFDK0gsU0FBbEMsQ0FBckI7QUFDQSxRQUFJNUMsTUFBTSxHQUFHeEYsUUFBUSxDQUFDNFAsS0FBVCxDQUFlaFAsSUFBZixDQUFvQm9oQyxNQUFwQixFQUE0QmpTLFFBQTVCLEVBQXNDeGIsSUFBdEMsQ0FBYjtBQUNBLFdBQU85USxVQUFRLENBQUMrQixNQUFELENBQVIsR0FBbUJBLE1BQW5CLEdBQTRCdXFCLFFBQW5DO0FBQ0Q7QUF6QmdFLENBQWxFLENBQUQ7O0FDeEJBLElBQUlqZSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOEYsZUFBYSxHQUFHOUYsZUFBcEI7O0FBQ0EsSUFBSXNHLHNCQUFvQixHQUFHdEcsb0JBQTNCOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7O0FBR0EsSUFBSStoQyxzQkFBc0IsR0FBR2hpQyxPQUFLLENBQUMsWUFBWTtBQUM3QztBQUNBaWlDLEVBQUFBLE9BQU8sQ0FBQzloQyxjQUFSLENBQXVCb0csc0JBQW9CLENBQUNKLENBQXJCLENBQXVCLEVBQXZCLEVBQTJCLENBQTNCLEVBQThCO0FBQUVyRixJQUFBQSxLQUFLLEVBQUU7QUFBVCxHQUE5QixDQUF2QixFQUFvRSxDQUFwRSxFQUF1RTtBQUFFQSxJQUFBQSxLQUFLLEVBQUU7QUFBVCxHQUF2RTtBQUNELENBSGlDLENBQWxDO0FBTUE7O0FBQ0E2USxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTNCO0FBQWlDSSxFQUFBQSxNQUFNLEVBQUU2MUIsc0JBQXpDO0FBQWlFbi9CLEVBQUFBLElBQUksRUFBRSxDQUFDNkM7QUFBeEUsQ0FBRCxFQUF3RjtBQUN2RnZGLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCNEssTUFBeEIsRUFBZ0MrTSxXQUFoQyxFQUE2Q29xQixVQUE3QyxFQUF5RDtBQUN2RTk3QixJQUFBQSxXQUFRLENBQUMyRSxNQUFELENBQVI7QUFDQSxRQUFJbkgsR0FBRyxHQUFHbUMsZUFBYSxDQUFDK1IsV0FBRCxDQUF2QjtBQUNBMVIsSUFBQUEsV0FBUSxDQUFDODdCLFVBQUQsQ0FBUjs7QUFDQSxRQUFJO0FBQ0YzN0IsTUFBQUEsc0JBQW9CLENBQUNKLENBQXJCLENBQXVCNEUsTUFBdkIsRUFBK0JuSCxHQUEvQixFQUFvQ3MrQixVQUFwQztBQUNBLGFBQU8sSUFBUDtBQUNELEtBSEQsQ0FHRSxPQUFPbmlDLEtBQVAsRUFBYztBQUNkLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7QUFYc0YsQ0FBeEYsQ0FBRDs7QUNmQSxJQUFJNFIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJTSwwQkFBd0IsR0FBR04sOEJBQUEsQ0FBMkRrRyxDQUExRjtBQUdBOzs7QUFDQXdMLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQ28yQixFQUFBQSxjQUFjLEVBQUUsU0FBU0EsY0FBVCxDQUF3QnAzQixNQUF4QixFQUFnQytNLFdBQWhDLEVBQTZDO0FBQzNELFFBQUluWCxVQUFVLEdBQUdKLDBCQUF3QixDQUFDNkYsV0FBUSxDQUFDMkUsTUFBRCxDQUFULEVBQW1CK00sV0FBbkIsQ0FBekM7QUFDQSxXQUFPblgsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0ksWUFBMUIsR0FBeUMsS0FBekMsR0FBaUQsT0FBT2dLLE1BQU0sQ0FBQytNLFdBQUQsQ0FBckU7QUFDRDtBQUprQyxDQUFwQyxDQUFEOztBQ05BLElBQUl6VCxRQUFNLEdBQUdwRSxnQkFBYjs7SUFFQVQsa0JBQUEsR0FBaUIsVUFBVW1CLFVBQVYsRUFBc0I7QUFDckMsU0FBT0EsVUFBVSxLQUFLVSxTQUFmLEtBQTZCZ0QsUUFBTSxDQUFDMUQsVUFBRCxFQUFhLE9BQWIsQ0FBTixJQUErQjBELFFBQU0sQ0FBQzFELFVBQUQsRUFBYSxVQUFiLENBQWxFLENBQVA7QUFDRCxDQUZEOztBQ0ZBLElBQUlnUixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUltaUMsa0JBQWdCLEdBQUduaUMsa0JBQXZCOztBQUNBLElBQUk2SyxnQ0FBOEIsR0FBRzdLLDhCQUFyQzs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjtBQUdBOzs7QUFDQSxTQUFTRyxLQUFULENBQWEySyxNQUFiLEVBQXFCK007QUFBWTtBQUFqQyxFQUFtRDtBQUNqRCxNQUFJdXFCLFFBQVEsR0FBR3ZnQyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJnSixNQUF2QixHQUFnQ2pKLFNBQVMsQ0FBQyxDQUFELENBQXhEO0FBQ0EsTUFBSW5CLFVBQUosRUFBZ0JzSCxTQUFoQjtBQUNBLE1BQUk3QixXQUFRLENBQUMyRSxNQUFELENBQVIsS0FBcUJzM0IsUUFBekIsRUFBbUMsT0FBT3QzQixNQUFNLENBQUMrTSxXQUFELENBQWI7QUFDbkNuWCxFQUFBQSxVQUFVLEdBQUdtSyxnQ0FBOEIsQ0FBQzNFLENBQS9CLENBQWlDNEUsTUFBakMsRUFBeUMrTSxXQUF6QyxDQUFiO0FBQ0EsTUFBSW5YLFVBQUosRUFBZ0IsT0FBT3loQyxrQkFBZ0IsQ0FBQ3poQyxVQUFELENBQWhCLEdBQ25CQSxVQUFVLENBQUNHLEtBRFEsR0FFbkJILFVBQVUsQ0FBQ1AsR0FBWCxLQUFtQmlCLFNBQW5CLEdBQStCQSxTQUEvQixHQUEyQ1YsVUFBVSxDQUFDUCxHQUFYLENBQWVLLElBQWYsQ0FBb0I0aEMsUUFBcEIsQ0FGL0I7QUFHaEIsTUFBSS8rQixVQUFRLENBQUMyRSxTQUFTLEdBQUc2TSxnQkFBYyxDQUFDL0osTUFBRCxDQUEzQixDQUFaLEVBQWtELE9BQU8zSyxLQUFHLENBQUM2SCxTQUFELEVBQVk2UCxXQUFaLEVBQXlCdXFCLFFBQXpCLENBQVY7QUFDbkQ7O0FBRUQxd0IsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DM0wsRUFBQUEsR0FBRyxFQUFFQTtBQUQ4QixDQUFwQyxDQUFEOztBQ3BCQSxJQUFJdVIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTZLLGdDQUE4QixHQUFHN0ssOEJBQXJDO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRSxJQUEzQjtBQUFpQ2xKLEVBQUFBLElBQUksRUFBRSxDQUFDNkM7QUFBeEMsQ0FBRCxFQUF3RDtBQUN2RG5GLEVBQUFBLHdCQUF3QixFQUFFLFNBQVNBLHdCQUFULENBQWtDd0ssTUFBbEMsRUFBMEMrTSxXQUExQyxFQUF1RDtBQUMvRSxXQUFPaE4sZ0NBQThCLENBQUMzRSxDQUEvQixDQUFpQ0MsV0FBUSxDQUFDMkUsTUFBRCxDQUF6QyxFQUFtRCtNLFdBQW5ELENBQVA7QUFDRDtBQUhzRCxDQUF4RCxDQUFEOztBQ1BBLElBQUluRyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlxaUMsb0JBQW9CLEdBQUdyaUMsc0JBQTNCOztBQUNBLElBQUk4VSx3QkFBd0IsR0FBRzlVLHNCQUEvQjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUUsSUFBM0I7QUFBaUNsSixFQUFBQSxJQUFJLEVBQUUsQ0FBQ2tTO0FBQXhDLENBQUQsRUFBcUU7QUFDcEVELEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCL0osTUFBeEIsRUFBZ0M7QUFDOUMsV0FBT3UzQixvQkFBb0IsQ0FBQ2w4QixXQUFRLENBQUMyRSxNQUFELENBQVQsQ0FBM0I7QUFDRDtBQUhtRSxDQUFyRSxDQUFEOztBQ1BBLElBQUk0RyxJQUFDLEdBQUcxUixPQUFSO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DM0UsRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYTJELE1BQWIsRUFBcUIrTSxXQUFyQixFQUFrQztBQUNyQyxXQUFPQSxXQUFXLElBQUkvTSxNQUF0QjtBQUNEO0FBSGtDLENBQXBDLENBQUQ7O0FDSkEsSUFBSTRHLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7OztBQUdBLElBQUlzaUMsa0JBQWtCLEdBQUdyaUMsTUFBTSxDQUFDMHRCLFlBQWhDO0FBR0E7O0FBQ0FqYyxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTNCLENBQUQsRUFBb0M7QUFDbkM2aEIsRUFBQUEsWUFBWSxFQUFFLFNBQVNBLFlBQVQsQ0FBc0I3aUIsTUFBdEIsRUFBOEI7QUFDMUMzRSxJQUFBQSxXQUFRLENBQUMyRSxNQUFELENBQVI7QUFDQSxXQUFPdzNCLGtCQUFrQixHQUFHQSxrQkFBa0IsQ0FBQ3gzQixNQUFELENBQXJCLEdBQWdDLElBQXpEO0FBQ0Q7QUFKa0MsQ0FBcEMsQ0FBRDs7QUNSQSxJQUFJNEcsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJNEssT0FBTyxHQUFHNUssU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQ2xCLEVBQUFBLE9BQU8sRUFBRUE7QUFEMEIsQ0FBcEMsQ0FBRDs7QUNMQSxJQUFJOEcsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTh0QixRQUFRLEdBQUc5dEIsUUFBZjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUUsSUFBM0I7QUFBaUNsSixFQUFBQSxJQUFJLEVBQUUsQ0FBQ2tyQjtBQUF4QyxDQUFELEVBQXFEO0FBQ3BERixFQUFBQSxpQkFBaUIsRUFBRSxTQUFTQSxpQkFBVCxDQUEyQjlpQixNQUEzQixFQUFtQztBQUNwRDNFLElBQUFBLFdBQVEsQ0FBQzJFLE1BQUQsQ0FBUjs7QUFDQSxRQUFJO0FBQ0YsVUFBSXkzQix1QkFBdUIsR0FBR3hnQyxZQUFVLENBQUMsUUFBRCxFQUFXLG1CQUFYLENBQXhDO0FBQ0EsVUFBSXdnQyx1QkFBSixFQUE2QkEsdUJBQXVCLENBQUN6M0IsTUFBRCxDQUF2QjtBQUM3QixhQUFPLElBQVA7QUFDRCxLQUpELENBSUUsT0FBT2hMLEtBQVAsRUFBYztBQUNkLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7QUFWbUQsQ0FBckQsQ0FBRDs7QUNQQSxJQUFJNFIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJbWlDLGdCQUFnQixHQUFHbmlDLGtCQUF2Qjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSXNHLHNCQUFvQixHQUFHdEcsb0JBQTNCOztBQUNBLElBQUk2SyxnQ0FBOEIsR0FBRzdLLDhCQUFyQzs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFDQSxJQUFJNEYsMEJBQXdCLEdBQUc1RiwwQkFBL0I7QUFHQTs7O0FBQ0EsU0FBU2tILEtBQVQsQ0FBYTRELE1BQWIsRUFBcUIrTSxXQUFyQixFQUFrQ3BYO0FBQUU7QUFBcEMsRUFBc0Q7QUFDcEQsTUFBSTJoQyxRQUFRLEdBQUd2Z0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCZ0osTUFBdkIsR0FBZ0NqSixTQUFTLENBQUMsQ0FBRCxDQUF4RDtBQUNBLE1BQUkyZ0MsYUFBYSxHQUFHMzNCLGdDQUE4QixDQUFDM0UsQ0FBL0IsQ0FBaUNDLFdBQVEsQ0FBQzJFLE1BQUQsQ0FBekMsRUFBbUQrTSxXQUFuRCxDQUFwQjtBQUNBLE1BQUk0cUIsa0JBQUosRUFBd0J6NkIsU0FBeEIsRUFBbUMwTCxNQUFuQzs7QUFDQSxNQUFJLENBQUM4dUIsYUFBTCxFQUFvQjtBQUNsQixRQUFJbi9CLFVBQVEsQ0FBQzJFLFNBQVMsR0FBRzZNLGdCQUFjLENBQUMvSixNQUFELENBQTNCLENBQVosRUFBa0Q7QUFDaEQsYUFBTzVELEtBQUcsQ0FBQ2MsU0FBRCxFQUFZNlAsV0FBWixFQUF5QnBYLENBQXpCLEVBQTRCMmhDLFFBQTVCLENBQVY7QUFDRDs7QUFDREksSUFBQUEsYUFBYSxHQUFHNThCLDBCQUF3QixDQUFDLENBQUQsQ0FBeEM7QUFDRDs7QUFDRCxNQUFJdThCLGdCQUFnQixDQUFDSyxhQUFELENBQXBCLEVBQXFDO0FBQ25DLFFBQUlBLGFBQWEsQ0FBQ3poQyxRQUFkLEtBQTJCLEtBQTNCLElBQW9DLENBQUNzQyxVQUFRLENBQUMrK0IsUUFBRCxDQUFqRCxFQUE2RCxPQUFPLEtBQVA7O0FBQzdELFFBQUlLLGtCQUFrQixHQUFHNTNCLGdDQUE4QixDQUFDM0UsQ0FBL0IsQ0FBaUNrOEIsUUFBakMsRUFBMkN2cUIsV0FBM0MsQ0FBekIsRUFBa0Y7QUFDaEYsVUFBSTRxQixrQkFBa0IsQ0FBQ3RpQyxHQUFuQixJQUEwQnNpQyxrQkFBa0IsQ0FBQ3Y3QixHQUE3QyxJQUFvRHU3QixrQkFBa0IsQ0FBQzFoQyxRQUFuQixLQUFnQyxLQUF4RixFQUErRixPQUFPLEtBQVA7QUFDL0YwaEMsTUFBQUEsa0JBQWtCLENBQUM1aEMsS0FBbkIsR0FBMkJKLENBQTNCO0FBQ0E2RixNQUFBQSxzQkFBb0IsQ0FBQ0osQ0FBckIsQ0FBdUJrOEIsUUFBdkIsRUFBaUN2cUIsV0FBakMsRUFBOEM0cUIsa0JBQTlDO0FBQ0QsS0FKRCxNQUlPbjhCLHNCQUFvQixDQUFDSixDQUFyQixDQUF1Qms4QixRQUF2QixFQUFpQ3ZxQixXQUFqQyxFQUE4Q2pTLDBCQUF3QixDQUFDLENBQUQsRUFBSW5GLENBQUosQ0FBdEU7QUFDUixHQVBELE1BT087QUFDTGlULElBQUFBLE1BQU0sR0FBRzh1QixhQUFhLENBQUN0N0IsR0FBdkI7QUFDQSxRQUFJd00sTUFBTSxLQUFLdFMsU0FBZixFQUEwQixPQUFPLEtBQVA7QUFDMUJzUyxJQUFBQSxNQUFNLENBQUNsVCxJQUFQLENBQVk0aEMsUUFBWixFQUFzQjNoQyxDQUF0QjtBQUNEOztBQUFDLFNBQU8sSUFBUDtBQUNIO0FBR0Q7OztBQUNBLElBQUlpaUMsV0FBVyxHQUFHM2lDLE9BQUssQ0FBQyxZQUFZO0FBQ2xDLE1BQUkwZixXQUFXLEdBQUcsWUFBWTtBQUFFO0FBQWEsR0FBN0M7O0FBQ0EsTUFBSWxaLE1BQU0sR0FBR0Qsc0JBQW9CLENBQUNKLENBQXJCLENBQXVCLElBQUl1WixXQUFKLEVBQXZCLEVBQTBDLEdBQTFDLEVBQStDO0FBQUUzZSxJQUFBQSxZQUFZLEVBQUU7QUFBaEIsR0FBL0MsQ0FBYixDQUZrQzs7QUFJbEMsU0FBT2toQyxPQUFPLENBQUM5NkIsR0FBUixDQUFZdVksV0FBVyxDQUFDelgsU0FBeEIsRUFBbUMsR0FBbkMsRUFBd0MsQ0FBeEMsRUFBMkN6QixNQUEzQyxNQUF1RCxLQUE5RDtBQUNELENBTHNCLENBQXZCO0FBT0FtTCxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQTNCO0FBQWlDSSxFQUFBQSxNQUFNLEVBQUV3MkI7QUFBekMsQ0FBRCxFQUF5RDtBQUN4RHg3QixFQUFBQSxHQUFHLEVBQUVBO0FBRG1ELENBQXpELENBQUQ7O0FDN0NBLElBQUl3SyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUkrVSxrQkFBa0IsR0FBRy9VLG9CQUF6Qjs7QUFDQSxJQUFJMmlDLG9CQUFvQixHQUFHM2lDLHNCQUEzQjtBQUdBOzs7QUFDQSxJQUFJMmlDLG9CQUFKLEVBQTBCanhCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUM3RGtKLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCbEssTUFBeEIsRUFBZ0NvSyxLQUFoQyxFQUF1QztBQUNyRC9PLElBQUFBLFdBQVEsQ0FBQzJFLE1BQUQsQ0FBUjtBQUNBaUssSUFBQUEsa0JBQWtCLENBQUNHLEtBQUQsQ0FBbEI7O0FBQ0EsUUFBSTtBQUNGeXRCLE1BQUFBLG9CQUFvQixDQUFDNzNCLE1BQUQsRUFBU29LLEtBQVQsQ0FBcEI7QUFDQSxhQUFPLElBQVA7QUFDRCxLQUhELENBR0UsT0FBT3BWLEtBQVAsRUFBYztBQUNkLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7QUFWNEQsQ0FBcEMsQ0FBRDs7QUNQMUIsSUFBSTRSLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUkrUixnQkFBYyxHQUFHL1IsZ0JBQXJCOztBQUVBMFIsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CO0FBQUVxaUMsRUFBQUEsT0FBTyxFQUFFO0FBQVgsQ0FBbkIsQ0FBRDtBQUdBOztBQUNBandCLGdCQUFjLENBQUNwUyxRQUFNLENBQUNxaUMsT0FBUixFQUFpQixTQUFqQixFQUE0QixJQUE1QixDQUFkOztBQ1JBLElBQUkzK0IsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJa0IsU0FBTyxHQUFHbEIsWUFBZDs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJNGlDLE9BQUssR0FBRzM5QixpQkFBZSxDQUFDLE9BQUQsQ0FBM0I7QUFHQTs7SUFDQTFGLFFBQUEsR0FBaUIsVUFBVUYsRUFBVixFQUFjO0FBQzdCLE1BQUl3akMsUUFBSjtBQUNBLFNBQU94L0IsVUFBUSxDQUFDaEUsRUFBRCxDQUFSLEtBQWlCLENBQUN3akMsUUFBUSxHQUFHeGpDLEVBQUUsQ0FBQ3VqQyxPQUFELENBQWQsTUFBMkJ4aEMsU0FBM0IsR0FBdUMsQ0FBQyxDQUFDeWhDLFFBQXpDLEdBQW9EM2hDLFNBQU8sQ0FBQzdCLEVBQUQsQ0FBUCxJQUFlLFFBQXBGLENBQVA7QUFDRCxDQUhEOztBQ1BBLElBQUk4RyxXQUFRLEdBQUduRyxXQUFmO0FBR0E7OztJQUNBVCxhQUFBLEdBQWlCLFlBQVk7QUFDM0IsTUFBSThQLElBQUksR0FBR2xKLFdBQVEsQ0FBQyxJQUFELENBQW5CO0FBQ0EsTUFBSWYsTUFBTSxHQUFHLEVBQWI7QUFDQSxNQUFJaUssSUFBSSxDQUFDMVAsTUFBVCxFQUFpQnlGLE1BQU0sSUFBSSxHQUFWO0FBQ2pCLE1BQUlpSyxJQUFJLENBQUN5ekIsVUFBVCxFQUFxQjE5QixNQUFNLElBQUksR0FBVjtBQUNyQixNQUFJaUssSUFBSSxDQUFDMHpCLFNBQVQsRUFBb0IzOUIsTUFBTSxJQUFJLEdBQVY7QUFDcEIsTUFBSWlLLElBQUksQ0FBQzJ6QixNQUFULEVBQWlCNTlCLE1BQU0sSUFBSSxHQUFWO0FBQ2pCLE1BQUlpSyxJQUFJLENBQUM0ekIsT0FBVCxFQUFrQjc5QixNQUFNLElBQUksR0FBVjtBQUNsQixNQUFJaUssSUFBSSxDQUFDNnpCLE1BQVQsRUFBaUI5OUIsTUFBTSxJQUFJLEdBQVY7QUFDakIsU0FBT0EsTUFBUDtBQUNELENBVkQ7Ozs7QUNMQSxJQUFJckYsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7O0FBR0EsSUFBSW1qQyxTQUFPLEdBQUd4akMsUUFBTSxDQUFDMjBCLE1BQXJCO2lDQUVBLEdBQXdCdjBCLE9BQUssQ0FBQyxZQUFZO0FBQ3hDLE1BQUlzdEIsRUFBRSxHQUFHOFYsU0FBTyxDQUFDLEdBQUQsRUFBTSxHQUFOLENBQWhCO0FBQ0E5VixFQUFBQSxFQUFFLENBQUMrVixTQUFILEdBQWUsQ0FBZjtBQUNBLFNBQU8vVixFQUFFLENBQUN4dEIsSUFBSCxDQUFRLE1BQVIsS0FBbUIsSUFBMUI7QUFDRCxDQUo0QjtnQ0FNN0IsR0FBdUJFLE9BQUssQ0FBQyxZQUFZO0FBQ3ZDO0FBQ0EsTUFBSXN0QixFQUFFLEdBQUc4VixTQUFPLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBaEI7QUFDQTlWLEVBQUFBLEVBQUUsQ0FBQytWLFNBQUgsR0FBZSxDQUFmO0FBQ0EsU0FBTy9WLEVBQUUsQ0FBQ3h0QixJQUFILENBQVEsS0FBUixLQUFrQixJQUF6QjtBQUNELENBTDJCOztBQ1o1QixJQUFJRSxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOzs7QUFHQSxJQUFJbWpDLFNBQU8sR0FBR3hqQyxRQUFNLENBQUMyMEIsTUFBckI7SUFFQS8wQix1QkFBQSxHQUFpQlEsT0FBSyxDQUFDLFlBQVk7QUFDakMsTUFBSXN0QixFQUFFLEdBQUc4VixTQUFPLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FBaEI7QUFDQSxTQUFPLEVBQUU5VixFQUFFLENBQUMyVixNQUFILElBQWEzVixFQUFFLENBQUN4dEIsSUFBSCxDQUFRLElBQVIsQ0FBYixJQUE4Qnd0QixFQUFFLENBQUNnVyxLQUFILEtBQWEsR0FBN0MsQ0FBUDtBQUNELENBSHFCLENBQXRCOztBQ05BLElBQUl0akMsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7O0FBR0EsSUFBSW1qQyxPQUFPLEdBQUd4akMsUUFBTSxDQUFDMjBCLE1BQXJCO0lBRUEvMEIsb0JBQUEsR0FBaUJRLE9BQUssQ0FBQyxZQUFZO0FBQ2pDLE1BQUlzdEIsRUFBRSxHQUFHOFYsT0FBTyxDQUFDLFNBQUQsRUFBWSxHQUFaLENBQWhCO0FBQ0EsU0FBTzlWLEVBQUUsQ0FBQ3h0QixJQUFILENBQVEsR0FBUixFQUFheWpDLE1BQWIsQ0FBb0I1OUIsQ0FBcEIsS0FBMEIsR0FBMUIsSUFDTCxJQUFJb0QsT0FBSixDQUFZdWtCLEVBQVosRUFBZ0IsT0FBaEIsTUFBNkIsSUFEL0I7QUFFRCxDQUpxQixDQUF0Qjs7QUNOQSxJQUFJNW5CLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJZ0wsUUFBUSxHQUFHaEwsVUFBZjs7QUFDQSxJQUFJOHVCLG1CQUFpQixHQUFHOXVCLG1CQUF4Qjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSUUsZ0JBQWMsR0FBR0Ysb0JBQUEsQ0FBK0NrRyxDQUFwRTs7QUFDQSxJQUFJdUUscUJBQW1CLEdBQUd6Syx5QkFBQSxDQUFzRGtHLENBQWhGOztBQUNBLElBQUkyOEIsVUFBUSxHQUFHN2lDLFFBQWY7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXVqQyxRQUFRLEdBQUd2akMsYUFBZjs7QUFDQSxJQUFJd2pDLGVBQWEsR0FBR3hqQyxtQkFBcEI7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSXdJLG9CQUFvQixHQUFHeEksYUFBQSxDQUF1Q29ILE9BQWxFOztBQUNBLElBQUkwYSxZQUFVLEdBQUc5aEIsWUFBakI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXlqQyxxQkFBbUIsR0FBR3pqQyx1QkFBMUI7O0FBQ0EsSUFBSTBqQyxpQkFBZSxHQUFHMWpDLG9CQUF0Qjs7QUFFQSxJQUFJNGlDLE9BQUssR0FBRzM5QixpQkFBZSxDQUFDLE9BQUQsQ0FBM0I7QUFDQSxJQUFJMCtCLFlBQVksR0FBR2hrQyxRQUFNLENBQUMyMEIsTUFBMUI7QUFDQSxJQUFJc1AsaUJBQWUsR0FBR0QsWUFBWSxDQUFDMzdCLFNBQW5DOztBQUVBLElBQUk2N0IsTUFBTSxHQUFHLDBDQUFiO0FBQ0EsSUFBSUMsR0FBRyxHQUFHLElBQVY7QUFDQSxJQUFJQyxHQUFHLEdBQUcsSUFBVjs7QUFHQSxJQUFJQyxXQUFXLEdBQUcsSUFBSUwsWUFBSixDQUFpQkcsR0FBakIsTUFBMEJBLEdBQTVDO0FBRUEsSUFBSUcsZUFBYSxHQUFHVCxlQUFhLENBQUNTLGFBQWxDO0FBRUEsSUFBSUMsV0FBVyxHQUFHeitCLGFBQVcsS0FDMUIsQ0FBQ3UrQixXQUFELElBQWdCQyxlQUFoQixJQUFpQ1IscUJBQWpDLElBQXdEQyxpQkFBeEQsSUFBMkUzakMsT0FBSyxDQUFDLFlBQVk7QUFDNUZna0MsRUFBQUEsR0FBRyxDQUFDbkIsT0FBRCxDQUFILEdBQWEsS0FBYixDQUQ0Rjs7QUFHNUYsU0FBT2UsWUFBWSxDQUFDRyxHQUFELENBQVosSUFBcUJBLEdBQXJCLElBQTRCSCxZQUFZLENBQUNJLEdBQUQsQ0FBWixJQUFxQkEsR0FBakQsSUFBd0RKLFlBQVksQ0FBQ0csR0FBRCxFQUFNLEdBQU4sQ0FBWixJQUEwQixNQUF6RjtBQUNELENBSmdGLENBRHRELENBQTdCOztBQU9BLElBQUlLLFlBQVksR0FBRyxVQUFVNTRCLE1BQVYsRUFBa0I7QUFDbkMsTUFBSXpKLE1BQU0sR0FBR3lKLE1BQU0sQ0FBQ3pKLE1BQXBCO0FBQ0EsTUFBSXlILEtBQUssR0FBRyxDQUFaO0FBQ0EsTUFBSW5FLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSWcvQixRQUFRLEdBQUcsS0FBZjtBQUNBLE1BQUlqakIsR0FBSjs7QUFDQSxTQUFPNVgsS0FBSyxJQUFJekgsTUFBaEIsRUFBd0J5SCxLQUFLLEVBQTdCLEVBQWlDO0FBQy9CNFgsSUFBQUEsR0FBRyxHQUFHNVYsTUFBTSxDQUFDK1YsTUFBUCxDQUFjL1gsS0FBZCxDQUFOOztBQUNBLFFBQUk0WCxHQUFHLEtBQUssSUFBWixFQUFrQjtBQUNoQi9iLE1BQUFBLE1BQU0sSUFBSStiLEdBQUcsR0FBRzVWLE1BQU0sQ0FBQytWLE1BQVAsQ0FBYyxFQUFFL1gsS0FBaEIsQ0FBaEI7QUFDQTtBQUNEOztBQUNELFFBQUksQ0FBQzY2QixRQUFELElBQWFqakIsR0FBRyxLQUFLLEdBQXpCLEVBQThCO0FBQzVCL2IsTUFBQUEsTUFBTSxJQUFJLFVBQVY7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJK2IsR0FBRyxLQUFLLEdBQVosRUFBaUI7QUFDZmlqQixRQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNELE9BRkQsTUFFTyxJQUFJampCLEdBQUcsS0FBSyxHQUFaLEVBQWlCO0FBQ3RCaWpCLFFBQUFBLFFBQVEsR0FBRyxLQUFYO0FBQ0Q7O0FBQUNoL0IsTUFBQUEsTUFBTSxJQUFJK2IsR0FBVjtBQUNIO0FBQ0Y7O0FBQUMsU0FBTy9iLE1BQVA7QUFDSCxDQXRCRDs7QUF3QkEsSUFBSWkvQixTQUFTLEdBQUcsVUFBVTk0QixNQUFWLEVBQWtCO0FBQ2hDLE1BQUl6SixNQUFNLEdBQUd5SixNQUFNLENBQUN6SixNQUFwQjtBQUNBLE1BQUl5SCxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUluRSxNQUFNLEdBQUcsRUFBYjtBQUNBLE1BQUlrL0IsS0FBSyxHQUFHLEVBQVo7QUFDQSxNQUFJbDZCLEtBQUssR0FBRyxFQUFaO0FBQ0EsTUFBSWc2QixRQUFRLEdBQUcsS0FBZjtBQUNBLE1BQUlHLEdBQUcsR0FBRyxLQUFWO0FBQ0EsTUFBSUMsT0FBTyxHQUFHLENBQWQ7QUFDQSxNQUFJQyxTQUFTLEdBQUcsRUFBaEI7QUFDQSxNQUFJdGpCLEdBQUo7O0FBQ0EsU0FBTzVYLEtBQUssSUFBSXpILE1BQWhCLEVBQXdCeUgsS0FBSyxFQUE3QixFQUFpQztBQUMvQjRYLElBQUFBLEdBQUcsR0FBRzVWLE1BQU0sQ0FBQytWLE1BQVAsQ0FBYy9YLEtBQWQsQ0FBTjs7QUFDQSxRQUFJNFgsR0FBRyxLQUFLLElBQVosRUFBa0I7QUFDaEJBLE1BQUFBLEdBQUcsR0FBR0EsR0FBRyxHQUFHNVYsTUFBTSxDQUFDK1YsTUFBUCxDQUFjLEVBQUUvWCxLQUFoQixDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUk0WCxHQUFHLEtBQUssR0FBWixFQUFpQjtBQUN0QmlqQixNQUFBQSxRQUFRLEdBQUcsS0FBWDtBQUNELEtBRk0sTUFFQSxJQUFJLENBQUNBLFFBQUwsRUFBZSxRQUFRLElBQVI7QUFDcEIsV0FBS2pqQixHQUFHLEtBQUssR0FBYjtBQUNFaWpCLFFBQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0E7O0FBQ0YsV0FBS2pqQixHQUFHLEtBQUssR0FBYjtBQUNFLFlBQUkwaUIsTUFBTSxDQUFDbDlCLElBQVAsQ0FBWTRFLE1BQU0sQ0FBQ3RLLEtBQVAsQ0FBYXNJLEtBQUssR0FBRyxDQUFyQixDQUFaLENBQUosRUFBMEM7QUFDeENBLFVBQUFBLEtBQUssSUFBSSxDQUFUO0FBQ0FnN0IsVUFBQUEsR0FBRyxHQUFHLElBQU47QUFDRDs7QUFDRG4vQixRQUFBQSxNQUFNLElBQUkrYixHQUFWO0FBQ0FxakIsUUFBQUEsT0FBTztBQUNQOztBQUNGLFdBQUtyakIsR0FBRyxLQUFLLEdBQVIsSUFBZW9qQixHQUFwQjtBQUNFLFlBQUlFLFNBQVMsS0FBSyxFQUFkLElBQW9CcmdDLFFBQU0sQ0FBQ2dHLEtBQUQsRUFBUXE2QixTQUFSLENBQTlCLEVBQWtEO0FBQ2hELGdCQUFNLElBQUlDLFdBQUosQ0FBZ0IsNEJBQWhCLENBQU47QUFDRDs7QUFDRHQ2QixRQUFBQSxLQUFLLENBQUNxNkIsU0FBRCxDQUFMLEdBQW1CLElBQW5CO0FBQ0FILFFBQUFBLEtBQUssQ0FBQ3ZnQyxJQUFOLENBQVcsQ0FBQzBnQyxTQUFELEVBQVlELE9BQVosQ0FBWDtBQUNBRCxRQUFBQSxHQUFHLEdBQUcsS0FBTjtBQUNBRSxRQUFBQSxTQUFTLEdBQUcsRUFBWjtBQUNBO0FBcEJrQjs7QUFzQnRCLFFBQUlGLEdBQUosRUFBU0UsU0FBUyxJQUFJdGpCLEdBQWIsQ0FBVCxLQUNLL2IsTUFBTSxJQUFJK2IsR0FBVjtBQUNOOztBQUFDLFNBQU8sQ0FBQy9iLE1BQUQsRUFBU2svQixLQUFULENBQVA7QUFDSCxDQTFDRDtBQTZDQTs7O0FBQ0EsSUFBSXQ1QixRQUFRLENBQUMsUUFBRCxFQUFXazVCLFdBQVgsQ0FBWixFQUFxQztBQUNuQyxNQUFJUyxhQUFhLEdBQUcsU0FBU3JRLE1BQVQsQ0FBZ0JzUSxPQUFoQixFQUF5QnZCLEtBQXpCLEVBQWdDO0FBQ2xELFFBQUl3QixZQUFZLEdBQUcsZ0JBQWdCRixhQUFuQztBQUNBLFFBQUlHLGVBQWUsR0FBR2pDLFVBQVEsQ0FBQytCLE9BQUQsQ0FBOUI7QUFDQSxRQUFJRyxpQkFBaUIsR0FBRzFCLEtBQUssS0FBS2ppQyxTQUFsQztBQUNBLFFBQUlraUMsTUFBTSxHQUFHLEVBQWI7QUFDQSxRQUFJMEIsVUFBVSxHQUFHSixPQUFqQjtBQUNBLFFBQUlLLFFBQUosRUFBY2pDLE1BQWQsRUFBc0JFLE1BQXRCLEVBQThCZ0MsT0FBOUIsRUFBdUM5L0IsTUFBdkMsRUFBK0NtQyxLQUEvQzs7QUFFQSxRQUFJLENBQUNzOUIsWUFBRCxJQUFpQkMsZUFBakIsSUFBb0NDLGlCQUFwQyxJQUF5REgsT0FBTyxDQUFDeDBCLFdBQVIsS0FBd0J1MEIsYUFBckYsRUFBb0c7QUFDbEcsYUFBT0MsT0FBUDtBQUNEOztBQUVELFFBQUlFLGVBQWUsSUFBSUYsT0FBTyxZQUFZRCxhQUExQyxFQUF5RDtBQUN2REMsTUFBQUEsT0FBTyxHQUFHQSxPQUFPLENBQUM3N0IsTUFBbEI7QUFDQSxVQUFJZzhCLGlCQUFKLEVBQXVCMUIsS0FBSyxHQUFHLFdBQVcyQixVQUFYLEdBQXdCQSxVQUFVLENBQUMzQixLQUFuQyxHQUEyQ0UsUUFBUSxDQUFDL2lDLElBQVQsQ0FBY3drQyxVQUFkLENBQW5EO0FBQ3hCOztBQUVESixJQUFBQSxPQUFPLEdBQUdBLE9BQU8sS0FBS3hqQyxTQUFaLEdBQXdCLEVBQXhCLEdBQTZCSixVQUFRLENBQUM0akMsT0FBRCxDQUEvQztBQUNBdkIsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLEtBQUtqaUMsU0FBVixHQUFzQixFQUF0QixHQUEyQkosVUFBUSxDQUFDcWlDLEtBQUQsQ0FBM0M7QUFDQTJCLElBQUFBLFVBQVUsR0FBR0osT0FBYjs7QUFFQSxRQUFJbkIscUJBQW1CLElBQUksWUFBWUssR0FBdkMsRUFBNEM7QUFDMUNkLE1BQUFBLE1BQU0sR0FBRyxDQUFDLENBQUNLLEtBQUYsSUFBV0EsS0FBSyxDQUFDbDVCLE9BQU4sQ0FBYyxHQUFkLElBQXFCLENBQUMsQ0FBMUM7QUFDQSxVQUFJNjRCLE1BQUosRUFBWUssS0FBSyxHQUFHQSxLQUFLLENBQUN2NkIsT0FBTixDQUFjLElBQWQsRUFBb0IsRUFBcEIsQ0FBUjtBQUNiOztBQUVEbThCLElBQUFBLFFBQVEsR0FBRzVCLEtBQVg7O0FBRUEsUUFBSVksZUFBYSxJQUFJLFlBQVlILEdBQWpDLEVBQXNDO0FBQ3BDWixNQUFBQSxNQUFNLEdBQUcsQ0FBQyxDQUFDRyxLQUFGLElBQVdBLEtBQUssQ0FBQ2w1QixPQUFOLENBQWMsR0FBZCxJQUFxQixDQUFDLENBQTFDO0FBQ0EsVUFBSSs0QixNQUFKLEVBQVlHLEtBQUssR0FBR0EsS0FBSyxDQUFDdjZCLE9BQU4sQ0FBYyxJQUFkLEVBQW9CLEVBQXBCLENBQVI7QUFDYjs7QUFFRCxRQUFJNDZCLGlCQUFKLEVBQXFCO0FBQ25Cd0IsTUFBQUEsT0FBTyxHQUFHYixTQUFTLENBQUNPLE9BQUQsQ0FBbkI7QUFDQUEsTUFBQUEsT0FBTyxHQUFHTSxPQUFPLENBQUMsQ0FBRCxDQUFqQjtBQUNBNUIsTUFBQUEsTUFBTSxHQUFHNEIsT0FBTyxDQUFDLENBQUQsQ0FBaEI7QUFDRDs7QUFFRDkvQixJQUFBQSxNQUFNLEdBQUcwcEIsbUJBQWlCLENBQUM2VSxZQUFZLENBQUNpQixPQUFELEVBQVV2QixLQUFWLENBQWIsRUFBK0J3QixZQUFZLEdBQUcsSUFBSCxHQUFVakIsaUJBQXJELEVBQXNFZSxhQUF0RSxDQUExQjs7QUFFQSxRQUFJM0IsTUFBTSxJQUFJRSxNQUFWLElBQW9CSSxNQUFNLENBQUN4aEMsTUFBL0IsRUFBdUM7QUFDckN5RixNQUFBQSxLQUFLLEdBQUdpQixvQkFBb0IsQ0FBQ3BELE1BQUQsQ0FBNUI7O0FBQ0EsVUFBSTQ5QixNQUFKLEVBQVk7QUFDVno3QixRQUFBQSxLQUFLLENBQUN5N0IsTUFBTixHQUFlLElBQWY7QUFDQXo3QixRQUFBQSxLQUFLLENBQUNnbEIsR0FBTixHQUFZb1ksYUFBYSxDQUFDUixZQUFZLENBQUNTLE9BQUQsQ0FBYixFQUF3QkssUUFBeEIsQ0FBekI7QUFDRDs7QUFDRCxVQUFJL0IsTUFBSixFQUFZMzdCLEtBQUssQ0FBQzI3QixNQUFOLEdBQWUsSUFBZjtBQUNaLFVBQUlJLE1BQU0sQ0FBQ3hoQyxNQUFYLEVBQW1CeUYsS0FBSyxDQUFDKzdCLE1BQU4sR0FBZUEsTUFBZjtBQUNwQjs7QUFFRCxRQUFJc0IsT0FBTyxLQUFLSSxVQUFoQixFQUE0QixJQUFJO0FBQzlCO0FBQ0FsK0IsTUFBQUEsNkJBQTJCLENBQUMxQixNQUFELEVBQVMsUUFBVCxFQUFtQjQvQixVQUFVLEtBQUssRUFBZixHQUFvQixNQUFwQixHQUE2QkEsVUFBaEQsQ0FBM0I7QUFDRCxLQUgyQixDQUcxQixPQUFPbGxDLEtBQVAsRUFBYztBQUFFO0FBQWE7QUFFL0IsV0FBT3NGLE1BQVA7QUFDRCxHQXpERDs7QUEyREEsTUFBSSsvQixLQUFLLEdBQUcsVUFBVXhoQyxHQUFWLEVBQWU7QUFDekJBLElBQUFBLEdBQUcsSUFBSWdoQyxhQUFQLElBQXdCemtDLGdCQUFjLENBQUN5a0MsYUFBRCxFQUFnQmhoQyxHQUFoQixFQUFxQjtBQUN6RDdDLE1BQUFBLFlBQVksRUFBRSxJQUQyQztBQUV6RFgsTUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFBRSxlQUFPd2pDLFlBQVksQ0FBQ2hnQyxHQUFELENBQW5CO0FBQTJCLE9BRlc7QUFHekR1RCxNQUFBQSxHQUFHLEVBQUUsVUFBVTdILEVBQVYsRUFBYztBQUFFc2tDLFFBQUFBLFlBQVksQ0FBQ2hnQyxHQUFELENBQVosR0FBb0J0RSxFQUFwQjtBQUF5QjtBQUhXLEtBQXJCLENBQXRDO0FBS0QsR0FORDs7QUFRQSxPQUFLLElBQUl1SCxJQUFJLEdBQUc2RCxxQkFBbUIsQ0FBQ2s1QixZQUFELENBQTlCLEVBQThDcDZCLEtBQUssR0FBRyxDQUEzRCxFQUE4RDNDLElBQUksQ0FBQzlFLE1BQUwsR0FBY3lILEtBQTVFLEdBQW9GO0FBQ2xGNDdCLElBQUFBLEtBQUssQ0FBQ3YrQixJQUFJLENBQUMyQyxLQUFLLEVBQU4sQ0FBTCxDQUFMO0FBQ0Q7O0FBRURxNkIsRUFBQUEsaUJBQWUsQ0FBQ3h6QixXQUFoQixHQUE4QnUwQixhQUE5QjtBQUNBQSxFQUFBQSxhQUFhLENBQUMzOEIsU0FBZCxHQUEwQjQ3QixpQkFBMUI7QUFDQW40QixFQUFBQSxVQUFRLENBQUM5TCxRQUFELEVBQVMsUUFBVCxFQUFtQmdsQyxhQUFuQixDQUFSO0FBQ0Q7OztBQUdEN2lCLFlBQVUsQ0FBQyxRQUFELENBQVY7O0FDNUxBLElBQUlyYyxhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJeWpDLHFCQUFtQixHQUFHempDLHVCQUExQjs7QUFDQSxJQUFJRSxnQkFBYyxHQUFHRixvQkFBQSxDQUErQ2tHLENBQXBFOztBQUNBLElBQUlxQyxrQkFBZ0IsR0FBR3ZJLGFBQUEsQ0FBdUNHLEdBQTlEOztBQUNBLElBQUl5akMsaUJBQWUsR0FBR3RQLE1BQU0sQ0FBQ3RzQixTQUE3QjtBQUdBOztBQUNBLElBQUl2QyxhQUFXLElBQUlnK0IscUJBQW5CLEVBQXdDO0FBQ3RDdmpDLEVBQUFBLGdCQUFjLENBQUMwakMsaUJBQUQsRUFBa0IsUUFBbEIsRUFBNEI7QUFDeEM5aUMsSUFBQUEsWUFBWSxFQUFFLElBRDBCO0FBRXhDWCxJQUFBQSxHQUFHLEVBQUUsWUFBWTtBQUNmLFVBQUksU0FBU3lqQyxpQkFBYixFQUE4QixPQUFPeGlDLFNBQVAsQ0FEZjtBQUdmOztBQUNBLFVBQUksZ0JBQWdCa3pCLE1BQXBCLEVBQTRCO0FBQzFCLGVBQU8sQ0FBQyxDQUFDL3JCLGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUJ5NkIsTUFBaEM7QUFDRDs7QUFDRCxZQUFNM2hDLFNBQVMsQ0FBQyx3Q0FBRCxDQUFmO0FBQ0Q7QUFWdUMsR0FBNUIsQ0FBZDtBQVlEOztBQ3BCRDs7QUFDQTs7QUFDQSxJQUFJTCxVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUlvbEMsV0FBVyxHQUFHcGxDLGFBQWxCOztBQUNBLElBQUl3akMsZUFBYSxHQUFHeGpDLG1CQUFwQjs7QUFDQSxJQUFJd0UsUUFBTSxHQUFHeEUsZ0JBQWI7O0FBQ0EsSUFBSTZPLFFBQU0sR0FBRzdPLGNBQWI7O0FBQ0EsSUFBSXVJLGtCQUFnQixHQUFHdkksYUFBQSxDQUF1Q0csR0FBOUQ7O0FBQ0EsSUFBSXNqQyxtQkFBbUIsR0FBR3pqQyx1QkFBMUI7O0FBQ0EsSUFBSTBqQyxlQUFlLEdBQUcxakMsb0JBQXRCOztBQUVBLElBQUlxbEMsVUFBVSxHQUFHL1EsTUFBTSxDQUFDdHNCLFNBQVAsQ0FBaUJuSSxJQUFsQztBQUNBLElBQUl5bEMsYUFBYSxHQUFHOWdDLFFBQU0sQ0FBQyx1QkFBRCxFQUEwQjdCLE1BQU0sQ0FBQ3FGLFNBQVAsQ0FBaUJjLE9BQTNDLENBQTFCO0FBRUEsSUFBSXk4QixXQUFXLEdBQUdGLFVBQWxCOztBQUVBLElBQUlHLHdCQUF3QixHQUFJLFlBQVk7QUFDMUMsTUFBSTFCLEdBQUcsR0FBRyxHQUFWO0FBQ0EsTUFBSUMsR0FBRyxHQUFHLEtBQVY7QUFDQXNCLEVBQUFBLFVBQVUsQ0FBQzdrQyxJQUFYLENBQWdCc2pDLEdBQWhCLEVBQXFCLEdBQXJCO0FBQ0F1QixFQUFBQSxVQUFVLENBQUM3a0MsSUFBWCxDQUFnQnVqQyxHQUFoQixFQUFxQixHQUFyQjtBQUNBLFNBQU9ELEdBQUcsQ0FBQ1YsU0FBSixLQUFrQixDQUFsQixJQUF1QlcsR0FBRyxDQUFDWCxTQUFKLEtBQWtCLENBQWhEO0FBQ0QsQ0FOOEIsRUFBL0I7O0FBUUEsSUFBSWEsZUFBYSxHQUFHVCxlQUFhLENBQUNTLGFBQWQsSUFBK0JULGVBQWEsQ0FBQ2lDLFlBQWpFOztBQUdBLElBQUlDLGFBQWEsR0FBRyxPQUFPN2xDLElBQVAsQ0FBWSxFQUFaLEVBQWdCLENBQWhCLE1BQXVCdUIsU0FBM0M7QUFFQSxJQUFJdWtDLEtBQUssR0FBR0gsd0JBQXdCLElBQUlFLGFBQTVCLElBQTZDekIsZUFBN0MsSUFBOERSLG1CQUE5RCxJQUFxRkMsZUFBakc7O0FBRUEsSUFBSWlDLEtBQUosRUFBVztBQUNUO0FBQ0FKLEVBQUFBLFdBQVcsR0FBRyxTQUFTMWxDLElBQVQsQ0FBYzBMLE1BQWQsRUFBc0I7QUFDbEMsUUFBSThoQixFQUFFLEdBQUcsSUFBVDtBQUNBLFFBQUk5bEIsS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUM4a0IsRUFBRCxDQUE1QjtBQUNBLFFBQUk1QyxHQUFHLEdBQUd6cEIsVUFBUSxDQUFDdUssTUFBRCxDQUFsQjtBQUNBLFFBQUlnaEIsR0FBRyxHQUFHaGxCLEtBQUssQ0FBQ2dsQixHQUFoQjtBQUNBLFFBQUlubkIsTUFBSixFQUFZd2dDLE1BQVosRUFBb0J4QyxTQUFwQixFQUErQjlnQyxLQUEvQixFQUFzQytILENBQXRDLEVBQXlDOUQsTUFBekMsRUFBaURzL0IsS0FBakQ7O0FBRUEsUUFBSXRaLEdBQUosRUFBUztBQUNQQSxNQUFBQSxHQUFHLENBQUM2VyxTQUFKLEdBQWdCL1YsRUFBRSxDQUFDK1YsU0FBbkI7QUFDQWgrQixNQUFBQSxNQUFNLEdBQUdtZ0MsV0FBVyxDQUFDL2tDLElBQVosQ0FBaUIrckIsR0FBakIsRUFBc0I5QixHQUF0QixDQUFUO0FBQ0E0QyxNQUFBQSxFQUFFLENBQUMrVixTQUFILEdBQWU3VyxHQUFHLENBQUM2VyxTQUFuQjtBQUNBLGFBQU9oK0IsTUFBUDtBQUNEOztBQUVELFFBQUlrK0IsTUFBTSxHQUFHLzdCLEtBQUssQ0FBQys3QixNQUFuQjtBQUNBLFFBQUlKLE1BQU0sR0FBR2UsZUFBYSxJQUFJNVcsRUFBRSxDQUFDNlYsTUFBakM7QUFDQSxRQUFJRyxLQUFLLEdBQUcrQixXQUFXLENBQUM1a0MsSUFBWixDQUFpQjZzQixFQUFqQixDQUFaO0FBQ0EsUUFBSXRrQixNQUFNLEdBQUdza0IsRUFBRSxDQUFDdGtCLE1BQWhCO0FBQ0EsUUFBSSs4QixVQUFVLEdBQUcsQ0FBakI7QUFDQSxRQUFJQyxPQUFPLEdBQUd0YixHQUFkOztBQUVBLFFBQUl5WSxNQUFKLEVBQVk7QUFDVkcsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUN2NkIsT0FBTixDQUFjLEdBQWQsRUFBbUIsRUFBbkIsQ0FBUjs7QUFDQSxVQUFJdTZCLEtBQUssQ0FBQ2w1QixPQUFOLENBQWMsR0FBZCxNQUF1QixDQUFDLENBQTVCLEVBQStCO0FBQzdCazVCLFFBQUFBLEtBQUssSUFBSSxHQUFUO0FBQ0Q7O0FBRUQwQyxNQUFBQSxPQUFPLEdBQUd0YixHQUFHLENBQUN4cEIsS0FBSixDQUFVb3NCLEVBQUUsQ0FBQytWLFNBQWIsQ0FBVixDQU5VOztBQVFWLFVBQUkvVixFQUFFLENBQUMrVixTQUFILEdBQWUsQ0FBZixLQUFxQixDQUFDL1YsRUFBRSxDQUFDMFYsU0FBSixJQUFpQjFWLEVBQUUsQ0FBQzBWLFNBQUgsSUFBZ0J0WSxHQUFHLENBQUNuSixNQUFKLENBQVcrTCxFQUFFLENBQUMrVixTQUFILEdBQWUsQ0FBMUIsTUFBaUMsSUFBdkYsQ0FBSixFQUFrRztBQUNoR3I2QixRQUFBQSxNQUFNLEdBQUcsU0FBU0EsTUFBVCxHQUFrQixHQUEzQjtBQUNBZzlCLFFBQUFBLE9BQU8sR0FBRyxNQUFNQSxPQUFoQjtBQUNBRCxRQUFBQSxVQUFVO0FBQ1gsT0FaUztBQWNWOzs7QUFDQUYsTUFBQUEsTUFBTSxHQUFHLElBQUl0UixNQUFKLENBQVcsU0FBU3ZyQixNQUFULEdBQWtCLEdBQTdCLEVBQWtDczZCLEtBQWxDLENBQVQ7QUFDRDs7QUFFRCxRQUFJcUMsYUFBSixFQUFtQjtBQUNqQkUsTUFBQUEsTUFBTSxHQUFHLElBQUl0UixNQUFKLENBQVcsTUFBTXZyQixNQUFOLEdBQWUsVUFBMUIsRUFBc0NzNkIsS0FBdEMsQ0FBVDtBQUNEOztBQUNELFFBQUltQyx3QkFBSixFQUE4QnBDLFNBQVMsR0FBRy9WLEVBQUUsQ0FBQytWLFNBQWY7QUFFOUI5Z0MsSUFBQUEsS0FBSyxHQUFHK2lDLFVBQVUsQ0FBQzdrQyxJQUFYLENBQWdCMGlDLE1BQU0sR0FBRzBDLE1BQUgsR0FBWXZZLEVBQWxDLEVBQXNDMFksT0FBdEMsQ0FBUjs7QUFFQSxRQUFJN0MsTUFBSixFQUFZO0FBQ1YsVUFBSTVnQyxLQUFKLEVBQVc7QUFDVEEsUUFBQUEsS0FBSyxDQUFDZ0IsS0FBTixHQUFjaEIsS0FBSyxDQUFDZ0IsS0FBTixDQUFZckMsS0FBWixDQUFrQjZrQyxVQUFsQixDQUFkO0FBQ0F4akMsUUFBQUEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXQSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNyQixLQUFULENBQWU2a0MsVUFBZixDQUFYO0FBQ0F4akMsUUFBQUEsS0FBSyxDQUFDaUgsS0FBTixHQUFjOGpCLEVBQUUsQ0FBQytWLFNBQWpCO0FBQ0EvVixRQUFBQSxFQUFFLENBQUMrVixTQUFILElBQWdCOWdDLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU1IsTUFBekI7QUFDRCxPQUxELE1BS091ckIsRUFBRSxDQUFDK1YsU0FBSCxHQUFlLENBQWY7QUFDUixLQVBELE1BT08sSUFBSW9DLHdCQUF3QixJQUFJbGpDLEtBQWhDLEVBQXVDO0FBQzVDK3FCLE1BQUFBLEVBQUUsQ0FBQytWLFNBQUgsR0FBZS9WLEVBQUUsQ0FBQzF0QixNQUFILEdBQVkyQyxLQUFLLENBQUNpSCxLQUFOLEdBQWNqSCxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNSLE1BQW5DLEdBQTRDc2hDLFNBQTNEO0FBQ0Q7O0FBQ0QsUUFBSXNDLGFBQWEsSUFBSXBqQyxLQUFqQixJQUEwQkEsS0FBSyxDQUFDUixNQUFOLEdBQWUsQ0FBN0MsRUFBZ0Q7QUFDOUM7QUFDQTtBQUNBd2pDLE1BQUFBLGFBQWEsQ0FBQzlrQyxJQUFkLENBQW1COEIsS0FBSyxDQUFDLENBQUQsQ0FBeEIsRUFBNkJzakMsTUFBN0IsRUFBcUMsWUFBWTtBQUMvQyxhQUFLdjdCLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR3hJLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQyxFQUFzQ3VJLENBQUMsRUFBdkMsRUFBMkM7QUFDekMsY0FBSXhJLFNBQVMsQ0FBQ3dJLENBQUQsQ0FBVCxLQUFpQmpKLFNBQXJCLEVBQWdDa0IsS0FBSyxDQUFDK0gsQ0FBRCxDQUFMLEdBQVdqSixTQUFYO0FBQ2pDO0FBQ0YsT0FKRDtBQUtEOztBQUVELFFBQUlrQixLQUFLLElBQUlnaEMsTUFBYixFQUFxQjtBQUNuQmhoQyxNQUFBQSxLQUFLLENBQUNnaEMsTUFBTixHQUFlLzhCLE1BQU0sR0FBR3NJLFFBQU0sQ0FBQyxJQUFELENBQTlCOztBQUNBLFdBQUt4RSxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUdpNUIsTUFBTSxDQUFDeGhDLE1BQXZCLEVBQStCdUksQ0FBQyxFQUFoQyxFQUFvQztBQUNsQ3c3QixRQUFBQSxLQUFLLEdBQUd2QyxNQUFNLENBQUNqNUIsQ0FBRCxDQUFkO0FBQ0E5RCxRQUFBQSxNQUFNLENBQUNzL0IsS0FBSyxDQUFDLENBQUQsQ0FBTixDQUFOLEdBQW1CdmpDLEtBQUssQ0FBQ3VqQyxLQUFLLENBQUMsQ0FBRCxDQUFOLENBQXhCO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPdmpDLEtBQVA7QUFDRCxHQTNFRDtBQTRFRDs7SUFFRC9DLFlBQUEsR0FBaUJnbUMsV0FBakI7O0FDL0dBLElBQUk3ekIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJSCxJQUFJLEdBQUdHLFlBQVg7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFLElBQUlyTSxJQUFKLEtBQWFBO0FBQXRELENBQUQsRUFBK0Q7QUFDOURBLEVBQUFBLElBQUksRUFBRUE7QUFEd0QsQ0FBL0QsQ0FBRDs7QUNOQSxJQUFJNEYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSWdtQywwQkFBMEIsR0FBR2htQyxvQkFBakM7O0FBQ0EsSUFBSWltQyxXQUFXLEdBQUdqbUMsYUFBbEI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUVBLElBQUkrTCxRQUFNLEdBQUd0RyxhQUFXLElBQUkxRixPQUFLLENBQUMsWUFBWTtBQUM1QztBQUNBLFNBQU9FLE1BQU0sQ0FBQ0ssd0JBQVAsQ0FBZ0NnMEIsTUFBTSxDQUFDdHNCLFNBQXZDLEVBQWtELE9BQWxELEVBQTJEN0gsR0FBM0QsQ0FBK0RLLElBQS9ELENBQW9FO0FBQUV3aUMsSUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0JFLElBQUFBLE1BQU0sRUFBRTtBQUF4QixHQUFwRSxNQUF3RyxJQUEvRztBQUNELENBSGdDLENBQWpDO0FBTUE7O0FBQ0EsSUFBSW4zQixRQUFKLEVBQVlpNkIsMEJBQTBCLENBQUM5L0IsQ0FBM0IsQ0FBNkJvdUIsTUFBTSxDQUFDdHNCLFNBQXBDLEVBQStDLE9BQS9DLEVBQXdEO0FBQ2xFbEgsRUFBQUEsWUFBWSxFQUFFLElBRG9EO0FBRWxFWCxFQUFBQSxHQUFHLEVBQUU4bEM7QUFGNkQsQ0FBeEQ7O0FDWlosSUFBSXhnQyxhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJaWtDLGVBQWEsR0FBR2prQyxtQkFBQSxDQUE4Q2lrQyxhQUFsRTs7QUFDQSxJQUFJL2pDLGdCQUFjLEdBQUdGLG9CQUFBLENBQStDa0csQ0FBcEU7O0FBQ0EsSUFBSXFDLGtCQUFnQixHQUFHdkksYUFBQSxDQUF1Q0csR0FBOUQ7O0FBQ0EsSUFBSXlqQyxpQkFBZSxHQUFHdFAsTUFBTSxDQUFDdHNCLFNBQTdCO0FBR0E7O0FBQ0EsSUFBSXZDLGFBQVcsSUFBSXcrQixlQUFuQixFQUFrQztBQUNoQy9qQyxFQUFBQSxnQkFBYyxDQUFDMGpDLGlCQUFELEVBQWtCLFFBQWxCLEVBQTRCO0FBQ3hDOWlDLElBQUFBLFlBQVksRUFBRSxJQUQwQjtBQUV4Q1gsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFDZixVQUFJLFNBQVN5akMsaUJBQWIsRUFBOEIsT0FBT3hpQyxTQUFQLENBRGY7QUFHZjs7QUFDQSxVQUFJLGdCQUFnQmt6QixNQUFwQixFQUE0QjtBQUMxQixlQUFPLENBQUMsQ0FBQy9yQixrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCMjZCLE1BQWhDO0FBQ0Q7O0FBQ0QsWUFBTTdoQyxTQUFTLENBQUMsd0NBQUQsQ0FBZjtBQUNEO0FBVnVDLEdBQTVCLENBQWQ7QUFZRDs7QUNsQkQsSUFBSXFRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXlCLFlBQVUsR0FBR3pCLFlBQWpCOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUVBLElBQUlrbUMsaUJBQWlCLEdBQUcsWUFBWTtBQUNsQyxNQUFJQyxVQUFVLEdBQUcsS0FBakI7QUFDQSxNQUFJOVksRUFBRSxHQUFHLE1BQVQ7O0FBQ0FBLEVBQUFBLEVBQUUsQ0FBQ3h0QixJQUFILEdBQVUsWUFBWTtBQUNwQnNtQyxJQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNBLFdBQU8sSUFBSXRtQyxJQUFKLENBQVMyUCxLQUFULENBQWUsSUFBZixFQUFxQjNOLFNBQXJCLENBQVA7QUFDRCxHQUhEOztBQUlBLFNBQU93ckIsRUFBRSxDQUFDMW1CLElBQUgsQ0FBUSxLQUFSLE1BQW1CLElBQW5CLElBQTJCdy9CLFVBQWxDO0FBQ0QsQ0FSdUIsRUFBeEI7O0FBVUEsSUFBSUMsVUFBVSxHQUFHLElBQUl6L0IsSUFBckI7QUFHQTs7QUFDQStLLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUUsQ0FBQ2c2QjtBQUExQyxDQUFELEVBQWdFO0FBQy9Edi9CLEVBQUFBLElBQUksRUFBRSxVQUFVOGpCLEdBQVYsRUFBZTtBQUNuQixRQUFJNXFCLElBQUksR0FBRyxLQUFLQSxJQUFoQjtBQUNBLFFBQUksQ0FBQzRCLFlBQVUsQ0FBQzVCLElBQUQsQ0FBZixFQUF1QixPQUFPdW1DLFVBQVUsQ0FBQzVsQyxJQUFYLENBQWdCLElBQWhCLEVBQXNCaXFCLEdBQXRCLENBQVA7QUFDdkIsUUFBSXJsQixNQUFNLEdBQUd2RixJQUFJLENBQUNXLElBQUwsQ0FBVSxJQUFWLEVBQWdCaXFCLEdBQWhCLENBQWI7O0FBQ0EsUUFBSXJsQixNQUFNLEtBQUssSUFBWCxJQUFtQixDQUFDL0IsVUFBUSxDQUFDK0IsTUFBRCxDQUFoQyxFQUEwQztBQUN4QyxZQUFNLElBQUlpUyxLQUFKLENBQVUsb0VBQVYsQ0FBTjtBQUNEOztBQUNELFdBQU8sQ0FBQyxDQUFDalMsTUFBVDtBQUNEO0FBVDhELENBQWhFLENBQUQ7O0FDcEJBLElBQUl3WCxzQkFBb0IsR0FBRzVjLFlBQUEsQ0FBc0NrSSxNQUFqRTs7QUFDQSxJQUFJdUQsVUFBUSxHQUFHekwsa0JBQWY7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTJSLFdBQVMsR0FBRzNSLFVBQWhCOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFDQSxJQUFJcWpDLEtBQUssR0FBR3JqQyxhQUFaOztBQUVBLElBQUlxc0IsU0FBUyxHQUFHLFVBQWhCO0FBQ0EsSUFBSXVYLGlCQUFlLEdBQUd0UCxNQUFNLENBQUN0c0IsU0FBN0I7QUFDQSxJQUFJcStCLGNBQWMsR0FBR3pDLGlCQUFlLENBQUN2WCxTQUFELENBQXBDO0FBRUEsSUFBSWlhLFdBQVcsR0FBR3ZtQyxPQUFLLENBQUMsWUFBWTtBQUFFLFNBQU9zbUMsY0FBYyxDQUFDN2xDLElBQWYsQ0FBb0I7QUFBRXVJLElBQUFBLE1BQU0sRUFBRSxHQUFWO0FBQWVzNkIsSUFBQUEsS0FBSyxFQUFFO0FBQXRCLEdBQXBCLEtBQW9ELE1BQTNEO0FBQW9FLENBQW5GLENBQXZCOztBQUVBLElBQUlrRCxjQUFjLEdBQUczcEIsc0JBQW9CLElBQUl5cEIsY0FBYyxDQUFDeGhDLElBQWYsSUFBdUJ3bkIsU0FBcEU7QUFHQTs7QUFDQSxJQUFJaWEsV0FBVyxJQUFJQyxjQUFuQixFQUFtQztBQUNqQzk2QixFQUFBQSxVQUFRLENBQUM2b0IsTUFBTSxDQUFDdHNCLFNBQVIsRUFBbUJxa0IsU0FBbkIsRUFBOEIsU0FBU3JyQixRQUFULEdBQW9CO0FBQ3hELFFBQUl3bEMsQ0FBQyxHQUFHcmdDLFdBQVEsQ0FBQyxJQUFELENBQWhCO0FBQ0EsUUFBSXNnQyxDQUFDLEdBQUc5MEIsV0FBUyxDQUFDNjBCLENBQUMsQ0FBQ3o5QixNQUFILENBQWpCO0FBQ0EsUUFBSTI5QixFQUFFLEdBQUdGLENBQUMsQ0FBQ25ELEtBQVg7QUFDQSxRQUFJbjlCLENBQUMsR0FBR3lMLFdBQVMsQ0FBQyswQixFQUFFLEtBQUt0bEMsU0FBUCxJQUFvQm9sQyxDQUFDLFlBQVlsUyxNQUFqQyxJQUEyQyxFQUFFLFdBQVdzUCxpQkFBYixDQUEzQyxHQUEyRVAsS0FBSyxDQUFDN2lDLElBQU4sQ0FBV2dtQyxDQUFYLENBQTNFLEdBQTJGRSxFQUE1RixDQUFqQjtBQUNBLFdBQU8sTUFBTUQsQ0FBTixHQUFVLEdBQVYsR0FBZ0J2Z0MsQ0FBdkI7QUFDRCxHQU5PLEVBTUw7QUFBRXlDLElBQUFBLE1BQU0sRUFBRTtBQUFWLEdBTkssQ0FBUjtBQU9EOztBQ3pCRCxJQUFJbW9CLFlBQVUsR0FBRzl3QixZQUFqQjs7QUFDQSxJQUFJK3dCLGdCQUFnQixHQUFHL3dCLGtCQUF2QjtBQUdBOzs7SUFDQVQsTUFBQSxHQUFpQnV4QixZQUFVLENBQUMsS0FBRCxFQUFRLFVBQVVFLElBQVYsRUFBZ0I7QUFDakQsU0FBTyxTQUFTMlYsR0FBVCxHQUFlO0FBQUUsV0FBTzNWLElBQUksQ0FBQyxJQUFELEVBQU9udkIsU0FBUyxDQUFDQyxNQUFWLEdBQW1CRCxTQUFTLENBQUMsQ0FBRCxDQUE1QixHQUFrQ1QsU0FBekMsQ0FBWDtBQUFpRSxHQUF6RjtBQUNELENBRjBCLEVBRXhCMnZCLGdCQUZ3QixDQUEzQjs7QUNMQSxJQUFJcmYsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJdUIsd0JBQXNCLEdBQUd2Qix3QkFBN0I7O0FBQ0EsSUFBSW9KLHFCQUFtQixHQUFHcEoscUJBQTFCOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJK0wsUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBTyxLQUFLMFgsRUFBTCxDQUFRLENBQVIsTUFBZSxRQUF0QjtBQUNELENBRmlCLENBQWxCO0FBS0E7O0FBQ0EvRixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFSDtBQUF6QyxDQUFELEVBQW9EO0FBQ25EMEwsRUFBQUEsRUFBRSxFQUFFLFNBQVNBLEVBQVQsQ0FBWWxPLEtBQVosRUFBbUI7QUFDckIsUUFBSTZmLENBQUMsR0FBR3BvQixVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBaEI7QUFDQSxRQUFJbVcsR0FBRyxHQUFHMFIsQ0FBQyxDQUFDdG5CLE1BQVo7QUFDQSxRQUFJNlYsYUFBYSxHQUFHdk8scUJBQW1CLENBQUNHLEtBQUQsQ0FBdkM7QUFDQSxRQUFJcU8sQ0FBQyxHQUFHRCxhQUFhLElBQUksQ0FBakIsR0FBcUJBLGFBQXJCLEdBQXFDRCxHQUFHLEdBQUdDLGFBQW5EO0FBQ0EsV0FBUUMsQ0FBQyxHQUFHLENBQUosSUFBU0EsQ0FBQyxJQUFJRixHQUFmLEdBQXNCdFcsU0FBdEIsR0FBa0Nnb0IsQ0FBQyxDQUFDOUgsTUFBRixDQUFTMUosQ0FBVCxDQUF6QztBQUNEO0FBUGtELENBQXBELENBQUQ7O0FDYkEsSUFBSXhPLHFCQUFtQixHQUFHcEoscUJBQTFCOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFFQSxJQUFJNkosY0FBWSxHQUFHLFVBQVUrOEIsaUJBQVYsRUFBNkI7QUFDOUMsU0FBTyxVQUFVNzhCLEtBQVYsRUFBaUI4OEIsR0FBakIsRUFBc0I7QUFDM0IsUUFBSXpkLENBQUMsR0FBR3BvQixVQUFRLENBQUNPLHdCQUFzQixDQUFDd0ksS0FBRCxDQUF2QixDQUFoQjtBQUNBLFFBQUkrOEIsUUFBUSxHQUFHMTlCLHFCQUFtQixDQUFDeTlCLEdBQUQsQ0FBbEM7QUFDQSxRQUFJeFcsSUFBSSxHQUFHakgsQ0FBQyxDQUFDdG5CLE1BQWI7QUFDQSxRQUFJMm5CLEtBQUosRUFBV3NkLE1BQVg7QUFDQSxRQUFJRCxRQUFRLEdBQUcsQ0FBWCxJQUFnQkEsUUFBUSxJQUFJelcsSUFBaEMsRUFBc0MsT0FBT3VXLGlCQUFpQixHQUFHLEVBQUgsR0FBUXhsQyxTQUFoQztBQUN0Q3FvQixJQUFBQSxLQUFLLEdBQUdMLENBQUMsQ0FBQ3NELFVBQUYsQ0FBYW9hLFFBQWIsQ0FBUjtBQUNBLFdBQU9yZCxLQUFLLEdBQUcsTUFBUixJQUFrQkEsS0FBSyxHQUFHLE1BQTFCLElBQW9DcWQsUUFBUSxHQUFHLENBQVgsS0FBaUJ6VyxJQUFyRCxJQUNGLENBQUMwVyxNQUFNLEdBQUczZCxDQUFDLENBQUNzRCxVQUFGLENBQWFvYSxRQUFRLEdBQUcsQ0FBeEIsQ0FBVixJQUF3QyxNQUR0QyxJQUNnREMsTUFBTSxHQUFHLE1BRHpELEdBRURILGlCQUFpQixHQUFHeGQsQ0FBQyxDQUFDOUgsTUFBRixDQUFTd2xCLFFBQVQsQ0FBSCxHQUF3QnJkLEtBRnhDLEdBR0RtZCxpQkFBaUIsR0FBR3hkLENBQUMsQ0FBQ25vQixLQUFGLENBQVE2bEMsUUFBUixFQUFrQkEsUUFBUSxHQUFHLENBQTdCLENBQUgsR0FBcUMsQ0FBQ3JkLEtBQUssR0FBRyxNQUFSLElBQWtCLEVBQW5CLEtBQTBCc2QsTUFBTSxHQUFHLE1BQW5DLElBQTZDLE9BSHpHO0FBSUQsR0FYRDtBQVlELENBYkQ7O0lBZUF4bkMsZUFBQSxHQUFpQjtBQUNmO0FBQ0E7QUFDQXluQyxFQUFBQSxNQUFNLEVBQUVuOUIsY0FBWSxDQUFDLEtBQUQsQ0FITDtBQUlmO0FBQ0E7QUFDQXlYLEVBQUFBLE1BQU0sRUFBRXpYLGNBQVksQ0FBQyxJQUFEO0FBTkwsQ0FBakI7O0FDbEJBLElBQUk2SCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnbkMsUUFBTSxHQUFHaG5DLGVBQUEsQ0FBeUNnbkMsTUFBdEQ7QUFHQTs7O0FBQ0F0MUIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DK3hCLEVBQUFBLFdBQVcsRUFBRSxTQUFTQSxXQUFULENBQXFCSixHQUFyQixFQUEwQjtBQUNyQyxXQUFPRyxRQUFNLENBQUMsSUFBRCxFQUFPSCxHQUFQLENBQWI7QUFDRDtBQUhrQyxDQUFwQyxDQUFEOztBQ05BLElBQUloRSxVQUFRLEdBQUc3aUMsUUFBZjs7SUFFQVQsVUFBQSxHQUFpQixVQUFVRixFQUFWLEVBQWM7QUFDN0IsTUFBSXdqQyxVQUFRLENBQUN4akMsRUFBRCxDQUFaLEVBQWtCO0FBQ2hCLFVBQU1nQyxTQUFTLENBQUMsK0NBQUQsQ0FBZjtBQUNEOztBQUFDLFNBQU9oQyxFQUFQO0FBQ0gsQ0FKRDs7QUNGQSxJQUFJNEYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJNGlDLEtBQUssR0FBRzM5QixpQkFBZSxDQUFDLE9BQUQsQ0FBM0I7O0lBRUExRixvQkFBQSxHQUFpQixVQUFVdVksV0FBVixFQUF1QjtBQUN0QyxNQUFJbkQsTUFBTSxHQUFHLEdBQWI7O0FBQ0EsTUFBSTtBQUNGLFVBQU1tRCxXQUFOLEVBQW1CbkQsTUFBbkI7QUFDRCxHQUZELENBRUUsT0FBT3V5QixNQUFQLEVBQWU7QUFDZixRQUFJO0FBQ0Z2eUIsTUFBQUEsTUFBTSxDQUFDaXVCLEtBQUQsQ0FBTixHQUFnQixLQUFoQjtBQUNBLGFBQU8sTUFBTTlxQixXQUFOLEVBQW1CbkQsTUFBbkIsQ0FBUDtBQUNELEtBSEQsQ0FHRSxPQUFPd3lCLE1BQVAsRUFBZTtBQUFFO0FBQWE7QUFDakM7O0FBQUMsU0FBTyxLQUFQO0FBQ0gsQ0FWRDs7QUNIQSxJQUFJejFCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSU0sMEJBQXdCLEdBQUdOLDhCQUFBLENBQTJEa0csQ0FBMUY7O0FBQ0EsSUFBSXVELFVBQVEsR0FBR3pKLFVBQWY7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSW9uQyxZQUFVLEdBQUdwbkMsVUFBakI7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCOztBQUNBLElBQUlxbkMsc0JBQW9CLEdBQUdybkMsb0JBQTNCOzs7QUFJQSxJQUFJc25DLFNBQVMsR0FBRyxHQUFHQyxRQUFuQjtBQUNBLElBQUlqK0IsS0FBRyxHQUFHaEssSUFBSSxDQUFDZ0ssR0FBZjtBQUVBLElBQUlrK0IseUJBQXVCLEdBQUdILHNCQUFvQixDQUFDLFVBQUQsQ0FBbEQ7O0FBRUEsSUFBSUksa0JBQWdCLEdBQWUsQ0FBQ0QseUJBQWIsSUFBd0MsQ0FBQyxDQUFDLFlBQVk7QUFDM0UsTUFBSTltQyxVQUFVLEdBQUdKLDBCQUF3QixDQUFDcUMsTUFBTSxDQUFDcUYsU0FBUixFQUFtQixVQUFuQixDQUF6QztBQUNBLFNBQU90SCxVQUFVLElBQUksQ0FBQ0EsVUFBVSxDQUFDSyxRQUFqQztBQUNELENBSGdFLEVBQWpFO0FBTUE7O0FBQ0EyUSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFLENBQUN1N0Isa0JBQUQsSUFBcUIsQ0FBQ0Q7QUFBL0QsQ0FBRCxFQUEyRjtBQUMxRkQsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JHO0FBQWE7QUFBL0IsSUFBOEQ7QUFDdEUsUUFBSXI0QixJQUFJLEdBQUdyTyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBbkI7QUFDQTZsQyxJQUFBQSxZQUFVLENBQUNNLFlBQUQsQ0FBVjtBQUNBLFFBQUlDLFdBQVcsR0FBRzlsQyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF4RDtBQUNBLFFBQUlzVyxHQUFHLEdBQUdySSxJQUFJLENBQUN2TixNQUFmO0FBQ0EsUUFBSXFYLEdBQUcsR0FBR3d1QixXQUFXLEtBQUt2bUMsU0FBaEIsR0FBNEJzVyxHQUE1QixHQUFrQ3BPLEtBQUcsQ0FBQ0csVUFBUSxDQUFDaytCLFdBQUQsQ0FBVCxFQUF3Qmp3QixHQUF4QixDQUEvQztBQUNBLFFBQUlrd0IsTUFBTSxHQUFHNW1DLFVBQVEsQ0FBQzBtQyxZQUFELENBQXJCO0FBQ0EsV0FBT0osU0FBUyxHQUNaQSxTQUFTLENBQUM5bUMsSUFBVixDQUFlNk8sSUFBZixFQUFxQnU0QixNQUFyQixFQUE2Qnp1QixHQUE3QixDQURZLEdBRVo5SixJQUFJLENBQUNwTyxLQUFMLENBQVdrWSxHQUFHLEdBQUd5dUIsTUFBTSxDQUFDOWxDLE1BQXhCLEVBQWdDcVgsR0FBaEMsTUFBeUN5dUIsTUFGN0M7QUFHRDtBQVh5RixDQUEzRixDQUFEOztBQ3ZCQSxJQUFJbDJCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTJKLGlCQUFlLEdBQUczSixpQkFBdEI7O0FBRUEsSUFBSW9oQixjQUFZLEdBQUd6ZSxNQUFNLENBQUN5ZSxZQUExQjs7QUFFQSxJQUFJeW1CLGNBQWMsR0FBR2xsQyxNQUFNLENBQUNtbEMsYUFBNUI7O0FBR0EsSUFBSUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDRixjQUFGLElBQW9CQSxjQUFjLENBQUMvbEMsTUFBZixJQUF5QixDQUFwRTtBQUdBOztBQUNBNFAsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQmdCLEVBQUFBLElBQUksRUFBRSxJQUExQjtBQUFnQ0ksRUFBQUEsTUFBTSxFQUFFNjdCO0FBQXhDLENBQUQsRUFBNkQ7QUFDNUQ7QUFDQUQsRUFBQUEsYUFBYSxFQUFFLFNBQVNBLGFBQVQsQ0FBdUJ0bUIsQ0FBdkIsRUFBMEI7QUFDdkMsUUFBSXdtQixRQUFRLEdBQUcsRUFBZjtBQUNBLFFBQUlsbUMsTUFBTSxHQUFHRCxTQUFTLENBQUNDLE1BQXZCO0FBQ0EsUUFBSXVJLENBQUMsR0FBRyxDQUFSO0FBQ0EsUUFBSTZXLElBQUo7O0FBQ0EsV0FBT3BmLE1BQU0sR0FBR3VJLENBQWhCLEVBQW1CO0FBQ2pCNlcsTUFBQUEsSUFBSSxHQUFHLENBQUNyZixTQUFTLENBQUN3SSxDQUFDLEVBQUYsQ0FBakI7QUFDQSxVQUFJVixpQkFBZSxDQUFDdVgsSUFBRCxFQUFPLFFBQVAsQ0FBZixLQUFvQ0EsSUFBeEMsRUFBOEMsTUFBTXFCLFVBQVUsQ0FBQ3JCLElBQUksR0FBRyw0QkFBUixDQUFoQjtBQUM5QzhtQixNQUFBQSxRQUFRLENBQUNqa0MsSUFBVCxDQUFjbWQsSUFBSSxHQUFHLE9BQVAsR0FDVkUsY0FBWSxDQUFDRixJQUFELENBREYsR0FFVkUsY0FBWSxDQUFDLENBQUMsQ0FBQ0YsSUFBSSxJQUFJLE9BQVQsS0FBcUIsRUFBdEIsSUFBNEIsTUFBN0IsRUFBcUNBLElBQUksR0FBRyxLQUFQLEdBQWUsTUFBcEQsQ0FGaEI7QUFJRDs7QUFBQyxXQUFPOG1CLFFBQVEsQ0FBQ2gvQixJQUFULENBQWMsRUFBZCxDQUFQO0FBQ0g7QUFmMkQsQ0FBN0QsQ0FBRDs7QUNYQSxJQUFJMEksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJb25DLFlBQVUsR0FBR3BuQyxVQUFqQjs7QUFDQSxJQUFJdUIsd0JBQXNCLEdBQUd2Qix3QkFBN0I7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXFuQyxzQkFBb0IsR0FBR3JuQyxvQkFBM0I7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFLENBQUNtN0Isc0JBQW9CLENBQUMsVUFBRDtBQUE5RCxDQUFELEVBQStFO0FBQzlFbjlCLEVBQUFBLFFBQVEsRUFBRSxTQUFTQSxRQUFULENBQWtCdzlCO0FBQWE7QUFBL0IsSUFBcUQ7QUFDN0QsV0FBTyxDQUFDLENBQUMsQ0FBQzFtQyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBUixDQUNQNEksT0FETyxDQUNDbkosVUFBUSxDQUFDb21DLFlBQVUsQ0FBQ00sWUFBRCxDQUFYLENBRFQsRUFDcUM3bEMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FEM0UsQ0FBVjtBQUVEO0FBSjZFLENBQS9FLENBQUQ7O0FDUkEsSUFBSWtnQixRQUFNLEdBQUd0aEIsZUFBQSxDQUF5Q3NoQixNQUF0RDs7QUFDQSxJQUFJdGdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBQ0EsSUFBSThkLGNBQWMsR0FBRzlkLGdCQUFyQjs7QUFFQSxJQUFJaW9DLGlCQUFlLEdBQUcsaUJBQXRCO0FBQ0EsSUFBSTkxQixrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDaEIsU0FBcEIsQ0FBOEI0Z0MsaUJBQTlCLENBQXZCO0FBR0E7O0FBQ0FucUIsY0FBYyxDQUFDbmIsTUFBRCxFQUFTLFFBQVQsRUFBbUIsVUFBVXFiLFFBQVYsRUFBb0I7QUFDbkQ3TCxFQUFBQSxrQkFBZ0IsQ0FBQyxJQUFELEVBQU87QUFDckIzSyxJQUFBQSxJQUFJLEVBQUV5Z0MsaUJBRGU7QUFFckIxOEIsSUFBQUEsTUFBTSxFQUFFdkssVUFBUSxDQUFDZ2QsUUFBRCxDQUZLO0FBR3JCelUsSUFBQUEsS0FBSyxFQUFFO0FBSGMsR0FBUCxDQUFoQixDQURtRDtBQU9yRDtBQUNDLENBUmEsRUFRWCxTQUFTa04sSUFBVCxHQUFnQjtBQUNqQixNQUFJbFAsS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUMsSUFBRCxDQUE1QjtBQUNBLE1BQUlnRCxNQUFNLEdBQUdoRSxLQUFLLENBQUNnRSxNQUFuQjtBQUNBLE1BQUloQyxLQUFLLEdBQUdoQyxLQUFLLENBQUNnQyxLQUFsQjtBQUNBLE1BQUkyK0IsS0FBSjtBQUNBLE1BQUkzK0IsS0FBSyxJQUFJZ0MsTUFBTSxDQUFDekosTUFBcEIsRUFBNEIsT0FBTztBQUFFakIsSUFBQUEsS0FBSyxFQUFFTyxTQUFUO0FBQW9CMFYsSUFBQUEsSUFBSSxFQUFFO0FBQTFCLEdBQVA7QUFDNUJveEIsRUFBQUEsS0FBSyxHQUFHNW1CLFFBQU0sQ0FBQy9WLE1BQUQsRUFBU2hDLEtBQVQsQ0FBZDtBQUNBaEMsRUFBQUEsS0FBSyxDQUFDZ0MsS0FBTixJQUFlMitCLEtBQUssQ0FBQ3BtQyxNQUFyQjtBQUNBLFNBQU87QUFBRWpCLElBQUFBLEtBQUssRUFBRXFuQyxLQUFUO0FBQWdCcHhCLElBQUFBLElBQUksRUFBRTtBQUF0QixHQUFQO0FBQ0QsQ0FqQmEsQ0FBZDs7QUNUQSxJQUFJckwsVUFBUSxHQUFHekwsa0JBQWY7O0FBQ0EsSUFBSW1vQyxZQUFVLEdBQUdub0MsWUFBakI7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUk4Ryw2QkFBMkIsR0FBRzlHLDZCQUFsQzs7QUFFQSxJQUFJaVEsT0FBTyxHQUFHaEwsaUJBQWUsQ0FBQyxTQUFELENBQTdCO0FBQ0EsSUFBSTIrQixpQkFBZSxHQUFHdFAsTUFBTSxDQUFDdHNCLFNBQTdCOztJQUVBekksNkJBQUEsR0FBaUIsVUFBVXNlLEdBQVYsRUFBZWhlLElBQWYsRUFBcUJrTSxNQUFyQixFQUE2QnE4QixJQUE3QixFQUFtQztBQUNsRCxNQUFJbDJCLE1BQU0sR0FBR2pOLGlCQUFlLENBQUM0WSxHQUFELENBQTVCO0FBRUEsTUFBSXdxQixtQkFBbUIsR0FBRyxDQUFDdG9DLE9BQUssQ0FBQyxZQUFZO0FBQzNDO0FBQ0EsUUFBSWtHLENBQUMsR0FBRyxFQUFSOztBQUNBQSxJQUFBQSxDQUFDLENBQUNpTSxNQUFELENBQUQsR0FBWSxZQUFZO0FBQUUsYUFBTyxDQUFQO0FBQVcsS0FBckM7O0FBQ0EsV0FBTyxHQUFHMkwsR0FBSCxFQUFRNVgsQ0FBUixLQUFjLENBQXJCO0FBQ0QsR0FMK0IsQ0FBaEM7QUFPQSxNQUFJaWdDLGlCQUFpQixHQUFHbUMsbUJBQW1CLElBQUksQ0FBQ3RvQyxPQUFLLENBQUMsWUFBWTtBQUNoRTtBQUNBLFFBQUlvbUMsVUFBVSxHQUFHLEtBQWpCO0FBQ0EsUUFBSTlZLEVBQUUsR0FBRyxHQUFUOztBQUVBLFFBQUl4UCxHQUFHLEtBQUssT0FBWixFQUFxQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQXdQLE1BQUFBLEVBQUUsR0FBRyxFQUFMLENBSm1CO0FBTW5COztBQUNBQSxNQUFBQSxFQUFFLENBQUNqZCxXQUFILEdBQWlCLEVBQWpCOztBQUNBaWQsTUFBQUEsRUFBRSxDQUFDamQsV0FBSCxDQUFlSCxPQUFmLElBQTBCLFlBQVk7QUFBRSxlQUFPb2QsRUFBUDtBQUFZLE9BQXBEOztBQUNBQSxNQUFBQSxFQUFFLENBQUNnVyxLQUFILEdBQVcsRUFBWDtBQUNBaFcsTUFBQUEsRUFBRSxDQUFDbmIsTUFBRCxDQUFGLEdBQWEsSUFBSUEsTUFBSixDQUFiO0FBQ0Q7O0FBRURtYixJQUFBQSxFQUFFLENBQUN4dEIsSUFBSCxHQUFVLFlBQVk7QUFBRXNtQyxNQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUFtQixhQUFPLElBQVA7QUFBYyxLQUF6RDs7QUFFQTlZLElBQUFBLEVBQUUsQ0FBQ25iLE1BQUQsQ0FBRixDQUFXLEVBQVg7QUFDQSxXQUFPLENBQUNpMEIsVUFBUjtBQUNELEdBdEJvRCxDQUFyRDs7QUF3QkEsTUFDRSxDQUFDa0MsbUJBQUQsSUFDQSxDQUFDbkMsaUJBREQsSUFFQW42QixNQUhGLEVBSUU7QUFDQSxRQUFJdThCLGtCQUFrQixHQUFHLElBQUlwMkIsTUFBSixDQUF6QjtBQUNBLFFBQUkwTCxPQUFPLEdBQUcvZCxJQUFJLENBQUNxUyxNQUFELEVBQVMsR0FBRzJMLEdBQUgsQ0FBVCxFQUFrQixVQUFVMFIsWUFBVixFQUF3QjVhLE1BQXhCLEVBQWdDOFYsR0FBaEMsRUFBcUM4ZCxJQUFyQyxFQUEyQ0MsaUJBQTNDLEVBQThEO0FBQ2hHLFVBQUlDLEtBQUssR0FBRzl6QixNQUFNLENBQUM5VSxJQUFuQjs7QUFDQSxVQUFJNG9DLEtBQUssS0FBS04sWUFBVixJQUF3Qk0sS0FBSyxLQUFLN0UsaUJBQWUsQ0FBQy9qQyxJQUF0RCxFQUE0RDtBQUMxRCxZQUFJd29DLG1CQUFtQixJQUFJLENBQUNHLGlCQUE1QixFQUErQztBQUM3QztBQUNBO0FBQ0E7QUFDQSxpQkFBTztBQUFFMXhCLFlBQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxZQUFBQSxLQUFLLEVBQUV5bkMsa0JBQWtCLENBQUM5bkMsSUFBbkIsQ0FBd0JtVSxNQUF4QixFQUFnQzhWLEdBQWhDLEVBQXFDOGQsSUFBckM7QUFBckIsV0FBUDtBQUNEOztBQUNELGVBQU87QUFBRXp4QixVQUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjalcsVUFBQUEsS0FBSyxFQUFFMHVCLFlBQVksQ0FBQy91QixJQUFiLENBQWtCaXFCLEdBQWxCLEVBQXVCOVYsTUFBdkIsRUFBK0I0ekIsSUFBL0I7QUFBckIsU0FBUDtBQUNEOztBQUNELGFBQU87QUFBRXp4QixRQUFBQSxJQUFJLEVBQUU7QUFBUixPQUFQO0FBQ0QsS0FaaUIsQ0FBbEI7QUFjQXJMLElBQUFBLFVBQVEsQ0FBQzlJLE1BQU0sQ0FBQ3FGLFNBQVIsRUFBbUI2VixHQUFuQixFQUF3QkQsT0FBTyxDQUFDLENBQUQsQ0FBL0IsQ0FBUjtBQUNBblMsSUFBQUEsVUFBUSxDQUFDbTRCLGlCQUFELEVBQWtCMXhCLE1BQWxCLEVBQTBCMEwsT0FBTyxDQUFDLENBQUQsQ0FBakMsQ0FBUjtBQUNEOztBQUVELE1BQUl3cUIsSUFBSixFQUFVdGhDLDZCQUEyQixDQUFDODhCLGlCQUFlLENBQUMxeEIsTUFBRCxDQUFoQixFQUEwQixNQUExQixFQUFrQyxJQUFsQyxDQUEzQjtBQUNYLENBM0REOztBQ1hBLElBQUlvUCxRQUFNLEdBQUd0aEIsZUFBQSxDQUF5Q3NoQixNQUF0RDtBQUdBOzs7SUFDQS9oQixvQkFBQSxHQUFpQixVQUFVNnBCLENBQVYsRUFBYTdmLEtBQWIsRUFBb0IwNUIsT0FBcEIsRUFBNkI7QUFDNUMsU0FBTzE1QixLQUFLLElBQUkwNUIsT0FBTyxHQUFHM2hCLFFBQU0sQ0FBQzhILENBQUQsRUFBSTdmLEtBQUosQ0FBTixDQUFpQnpILE1BQXBCLEdBQTZCLENBQXhDLENBQVo7QUFDRCxDQUZEOztBQ0xBLElBQUlxRSxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJa0IsU0FBTyxHQUFHbEIsWUFBZDs7QUFDQSxJQUFJbW9DLFlBQVUsR0FBR25vQyxZQUFqQjtBQUdBOzs7SUFDQVQsa0JBQUEsR0FBaUIsVUFBVWluQyxDQUFWLEVBQWFwZCxDQUFiLEVBQWdCO0FBQy9CLE1BQUl2cEIsSUFBSSxHQUFHMm1DLENBQUMsQ0FBQzNtQyxJQUFiOztBQUNBLE1BQUk0QixZQUFVLENBQUM1QixJQUFELENBQWQsRUFBc0I7QUFDcEIsUUFBSXVGLE1BQU0sR0FBR3ZGLElBQUksQ0FBQ1csSUFBTCxDQUFVZ21DLENBQVYsRUFBYXBkLENBQWIsQ0FBYjtBQUNBLFFBQUloa0IsTUFBTSxLQUFLLElBQWYsRUFBcUJlLFdBQVEsQ0FBQ2YsTUFBRCxDQUFSO0FBQ3JCLFdBQU9BLE1BQVA7QUFDRDs7QUFDRCxNQUFJbEUsU0FBTyxDQUFDc2xDLENBQUQsQ0FBUCxLQUFlLFFBQW5CLEVBQTZCLE9BQU8yQixZQUFVLENBQUMzbkMsSUFBWCxDQUFnQmdtQyxDQUFoQixFQUFtQnBkLENBQW5CLENBQVA7QUFDN0IsUUFBTS9uQixTQUFTLENBQUMsNkNBQUQsQ0FBZjtBQUNELENBVEQ7O0FDTkEsSUFBSXFuQywrQkFBNkIsR0FBRzFvQyw2QkFBcEM7O0FBQ0EsSUFBSW1HLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXlKLFVBQVEsR0FBR3pKLFVBQWY7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJMm9DLG9CQUFrQixHQUFHM29DLG9CQUF6Qjs7QUFDQSxJQUFJNG9DLFlBQVUsR0FBRzVvQyxrQkFBakI7OztBQUdBMG9DLCtCQUE2QixDQUFDLE9BQUQsRUFBVSxVQUFVOUYsS0FBVixFQUFpQmlHLFdBQWpCLEVBQThCQyxlQUE5QixFQUErQztBQUNwRixTQUFPO0FBRUw7QUFDQSxXQUFTeG1DLEtBQVQsQ0FBZXFTLE1BQWYsRUFBdUI7QUFDckIsUUFBSTFPLENBQUMsR0FBRzFFLHdCQUFzQixDQUFDLElBQUQsQ0FBOUI7QUFDQSxRQUFJd25DLE9BQU8sR0FBR3AwQixNQUFNLElBQUl2VCxTQUFWLEdBQXNCQSxTQUF0QixHQUFrQzJELFdBQVMsQ0FBQzRQLE1BQUQsRUFBU2l1QixLQUFULENBQXpEO0FBQ0EsV0FBT21HLE9BQU8sR0FBR0EsT0FBTyxDQUFDdm9DLElBQVIsQ0FBYW1VLE1BQWIsRUFBcUIxTyxDQUFyQixDQUFILEdBQTZCLElBQUlxdUIsTUFBSixDQUFXM2YsTUFBWCxFQUFtQml1QixLQUFuQixFQUEwQjVoQyxVQUFRLENBQUNpRixDQUFELENBQWxDLENBQTNDO0FBQ0QsR0FQSTtBQVNMO0FBQ0EsWUFBVXNGLE1BQVYsRUFBa0I7QUFDaEIsUUFBSXk5QixFQUFFLEdBQUc3aUMsV0FBUSxDQUFDLElBQUQsQ0FBakI7QUFDQSxRQUFJaWpCLENBQUMsR0FBR3BvQixVQUFRLENBQUN1SyxNQUFELENBQWhCO0FBQ0EsUUFBSTA5QixHQUFHLEdBQUdILGVBQWUsQ0FBQ0QsV0FBRCxFQUFjRyxFQUFkLEVBQWtCNWYsQ0FBbEIsQ0FBekI7QUFFQSxRQUFJNmYsR0FBRyxDQUFDbnlCLElBQVIsRUFBYyxPQUFPbXlCLEdBQUcsQ0FBQ3BvQyxLQUFYO0FBRWQsUUFBSSxDQUFDbW9DLEVBQUUsQ0FBQ3JwQyxNQUFSLEVBQWdCLE9BQU9pcEMsWUFBVSxDQUFDSSxFQUFELEVBQUs1ZixDQUFMLENBQWpCO0FBRWhCLFFBQUk4ZixXQUFXLEdBQUdGLEVBQUUsQ0FBQy9GLE9BQXJCO0FBQ0ErRixJQUFBQSxFQUFFLENBQUM1RixTQUFILEdBQWUsQ0FBZjtBQUNBLFFBQUl4cUIsQ0FBQyxHQUFHLEVBQVI7QUFDQSxRQUFJQyxDQUFDLEdBQUcsQ0FBUjtBQUNBLFFBQUl6VCxNQUFKOztBQUNBLFdBQU8sQ0FBQ0EsTUFBTSxHQUFHd2pDLFlBQVUsQ0FBQ0ksRUFBRCxFQUFLNWYsQ0FBTCxDQUFwQixNQUFpQyxJQUF4QyxFQUE4QztBQUM1QyxVQUFJK2YsUUFBUSxHQUFHbm9DLFVBQVEsQ0FBQ29FLE1BQU0sQ0FBQyxDQUFELENBQVAsQ0FBdkI7QUFDQXdULE1BQUFBLENBQUMsQ0FBQ0MsQ0FBRCxDQUFELEdBQU9zd0IsUUFBUDtBQUNBLFVBQUlBLFFBQVEsS0FBSyxFQUFqQixFQUFxQkgsRUFBRSxDQUFDNUYsU0FBSCxHQUFldUYsb0JBQWtCLENBQUN2ZixDQUFELEVBQUkzZixVQUFRLENBQUN1L0IsRUFBRSxDQUFDNUYsU0FBSixDQUFaLEVBQTRCOEYsV0FBNUIsQ0FBakM7QUFDckJyd0IsTUFBQUEsQ0FBQztBQUNGOztBQUNELFdBQU9BLENBQUMsS0FBSyxDQUFOLEdBQVUsSUFBVixHQUFpQkQsQ0FBeEI7QUFDRCxHQS9CSSxDQUFQO0FBaUNELENBbEM0QixDQUE3Qjs7QUNWQTs7QUFDQSxJQUFJbEgsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJMGMsMkJBQXlCLEdBQUcxYywyQkFBaEM7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCOztBQUNBLElBQUl5SixVQUFRLEdBQUd6SixVQUFmOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlrQixTQUFPLEdBQUdsQixZQUFkOztBQUNBLElBQUk2aUMsVUFBUSxHQUFHN2lDLFFBQWY7O0FBQ0EsSUFBSW9wQyxnQkFBYyxHQUFHcHBDLGFBQXJCOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJeUwsVUFBUSxHQUFHekwsa0JBQWY7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUlzcEIsb0JBQWtCLEdBQUd0cEIsb0JBQXpCOztBQUNBLElBQUkyb0Msb0JBQWtCLEdBQUczb0Msb0JBQXpCOztBQUNBLElBQUk0b0MsWUFBVSxHQUFHNW9DLGtCQUFqQjs7QUFDQSxJQUFJcUkscUJBQW1CLEdBQUdySSxhQUExQjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUVBLElBQUlzcEMsU0FBUyxHQUFHcmtDLGlCQUFlLENBQUMsVUFBRCxDQUEvQjtBQUNBLElBQUlza0MsYUFBYSxHQUFHLGVBQXBCO0FBQ0EsSUFBSUMsc0JBQXNCLEdBQUdELGFBQWEsR0FBRyxXQUE3QztBQUNBLElBQUlwM0Isa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSXFCLGtCQUFnQixHQUFHRixxQkFBbUIsQ0FBQ2hCLFNBQXBCLENBQThCbWlDLHNCQUE5QixDQUF2QjtBQUNBLElBQUk1RixpQkFBZSxHQUFHdFAsTUFBTSxDQUFDdHNCLFNBQTdCO0FBQ0EsSUFBSXloQyxjQUFjLEdBQUcsR0FBR0MsUUFBeEI7QUFFQSxJQUFJQywyQkFBMkIsR0FBRyxDQUFDLENBQUNGLGNBQUYsSUFBb0IsQ0FBQzFwQyxPQUFLLENBQUMsWUFBWTtBQUN2RSxNQUFJMnBDLFFBQUosQ0FBYSxHQUFiO0FBQ0QsQ0FGMkQsQ0FBNUQ7O0FBS0EsSUFBSUUscUJBQXFCLEdBQUdsdEIsMkJBQXlCLENBQUMsU0FBU210QixvQkFBVCxDQUE4QmwxQixNQUE5QixFQUFzQ3BKLE1BQXRDLEVBQThDNUwsTUFBOUMsRUFBc0R1cEMsV0FBdEQsRUFBbUU7QUFDdkgvMkIsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssSUFBQUEsSUFBSSxFQUFFZ2lDLHNCQURlO0FBRXJCNzBCLElBQUFBLE1BQU0sRUFBRUEsTUFGYTtBQUdyQnBKLElBQUFBLE1BQU0sRUFBRUEsTUFIYTtBQUlyQjVMLElBQUFBLE1BQU0sRUFBRUEsTUFKYTtBQUtyQnNqQyxJQUFBQSxPQUFPLEVBQUVpRyxXQUxZO0FBTXJCcHlCLElBQUFBLElBQUksRUFBRTtBQU5lLEdBQVAsQ0FBaEI7QUFRRCxDQVRvRCxFQVNsRHl5QixhQVRrRCxFQVNuQyxTQUFTOXlCLElBQVQsR0FBZ0I7QUFDaEMsTUFBSWxQLEtBQUssR0FBR2dCLGtCQUFnQixDQUFDLElBQUQsQ0FBNUI7QUFDQSxNQUFJaEIsS0FBSyxDQUFDdVAsSUFBVixFQUFnQixPQUFPO0FBQUVqVyxJQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixJQUFBQSxJQUFJLEVBQUU7QUFBMUIsR0FBUDtBQUNoQixNQUFJMHZCLENBQUMsR0FBR2ovQixLQUFLLENBQUNvTixNQUFkO0FBQ0EsTUFBSXlVLENBQUMsR0FBRzdoQixLQUFLLENBQUNnRSxNQUFkO0FBQ0EsTUFBSWpKLEtBQUssR0FBR3NtQyxZQUFVLENBQUNwQyxDQUFELEVBQUlwZCxDQUFKLENBQXRCO0FBQ0EsTUFBSTltQixLQUFLLEtBQUssSUFBZCxFQUFvQixPQUFPO0FBQUV6QixJQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixJQUFBQSxJQUFJLEVBQUV2UCxLQUFLLENBQUN1UCxJQUFOLEdBQWE7QUFBdkMsR0FBUDs7QUFDcEIsTUFBSXZQLEtBQUssQ0FBQzVILE1BQVYsRUFBa0I7QUFDaEIsUUFBSXFCLFVBQVEsQ0FBQ3NCLEtBQUssQ0FBQyxDQUFELENBQU4sQ0FBUixLQUF1QixFQUEzQixFQUErQmtrQyxDQUFDLENBQUNwRCxTQUFGLEdBQWN1RixvQkFBa0IsQ0FBQ3ZmLENBQUQsRUFBSTNmLFVBQVEsQ0FBQys4QixDQUFDLENBQUNwRCxTQUFILENBQVosRUFBMkI3N0IsS0FBSyxDQUFDMDdCLE9BQWpDLENBQWhDO0FBQy9CLFdBQU87QUFBRXBpQyxNQUFBQSxLQUFLLEVBQUV5QixLQUFUO0FBQWdCd1UsTUFBQUEsSUFBSSxFQUFFO0FBQXRCLEtBQVA7QUFDRDs7QUFDRHZQLEVBQUFBLEtBQUssQ0FBQ3VQLElBQU4sR0FBYSxJQUFiO0FBQ0EsU0FBTztBQUFFalcsSUFBQUEsS0FBSyxFQUFFeUIsS0FBVDtBQUFnQndVLElBQUFBLElBQUksRUFBRTtBQUF0QixHQUFQO0FBQ0QsQ0F0Qm9ELENBQXJEOztBQXdCQSxJQUFJZ3pCLFNBQVMsR0FBRyxVQUFVditCLE1BQVYsRUFBa0I7QUFDaEMsTUFBSWk3QixDQUFDLEdBQUdyZ0MsV0FBUSxDQUFDLElBQUQsQ0FBaEI7QUFDQSxNQUFJaWpCLENBQUMsR0FBR3BvQixVQUFRLENBQUN1SyxNQUFELENBQWhCO0FBQ0EsTUFBSTRFLENBQUosRUFBTzQ1QixVQUFQLEVBQW1CMUcsS0FBbkIsRUFBMEIwRixPQUExQixFQUFtQ3BwQyxNQUFuQyxFQUEyQ3VwQyxXQUEzQztBQUNBLzRCLEVBQUFBLENBQUMsR0FBR21aLG9CQUFrQixDQUFDa2QsQ0FBRCxFQUFJbFMsTUFBSixDQUF0QjtBQUNBeVYsRUFBQUEsVUFBVSxHQUFHdkQsQ0FBQyxDQUFDbkQsS0FBZjs7QUFDQSxNQUFJMEcsVUFBVSxLQUFLM29DLFNBQWYsSUFBNEJvbEMsQ0FBQyxZQUFZbFMsTUFBekMsSUFBbUQsRUFBRSxXQUFXc1AsaUJBQWIsQ0FBdkQsRUFBc0Y7QUFDcEZtRyxJQUFBQSxVQUFVLEdBQUdYLGdCQUFjLENBQUM1b0MsSUFBZixDQUFvQmdtQyxDQUFwQixDQUFiO0FBQ0Q7O0FBQ0RuRCxFQUFBQSxLQUFLLEdBQUcwRyxVQUFVLEtBQUszb0MsU0FBZixHQUEyQixFQUEzQixHQUFnQ0osVUFBUSxDQUFDK29DLFVBQUQsQ0FBaEQ7QUFDQWhCLEVBQUFBLE9BQU8sR0FBRyxJQUFJNTRCLENBQUosQ0FBTUEsQ0FBQyxLQUFLbWtCLE1BQU4sR0FBZWtTLENBQUMsQ0FBQ3o5QixNQUFqQixHQUEwQnk5QixDQUFoQyxFQUFtQ25ELEtBQW5DLENBQVY7QUFDQTFqQyxFQUFBQSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMwakMsS0FBSyxDQUFDbDVCLE9BQU4sQ0FBYyxHQUFkLENBQVo7QUFDQSsrQixFQUFBQSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM3RixLQUFLLENBQUNsNUIsT0FBTixDQUFjLEdBQWQsQ0FBakI7QUFDQTQrQixFQUFBQSxPQUFPLENBQUMzRixTQUFSLEdBQW9CMzVCLFVBQVEsQ0FBQys4QixDQUFDLENBQUNwRCxTQUFILENBQTVCO0FBQ0EsU0FBTyxJQUFJd0cscUJBQUosQ0FBMEJiLE9BQTFCLEVBQW1DM2YsQ0FBbkMsRUFBc0N6cEIsTUFBdEMsRUFBOEN1cEMsV0FBOUMsQ0FBUDtBQUNELENBZkQ7QUFrQkE7OztBQUNBeDNCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUV5OUI7QUFBekMsQ0FBRCxFQUF5RTtBQUN4RUQsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0IvMEIsTUFBbEIsRUFBMEI7QUFDbEMsUUFBSTFPLENBQUMsR0FBRzFFLHdCQUFzQixDQUFDLElBQUQsQ0FBOUI7QUFDQSxRQUFJOGhDLEtBQUosRUFBV2phLENBQVgsRUFBYzJmLE9BQWQsRUFBdUJDLEVBQXZCOztBQUNBLFFBQUlyMEIsTUFBTSxJQUFJLElBQWQsRUFBb0I7QUFDbEIsVUFBSWt1QixVQUFRLENBQUNsdUIsTUFBRCxDQUFaLEVBQXNCO0FBQ3BCMHVCLFFBQUFBLEtBQUssR0FBR3JpQyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLFdBQVdxaUMsaUJBQVgsR0FDcENqdkIsTUFBTSxDQUFDMHVCLEtBRDZCLEdBRXBDK0YsZ0JBQWMsQ0FBQzVvQyxJQUFmLENBQW9CbVUsTUFBcEIsQ0FGbUMsQ0FBdkIsQ0FBaEI7QUFJQSxZQUFJLENBQUMsQ0FBQzB1QixLQUFLLENBQUNsNUIsT0FBTixDQUFjLEdBQWQsQ0FBTixFQUEwQixNQUFNOUksU0FBUyxDQUFDLCtDQUFELENBQWY7QUFDM0I7O0FBQ0QsVUFBSXNvQywyQkFBSixFQUFpQyxPQUFPRixjQUFjLENBQUNqNkIsS0FBZixDQUFxQnZKLENBQXJCLEVBQXdCcEUsU0FBeEIsQ0FBUDtBQUNqQ2tuQyxNQUFBQSxPQUFPLEdBQUdoa0MsV0FBUyxDQUFDNFAsTUFBRCxFQUFTMjBCLFNBQVQsQ0FBbkI7QUFDQSxVQUFJUCxPQUFPLEtBQUszbkMsU0FBWixJQUF5QmlvQyxTQUF6QixJQUFvQ25vQyxTQUFPLENBQUN5VCxNQUFELENBQVAsSUFBbUIsUUFBM0QsRUFBcUVvMEIsT0FBTyxHQUFHZSxTQUFWO0FBQ3JFLFVBQUlmLE9BQUosRUFBYSxPQUFPQSxPQUFPLENBQUN2b0MsSUFBUixDQUFhbVUsTUFBYixFQUFxQjFPLENBQXJCLENBQVA7QUFDZCxLQVpELE1BWU8sSUFBSTBqQywyQkFBSixFQUFpQyxPQUFPRixjQUFjLENBQUNqNkIsS0FBZixDQUFxQnZKLENBQXJCLEVBQXdCcEUsU0FBeEIsQ0FBUDs7QUFDeEN1bkIsSUFBQUEsQ0FBQyxHQUFHcG9CLFVBQVEsQ0FBQ2lGLENBQUQsQ0FBWjtBQUNBK2lDLElBQUFBLEVBQUUsR0FBRyxJQUFJMVUsTUFBSixDQUFXM2YsTUFBWCxFQUFtQixHQUFuQixDQUFMO0FBQ0EsV0FBeUNxMEIsRUFBRSxDQUFDTSxTQUFELENBQUYsQ0FBY2xnQixDQUFkLENBQXpDO0FBQ0Q7QUFwQnVFLENBQXpFLENBQUQ7QUF1QldrZ0IsU0FBUyxJQUFJMUYsaUJBQXhCLElBQTJDbjRCLFVBQVEsQ0FBQ200QixpQkFBRCxFQUFrQjBGLFNBQWxCLEVBQTZCUSxTQUE3QixDQUFuRDs7QUNwR0E7QUFDQSxJQUFJOW5DLFdBQVMsR0FBR2hDLGVBQWhCOztJQUVBVCxrQkFBQSxHQUFpQixtRUFBbUVvSCxJQUFuRSxDQUF3RTNFLFdBQXhFLENBQWpCOztBQ0ZBLElBQUkwUCxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlncUMsT0FBTyxHQUFHaHFDLFNBQUEsQ0FBbUNtWixHQUFqRDs7QUFDQSxJQUFJOHdCLFlBQVUsR0FBR2pxQyxrQkFBakI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFKzlCO0FBQXpDLENBQUQsRUFBd0Q7QUFDdkRDLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCdmY7QUFBVTtBQUExQixJQUFvRDtBQUMxRCxXQUFPcWYsT0FBTyxDQUFDLElBQUQsRUFBT3JmLFNBQVAsRUFBa0I5b0IsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBeEQsQ0FBZDtBQUNEO0FBSHNELENBQXhELENBQUQ7O0FDTkEsSUFBSXNRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW1xQyxTQUFTLEdBQUducUMsU0FBQSxDQUFtQ2daLEtBQW5EOztBQUNBLElBQUlpeEIsVUFBVSxHQUFHanFDLGtCQUFqQjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUUrOUI7QUFBekMsQ0FBRCxFQUF3RDtBQUN2RC9lLEVBQUFBLFFBQVEsRUFBRSxTQUFTQSxRQUFULENBQWtCUDtBQUFVO0FBQTVCLElBQXNEO0FBQzlELFdBQU93ZixTQUFTLENBQUMsSUFBRCxFQUFPeGYsU0FBUCxFQUFrQjlvQixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF4RCxDQUFoQjtBQUNEO0FBSHNELENBQXhELENBQUQ7O0FDUEEsSUFBSXNRLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTZGLGVBQWUsR0FBRzdGLGlCQUF0Qjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBRUEsSUFBSXVWLGNBQWMsR0FBR3BKLEtBQUssQ0FBQ25FLFNBQTNCO0FBQ0EsSUFBSWpFLE1BQUksR0FBR3dSLGNBQWMsQ0FBQ3hSLElBQTFCO0FBQ0EsSUFBSWlGLElBQUksR0FBR3VNLGNBQWMsQ0FBQ3ZNLElBQTFCO0FBR0E7O0FBQ0EwSSxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEN5Z0IsRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYTZkLFFBQWIsRUFBdUI7QUFDMUIsUUFBSUMsV0FBVyxHQUFHeGtDLGVBQWUsQ0FBQzNCLFVBQVEsQ0FBQ2ttQyxRQUFELENBQVIsQ0FBbUI3ZCxHQUFwQixDQUFqQztBQUNBLFFBQUkrZCxlQUFlLEdBQUcxZ0MsbUJBQWlCLENBQUN5Z0MsV0FBRCxDQUF2QztBQUNBLFFBQUkzd0IsZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLFFBQUlrbUMsUUFBUSxHQUFHLEVBQWY7QUFDQSxRQUFJMzlCLENBQUMsR0FBRyxDQUFSOztBQUNBLFdBQU9pZ0MsZUFBZSxHQUFHamdDLENBQXpCLEVBQTRCO0FBQzFCdEcsTUFBQUEsTUFBSSxDQUFDdkQsSUFBTCxDQUFVd25DLFFBQVYsRUFBb0JobkMsVUFBUSxDQUFDcXBDLFdBQVcsQ0FBQ2hnQyxDQUFDLEVBQUYsQ0FBWixDQUE1QjtBQUNBLFVBQUlBLENBQUMsS0FBS2lnQyxlQUFWLEVBQTJCLE9BQU90aEMsSUFBSSxDQUFDeEksSUFBTCxDQUFVd25DLFFBQVYsRUFBb0IsRUFBcEIsQ0FBUDtBQUMzQixVQUFJMzlCLENBQUMsR0FBR3FQLGVBQVIsRUFBeUIzVixNQUFJLENBQUN2RCxJQUFMLENBQVV3bkMsUUFBVixFQUFvQmhuQyxVQUFRLENBQUNhLFNBQVMsQ0FBQ3dJLENBQUQsQ0FBVixDQUE1QjtBQUMxQjtBQUNGO0FBWmlDLENBQW5DLENBQUQ7O0FDWkEsSUFBSXFILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXdxQixNQUFNLEdBQUd4cUIsWUFBYjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQ3NWLEVBQUFBLE1BQU0sRUFBRUE7QUFEMkIsQ0FBcEMsQ0FBRDs7QUNMQSxJQUFJdG1CLFVBQVEsR0FBR2xFLFVBQWY7O0FBRUEsSUFBSWtKLE9BQUssR0FBRzVKLElBQUksQ0FBQzRKLEtBQWpCO0FBQ0EsSUFBSUosU0FBTyxHQUFHLEdBQUdBLE9BQWpCO0FBQ0EsSUFBSXloQyxvQkFBb0IsR0FBRyw2QkFBM0I7QUFDQSxJQUFJQyw2QkFBNkIsR0FBRyxxQkFBcEM7QUFHQTs7SUFDQWpyQyxpQkFBQSxHQUFpQixVQUFVa3JDLE9BQVYsRUFBbUJoZ0IsR0FBbkIsRUFBd0JxYyxRQUF4QixFQUFrQzRELFFBQWxDLEVBQTRDQyxhQUE1QyxFQUEyRDUvQixXQUEzRCxFQUF3RTtBQUN2RixNQUFJNi9CLE9BQU8sR0FBRzlELFFBQVEsR0FBRzJELE9BQU8sQ0FBQzNvQyxNQUFqQztBQUNBLE1BQUkrb0MsQ0FBQyxHQUFHSCxRQUFRLENBQUM1b0MsTUFBakI7QUFDQSxNQUFJZ3BDLE9BQU8sR0FBR04sNkJBQWQ7O0FBQ0EsTUFBSUcsYUFBYSxLQUFLdnBDLFNBQXRCLEVBQWlDO0FBQy9CdXBDLElBQUFBLGFBQWEsR0FBR3ptQyxVQUFRLENBQUN5bUMsYUFBRCxDQUF4QjtBQUNBRyxJQUFBQSxPQUFPLEdBQUdQLG9CQUFWO0FBQ0Q7O0FBQ0QsU0FBT3poQyxTQUFPLENBQUN0SSxJQUFSLENBQWF1SyxXQUFiLEVBQTBCKy9CLE9BQTFCLEVBQW1DLFVBQVV4b0MsS0FBVixFQUFpQnlvQyxFQUFqQixFQUFxQjtBQUM3RCxRQUFJQyxPQUFKOztBQUNBLFlBQVFELEVBQUUsQ0FBQ3pwQixNQUFILENBQVUsQ0FBVixDQUFSO0FBQ0UsV0FBSyxHQUFMO0FBQVUsZUFBTyxHQUFQOztBQUNWLFdBQUssR0FBTDtBQUFVLGVBQU9tcEIsT0FBUDs7QUFDVixXQUFLLEdBQUw7QUFBVSxlQUFPaGdCLEdBQUcsQ0FBQ3hwQixLQUFKLENBQVUsQ0FBVixFQUFhNmxDLFFBQWIsQ0FBUDs7QUFDVixXQUFLLEdBQUw7QUFBVSxlQUFPcmMsR0FBRyxDQUFDeHBCLEtBQUosQ0FBVTJwQyxPQUFWLENBQVA7O0FBQ1YsV0FBSyxHQUFMO0FBQ0VJLFFBQUFBLE9BQU8sR0FBR0wsYUFBYSxDQUFDSSxFQUFFLENBQUM5cEMsS0FBSCxDQUFTLENBQVQsRUFBWSxDQUFDLENBQWIsQ0FBRCxDQUF2QjtBQUNBOztBQUNGO0FBQVM7QUFDUCxZQUFJNFgsQ0FBQyxHQUFHLENBQUNreUIsRUFBVDtBQUNBLFlBQUlseUIsQ0FBQyxLQUFLLENBQVYsRUFBYSxPQUFPdlcsS0FBUDs7QUFDYixZQUFJdVcsQ0FBQyxHQUFHZ3lCLENBQVIsRUFBVztBQUNULGNBQUkza0MsQ0FBQyxHQUFHZ0QsT0FBSyxDQUFDMlAsQ0FBQyxHQUFHLEVBQUwsQ0FBYjtBQUNBLGNBQUkzUyxDQUFDLEtBQUssQ0FBVixFQUFhLE9BQU81RCxLQUFQO0FBQ2IsY0FBSTRELENBQUMsSUFBSTJrQyxDQUFULEVBQVksT0FBT0gsUUFBUSxDQUFDeGtDLENBQUMsR0FBRyxDQUFMLENBQVIsS0FBb0I5RSxTQUFwQixHQUFnQzJwQyxFQUFFLENBQUN6cEIsTUFBSCxDQUFVLENBQVYsQ0FBaEMsR0FBK0NvcEIsUUFBUSxDQUFDeGtDLENBQUMsR0FBRyxDQUFMLENBQVIsR0FBa0I2a0MsRUFBRSxDQUFDenBCLE1BQUgsQ0FBVSxDQUFWLENBQXhFO0FBQ1osaUJBQU9oZixLQUFQO0FBQ0Q7O0FBQ0Qwb0MsUUFBQUEsT0FBTyxHQUFHTixRQUFRLENBQUM3eEIsQ0FBQyxHQUFHLENBQUwsQ0FBbEI7QUFqQko7O0FBbUJBLFdBQU9teUIsT0FBTyxLQUFLNXBDLFNBQVosR0FBd0IsRUFBeEIsR0FBNkI0cEMsT0FBcEM7QUFDRCxHQXRCTSxDQUFQO0FBdUJELENBL0JEOztBQ1JBLElBQUl0QywrQkFBNkIsR0FBRzFvQyw2QkFBcEM7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJb0oscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSXlKLFVBQVEsR0FBR3pKLFVBQWY7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXVCLHdCQUFzQixHQUFHdkIsd0JBQTdCOztBQUNBLElBQUkyb0Msb0JBQWtCLEdBQUczb0Msb0JBQXpCOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJaXJDLGlCQUFlLEdBQUdqckMsaUJBQXRCOztBQUNBLElBQUk0b0MsWUFBVSxHQUFHNW9DLGtCQUFqQjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFFQSxJQUFJeXZCLFNBQU8sR0FBR3hxQixpQkFBZSxDQUFDLFNBQUQsQ0FBN0I7QUFDQSxJQUFJb0UsS0FBRyxHQUFHL0osSUFBSSxDQUFDK0osR0FBZjtBQUNBLElBQUlDLEtBQUcsR0FBR2hLLElBQUksQ0FBQ2dLLEdBQWY7O0FBRUEsSUFBSTRoQyxhQUFhLEdBQUcsVUFBVTdyQyxFQUFWLEVBQWM7QUFDaEMsU0FBT0EsRUFBRSxLQUFLK0IsU0FBUCxHQUFtQi9CLEVBQW5CLEdBQXdCc0QsTUFBTSxDQUFDdEQsRUFBRCxDQUFyQztBQUNELENBRkQ7QUFLQTs7O0FBQ0EsSUFBSThyQyxnQkFBZ0IsR0FBSSxZQUFZO0FBQ2xDO0FBQ0EsU0FBTyxJQUFJcmlDLE9BQUosQ0FBWSxHQUFaLEVBQWlCLElBQWpCLE1BQTJCLElBQWxDO0FBQ0QsQ0FIc0IsRUFBdkI7OztBQU1BLElBQUlzaUMsNENBQTRDLEdBQUksWUFBWTtBQUM5RCxNQUFJLElBQUkzYixTQUFKLENBQUosRUFBa0I7QUFDaEIsV0FBTyxJQUFJQSxTQUFKLEVBQWEsR0FBYixFQUFrQixJQUFsQixNQUE0QixFQUFuQztBQUNEOztBQUNELFNBQU8sS0FBUDtBQUNELENBTGtELEVBQW5EOztBQU9BLElBQUk0Yiw2QkFBNkIsR0FBRyxDQUFDdHJDLE9BQUssQ0FBQyxZQUFZO0FBQ3JELE1BQUlzdEIsRUFBRSxHQUFHLEdBQVQ7O0FBQ0FBLEVBQUFBLEVBQUUsQ0FBQ3h0QixJQUFILEdBQVUsWUFBWTtBQUNwQixRQUFJdUYsTUFBTSxHQUFHLEVBQWI7QUFDQUEsSUFBQUEsTUFBTSxDQUFDaytCLE1BQVAsR0FBZ0I7QUFBRTU5QixNQUFBQSxDQUFDLEVBQUU7QUFBTCxLQUFoQjtBQUNBLFdBQU9OLE1BQVA7QUFDRCxHQUpELENBRnFEOzs7QUFRckQsU0FBTyxHQUFHMEQsT0FBSCxDQUFXdWtCLEVBQVgsRUFBZSxNQUFmLE1BQTJCLEdBQWxDO0FBQ0QsQ0FUeUMsQ0FBMUM7O0FBWUFxYiwrQkFBNkIsQ0FBQyxTQUFELEVBQVksVUFBVTRDLENBQVYsRUFBYWhHLGFBQWIsRUFBNEJ3RCxlQUE1QixFQUE2QztBQUNwRixNQUFJeUMsaUJBQWlCLEdBQUdILDRDQUE0QyxHQUFHLEdBQUgsR0FBUyxJQUE3RTtBQUVBLFNBQU87QUFFTDtBQUNBLFdBQVN0aUMsT0FBVCxDQUFpQjBpQyxXQUFqQixFQUE4QkMsWUFBOUIsRUFBNEM7QUFDMUMsUUFBSXhsQyxDQUFDLEdBQUcxRSx3QkFBc0IsQ0FBQyxJQUFELENBQTlCO0FBQ0EsUUFBSTBTLFFBQVEsR0FBR3UzQixXQUFXLElBQUlwcUMsU0FBZixHQUEyQkEsU0FBM0IsR0FBdUMyRCxXQUFTLENBQUN5bUMsV0FBRCxFQUFjL2IsU0FBZCxDQUEvRDtBQUNBLFdBQU94YixRQUFRLEdBQ1hBLFFBQVEsQ0FBQ3pULElBQVQsQ0FBY2dyQyxXQUFkLEVBQTJCdmxDLENBQTNCLEVBQThCd2xDLFlBQTlCLENBRFcsR0FFWG5HLGFBQWEsQ0FBQzlrQyxJQUFkLENBQW1CUSxVQUFRLENBQUNpRixDQUFELENBQTNCLEVBQWdDdWxDLFdBQWhDLEVBQTZDQyxZQUE3QyxDQUZKO0FBR0QsR0FUSTtBQVdMO0FBQ0EsWUFBVWxnQyxNQUFWLEVBQWtCa2dDLFlBQWxCLEVBQWdDO0FBQzlCLFFBQUl6QyxFQUFFLEdBQUc3aUMsV0FBUSxDQUFDLElBQUQsQ0FBakI7QUFDQSxRQUFJaWpCLENBQUMsR0FBR3BvQixVQUFRLENBQUN1SyxNQUFELENBQWhCOztBQUVBLFFBQ0UsT0FBT2tnQyxZQUFQLEtBQXdCLFFBQXhCLElBQ0FBLFlBQVksQ0FBQ3RoQyxPQUFiLENBQXFCb2hDLGlCQUFyQixNQUE0QyxDQUFDLENBRDdDLElBRUFFLFlBQVksQ0FBQ3RoQyxPQUFiLENBQXFCLElBQXJCLE1BQStCLENBQUMsQ0FIbEMsRUFJRTtBQUNBLFVBQUk4K0IsR0FBRyxHQUFHSCxlQUFlLENBQUN4RCxhQUFELEVBQWdCMEQsRUFBaEIsRUFBb0I1ZixDQUFwQixFQUF1QnFpQixZQUF2QixDQUF6QjtBQUNBLFVBQUl4QyxHQUFHLENBQUNueUIsSUFBUixFQUFjLE9BQU9teUIsR0FBRyxDQUFDcG9DLEtBQVg7QUFDZjs7QUFFRCxRQUFJNnFDLGlCQUFpQixHQUFHanFDLFlBQVUsQ0FBQ2dxQyxZQUFELENBQWxDO0FBQ0EsUUFBSSxDQUFDQyxpQkFBTCxFQUF3QkQsWUFBWSxHQUFHenFDLFVBQVEsQ0FBQ3lxQyxZQUFELENBQXZCO0FBRXhCLFFBQUk5ckMsTUFBTSxHQUFHcXBDLEVBQUUsQ0FBQ3JwQyxNQUFoQjs7QUFDQSxRQUFJQSxNQUFKLEVBQVk7QUFDVixVQUFJdXBDLFdBQVcsR0FBR0YsRUFBRSxDQUFDL0YsT0FBckI7QUFDQStGLE1BQUFBLEVBQUUsQ0FBQzVGLFNBQUgsR0FBZSxDQUFmO0FBQ0Q7O0FBQ0QsUUFBSXVJLE9BQU8sR0FBRyxFQUFkOztBQUNBLFdBQU8sSUFBUCxFQUFhO0FBQ1gsVUFBSXZtQyxNQUFNLEdBQUd3akMsWUFBVSxDQUFDSSxFQUFELEVBQUs1ZixDQUFMLENBQXZCO0FBQ0EsVUFBSWhrQixNQUFNLEtBQUssSUFBZixFQUFxQjtBQUVyQnVtQyxNQUFBQSxPQUFPLENBQUM1bkMsSUFBUixDQUFhcUIsTUFBYjtBQUNBLFVBQUksQ0FBQ3pGLE1BQUwsRUFBYTtBQUViLFVBQUl3cEMsUUFBUSxHQUFHbm9DLFVBQVEsQ0FBQ29FLE1BQU0sQ0FBQyxDQUFELENBQVAsQ0FBdkI7QUFDQSxVQUFJK2pDLFFBQVEsS0FBSyxFQUFqQixFQUFxQkgsRUFBRSxDQUFDNUYsU0FBSCxHQUFldUYsb0JBQWtCLENBQUN2ZixDQUFELEVBQUkzZixVQUFRLENBQUN1L0IsRUFBRSxDQUFDNUYsU0FBSixDQUFaLEVBQTRCOEYsV0FBNUIsQ0FBakM7QUFDdEI7O0FBRUQsUUFBSTBDLGlCQUFpQixHQUFHLEVBQXhCO0FBQ0EsUUFBSUMsa0JBQWtCLEdBQUcsQ0FBekI7O0FBQ0EsU0FBSyxJQUFJeGhDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdzaEMsT0FBTyxDQUFDN3BDLE1BQTVCLEVBQW9DdUksQ0FBQyxFQUFyQyxFQUF5QztBQUN2Q2pGLE1BQUFBLE1BQU0sR0FBR3VtQyxPQUFPLENBQUN0aEMsQ0FBRCxDQUFoQjtBQUVBLFVBQUlvZ0MsT0FBTyxHQUFHenBDLFVBQVEsQ0FBQ29FLE1BQU0sQ0FBQyxDQUFELENBQVAsQ0FBdEI7QUFDQSxVQUFJMGhDLFFBQVEsR0FBR3o5QixLQUFHLENBQUNDLEtBQUcsQ0FBQ0YscUJBQW1CLENBQUNoRSxNQUFNLENBQUNtRSxLQUFSLENBQXBCLEVBQW9DNmYsQ0FBQyxDQUFDdG5CLE1BQXRDLENBQUosRUFBbUQsQ0FBbkQsQ0FBbEI7QUFDQSxVQUFJNG9DLFFBQVEsR0FBRyxFQUFmLENBTHVDO0FBT3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQUssSUFBSTFxQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNWEsTUFBTSxDQUFDdEQsTUFBM0IsRUFBbUNrZSxDQUFDLEVBQXBDLEVBQXdDMHFCLFFBQVEsQ0FBQzNtQyxJQUFULENBQWNtbkMsYUFBYSxDQUFDOWxDLE1BQU0sQ0FBQzRhLENBQUQsQ0FBUCxDQUEzQjs7QUFDeEMsVUFBSTJxQixhQUFhLEdBQUd2bEMsTUFBTSxDQUFDaytCLE1BQTNCOztBQUNBLFVBQUlvSSxpQkFBSixFQUF1QjtBQUNyQixZQUFJSSxZQUFZLEdBQUcsQ0FBQ3JCLE9BQUQsRUFBVWpnQyxNQUFWLENBQWlCa2dDLFFBQWpCLEVBQTJCNUQsUUFBM0IsRUFBcUMxZCxDQUFyQyxDQUFuQjtBQUNBLFlBQUl1aEIsYUFBYSxLQUFLdnBDLFNBQXRCLEVBQWlDMHFDLFlBQVksQ0FBQy9uQyxJQUFiLENBQWtCNG1DLGFBQWxCO0FBQ2pDLFlBQUk1L0IsV0FBVyxHQUFHL0osVUFBUSxDQUFDeXFDLFlBQVksQ0FBQ2o4QixLQUFiLENBQW1CcE8sU0FBbkIsRUFBOEIwcUMsWUFBOUIsQ0FBRCxDQUExQjtBQUNELE9BSkQsTUFJTztBQUNML2dDLFFBQUFBLFdBQVcsR0FBR2tnQyxpQkFBZSxDQUFDUixPQUFELEVBQVVyaEIsQ0FBVixFQUFhMGQsUUFBYixFQUF1QjRELFFBQXZCLEVBQWlDQyxhQUFqQyxFQUFnRGMsWUFBaEQsQ0FBN0I7QUFDRDs7QUFDRCxVQUFJM0UsUUFBUSxJQUFJK0Usa0JBQWhCLEVBQW9DO0FBQ2xDRCxRQUFBQSxpQkFBaUIsSUFBSXhpQixDQUFDLENBQUNub0IsS0FBRixDQUFRNHFDLGtCQUFSLEVBQTRCL0UsUUFBNUIsSUFBd0MvN0IsV0FBN0Q7QUFDQThnQyxRQUFBQSxrQkFBa0IsR0FBRy9FLFFBQVEsR0FBRzJELE9BQU8sQ0FBQzNvQyxNQUF4QztBQUNEO0FBQ0Y7O0FBQ0QsV0FBTzhwQyxpQkFBaUIsR0FBR3hpQixDQUFDLENBQUNub0IsS0FBRixDQUFRNHFDLGtCQUFSLENBQTNCO0FBQ0QsR0F6RUksQ0FBUDtBQTJFRCxDQTlFNEIsRUE4RTFCLENBQUNSLDZCQUFELElBQWtDLENBQUNGLGdCQUFuQyxJQUF1REMsNENBOUU3QixDQUE3Qjs7QUNqREEsSUFBSTE1QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSTZpQyxVQUFRLEdBQUc3aUMsUUFBZjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFDQSxJQUFJK0UsV0FBUyxHQUFHL0UsV0FBaEI7O0FBQ0EsSUFBSW9wQyxjQUFjLEdBQUdwcEMsYUFBckI7O0FBQ0EsSUFBSWlyQyxlQUFlLEdBQUdqckMsaUJBQXRCOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUdBLElBQUl5dkIsT0FBTyxHQUFHeHFCLGlCQUFlLENBQUMsU0FBRCxDQUE3QjtBQUNBLElBQUkyK0IsZUFBZSxHQUFHdFAsTUFBTSxDQUFDdHNCLFNBQTdCO0FBQ0EsSUFBSXFCLEtBQUcsR0FBRy9KLElBQUksQ0FBQytKLEdBQWY7O0FBRUEsSUFBSTBpQyxhQUFhLEdBQUcsVUFBVXhnQyxNQUFWLEVBQWtCaWdDLFdBQWxCLEVBQStCdmhDLFNBQS9CLEVBQTBDO0FBQzVELE1BQUlBLFNBQVMsR0FBR3NCLE1BQU0sQ0FBQ3pKLE1BQXZCLEVBQStCLE9BQU8sQ0FBQyxDQUFSO0FBQy9CLE1BQUkwcEMsV0FBVyxLQUFLLEVBQXBCLEVBQXdCLE9BQU92aEMsU0FBUDtBQUN4QixTQUFPc0IsTUFBTSxDQUFDcEIsT0FBUCxDQUFlcWhDLFdBQWYsRUFBNEJ2aEMsU0FBNUIsQ0FBUDtBQUNELENBSkQ7QUFPQTs7O0FBQ0F5SCxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTNCLENBQUQsRUFBb0M7QUFDbkM4MkIsRUFBQUEsVUFBVSxFQUFFLFNBQVNBLFVBQVQsQ0FBb0JSLFdBQXBCLEVBQWlDQyxZQUFqQyxFQUErQztBQUN6RCxRQUFJeGxDLENBQUMsR0FBRzFFLHdCQUFzQixDQUFDLElBQUQsQ0FBOUI7QUFDQSxRQUFJMHFDLFVBQUosRUFBZ0I1SSxLQUFoQixFQUF1QnB2QixRQUF2QixFQUFpQzFJLE1BQWpDLEVBQXlDbThCLFlBQXpDLEVBQXVEZ0UsaUJBQXZELEVBQTBFUSxZQUExRSxFQUF3RkMsU0FBeEYsRUFBbUdwaEMsV0FBbkc7QUFDQSxRQUFJKzdCLFFBQVEsR0FBRyxDQUFmO0FBQ0EsUUFBSXNGLGNBQWMsR0FBRyxDQUFyQjtBQUNBLFFBQUlobkMsTUFBTSxHQUFHLEVBQWI7O0FBQ0EsUUFBSW9tQyxXQUFXLElBQUksSUFBbkIsRUFBeUI7QUFDdkJTLE1BQUFBLFVBQVUsR0FBR3BKLFVBQVEsQ0FBQzJJLFdBQUQsQ0FBckI7O0FBQ0EsVUFBSVMsVUFBSixFQUFnQjtBQUNkNUksUUFBQUEsS0FBSyxHQUFHcmlDLFVBQVEsQ0FBQ08sd0JBQXNCLENBQUMsV0FBV3FpQyxlQUFYLEdBQ3BDNEgsV0FBVyxDQUFDbkksS0FEd0IsR0FFcEMrRixjQUFjLENBQUM1b0MsSUFBZixDQUFvQmdyQyxXQUFwQixDQUZtQyxDQUF2QixDQUFoQjtBQUlBLFlBQUksQ0FBQyxDQUFDbkksS0FBSyxDQUFDbDVCLE9BQU4sQ0FBYyxHQUFkLENBQU4sRUFBMEIsTUFBTTlJLFNBQVMsQ0FBQyxpREFBRCxDQUFmO0FBQzNCOztBQUNENFMsTUFBQUEsUUFBUSxHQUFHbFAsV0FBUyxDQUFDeW1DLFdBQUQsRUFBYy9iLE9BQWQsQ0FBcEI7O0FBQ0EsVUFBSXhiLFFBQUosRUFBYztBQUNaLGVBQU9BLFFBQVEsQ0FBQ3pULElBQVQsQ0FBY2dyQyxXQUFkLEVBQTJCdmxDLENBQTNCLEVBQThCd2xDLFlBQTlCLENBQVA7QUFDRDtBQUdGOztBQUNEbGdDLElBQUFBLE1BQU0sR0FBR3ZLLFVBQVEsQ0FBQ2lGLENBQUQsQ0FBakI7QUFDQXloQyxJQUFBQSxZQUFZLEdBQUcxbUMsVUFBUSxDQUFDd3FDLFdBQUQsQ0FBdkI7QUFDQUUsSUFBQUEsaUJBQWlCLEdBQUdqcUMsWUFBVSxDQUFDZ3FDLFlBQUQsQ0FBOUI7QUFDQSxRQUFJLENBQUNDLGlCQUFMLEVBQXdCRCxZQUFZLEdBQUd6cUMsVUFBUSxDQUFDeXFDLFlBQUQsQ0FBdkI7QUFDeEJTLElBQUFBLFlBQVksR0FBR3hFLFlBQVksQ0FBQzVsQyxNQUE1QjtBQUNBcXFDLElBQUFBLFNBQVMsR0FBRzlpQyxLQUFHLENBQUMsQ0FBRCxFQUFJNmlDLFlBQUosQ0FBZjtBQUNBcEYsSUFBQUEsUUFBUSxHQUFHaUYsYUFBYSxDQUFDeGdDLE1BQUQsRUFBU204QixZQUFULEVBQXVCLENBQXZCLENBQXhCOztBQUNBLFdBQU9aLFFBQVEsS0FBSyxDQUFDLENBQXJCLEVBQXdCO0FBQ3RCLFVBQUk0RSxpQkFBSixFQUF1QjtBQUNyQjNnQyxRQUFBQSxXQUFXLEdBQUcvSixVQUFRLENBQUN5cUMsWUFBWSxDQUFDL0QsWUFBRCxFQUFlWixRQUFmLEVBQXlCdjdCLE1BQXpCLENBQWIsQ0FBdEI7QUFDRCxPQUZELE1BRU87QUFDTFIsUUFBQUEsV0FBVyxHQUFHa2dDLGVBQWUsQ0FBQ3ZELFlBQUQsRUFBZW44QixNQUFmLEVBQXVCdTdCLFFBQXZCLEVBQWlDLEVBQWpDLEVBQXFDMWxDLFNBQXJDLEVBQWdEcXFDLFlBQWhELENBQTdCO0FBQ0Q7O0FBQ0RybUMsTUFBQUEsTUFBTSxJQUFJbUcsTUFBTSxDQUFDdEssS0FBUCxDQUFhbXJDLGNBQWIsRUFBNkJ0RixRQUE3QixJQUF5Qy83QixXQUFuRDtBQUNBcWhDLE1BQUFBLGNBQWMsR0FBR3RGLFFBQVEsR0FBR29GLFlBQTVCO0FBQ0FwRixNQUFBQSxRQUFRLEdBQUdpRixhQUFhLENBQUN4Z0MsTUFBRCxFQUFTbThCLFlBQVQsRUFBdUJaLFFBQVEsR0FBR3FGLFNBQWxDLENBQXhCO0FBQ0Q7O0FBQ0QsUUFBSUMsY0FBYyxHQUFHN2dDLE1BQU0sQ0FBQ3pKLE1BQTVCLEVBQW9DO0FBQ2xDc0QsTUFBQUEsTUFBTSxJQUFJbUcsTUFBTSxDQUFDdEssS0FBUCxDQUFhbXJDLGNBQWIsQ0FBVjtBQUNEOztBQUNELFdBQU9obkMsTUFBUDtBQUNEO0FBNUNrQyxDQUFwQyxDQUFEOztBQ3ZCQSxJQUFJc2pDLCtCQUE2QixHQUFHMW9DLDZCQUFwQzs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJdUIsd0JBQXNCLEdBQUd2Qix3QkFBN0I7O0FBQ0EsSUFBSXFzQyxTQUFTLEdBQUdyc0MsV0FBaEI7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUNBLElBQUk0b0MsVUFBVSxHQUFHNW9DLGtCQUFqQjs7O0FBR0Ewb0MsK0JBQTZCLENBQUMsUUFBRCxFQUFXLFVBQVU0RCxNQUFWLEVBQWtCQyxZQUFsQixFQUFnQ3pELGVBQWhDLEVBQWlEO0FBQ3ZGLFNBQU87QUFFTDtBQUNBLFdBQVNsQixNQUFULENBQWdCanpCLE1BQWhCLEVBQXdCO0FBQ3RCLFFBQUkxTyxDQUFDLEdBQUcxRSx3QkFBc0IsQ0FBQyxJQUFELENBQTlCO0FBQ0EsUUFBSWlyQyxRQUFRLEdBQUc3M0IsTUFBTSxJQUFJdlQsU0FBVixHQUFzQkEsU0FBdEIsR0FBa0MyRCxXQUFTLENBQUM0UCxNQUFELEVBQVMyM0IsTUFBVCxDQUExRDtBQUNBLFdBQU9FLFFBQVEsR0FBR0EsUUFBUSxDQUFDaHNDLElBQVQsQ0FBY21VLE1BQWQsRUFBc0IxTyxDQUF0QixDQUFILEdBQThCLElBQUlxdUIsTUFBSixDQUFXM2YsTUFBWCxFQUFtQjIzQixNQUFuQixFQUEyQnRyQyxVQUFRLENBQUNpRixDQUFELENBQW5DLENBQTdDO0FBQ0QsR0FQSTtBQVNMO0FBQ0EsWUFBVXNGLE1BQVYsRUFBa0I7QUFDaEIsUUFBSXk5QixFQUFFLEdBQUc3aUMsV0FBUSxDQUFDLElBQUQsQ0FBakI7QUFDQSxRQUFJaWpCLENBQUMsR0FBR3BvQixVQUFRLENBQUN1SyxNQUFELENBQWhCO0FBQ0EsUUFBSTA5QixHQUFHLEdBQUdILGVBQWUsQ0FBQ3lELFlBQUQsRUFBZXZELEVBQWYsRUFBbUI1ZixDQUFuQixDQUF6QjtBQUVBLFFBQUk2ZixHQUFHLENBQUNueUIsSUFBUixFQUFjLE9BQU9teUIsR0FBRyxDQUFDcG9DLEtBQVg7QUFFZCxRQUFJNHJDLGlCQUFpQixHQUFHekQsRUFBRSxDQUFDNUYsU0FBM0I7QUFDQSxRQUFJLENBQUNpSixTQUFTLENBQUNJLGlCQUFELEVBQW9CLENBQXBCLENBQWQsRUFBc0N6RCxFQUFFLENBQUM1RixTQUFILEdBQWUsQ0FBZjtBQUN0QyxRQUFJaCtCLE1BQU0sR0FBR3dqQyxVQUFVLENBQUNJLEVBQUQsRUFBSzVmLENBQUwsQ0FBdkI7QUFDQSxRQUFJLENBQUNpakIsU0FBUyxDQUFDckQsRUFBRSxDQUFDNUYsU0FBSixFQUFlcUosaUJBQWYsQ0FBZCxFQUFpRHpELEVBQUUsQ0FBQzVGLFNBQUgsR0FBZXFKLGlCQUFmO0FBQ2pELFdBQU9ybkMsTUFBTSxLQUFLLElBQVgsR0FBa0IsQ0FBQyxDQUFuQixHQUF1QkEsTUFBTSxDQUFDbUUsS0FBckM7QUFDRCxHQXRCSSxDQUFQO0FBd0JELENBekI0QixDQUE3Qjs7QUNUQSxJQUFJbS9CLDZCQUE2QixHQUFHMW9DLDZCQUFwQzs7QUFDQSxJQUFJNmlDLFFBQVEsR0FBRzdpQyxRQUFmOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFDQSxJQUFJc3BCLG9CQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJMm9DLGtCQUFrQixHQUFHM29DLG9CQUF6Qjs7QUFDQSxJQUFJeUosVUFBUSxHQUFHekosVUFBZjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFDQSxJQUFJK0UsV0FBUyxHQUFHL0UsV0FBaEI7O0FBQ0EsSUFBSTBzQyxjQUFjLEdBQUcxc0Msa0JBQXJCOztBQUNBLElBQUltb0MsVUFBVSxHQUFHbm9DLFlBQWpCOztBQUNBLElBQUl3akMsYUFBYSxHQUFHeGpDLG1CQUFwQjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBRUEsSUFBSWlrQyxhQUFhLEdBQUdULGFBQWEsQ0FBQ1MsYUFBbEM7QUFDQSxJQUFJMEksU0FBUyxHQUFHLEdBQUc1b0MsSUFBbkI7QUFDQSxJQUFJdUYsS0FBRyxHQUFHaEssSUFBSSxDQUFDZ0ssR0FBZjtBQUNBLElBQUlzakMsVUFBVSxHQUFHLFVBQWpCO0FBR0E7O0FBQ0EsSUFBSUMsaUNBQWlDLEdBQUcsQ0FBQzlzQyxPQUFLLENBQUMsWUFBWTtBQUN6RDtBQUNBLE1BQUlzdEIsRUFBRSxHQUFHLE1BQVQ7QUFDQSxNQUFJeWYsWUFBWSxHQUFHemYsRUFBRSxDQUFDeHRCLElBQXRCOztBQUNBd3RCLEVBQUFBLEVBQUUsQ0FBQ3h0QixJQUFILEdBQVUsWUFBWTtBQUFFLFdBQU9pdEMsWUFBWSxDQUFDdDlCLEtBQWIsQ0FBbUIsSUFBbkIsRUFBeUIzTixTQUF6QixDQUFQO0FBQTZDLEdBQXJFOztBQUNBLE1BQUl1RCxNQUFNLEdBQUcsS0FBS2pFLEtBQUwsQ0FBV2tzQixFQUFYLENBQWI7QUFDQSxTQUFPam9CLE1BQU0sQ0FBQ3RELE1BQVAsS0FBa0IsQ0FBbEIsSUFBdUJzRCxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWMsR0FBckMsSUFBNENBLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBYyxHQUFqRTtBQUNELENBUDZDLENBQTlDOztBQVVBc2pDLDZCQUE2QixDQUFDLE9BQUQsRUFBVSxVQUFVcUUsS0FBVixFQUFpQkMsV0FBakIsRUFBOEJsRSxlQUE5QixFQUErQztBQUNwRixNQUFJbUUsYUFBSjs7QUFDQSxNQUNFLE9BQU85ckMsS0FBUCxDQUFhLE1BQWIsRUFBcUIsQ0FBckIsS0FBMkIsR0FBM0I7QUFFQSxTQUFPQSxLQUFQLENBQWEsTUFBYixFQUFxQixDQUFDLENBQXRCLEVBQXlCVyxNQUF6QixJQUFtQyxDQUZuQyxJQUdBLEtBQUtYLEtBQUwsQ0FBVyxTQUFYLEVBQXNCVyxNQUF0QixJQUFnQyxDQUhoQyxJQUlBLElBQUlYLEtBQUosQ0FBVSxVQUFWLEVBQXNCVyxNQUF0QixJQUFnQyxDQUpoQztBQU1BLE1BQUlYLEtBQUosQ0FBVSxNQUFWLEVBQWtCVyxNQUFsQixHQUEyQixDQU4zQixJQU9BLEdBQUdYLEtBQUgsQ0FBUyxJQUFULEVBQWVXLE1BUmpCLEVBU0U7QUFDQTtBQUNBbXJDLElBQUFBLGFBQWEsR0FBRyxVQUFVN3VCLFNBQVYsRUFBcUI4dUIsS0FBckIsRUFBNEI7QUFDMUMsVUFBSTNoQyxNQUFNLEdBQUd2SyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBckI7QUFDQSxVQUFJNHJDLEdBQUcsR0FBR0QsS0FBSyxLQUFLOXJDLFNBQVYsR0FBc0J3ckMsVUFBdEIsR0FBbUNNLEtBQUssS0FBSyxDQUF2RDtBQUNBLFVBQUlDLEdBQUcsS0FBSyxDQUFaLEVBQWUsT0FBTyxFQUFQO0FBQ2YsVUFBSS91QixTQUFTLEtBQUtoZCxTQUFsQixFQUE2QixPQUFPLENBQUNtSyxNQUFELENBQVAsQ0FKYTs7QUFNMUMsVUFBSSxDQUFDczNCLFFBQVEsQ0FBQ3prQixTQUFELENBQWIsRUFBMEI7QUFDeEIsZUFBTzR1QixXQUFXLENBQUN4c0MsSUFBWixDQUFpQitLLE1BQWpCLEVBQXlCNlMsU0FBekIsRUFBb0MrdUIsR0FBcEMsQ0FBUDtBQUNEOztBQUNELFVBQUlDLE1BQU0sR0FBRyxFQUFiO0FBQ0EsVUFBSS9KLEtBQUssR0FBRyxDQUFDamxCLFNBQVMsQ0FBQzBrQixVQUFWLEdBQXVCLEdBQXZCLEdBQTZCLEVBQTlCLEtBQ0Mxa0IsU0FBUyxDQUFDMmtCLFNBQVYsR0FBc0IsR0FBdEIsR0FBNEIsRUFEN0IsS0FFQzNrQixTQUFTLENBQUM2a0IsT0FBVixHQUFvQixHQUFwQixHQUEwQixFQUYzQixLQUdDN2tCLFNBQVMsQ0FBQzhrQixNQUFWLEdBQW1CLEdBQW5CLEdBQXlCLEVBSDFCLENBQVo7QUFJQSxVQUFJbUssYUFBYSxHQUFHLENBQXBCLENBZDBDOztBQWdCMUMsVUFBSUMsYUFBYSxHQUFHLElBQUloWixNQUFKLENBQVdsVyxTQUFTLENBQUNyVixNQUFyQixFQUE2QnM2QixLQUFLLEdBQUcsR0FBckMsQ0FBcEI7QUFDQSxVQUFJL2dDLEtBQUosRUFBVzhnQyxTQUFYLEVBQXNCbUssVUFBdEI7O0FBQ0EsYUFBT2pyQyxLQUFLLEdBQUc2bEMsVUFBVSxDQUFDM25DLElBQVgsQ0FBZ0I4c0MsYUFBaEIsRUFBK0IvaEMsTUFBL0IsQ0FBZixFQUF1RDtBQUNyRDYzQixRQUFBQSxTQUFTLEdBQUdrSyxhQUFhLENBQUNsSyxTQUExQjs7QUFDQSxZQUFJQSxTQUFTLEdBQUdpSyxhQUFoQixFQUErQjtBQUM3QkQsVUFBQUEsTUFBTSxDQUFDcnBDLElBQVAsQ0FBWXdILE1BQU0sQ0FBQ3RLLEtBQVAsQ0FBYW9zQyxhQUFiLEVBQTRCL3FDLEtBQUssQ0FBQ2lILEtBQWxDLENBQVo7QUFDQSxjQUFJakgsS0FBSyxDQUFDUixNQUFOLEdBQWUsQ0FBZixJQUFvQlEsS0FBSyxDQUFDaUgsS0FBTixHQUFjZ0MsTUFBTSxDQUFDekosTUFBN0MsRUFBcUQ2cUMsU0FBUyxDQUFDbjlCLEtBQVYsQ0FBZ0I0OUIsTUFBaEIsRUFBd0I5cUMsS0FBSyxDQUFDckIsS0FBTixDQUFZLENBQVosQ0FBeEI7QUFDckRzc0MsVUFBQUEsVUFBVSxHQUFHanJDLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU1IsTUFBdEI7QUFDQXVyQyxVQUFBQSxhQUFhLEdBQUdqSyxTQUFoQjtBQUNBLGNBQUlnSyxNQUFNLENBQUN0ckMsTUFBUCxJQUFpQnFyQyxHQUFyQixFQUEwQjtBQUMzQjs7QUFDRCxZQUFJRyxhQUFhLENBQUNsSyxTQUFkLEtBQTRCOWdDLEtBQUssQ0FBQ2lILEtBQXRDLEVBQTZDK2pDLGFBQWEsQ0FBQ2xLLFNBQWQsR0FUUTtBQVV0RDs7QUFDRCxVQUFJaUssYUFBYSxLQUFLOWhDLE1BQU0sQ0FBQ3pKLE1BQTdCLEVBQXFDO0FBQ25DLFlBQUl5ckMsVUFBVSxJQUFJLENBQUNELGFBQWEsQ0FBQzNtQyxJQUFkLENBQW1CLEVBQW5CLENBQW5CLEVBQTJDeW1DLE1BQU0sQ0FBQ3JwQyxJQUFQLENBQVksRUFBWjtBQUM1QyxPQUZELE1BRU9xcEMsTUFBTSxDQUFDcnBDLElBQVAsQ0FBWXdILE1BQU0sQ0FBQ3RLLEtBQVAsQ0FBYW9zQyxhQUFiLENBQVo7O0FBQ1AsYUFBT0QsTUFBTSxDQUFDdHJDLE1BQVAsR0FBZ0JxckMsR0FBaEIsR0FBc0JDLE1BQU0sQ0FBQ25zQyxLQUFQLENBQWEsQ0FBYixFQUFnQmtzQyxHQUFoQixDQUF0QixHQUE2Q0MsTUFBcEQ7QUFDRCxLQWpDRCxDQUZBOztBQXFDRCxHQTlDRCxNQThDTyxJQUFJLElBQUlqc0MsS0FBSixDQUFVQyxTQUFWLEVBQXFCLENBQXJCLEVBQXdCVSxNQUE1QixFQUFvQztBQUN6Q21yQyxJQUFBQSxhQUFhLEdBQUcsVUFBVTd1QixTQUFWLEVBQXFCOHVCLEtBQXJCLEVBQTRCO0FBQzFDLGFBQU85dUIsU0FBUyxLQUFLaGQsU0FBZCxJQUEyQjhyQyxLQUFLLEtBQUssQ0FBckMsR0FBeUMsRUFBekMsR0FBOENGLFdBQVcsQ0FBQ3hzQyxJQUFaLENBQWlCLElBQWpCLEVBQXVCNGQsU0FBdkIsRUFBa0M4dUIsS0FBbEMsQ0FBckQ7QUFDRCxLQUZEO0FBR0QsR0FKTSxNQUlBRCxhQUFhLEdBQUdELFdBQWhCOztBQUVQLFNBQU87QUFFTDtBQUNBLFdBQVM3ckMsS0FBVCxDQUFlaWQsU0FBZixFQUEwQjh1QixLQUExQixFQUFpQztBQUMvQixRQUFJam5DLENBQUMsR0FBRzFFLHdCQUFzQixDQUFDLElBQUQsQ0FBOUI7QUFDQSxRQUFJaXNDLFFBQVEsR0FBR3B2QixTQUFTLElBQUloZCxTQUFiLEdBQXlCQSxTQUF6QixHQUFxQzJELFdBQVMsQ0FBQ3FaLFNBQUQsRUFBWTJ1QixLQUFaLENBQTdEO0FBQ0EsV0FBT1MsUUFBUSxHQUNYQSxRQUFRLENBQUNodEMsSUFBVCxDQUFjNGQsU0FBZCxFQUF5Qm5ZLENBQXpCLEVBQTRCaW5DLEtBQTVCLENBRFcsR0FFWEQsYUFBYSxDQUFDenNDLElBQWQsQ0FBbUJRLFVBQVEsQ0FBQ2lGLENBQUQsQ0FBM0IsRUFBZ0NtWSxTQUFoQyxFQUEyQzh1QixLQUEzQyxDQUZKO0FBR0QsR0FUSTtBQVdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVTNoQyxNQUFWLEVBQWtCMmhDLEtBQWxCLEVBQXlCO0FBQ3ZCLFFBQUlsRSxFQUFFLEdBQUc3aUMsV0FBUSxDQUFDLElBQUQsQ0FBakI7QUFDQSxRQUFJaWpCLENBQUMsR0FBR3BvQixVQUFRLENBQUN1SyxNQUFELENBQWhCO0FBQ0EsUUFBSTA5QixHQUFHLEdBQUdILGVBQWUsQ0FBQ21FLGFBQUQsRUFBZ0JqRSxFQUFoQixFQUFvQjVmLENBQXBCLEVBQXVCOGpCLEtBQXZCLEVBQThCRCxhQUFhLEtBQUtELFdBQWhELENBQXpCO0FBRUEsUUFBSS9ELEdBQUcsQ0FBQ255QixJQUFSLEVBQWMsT0FBT215QixHQUFHLENBQUNwb0MsS0FBWDtBQUVkLFFBQUlzUCxDQUFDLEdBQUdtWixvQkFBa0IsQ0FBQzBmLEVBQUQsRUFBSzFVLE1BQUwsQ0FBMUI7QUFFQSxRQUFJbVosZUFBZSxHQUFHekUsRUFBRSxDQUFDL0YsT0FBekI7QUFDQSxRQUFJSSxLQUFLLEdBQUcsQ0FBQzJGLEVBQUUsQ0FBQ2xHLFVBQUgsR0FBZ0IsR0FBaEIsR0FBc0IsRUFBdkIsS0FDQ2tHLEVBQUUsQ0FBQ2pHLFNBQUgsR0FBZSxHQUFmLEdBQXFCLEVBRHRCLEtBRUNpRyxFQUFFLENBQUMvRixPQUFILEdBQWEsR0FBYixHQUFtQixFQUZwQixLQUdDZ0IsYUFBYSxHQUFHLEdBQUgsR0FBUyxHQUh2QixDQUFaLENBVnVCO0FBZ0J2Qjs7QUFDQSxRQUFJdUosUUFBUSxHQUFHLElBQUlyOUIsQ0FBSixDQUFNOHpCLGFBQWEsR0FBRyxTQUFTK0UsRUFBRSxDQUFDamdDLE1BQVosR0FBcUIsR0FBeEIsR0FBOEJpZ0MsRUFBakQsRUFBcUQzRixLQUFyRCxDQUFmO0FBQ0EsUUFBSThKLEdBQUcsR0FBR0QsS0FBSyxLQUFLOXJDLFNBQVYsR0FBc0J3ckMsVUFBdEIsR0FBbUNNLEtBQUssS0FBSyxDQUF2RDtBQUNBLFFBQUlDLEdBQUcsS0FBSyxDQUFaLEVBQWUsT0FBTyxFQUFQO0FBQ2YsUUFBSS9qQixDQUFDLENBQUN0bkIsTUFBRixLQUFhLENBQWpCLEVBQW9CLE9BQU80cUMsY0FBYyxDQUFDYyxRQUFELEVBQVdwa0IsQ0FBWCxDQUFkLEtBQWdDLElBQWhDLEdBQXVDLENBQUNBLENBQUQsQ0FBdkMsR0FBNkMsRUFBcEQ7QUFDcEIsUUFBSXFkLENBQUMsR0FBRyxDQUFSO0FBQ0EsUUFBSWlILENBQUMsR0FBRyxDQUFSO0FBQ0EsUUFBSTkwQixDQUFDLEdBQUcsRUFBUjs7QUFDQSxXQUFPODBCLENBQUMsR0FBR3RrQixDQUFDLENBQUN0bkIsTUFBYixFQUFxQjtBQUNuQjByQyxNQUFBQSxRQUFRLENBQUNwSyxTQUFULEdBQXFCYSxhQUFhLEdBQUcsQ0FBSCxHQUFPeUosQ0FBekM7QUFDQSxVQUFJN1csQ0FBQyxHQUFHNlYsY0FBYyxDQUFDYyxRQUFELEVBQVd2SixhQUFhLEdBQUc3YSxDQUFDLENBQUNub0IsS0FBRixDQUFReXNDLENBQVIsQ0FBSCxHQUFnQnRrQixDQUF4QyxDQUF0QjtBQUNBLFVBQUl3TixDQUFKOztBQUNBLFVBQ0VDLENBQUMsS0FBSyxJQUFOLElBQ0EsQ0FBQ0QsQ0FBQyxHQUFHdHRCLEtBQUcsQ0FBQ0csVUFBUSxDQUFDK2pDLFFBQVEsQ0FBQ3BLLFNBQVQsSUFBc0JhLGFBQWEsR0FBR3lKLENBQUgsR0FBTyxDQUExQyxDQUFELENBQVQsRUFBeUR0a0IsQ0FBQyxDQUFDdG5CLE1BQTNELENBQVIsTUFBZ0Yya0MsQ0FGbEYsRUFHRTtBQUNBaUgsUUFBQUEsQ0FBQyxHQUFHL0Usa0JBQWtCLENBQUN2ZixDQUFELEVBQUlza0IsQ0FBSixFQUFPRCxlQUFQLENBQXRCO0FBQ0QsT0FMRCxNQUtPO0FBQ0w3MEIsUUFBQUEsQ0FBQyxDQUFDN1UsSUFBRixDQUFPcWxCLENBQUMsQ0FBQ25vQixLQUFGLENBQVF3bEMsQ0FBUixFQUFXaUgsQ0FBWCxDQUFQO0FBQ0EsWUFBSTkwQixDQUFDLENBQUM5VyxNQUFGLEtBQWFxckMsR0FBakIsRUFBc0IsT0FBT3YwQixDQUFQOztBQUN0QixhQUFLLElBQUl2TyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxJQUFJd3NCLENBQUMsQ0FBQy8wQixNQUFGLEdBQVcsQ0FBaEMsRUFBbUN1SSxDQUFDLEVBQXBDLEVBQXdDO0FBQ3RDdU8sVUFBQUEsQ0FBQyxDQUFDN1UsSUFBRixDQUFPOHlCLENBQUMsQ0FBQ3hzQixDQUFELENBQVI7QUFDQSxjQUFJdU8sQ0FBQyxDQUFDOVcsTUFBRixLQUFhcXJDLEdBQWpCLEVBQXNCLE9BQU92MEIsQ0FBUDtBQUN2Qjs7QUFDRDgwQixRQUFBQSxDQUFDLEdBQUdqSCxDQUFDLEdBQUc3UCxDQUFSO0FBQ0Q7QUFDRjs7QUFDRGhlLElBQUFBLENBQUMsQ0FBQzdVLElBQUYsQ0FBT3FsQixDQUFDLENBQUNub0IsS0FBRixDQUFRd2xDLENBQVIsQ0FBUDtBQUNBLFdBQU83dEIsQ0FBUDtBQUNELEdBNURJLENBQVA7QUE4REQsQ0FwSDRCLEVBb0gxQixDQUFDaTBCLGlDQXBIeUIsRUFvSFU1SSxhQXBIVixDQUE3Qjs7QUMvQkEsSUFBSXZ5QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlNLDBCQUF3QixHQUFHTiw4QkFBQSxDQUEyRGtHLENBQTFGOztBQUNBLElBQUl1RCxVQUFRLEdBQUd6SixVQUFmOztBQUNBLElBQUlnQixVQUFRLEdBQUdoQixVQUFmOztBQUNBLElBQUlvbkMsVUFBVSxHQUFHcG5DLFVBQWpCOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFDQSxJQUFJcW5DLG9CQUFvQixHQUFHcm5DLG9CQUEzQjs7O0FBSUEsSUFBSTJ0QyxXQUFXLEdBQUcsR0FBR0MsVUFBckI7QUFDQSxJQUFJdGtDLEtBQUcsR0FBR2hLLElBQUksQ0FBQ2dLLEdBQWY7QUFFQSxJQUFJaytCLHVCQUF1QixHQUFHSCxvQkFBb0IsQ0FBQyxZQUFELENBQWxEOztBQUVBLElBQUlJLGdCQUFnQixHQUFlLENBQUNELHVCQUFiLElBQXdDLENBQUMsQ0FBQyxZQUFZO0FBQzNFLE1BQUk5bUMsVUFBVSxHQUFHSiwwQkFBd0IsQ0FBQ3FDLE1BQU0sQ0FBQ3FGLFNBQVIsRUFBbUIsWUFBbkIsQ0FBekM7QUFDQSxTQUFPdEgsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0ssUUFBakM7QUFDRCxDQUhnRSxFQUFqRTtBQU1BOztBQUNBMlEsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRSxDQUFDdTdCLGdCQUFELElBQXFCLENBQUNEO0FBQS9ELENBQUQsRUFBMkY7QUFDMUZvRyxFQUFBQSxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQmxHO0FBQWE7QUFBakMsSUFBdUQ7QUFDakUsUUFBSXI0QixJQUFJLEdBQUdyTyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBbkI7QUFDQTZsQyxJQUFBQSxVQUFVLENBQUNNLFlBQUQsQ0FBVjtBQUNBLFFBQUluK0IsS0FBSyxHQUFHRSxVQUFRLENBQUNILEtBQUcsQ0FBQ3pILFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXZDLEVBQWtEaU8sSUFBSSxDQUFDdk4sTUFBdkQsQ0FBSixDQUFwQjtBQUNBLFFBQUk4bEMsTUFBTSxHQUFHNW1DLFVBQVEsQ0FBQzBtQyxZQUFELENBQXJCO0FBQ0EsV0FBT2lHLFdBQVcsR0FDZEEsV0FBVyxDQUFDbnRDLElBQVosQ0FBaUI2TyxJQUFqQixFQUF1QnU0QixNQUF2QixFQUErQnIrQixLQUEvQixDQURjLEdBRWQ4RixJQUFJLENBQUNwTyxLQUFMLENBQVdzSSxLQUFYLEVBQWtCQSxLQUFLLEdBQUdxK0IsTUFBTSxDQUFDOWxDLE1BQWpDLE1BQTZDOGxDLE1BRmpEO0FBR0Q7QUFUeUYsQ0FBM0YsQ0FBRDs7QUN0QkEsSUFBSWwyQixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl1Qix3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFDQSxJQUFJb0oscUJBQW1CLEdBQUdwSixxQkFBMUI7O0FBQ0EsSUFBSWdCLFVBQVEsR0FBR2hCLFVBQWY7O0FBRUEsSUFBSWlCLE9BQUssR0FBRyxHQUFHQSxLQUFmO0FBQ0EsSUFBSW9JLEtBQUcsR0FBRy9KLElBQUksQ0FBQytKLEdBQWY7QUFDQSxJQUFJQyxLQUFHLEdBQUdoSyxJQUFJLENBQUNnSyxHQUFmOztBQUdBLElBQUl5QyxRQUFNLEdBQUcsQ0FBQyxHQUFHOGhDLE1BQUosSUFBYyxLQUFLQSxNQUFMLENBQVksQ0FBQyxDQUFiLE1BQW9CLEdBQS9DO0FBR0E7O0FBQ0FuOEIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRUg7QUFBekMsQ0FBRCxFQUFvRDtBQUNuRDhoQyxFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQjcwQixLQUFoQixFQUF1QmxYLE1BQXZCLEVBQStCO0FBQ3JDLFFBQUl1TixJQUFJLEdBQUdyTyxVQUFRLENBQUNPLHdCQUFzQixDQUFDLElBQUQsQ0FBdkIsQ0FBbkI7QUFDQSxRQUFJOHVCLElBQUksR0FBR2hoQixJQUFJLENBQUN2TixNQUFoQjtBQUNBLFFBQUlnc0MsUUFBUSxHQUFHMWtDLHFCQUFtQixDQUFDNFAsS0FBRCxDQUFsQztBQUNBLFFBQUkrMEIsU0FBSixFQUFlQyxNQUFmO0FBQ0EsUUFBSUYsUUFBUSxLQUFLdnFCLFFBQWpCLEVBQTJCdXFCLFFBQVEsR0FBRyxDQUFYO0FBQzNCLFFBQUlBLFFBQVEsR0FBRyxDQUFmLEVBQWtCQSxRQUFRLEdBQUd6a0MsS0FBRyxDQUFDZ25CLElBQUksR0FBR3lkLFFBQVIsRUFBa0IsQ0FBbEIsQ0FBZDtBQUNsQkMsSUFBQUEsU0FBUyxHQUFHanNDLE1BQU0sS0FBS1YsU0FBWCxHQUF1Qml2QixJQUF2QixHQUE4QmpuQixxQkFBbUIsQ0FBQ3RILE1BQUQsQ0FBN0Q7QUFDQSxRQUFJaXNDLFNBQVMsSUFBSSxDQUFiLElBQWtCQSxTQUFTLEtBQUt4cUIsUUFBcEMsRUFBOEMsT0FBTyxFQUFQO0FBQzlDeXFCLElBQUFBLE1BQU0sR0FBRzFrQyxLQUFHLENBQUN3a0MsUUFBUSxHQUFHQyxTQUFaLEVBQXVCMWQsSUFBdkIsQ0FBWjtBQUNBLFdBQU95ZCxRQUFRLElBQUlFLE1BQVosR0FBcUIsRUFBckIsR0FBMEIvc0MsT0FBSyxDQUFDVCxJQUFOLENBQVc2TyxJQUFYLEVBQWlCeStCLFFBQWpCLEVBQTJCRSxNQUEzQixDQUFqQztBQUNEO0FBWmtELENBQXBELENBQUQ7O0FDZkEsSUFBSXB4QixzQkFBb0IsR0FBRzVjLFlBQUEsQ0FBc0NrSSxNQUFqRTs7QUFDQSxJQUFJbkksT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUltMEIsV0FBVyxHQUFHbjBCLGFBQWxCOztBQUVBLElBQUlpdUMsR0FBRyxHQUFHLG9CQUFWO0FBR0E7O0lBQ0ExdUMsZ0JBQUEsR0FBaUIsVUFBVXVZLFdBQVYsRUFBdUI7QUFDdEMsU0FBTy9YLE9BQUssQ0FBQyxZQUFZO0FBQ3ZCLFdBQU8sQ0FBQyxDQUFDbzBCLFdBQVcsQ0FBQ3JjLFdBQUQsQ0FBWCxFQUFGLElBQ0ZtMkIsR0FBRyxDQUFDbjJCLFdBQUQsQ0FBSCxPQUF1Qm0yQixHQURyQixJQUVEcnhCLHNCQUFvQixJQUFJdVgsV0FBVyxDQUFDcmMsV0FBRCxDQUFYLENBQXlCalQsSUFBekIsS0FBa0NpVCxXQUZoRTtBQUdELEdBSlcsQ0FBWjtBQUtELENBTkQ7O0FDUEEsSUFBSXBHLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWt1QyxLQUFLLEdBQUdsdUMsVUFBQSxDQUFvQ3cwQixJQUFoRDs7QUFDQSxJQUFJMlosd0JBQXNCLEdBQUdudUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRWlpQyx3QkFBc0IsQ0FBQyxNQUFEO0FBQS9ELENBQUQsRUFBNEU7QUFDM0UzWixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxHQUFnQjtBQUNwQixXQUFPMFosS0FBSyxDQUFDLElBQUQsQ0FBWjtBQUNEO0FBSDBFLENBQTVFLENBQUQ7O0FDTkEsSUFBSXg4QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlvdUMsUUFBUSxHQUFHcHVDLFVBQUEsQ0FBb0NtWixHQUFuRDs7QUFDQSxJQUFJZzFCLHdCQUFzQixHQUFHbnVDLGdCQUE3Qjs7QUFFQSxJQUFJK0wsUUFBTSxHQUFHb2lDLHdCQUFzQixDQUFDLFNBQUQsQ0FBbkM7QUFFQSxJQUFJRSxPQUFPLEdBQUd0aUMsUUFBTSxHQUFHLFNBQVNzaUMsT0FBVCxHQUFtQjtBQUN4QyxTQUFPRCxRQUFRLENBQUMsSUFBRCxDQUFmLENBRHdDO0FBR3pDLENBSG1CLEdBR2hCLEdBQUdDLE9BSFA7QUFNQTtBQUNBOztBQUNBMzhCLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNyUSxFQUFBQSxJQUFJLEVBQUUsU0FBdkM7QUFBa0RxSCxFQUFBQSxNQUFNLEVBQUVIO0FBQTFELENBQUQsRUFBcUU7QUFDcEVzaUMsRUFBQUEsT0FBTyxFQUFFQSxPQUQyRDtBQUVwRUMsRUFBQUEsU0FBUyxFQUFFRDtBQUZ5RCxDQUFyRSxDQUFEOztBQ2RBLElBQUkzOEIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJdXVDLFVBQVUsR0FBR3Z1QyxVQUFBLENBQW9DZ1osS0FBckQ7O0FBQ0EsSUFBSW0xQixzQkFBc0IsR0FBR251QyxnQkFBN0I7O0FBRUEsSUFBSStMLFFBQU0sR0FBR29pQyxzQkFBc0IsQ0FBQyxXQUFELENBQW5DO0FBRUEsSUFBSUssU0FBUyxHQUFHemlDLFFBQU0sR0FBRyxTQUFTeWlDLFNBQVQsR0FBcUI7QUFDNUMsU0FBT0QsVUFBVSxDQUFDLElBQUQsQ0FBakIsQ0FENEM7QUFHN0MsQ0FIcUIsR0FHbEIsR0FBR0MsU0FIUDtBQU1BO0FBQ0E7O0FBQ0E5OEIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ3JRLEVBQUFBLElBQUksRUFBRSxXQUF2QztBQUFvRHFILEVBQUFBLE1BQU0sRUFBRUg7QUFBNUQsQ0FBRCxFQUF1RTtBQUN0RXlpQyxFQUFBQSxTQUFTLEVBQUVBLFNBRDJEO0FBRXRFQyxFQUFBQSxRQUFRLEVBQUVEO0FBRjRELENBQXZFLENBQUQ7O0FDZkEsSUFBSWp0Qyx3QkFBc0IsR0FBR3ZCLHdCQUE3Qjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFFQSxJQUFJMHVDLElBQUksR0FBRyxJQUFYO0FBR0E7O0lBQ0FudkMsVUFBQSxHQUFpQixVQUFVZ00sTUFBVixFQUFrQm1CLEdBQWxCLEVBQXVCaWlDLFNBQXZCLEVBQWtDOXRDLEtBQWxDLEVBQXlDO0FBQ3hELE1BQUl1b0IsQ0FBQyxHQUFHcG9CLFVBQVEsQ0FBQ08sd0JBQXNCLENBQUNnSyxNQUFELENBQXZCLENBQWhCO0FBQ0EsTUFBSXFqQyxFQUFFLEdBQUcsTUFBTWxpQyxHQUFmO0FBQ0EsTUFBSWlpQyxTQUFTLEtBQUssRUFBbEIsRUFBc0JDLEVBQUUsSUFBSSxNQUFNRCxTQUFOLEdBQWtCLElBQWxCLEdBQXlCM3RDLFVBQVEsQ0FBQ0gsS0FBRCxDQUFSLENBQWdCaUksT0FBaEIsQ0FBd0I0bEMsSUFBeEIsRUFBOEIsUUFBOUIsQ0FBekIsR0FBbUUsR0FBekU7QUFDdEIsU0FBT0UsRUFBRSxHQUFHLEdBQUwsR0FBV3hsQixDQUFYLEdBQWUsSUFBZixHQUFzQjFjLEdBQXRCLEdBQTRCLEdBQW5DO0FBQ0QsQ0FMRDs7QUNQQSxJQUFJM00sT0FBSyxHQUFHQyxRQUFaO0FBR0E7OztJQUNBVCxnQkFBQSxHQUFpQixVQUFVdVksV0FBVixFQUF1QjtBQUN0QyxTQUFPL1gsT0FBSyxDQUFDLFlBQVk7QUFDdkIsUUFBSTRHLElBQUksR0FBRyxHQUFHbVIsV0FBSCxFQUFnQixHQUFoQixDQUFYO0FBQ0EsV0FBT25SLElBQUksS0FBS0EsSUFBSSxDQUFDNkUsV0FBTCxFQUFULElBQStCN0UsSUFBSSxDQUFDeEYsS0FBTCxDQUFXLEdBQVgsRUFBZ0JXLE1BQWhCLEdBQXlCLENBQS9EO0FBQ0QsR0FIVyxDQUFaO0FBSUQsQ0FMRDs7QUNIQSxJQUFJNFAsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJNnVDLFlBQVUsR0FBRzd1QyxVQUFqQjs7QUFDQSxJQUFJOHVDLHdCQUFzQixHQUFHOXVDLGdCQUE3QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUU0aUMsd0JBQXNCLENBQUMsUUFBRDtBQUEvRCxDQUFELEVBQThFO0FBQzdFQyxFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQmxxQyxJQUFoQixFQUFzQjtBQUM1QixXQUFPZ3FDLFlBQVUsQ0FBQyxJQUFELEVBQU8sR0FBUCxFQUFZLE1BQVosRUFBb0JocUMsSUFBcEIsQ0FBakI7QUFDRDtBQUg0RSxDQUE5RSxDQUFEOztBQ05BLElBQUk2TSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxLQUFEO0FBQS9ELENBQUQsRUFBMkU7QUFDMUVFLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULEdBQWU7QUFDbEIsV0FBT0gsWUFBVSxDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsRUFBZCxFQUFrQixFQUFsQixDQUFqQjtBQUNEO0FBSHlFLENBQTNFLENBQUQ7O0FDTkEsSUFBSW45QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxPQUFEO0FBQS9ELENBQUQsRUFBNkU7QUFDNUVHLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULEdBQWlCO0FBQ3RCLFdBQU9KLFlBQVUsQ0FBQyxJQUFELEVBQU8sT0FBUCxFQUFnQixFQUFoQixFQUFvQixFQUFwQixDQUFqQjtBQUNEO0FBSDJFLENBQTdFLENBQUQ7O0FDTkEsSUFBSW45QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxNQUFEO0FBQS9ELENBQUQsRUFBNEU7QUFDM0VJLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULEdBQWdCO0FBQ3BCLFdBQU9MLFlBQVUsQ0FBQyxJQUFELEVBQU8sR0FBUCxFQUFZLEVBQVosRUFBZ0IsRUFBaEIsQ0FBakI7QUFDRDtBQUgwRSxDQUE1RSxDQUFEOztBQ05BLElBQUluOUIsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJNnVDLFlBQVUsR0FBRzd1QyxVQUFqQjs7QUFDQSxJQUFJOHVDLHdCQUFzQixHQUFHOXVDLGdCQUE3QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUU0aUMsd0JBQXNCLENBQUMsT0FBRDtBQUEvRCxDQUFELEVBQTZFO0FBQzVFSyxFQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxHQUFpQjtBQUN0QixXQUFPTixZQUFVLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxFQUFiLEVBQWlCLEVBQWpCLENBQWpCO0FBQ0Q7QUFIMkUsQ0FBN0UsQ0FBRDs7QUNOQSxJQUFJbjlCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTZ1QyxZQUFVLEdBQUc3dUMsVUFBakI7O0FBQ0EsSUFBSTh1Qyx3QkFBc0IsR0FBRzl1QyxnQkFBN0I7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFNGlDLHdCQUFzQixDQUFDLFdBQUQ7QUFBL0QsQ0FBRCxFQUFpRjtBQUNoRk0sRUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsQ0FBbUJDLEtBQW5CLEVBQTBCO0FBQ25DLFdBQU9SLFlBQVUsQ0FBQyxJQUFELEVBQU8sTUFBUCxFQUFlLE9BQWYsRUFBd0JRLEtBQXhCLENBQWpCO0FBQ0Q7QUFIK0UsQ0FBakYsQ0FBRDs7QUNOQSxJQUFJMzlCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTZ1QyxZQUFVLEdBQUc3dUMsVUFBakI7O0FBQ0EsSUFBSTh1Qyx3QkFBc0IsR0FBRzl1QyxnQkFBN0I7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFNGlDLHdCQUFzQixDQUFDLFVBQUQ7QUFBL0QsQ0FBRCxFQUFnRjtBQUMvRVEsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0JqZixJQUFsQixFQUF3QjtBQUNoQyxXQUFPd2UsWUFBVSxDQUFDLElBQUQsRUFBTyxNQUFQLEVBQWUsTUFBZixFQUF1QnhlLElBQXZCLENBQWpCO0FBQ0Q7QUFIOEUsQ0FBaEYsQ0FBRDs7QUNOQSxJQUFJM2UsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJNnVDLFlBQVUsR0FBRzd1QyxVQUFqQjs7QUFDQSxJQUFJOHVDLHdCQUFzQixHQUFHOXVDLGdCQUE3QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUU0aUMsd0JBQXNCLENBQUMsU0FBRDtBQUEvRCxDQUFELEVBQStFO0FBQzlFUyxFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxHQUFtQjtBQUMxQixXQUFPVixZQUFVLENBQUMsSUFBRCxFQUFPLEdBQVAsRUFBWSxFQUFaLEVBQWdCLEVBQWhCLENBQWpCO0FBQ0Q7QUFINkUsQ0FBL0UsQ0FBRDs7QUNOQSxJQUFJbjlCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTZ1QyxZQUFVLEdBQUc3dUMsVUFBakI7O0FBQ0EsSUFBSTh1Qyx3QkFBc0IsR0FBRzl1QyxnQkFBN0I7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFLElBQTNCO0FBQWlDaEosRUFBQUEsTUFBTSxFQUFFNGlDLHdCQUFzQixDQUFDLE1BQUQ7QUFBL0QsQ0FBRCxFQUE0RTtBQUMzRVUsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY0MsR0FBZCxFQUFtQjtBQUN2QixXQUFPWixZQUFVLENBQUMsSUFBRCxFQUFPLEdBQVAsRUFBWSxNQUFaLEVBQW9CWSxHQUFwQixDQUFqQjtBQUNEO0FBSDBFLENBQTVFLENBQUQ7O0FDTkEsSUFBSS85QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxPQUFEO0FBQS9ELENBQUQsRUFBNkU7QUFDNUVZLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULEdBQWlCO0FBQ3RCLFdBQU9iLFlBQVUsQ0FBQyxJQUFELEVBQU8sT0FBUCxFQUFnQixFQUFoQixFQUFvQixFQUFwQixDQUFqQjtBQUNEO0FBSDJFLENBQTdFLENBQUQ7O0FDTkEsSUFBSW45QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxRQUFEO0FBQS9ELENBQUQsRUFBOEU7QUFDN0VhLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULEdBQWtCO0FBQ3hCLFdBQU9kLFlBQVUsQ0FBQyxJQUFELEVBQU8sUUFBUCxFQUFpQixFQUFqQixFQUFxQixFQUFyQixDQUFqQjtBQUNEO0FBSDRFLENBQTlFLENBQUQ7O0FDTkEsSUFBSW45QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsWUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsd0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyx3QkFBc0IsQ0FBQyxLQUFEO0FBQS9ELENBQUQsRUFBMkU7QUFDMUVjLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULEdBQWU7QUFDbEIsV0FBT2YsWUFBVSxDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsRUFBZCxFQUFrQixFQUFsQixDQUFqQjtBQUNEO0FBSHlFLENBQTNFLENBQUQ7O0FDTkEsSUFBSW45QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2dUMsVUFBVSxHQUFHN3VDLFVBQWpCOztBQUNBLElBQUk4dUMsc0JBQXNCLEdBQUc5dUMsZ0JBQTdCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsUUFBVjtBQUFvQm9LLEVBQUFBLEtBQUssRUFBRSxJQUEzQjtBQUFpQ2hKLEVBQUFBLE1BQU0sRUFBRTRpQyxzQkFBc0IsQ0FBQyxLQUFEO0FBQS9ELENBQUQsRUFBMkU7QUFDMUVlLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULEdBQWU7QUFDbEIsV0FBT2hCLFVBQVUsQ0FBQyxJQUFELEVBQU8sS0FBUCxFQUFjLEVBQWQsRUFBa0IsRUFBbEIsQ0FBakI7QUFDRDtBQUh5RSxDQUEzRSxDQUFEOzs7Ozs7QUNOQSxJQUFJbHZDLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSTJiLDJCQUEyQixHQUFHM2IsNkJBQWxDOztBQUNBLElBQUl3bkIsMkJBQXlCLEdBQUd4bkIsbUJBQUEsQ0FBK0N3bkIseUJBQS9FOztBQUVBLElBQUluRixhQUFXLEdBQUcxaUIsUUFBTSxDQUFDMGlCLFdBQXpCO0FBQ0EsSUFBSTBFLFdBQVMsR0FBR3BuQixRQUFNLENBQUNvbkIsU0FBdkI7SUFFQXhuQixxQ0FBQSxHQUFpQixDQUFDaW9CLDJCQUFELElBQThCLENBQUN6bkIsT0FBSyxDQUFDLFlBQVk7QUFDaEVnbkIsRUFBQUEsV0FBUyxDQUFDLENBQUQsQ0FBVDtBQUNELENBRm9ELENBQXBDLElBRVgsQ0FBQ2huQixPQUFLLENBQUMsWUFBWTtBQUN2QixNQUFJZ25CLFdBQUosQ0FBYyxDQUFDLENBQWY7QUFDRCxDQUZXLENBRkssSUFJWCxDQUFDcEwsMkJBQTJCLENBQUMsVUFBVXhGLFFBQVYsRUFBb0I7QUFDckQsTUFBSTRRLFdBQUo7QUFDQSxNQUFJQSxXQUFKLENBQWMsSUFBZDtBQUNBLE1BQUlBLFdBQUosQ0FBYyxHQUFkO0FBQ0EsTUFBSUEsV0FBSixDQUFjNVEsUUFBZDtBQUNELENBTGlDLEVBSy9CLElBTCtCLENBSmpCLElBU0xwVyxPQUFLLENBQUMsWUFBWTtBQUM1QjtBQUNBLFNBQU8sSUFBSWduQixXQUFKLENBQWMsSUFBSTFFLGFBQUosQ0FBZ0IsQ0FBaEIsQ0FBZCxFQUFrQyxDQUFsQyxFQUFxQ2poQixTQUFyQyxFQUFnRFUsTUFBaEQsS0FBMkQsQ0FBbEU7QUFDRCxDQUhnQixDQVRqQjs7QUNUQSxJQUFJc0gscUJBQW1CLEdBQUdwSixxQkFBMUI7O0lBRUFULG1CQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYztBQUM3QixNQUFJK0YsTUFBTSxHQUFHZ0UscUJBQW1CLENBQUMvSixFQUFELENBQWhDO0FBQ0EsTUFBSStGLE1BQU0sR0FBRyxDQUFiLEVBQWdCLE1BQU1tZCxVQUFVLENBQUMsbUNBQUQsQ0FBaEI7QUFDaEIsU0FBT25kLE1BQVA7QUFDRCxDQUpEOztBQ0ZBLElBQUkwcUMsbUJBQWlCLEdBQUc5dkMsbUJBQXhCOztJQUVBVCxVQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBYzB3QyxLQUFkLEVBQXFCO0FBQ3BDLE1BQUl0cUIsTUFBTSxHQUFHcXFCLG1CQUFpQixDQUFDendDLEVBQUQsQ0FBOUI7QUFDQSxNQUFJb21CLE1BQU0sR0FBR3NxQixLQUFiLEVBQW9CLE1BQU14dEIsVUFBVSxDQUFDLGNBQUQsQ0FBaEI7QUFDcEIsU0FBT2tELE1BQVA7QUFDRCxDQUpEOztBQ0ZBLElBQUl5RCxjQUFZLEdBQUdscEIsY0FBbkI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJd1YsbUJBQWlCLEdBQUd4VixtQkFBeEI7O0FBQ0EsSUFBSThWLHFCQUFxQixHQUFHOVYsdUJBQTVCOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJMm9CLHdCQUFzQixHQUFHM29CLG1CQUFBLENBQStDMm9CLHNCQUE1RTs7SUFFQXBwQixnQkFBQSxHQUFpQixTQUFTMlosSUFBVCxDQUFjblE7QUFBTztBQUFyQixFQUE2QztBQUM1RCxNQUFJb0gsQ0FBQyxHQUFHK1ksY0FBWSxDQUFDLElBQUQsQ0FBcEI7QUFDQSxNQUFJampCLENBQUMsR0FBRy9CLFVBQVEsQ0FBQzZFLE1BQUQsQ0FBaEI7QUFDQSxNQUFJMlEsZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLE1BQUl1WixLQUFLLEdBQUczQixlQUFlLEdBQUcsQ0FBbEIsR0FBc0I3WCxTQUFTLENBQUMsQ0FBRCxDQUEvQixHQUFxQ1QsU0FBakQ7QUFDQSxNQUFJa2EsT0FBTyxHQUFHRCxLQUFLLEtBQUtqYSxTQUF4QjtBQUNBLE1BQUlzVSxjQUFjLEdBQUdGLG1CQUFpQixDQUFDdlAsQ0FBRCxDQUF0QztBQUNBLE1BQUlvRSxDQUFKLEVBQU92SSxNQUFQLEVBQWVzRCxNQUFmLEVBQXVCc1IsSUFBdkIsRUFBNkI1VCxRQUE3QixFQUF1QzJULElBQXZDOztBQUNBLE1BQUlmLGNBQWMsSUFBSSxDQUFDSSxxQkFBcUIsQ0FBQ0osY0FBRCxDQUE1QyxFQUE4RDtBQUM1RDVTLElBQUFBLFFBQVEsR0FBR2lULGFBQVcsQ0FBQzlQLENBQUQsRUFBSXlQLGNBQUosQ0FBdEI7QUFDQWUsSUFBQUEsSUFBSSxHQUFHM1QsUUFBUSxDQUFDMlQsSUFBaEI7QUFDQXhRLElBQUFBLENBQUMsR0FBRyxFQUFKOztBQUNBLFdBQU8sQ0FBQyxDQUFDeVEsSUFBSSxHQUFHRCxJQUFJLENBQUNqVyxJQUFMLENBQVVzQyxRQUFWLENBQVIsRUFBNkJnVSxJQUFyQyxFQUEyQztBQUN6QzdRLE1BQUFBLENBQUMsQ0FBQ2xDLElBQUYsQ0FBTzJTLElBQUksQ0FBQzdWLEtBQVo7QUFDRDtBQUNGOztBQUNELE1BQUl5YSxPQUFPLElBQUk1QixlQUFlLEdBQUcsQ0FBakMsRUFBb0M7QUFDbEMyQixJQUFBQSxLQUFLLEdBQUcvSyxNQUFJLENBQUMrSyxLQUFELEVBQVF4WixTQUFTLENBQUMsQ0FBRCxDQUFqQixFQUFzQixDQUF0QixDQUFaO0FBQ0Q7O0FBQ0RDLEVBQUFBLE1BQU0sR0FBRzhILG1CQUFpQixDQUFDM0QsQ0FBRCxDQUExQjtBQUNBYixFQUFBQSxNQUFNLEdBQUcsS0FBS3VqQix3QkFBc0IsQ0FBQ3hZLENBQUQsQ0FBM0IsRUFBZ0NyTyxNQUFoQyxDQUFUOztBQUNBLE9BQUt1SSxDQUFDLEdBQUcsQ0FBVCxFQUFZdkksTUFBTSxHQUFHdUksQ0FBckIsRUFBd0JBLENBQUMsRUFBekIsRUFBNkI7QUFDM0JqRixJQUFBQSxNQUFNLENBQUNpRixDQUFELENBQU4sR0FBWWlSLE9BQU8sR0FBR0QsS0FBSyxDQUFDcFYsQ0FBQyxDQUFDb0UsQ0FBRCxDQUFGLEVBQU9BLENBQVAsQ0FBUixHQUFvQnBFLENBQUMsQ0FBQ29FLENBQUQsQ0FBeEM7QUFDRDs7QUFDRCxTQUFPakYsTUFBUDtBQUNELENBekJEOztBQ1JBLElBQUlzTSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJeUYsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSWd3Qyw2Q0FBMkMsR0FBR2h3QyxxQ0FBbEQ7O0FBQ0EsSUFBSWlwQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSXFwQixpQkFBaUIsR0FBR3JwQixXQUF4Qjs7QUFDQSxJQUFJNmpCLFlBQVUsR0FBRzdqQixZQUFqQjs7QUFDQSxJQUFJNEYsMEJBQXdCLEdBQUc1RiwwQkFBL0I7O0FBQ0EsSUFBSThHLDZCQUEyQixHQUFHOUcsNkJBQWxDOztBQUNBLElBQUl5MUIsZ0JBQWdCLEdBQUd6MUIsa0JBQXZCOztBQUNBLElBQUl5SixVQUFRLEdBQUd6SixVQUFmOztBQUNBLElBQUk4akIsT0FBTyxHQUFHOWpCLFNBQWQ7O0FBQ0EsSUFBSWl3QyxVQUFRLEdBQUdqd0MsVUFBZjs7QUFDQSxJQUFJOEYsZUFBYSxHQUFHOUYsZUFBcEI7O0FBQ0EsSUFBSW9FLFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUlrQixTQUFPLEdBQUdsQixTQUFkOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUk4RSxRQUFRLEdBQUc5RSxVQUFmOztBQUNBLElBQUk2TyxRQUFNLEdBQUc3TyxjQUFiOztBQUNBLElBQUlnVixjQUFjLEdBQUdoVixzQkFBckI7O0FBQ0EsSUFBSXlLLHFCQUFtQixHQUFHeksseUJBQUEsQ0FBc0RrRyxDQUFoRjs7QUFDQSxJQUFJZ3FDLGdCQUFjLEdBQUdsd0MsZ0JBQXJCOztBQUNBLElBQUlrUixTQUFPLEdBQUdsUixjQUFBLENBQXdDa1IsT0FBdEQ7O0FBQ0EsSUFBSTRRLFlBQVUsR0FBRzloQixZQUFqQjs7QUFDQSxJQUFJc0csb0JBQW9CLEdBQUd0RyxvQkFBM0I7O0FBQ0EsSUFBSTZLLDhCQUE4QixHQUFHN0ssOEJBQXJDOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUNBLElBQUk4dUIsaUJBQWlCLEdBQUc5dUIsbUJBQXhCOztBQUVBLElBQUl1SSxrQkFBZ0IsR0FBR0YscUJBQW1CLENBQUNsSSxHQUEzQztBQUNBLElBQUlnUyxrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUwsb0JBQW9CLEdBQUdqTSxvQkFBb0IsQ0FBQ0osQ0FBaEQ7QUFDQSxJQUFJb00sOEJBQThCLEdBQUd6SCw4QkFBOEIsQ0FBQzNFLENBQXBFO0FBQ0EsSUFBSWlxQyxLQUFLLEdBQUc3d0MsSUFBSSxDQUFDNndDLEtBQWpCO0FBQ0EsSUFBSTV0QixZQUFVLEdBQUc1aUIsUUFBTSxDQUFDNGlCLFVBQXhCO0FBQ0EsSUFBSUYsYUFBVyxHQUFHZ0gsaUJBQWlCLENBQUNoSCxXQUFwQztBQUNBLElBQUlDLFVBQVEsR0FBRytHLGlCQUFpQixDQUFDL0csUUFBakM7QUFDQSxJQUFJa0YseUJBQXlCLEdBQUd5QixxQkFBbUIsQ0FBQ3pCLHlCQUFwRDtBQUNBLElBQUlELHlCQUF1QixHQUFHMEIscUJBQW1CLENBQUMxQix1QkFBbEQ7QUFDQSxJQUFJRCxlQUFlLEdBQUcyQixxQkFBbUIsQ0FBQzNCLGVBQTFDO0FBQ0EsSUFBSUgsVUFBVSxHQUFHOEIscUJBQW1CLENBQUM5QixVQUFyQztBQUNBLElBQUlDLG1CQUFtQixHQUFHNkIscUJBQW1CLENBQUM3QixtQkFBOUM7QUFDQSxJQUFJdUIsd0JBQXNCLEdBQUdNLHFCQUFtQixDQUFDTixzQkFBakQ7QUFDQSxJQUFJRixZQUFZLEdBQUdRLHFCQUFtQixDQUFDUixZQUF2QztBQUNBLElBQUkybkIsaUJBQWlCLEdBQUcsbUJBQXhCO0FBQ0EsSUFBSWpzQixZQUFZLEdBQUcsY0FBbkI7O0FBRUEsSUFBSWtzQixRQUFRLEdBQUcsVUFBVWxnQyxDQUFWLEVBQWEyYyxJQUFiLEVBQW1CO0FBQ2hDLE1BQUl2akIsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJekgsTUFBTSxHQUFHZ3JCLElBQUksQ0FBQ2hyQixNQUFsQjtBQUNBLE1BQUlzRCxNQUFNLEdBQUcsS0FBS3VqQix3QkFBc0IsQ0FBQ3hZLENBQUQsQ0FBM0IsRUFBZ0NyTyxNQUFoQyxDQUFiOztBQUNBLFNBQU9BLE1BQU0sR0FBR3lILEtBQWhCLEVBQXVCbkUsTUFBTSxDQUFDbUUsS0FBRCxDQUFOLEdBQWdCdWpCLElBQUksQ0FBQ3ZqQixLQUFLLEVBQU4sQ0FBcEI7O0FBQ3ZCLFNBQU9uRSxNQUFQO0FBQ0QsQ0FORDs7QUFRQSxJQUFJNmYsU0FBUyxHQUFHLFVBQVU1bEIsRUFBVixFQUFjc0UsR0FBZCxFQUFtQjtBQUNqQzRPLEVBQUFBLG9CQUFvQixDQUFDbFQsRUFBRCxFQUFLc0UsR0FBTCxFQUFVO0FBQUV4RCxJQUFBQSxHQUFHLEVBQUUsWUFBWTtBQUMvQyxhQUFPb0ksa0JBQWdCLENBQUMsSUFBRCxDQUFoQixDQUF1QjVFLEdBQXZCLENBQVA7QUFDRDtBQUY2QixHQUFWLENBQXBCO0FBR0QsQ0FKRDs7QUFNQSxJQUFJMnNDLGFBQWEsR0FBRyxVQUFVanhDLEVBQVYsRUFBYztBQUNoQyxNQUFJbXBCLEtBQUo7QUFDQSxTQUFPbnBCLEVBQUUsWUFBWWdqQixhQUFkLElBQTZCLENBQUNtRyxLQUFLLEdBQUd0bkIsU0FBTyxDQUFDN0IsRUFBRCxDQUFoQixLQUF5QixhQUF0RCxJQUF1RW1wQixLQUFLLElBQUksbUJBQXZGO0FBQ0QsQ0FIRDs7QUFLQSxJQUFJK25CLGlCQUFpQixHQUFHLFVBQVV6bEMsTUFBVixFQUFrQm5ILEdBQWxCLEVBQXVCO0FBQzdDLFNBQU84a0IsWUFBWSxDQUFDM2QsTUFBRCxDQUFaLElBQ0YsQ0FBQ2hHLFFBQVEsQ0FBQ25CLEdBQUQsQ0FEUCxJQUVGQSxHQUFHLElBQUltSCxNQUZMLElBR0YycUIsZ0JBQWdCLENBQUMsQ0FBQzl4QixHQUFGLENBSGQsSUFJRkEsR0FBRyxJQUFJLENBSlo7QUFLRCxDQU5EOztBQVFBLElBQUk2c0MsK0JBQStCLEdBQUcsU0FBU2x3Qyx3QkFBVCxDQUFrQ3dLLE1BQWxDLEVBQTBDbkgsR0FBMUMsRUFBK0M7QUFDbkZBLEVBQUFBLEdBQUcsR0FBR21DLGVBQWEsQ0FBQ25DLEdBQUQsQ0FBbkI7QUFDQSxTQUFPNHNDLGlCQUFpQixDQUFDemxDLE1BQUQsRUFBU25ILEdBQVQsQ0FBakIsR0FDSGlDLDBCQUF3QixDQUFDLENBQUQsRUFBSWtGLE1BQU0sQ0FBQ25ILEdBQUQsQ0FBVixDQURyQixHQUVIMk8sOEJBQThCLENBQUN4SCxNQUFELEVBQVNuSCxHQUFULENBRmxDO0FBR0QsQ0FMRDs7QUFPQSxJQUFJOHNDLHFCQUFxQixHQUFHLFNBQVN2d0MsY0FBVCxDQUF3QjRLLE1BQXhCLEVBQWdDbkgsR0FBaEMsRUFBcUNqRCxVQUFyQyxFQUFpRDtBQUMzRWlELEVBQUFBLEdBQUcsR0FBR21DLGVBQWEsQ0FBQ25DLEdBQUQsQ0FBbkI7O0FBQ0EsTUFBSTRzQyxpQkFBaUIsQ0FBQ3psQyxNQUFELEVBQVNuSCxHQUFULENBQWpCLElBQ0NOLFVBQVEsQ0FBQzNDLFVBQUQsQ0FEVCxJQUVDMEQsUUFBTSxDQUFDMUQsVUFBRCxFQUFhLE9BQWIsQ0FGUCxJQUdDLENBQUMwRCxRQUFNLENBQUMxRCxVQUFELEVBQWEsS0FBYixDQUhSLElBSUMsQ0FBQzBELFFBQU0sQ0FBQzFELFVBQUQsRUFBYSxLQUFiLENBSlI7QUFBQSxLQU1DLENBQUNBLFVBQVUsQ0FBQ0ksWUFOYixLQU9FLENBQUNzRCxRQUFNLENBQUMxRCxVQUFELEVBQWEsVUFBYixDQUFQLElBQW1DQSxVQUFVLENBQUNLLFFBUGhELE1BUUUsQ0FBQ3FELFFBQU0sQ0FBQzFELFVBQUQsRUFBYSxZQUFiLENBQVAsSUFBcUNBLFVBQVUsQ0FBQ0MsVUFSbEQsQ0FBSixFQVNFO0FBQ0FtSyxJQUFBQSxNQUFNLENBQUNuSCxHQUFELENBQU4sR0FBY2pELFVBQVUsQ0FBQ0csS0FBekI7QUFDQSxXQUFPaUssTUFBUDtBQUNEOztBQUFDLFNBQU95SCxvQkFBb0IsQ0FBQ3pILE1BQUQsRUFBU25ILEdBQVQsRUFBY2pELFVBQWQsQ0FBM0I7QUFDSCxDQWZEOztBQWlCQSxJQUFJK0UsYUFBSixFQUFpQjtBQUNmLE1BQUksQ0FBQytoQix5QkFBTCxFQUFnQztBQUM5QjNjLElBQUFBLDhCQUE4QixDQUFDM0UsQ0FBL0IsR0FBbUNzcUMsK0JBQW5DO0FBQ0FscUMsSUFBQUEsb0JBQW9CLENBQUNKLENBQXJCLEdBQXlCdXFDLHFCQUF6QjtBQUNBeHJCLElBQUFBLFNBQVMsQ0FBQ21DLG1CQUFELEVBQXNCLFFBQXRCLENBQVQ7QUFDQW5DLElBQUFBLFNBQVMsQ0FBQ21DLG1CQUFELEVBQXNCLFlBQXRCLENBQVQ7QUFDQW5DLElBQUFBLFNBQVMsQ0FBQ21DLG1CQUFELEVBQXNCLFlBQXRCLENBQVQ7QUFDQW5DLElBQUFBLFNBQVMsQ0FBQ21DLG1CQUFELEVBQXNCLFFBQXRCLENBQVQ7QUFDRDs7QUFFRDFWLEVBQUFBLElBQUMsQ0FBQztBQUFFNUcsSUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixJQUFBQSxJQUFJLEVBQUUsSUFBMUI7QUFBZ0NJLElBQUFBLE1BQU0sRUFBRSxDQUFDc2I7QUFBekMsR0FBRCxFQUF1RTtBQUN0RWxuQixJQUFBQSx3QkFBd0IsRUFBRWt3QywrQkFENEM7QUFFdEV0d0MsSUFBQUEsY0FBYyxFQUFFdXdDO0FBRnNELEdBQXZFLENBQUQ7O0FBS0FseEMsRUFBQUEsNkJBQUEsR0FBaUIsVUFBVStILElBQVYsRUFBZ0J5bkIsT0FBaEIsRUFBeUIyaEIsT0FBekIsRUFBa0M7QUFDakQsUUFBSVgsS0FBSyxHQUFHem9DLElBQUksQ0FBQ2hGLEtBQUwsQ0FBVyxNQUFYLEVBQW1CLENBQW5CLElBQXdCLENBQXBDO0FBQ0EsUUFBSXVmLGdCQUFnQixHQUFHdmEsSUFBSSxJQUFJb3BDLE9BQU8sR0FBRyxTQUFILEdBQWUsRUFBMUIsQ0FBSixHQUFvQyxPQUEzRDtBQUNBLFFBQUlDLE1BQU0sR0FBRyxRQUFRcnBDLElBQXJCO0FBQ0EsUUFBSXNwQyxNQUFNLEdBQUcsUUFBUXRwQyxJQUFyQjtBQUNBLFFBQUl1cEMsMkJBQTJCLEdBQUdseEMsUUFBTSxDQUFDa2lCLGdCQUFELENBQXhDO0FBQ0EsUUFBSWtILHFCQUFxQixHQUFHOG5CLDJCQUE1QjtBQUNBLFFBQUlDLDhCQUE4QixHQUFHL25CLHFCQUFxQixJQUFJQSxxQkFBcUIsQ0FBQy9nQixTQUFwRjtBQUNBLFFBQUlxbkIsUUFBUSxHQUFHLEVBQWY7O0FBRUEsUUFBSW1JLE1BQU0sR0FBRyxVQUFVbm9CLElBQVYsRUFBZ0I5RixLQUFoQixFQUF1QjtBQUNsQyxVQUFJNEIsSUFBSSxHQUFHNUMsa0JBQWdCLENBQUM4RyxJQUFELENBQTNCO0FBQ0EsYUFBT2xFLElBQUksQ0FBQytaLElBQUwsQ0FBVXlyQixNQUFWLEVBQWtCcG5DLEtBQUssR0FBR3dtQyxLQUFSLEdBQWdCNWtDLElBQUksQ0FBQ21hLFVBQXZDLEVBQW1ELElBQW5ELENBQVA7QUFDRCxLQUhEOztBQUtBLFFBQUk1UixNQUFNLEdBQUcsVUFBVXJFLElBQVYsRUFBZ0I5RixLQUFoQixFQUF1QjFJLEtBQXZCLEVBQThCO0FBQ3pDLFVBQUlzSyxJQUFJLEdBQUc1QyxrQkFBZ0IsQ0FBQzhHLElBQUQsQ0FBM0I7QUFDQSxVQUFJcWhDLE9BQUosRUFBYTd2QyxLQUFLLEdBQUcsQ0FBQ0EsS0FBSyxHQUFHc3ZDLEtBQUssQ0FBQ3R2QyxLQUFELENBQWQsSUFBeUIsQ0FBekIsR0FBNkIsQ0FBN0IsR0FBaUNBLEtBQUssR0FBRyxJQUFSLEdBQWUsSUFBZixHQUFzQkEsS0FBSyxHQUFHLElBQXZFO0FBQ2JzSyxNQUFBQSxJQUFJLENBQUMrWixJQUFMLENBQVUwckIsTUFBVixFQUFrQnJuQyxLQUFLLEdBQUd3bUMsS0FBUixHQUFnQjVrQyxJQUFJLENBQUNtYSxVQUF2QyxFQUFtRHprQixLQUFuRCxFQUEwRCxJQUExRDtBQUNELEtBSkQ7O0FBTUEsUUFBSWt3QyxVQUFVLEdBQUcsVUFBVTFoQyxJQUFWLEVBQWdCOUYsS0FBaEIsRUFBdUI7QUFDdENnSixNQUFBQSxvQkFBb0IsQ0FBQ2xELElBQUQsRUFBTzlGLEtBQVAsRUFBYztBQUNoQ3BKLFFBQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsaUJBQU9xM0IsTUFBTSxDQUFDLElBQUQsRUFBT2p1QixLQUFQLENBQWI7QUFDRCxTQUgrQjtBQUloQ3JDLFFBQUFBLEdBQUcsRUFBRSxVQUFVckcsS0FBVixFQUFpQjtBQUNwQixpQkFBTzZTLE1BQU0sQ0FBQyxJQUFELEVBQU9uSyxLQUFQLEVBQWMxSSxLQUFkLENBQWI7QUFDRCxTQU4rQjtBQU9oQ0YsUUFBQUEsVUFBVSxFQUFFO0FBUG9CLE9BQWQsQ0FBcEI7QUFTRCxLQVZEOztBQVlBLFFBQUksQ0FBQzZtQix5QkFBTCxFQUFnQztBQUM5QnVCLE1BQUFBLHFCQUFxQixHQUFHZ0csT0FBTyxDQUFDLFVBQVUxZixJQUFWLEVBQWdCbEUsSUFBaEIsRUFBc0JzYSxNQUF0QixFQUE4QnVyQixPQUE5QixFQUF1QztBQUNyRW50QixRQUFBQSxZQUFVLENBQUN4VSxJQUFELEVBQU8wWixxQkFBUCxFQUE4QmxILGdCQUE5QixDQUFWO0FBQ0EsWUFBSXRZLEtBQUssR0FBRyxDQUFaO0FBQ0EsWUFBSStiLFVBQVUsR0FBRyxDQUFqQjtBQUNBLFlBQUl2QyxNQUFKLEVBQVlzQyxVQUFaLEVBQXdCdmpCLE1BQXhCOztBQUNBLFlBQUksQ0FBQ3VCLFVBQVEsQ0FBQzhILElBQUQsQ0FBYixFQUFxQjtBQUNuQnJKLFVBQUFBLE1BQU0sR0FBR2dpQixPQUFPLENBQUMzWSxJQUFELENBQWhCO0FBQ0FrYSxVQUFBQSxVQUFVLEdBQUd2akIsTUFBTSxHQUFHaXVDLEtBQXRCO0FBQ0FodEIsVUFBQUEsTUFBTSxHQUFHLElBQUlWLGFBQUosQ0FBZ0JnRCxVQUFoQixDQUFUO0FBQ0QsU0FKRCxNQUlPLElBQUlpckIsYUFBYSxDQUFDbmxDLElBQUQsQ0FBakIsRUFBeUI7QUFDOUI0WCxVQUFBQSxNQUFNLEdBQUc1WCxJQUFUO0FBQ0FtYSxVQUFBQSxVQUFVLEdBQUcycUIsVUFBUSxDQUFDeHFCLE1BQUQsRUFBU3NxQixLQUFULENBQXJCO0FBQ0EsY0FBSWtCLElBQUksR0FBRzlsQyxJQUFJLENBQUNrYSxVQUFoQjs7QUFDQSxjQUFJMnJCLE9BQU8sS0FBSzV2QyxTQUFoQixFQUEyQjtBQUN6QixnQkFBSTZ2QyxJQUFJLEdBQUdsQixLQUFYLEVBQWtCLE1BQU14dEIsWUFBVSxDQUFDNEIsWUFBRCxDQUFoQjtBQUNsQmtCLFlBQUFBLFVBQVUsR0FBRzRyQixJQUFJLEdBQUczckIsVUFBcEI7QUFDQSxnQkFBSUQsVUFBVSxHQUFHLENBQWpCLEVBQW9CLE1BQU05QyxZQUFVLENBQUM0QixZQUFELENBQWhCO0FBQ3JCLFdBSkQsTUFJTztBQUNMa0IsWUFBQUEsVUFBVSxHQUFHNWIsVUFBUSxDQUFDdW5DLE9BQUQsQ0FBUixHQUFvQmpCLEtBQWpDO0FBQ0EsZ0JBQUkxcUIsVUFBVSxHQUFHQyxVQUFiLEdBQTBCMnJCLElBQTlCLEVBQW9DLE1BQU0xdUIsWUFBVSxDQUFDNEIsWUFBRCxDQUFoQjtBQUNyQzs7QUFDRHJpQixVQUFBQSxNQUFNLEdBQUd1akIsVUFBVSxHQUFHMHFCLEtBQXRCO0FBQ0QsU0FiTSxNQWFBLElBQUl0bkIsWUFBWSxDQUFDdGQsSUFBRCxDQUFoQixFQUF3QjtBQUM3QixpQkFBT2tsQyxRQUFRLENBQUN0bkIscUJBQUQsRUFBd0I1ZCxJQUF4QixDQUFmO0FBQ0QsU0FGTSxNQUVBO0FBQ0wsaUJBQU8ra0MsZ0JBQWMsQ0FBQzF2QyxJQUFmLENBQW9CdW9CLHFCQUFwQixFQUEyQzVkLElBQTNDLENBQVA7QUFDRDs7QUFDRGdILFFBQUFBLGtCQUFnQixDQUFDOUMsSUFBRCxFQUFPO0FBQ3JCMFQsVUFBQUEsTUFBTSxFQUFFQSxNQURhO0FBRXJCdUMsVUFBQUEsVUFBVSxFQUFFQSxVQUZTO0FBR3JCRCxVQUFBQSxVQUFVLEVBQUVBLFVBSFM7QUFJckJ2akIsVUFBQUEsTUFBTSxFQUFFQSxNQUphO0FBS3JCb2pCLFVBQUFBLElBQUksRUFBRSxJQUFJNUMsVUFBSixDQUFhUyxNQUFiO0FBTGUsU0FBUCxDQUFoQjs7QUFPQSxlQUFPeFosS0FBSyxHQUFHekgsTUFBZixFQUF1Qml2QyxVQUFVLENBQUMxaEMsSUFBRCxFQUFPOUYsS0FBSyxFQUFaLENBQVY7QUFDeEIsT0FuQzhCLENBQS9CO0FBcUNBLFVBQUl5TCxjQUFKLEVBQW9CQSxjQUFjLENBQUMrVCxxQkFBRCxFQUF3QjVCLFVBQXhCLENBQWQ7QUFDcEIycEIsTUFBQUEsOEJBQThCLEdBQUcvbkIscUJBQXFCLENBQUMvZ0IsU0FBdEIsR0FBa0M2RyxRQUFNLENBQUN1WSxtQkFBRCxDQUF6RTtBQUNELEtBeENELE1Bd0NPLElBQUk0b0IsNkNBQUosRUFBaUQ7QUFDdERqbkIsTUFBQUEscUJBQXFCLEdBQUdnRyxPQUFPLENBQUMsVUFBVU4sS0FBVixFQUFpQnRqQixJQUFqQixFQUF1QitsQyxnQkFBdkIsRUFBeUNGLE9BQXpDLEVBQWtEO0FBQ2hGbnRCLFFBQUFBLFlBQVUsQ0FBQzRLLEtBQUQsRUFBUTFGLHFCQUFSLEVBQStCbEgsZ0JBQS9CLENBQVY7QUFDQSxlQUFPaU4saUJBQWlCLENBQUMsWUFBWTtBQUNuQyxjQUFJLENBQUN6ckIsVUFBUSxDQUFDOEgsSUFBRCxDQUFiLEVBQXFCLE9BQU8sSUFBSTBsQywyQkFBSixDQUFnQy9zQixPQUFPLENBQUMzWSxJQUFELENBQXZDLENBQVA7QUFDckIsY0FBSW1sQyxhQUFhLENBQUNubEMsSUFBRCxDQUFqQixFQUF5QixPQUFPNmxDLE9BQU8sS0FBSzV2QyxTQUFaLEdBQzVCLElBQUl5dkMsMkJBQUosQ0FBZ0MxbEMsSUFBaEMsRUFBc0M4a0MsVUFBUSxDQUFDaUIsZ0JBQUQsRUFBbUJuQixLQUFuQixDQUE5QyxFQUF5RWlCLE9BQXpFLENBRDRCLEdBRTVCRSxnQkFBZ0IsS0FBSzl2QyxTQUFyQixHQUNFLElBQUl5dkMsMkJBQUosQ0FBZ0MxbEMsSUFBaEMsRUFBc0M4a0MsVUFBUSxDQUFDaUIsZ0JBQUQsRUFBbUJuQixLQUFuQixDQUE5QyxDQURGLEdBRUUsSUFBSWMsMkJBQUosQ0FBZ0MxbEMsSUFBaEMsQ0FKbUI7QUFLekIsY0FBSXNkLFlBQVksQ0FBQ3RkLElBQUQsQ0FBaEIsRUFBd0IsT0FBT2tsQyxRQUFRLENBQUN0bkIscUJBQUQsRUFBd0I1ZCxJQUF4QixDQUFmO0FBQ3hCLGlCQUFPK2tDLGdCQUFjLENBQUMxdkMsSUFBZixDQUFvQnVvQixxQkFBcEIsRUFBMkM1ZCxJQUEzQyxDQUFQO0FBQ0QsU0FUd0IsRUFBRCxFQVNuQnNqQixLQVRtQixFQVNaMUYscUJBVFksQ0FBeEI7QUFVRCxPQVo4QixDQUEvQjtBQWNBLFVBQUkvVCxjQUFKLEVBQW9CQSxjQUFjLENBQUMrVCxxQkFBRCxFQUF3QjVCLFVBQXhCLENBQWQ7QUFDcEJqVyxNQUFBQSxTQUFPLENBQUN6RyxxQkFBbUIsQ0FBQ29tQywyQkFBRCxDQUFwQixFQUFtRCxVQUFVbHRDLEdBQVYsRUFBZTtBQUN2RSxZQUFJLEVBQUVBLEdBQUcsSUFBSW9sQixxQkFBVCxDQUFKLEVBQXFDO0FBQ25DamlCLFVBQUFBLDZCQUEyQixDQUFDaWlCLHFCQUFELEVBQXdCcGxCLEdBQXhCLEVBQTZCa3RDLDJCQUEyQixDQUFDbHRDLEdBQUQsQ0FBeEQsQ0FBM0I7QUFDRDtBQUNGLE9BSk0sQ0FBUDtBQUtBb2xCLE1BQUFBLHFCQUFxQixDQUFDL2dCLFNBQXRCLEdBQWtDOG9DLDhCQUFsQztBQUNEOztBQUVELFFBQUlBLDhCQUE4QixDQUFDMWdDLFdBQS9CLEtBQStDMlkscUJBQW5ELEVBQTBFO0FBQ3hFamlCLE1BQUFBLDZCQUEyQixDQUFDZ3FDLDhCQUFELEVBQWlDLGFBQWpDLEVBQWdEL25CLHFCQUFoRCxDQUEzQjtBQUNEOztBQUVEamlCLElBQUFBLDZCQUEyQixDQUFDZ3FDLDhCQUFELEVBQWlDdnBCLHlCQUFqQyxFQUEwRHdCLHFCQUExRCxDQUEzQjs7QUFFQSxRQUFJekIsZUFBSixFQUFxQjtBQUNuQnhnQixNQUFBQSw2QkFBMkIsQ0FBQ2dxQyw4QkFBRCxFQUFpQ3hwQixlQUFqQyxFQUFrRHpGLGdCQUFsRCxDQUEzQjtBQUNEOztBQUVEd04sSUFBQUEsUUFBUSxDQUFDeE4sZ0JBQUQsQ0FBUixHQUE2QmtILHFCQUE3QjtBQUVBclgsSUFBQUEsSUFBQyxDQUFDO0FBQ0EvUixNQUFBQSxNQUFNLEVBQUUsSUFEUjtBQUNjdU0sTUFBQUEsTUFBTSxFQUFFNmMscUJBQXFCLElBQUk4bkIsMkJBRC9DO0FBQzRFanVDLE1BQUFBLElBQUksRUFBRSxDQUFDNGtCO0FBRG5GLEtBQUQsRUFFRTZILFFBRkYsQ0FBRDs7QUFJQSxRQUFJLEVBQUUrZ0IsaUJBQWlCLElBQUlybkIscUJBQXZCLENBQUosRUFBbUQ7QUFDakRqaUIsTUFBQUEsNkJBQTJCLENBQUNpaUIscUJBQUQsRUFBd0JxbkIsaUJBQXhCLEVBQTJDTCxLQUEzQyxDQUEzQjtBQUNEOztBQUVELFFBQUksRUFBRUssaUJBQWlCLElBQUlVLDhCQUF2QixDQUFKLEVBQTREO0FBQzFEaHFDLE1BQUFBLDZCQUEyQixDQUFDZ3FDLDhCQUFELEVBQWlDVixpQkFBakMsRUFBb0RMLEtBQXBELENBQTNCO0FBQ0Q7O0FBRURqdUIsSUFBQUEsWUFBVSxDQUFDRCxnQkFBRCxDQUFWO0FBQ0QsR0ExSEQ7QUEySEQsQ0ExSUQsTUEwSU90aUIsNkJBQUEsR0FBaUIsWUFBWTtBQUFFO0FBQWEsQ0FBNUM7O0FDN09QLElBQUk0eEMsNkJBQTJCLEdBQUdueEMsNkJBQWxDO0FBR0E7OztBQUNBbXhDLDZCQUEyQixDQUFDLFNBQUQsRUFBWSxVQUFVbmdCLElBQVYsRUFBZ0I7QUFDckQsU0FBTyxTQUFTOUksWUFBVCxDQUFzQi9jLElBQXRCLEVBQTRCbWEsVUFBNUIsRUFBd0N4akIsTUFBeEMsRUFBZ0Q7QUFDckQsV0FBT2t2QixJQUFJLENBQUMsSUFBRCxFQUFPN2xCLElBQVAsRUFBYW1hLFVBQWIsRUFBeUJ4akIsTUFBekIsQ0FBWDtBQUNELEdBRkQ7QUFHRCxDQUowQixDQUEzQjs7QUNKQSxJQUFJcXZDLDZCQUEyQixHQUFHbnhDLDZCQUFsQztBQUdBOzs7QUFDQW14Qyw2QkFBMkIsQ0FBQyxTQUFELEVBQVksVUFBVW5nQixJQUFWLEVBQWdCO0FBQ3JELFNBQU8sU0FBUzdJLFlBQVQsQ0FBc0JoZCxJQUF0QixFQUE0Qm1hLFVBQTVCLEVBQXdDeGpCLE1BQXhDLEVBQWdEO0FBQ3JELFdBQU9rdkIsSUFBSSxDQUFDLElBQUQsRUFBTzdsQixJQUFQLEVBQWFtYSxVQUFiLEVBQXlCeGpCLE1BQXpCLENBQVg7QUFDRCxHQUZEO0FBR0QsQ0FKMEIsQ0FBM0I7O0FDSkEsSUFBSXF2Qyw2QkFBMkIsR0FBR254Qyw2QkFBbEM7QUFHQTs7O0FBQ0FteEMsNkJBQTJCLENBQUMsTUFBRCxFQUFTLFVBQVVuZ0IsSUFBVixFQUFnQjtBQUNsRCxTQUFPLFNBQVNqSyxTQUFULENBQW1CNWIsSUFBbkIsRUFBeUJtYSxVQUF6QixFQUFxQ3hqQixNQUFyQyxFQUE2QztBQUNsRCxXQUFPa3ZCLElBQUksQ0FBQyxJQUFELEVBQU83bEIsSUFBUCxFQUFhbWEsVUFBYixFQUF5QnhqQixNQUF6QixDQUFYO0FBQ0QsR0FGRDtBQUdELENBSjBCLENBQTNCOztBQ0pBLElBQUlxdkMsNkJBQTJCLEdBQUdueEMsNkJBQWxDO0FBR0E7OztBQUNBbXhDLDZCQUEyQixDQUFDLE9BQUQsRUFBVSxVQUFVbmdCLElBQVYsRUFBZ0I7QUFDbkQsU0FBTyxTQUFTbEosVUFBVCxDQUFvQjNjLElBQXBCLEVBQTBCbWEsVUFBMUIsRUFBc0N4akIsTUFBdEMsRUFBOEM7QUFDbkQsV0FBT2t2QixJQUFJLENBQUMsSUFBRCxFQUFPN2xCLElBQVAsRUFBYW1hLFVBQWIsRUFBeUJ4akIsTUFBekIsQ0FBWDtBQUNELEdBRkQ7QUFHRCxDQUowQixDQUEzQjs7QUNKQSxJQUFJcXZDLDZCQUEyQixHQUFHbnhDLDZCQUFsQztBQUdBOzs7QUFDQW14Qyw2QkFBMkIsQ0FBQyxPQUFELEVBQVUsVUFBVW5nQixJQUFWLEVBQWdCO0FBQ25ELFNBQU8sU0FBU2hKLFVBQVQsQ0FBb0I3YyxJQUFwQixFQUEwQm1hLFVBQTFCLEVBQXNDeGpCLE1BQXRDLEVBQThDO0FBQ25ELFdBQU9rdkIsSUFBSSxDQUFDLElBQUQsRUFBTzdsQixJQUFQLEVBQWFtYSxVQUFiLEVBQXlCeGpCLE1BQXpCLENBQVg7QUFDRCxHQUZEO0FBR0QsQ0FKMEIsQ0FBM0I7O0FDSkEsSUFBSXF2Qyw2QkFBMkIsR0FBR254Qyw2QkFBbEM7QUFHQTs7O0FBQ0FteEMsNkJBQTJCLENBQUMsT0FBRCxFQUFVLFVBQVVuZ0IsSUFBVixFQUFnQjtBQUNuRCxTQUFPLFNBQVNuSixVQUFULENBQW9CMWMsSUFBcEIsRUFBMEJtYSxVQUExQixFQUFzQ3hqQixNQUF0QyxFQUE4QztBQUNuRCxXQUFPa3ZCLElBQUksQ0FBQyxJQUFELEVBQU83bEIsSUFBUCxFQUFhbWEsVUFBYixFQUF5QnhqQixNQUF6QixDQUFYO0FBQ0QsR0FGRDtBQUdELENBSjBCLENBQTNCOztBQ0pBLElBQUlxdkMsNkJBQTJCLEdBQUdueEMsNkJBQWxDO0FBR0E7OztBQUNBbXhDLDZCQUEyQixDQUFDLE9BQUQsRUFBVSxVQUFVbmdCLElBQVYsRUFBZ0I7QUFDbkQsU0FBTyxTQUFTL0osaUJBQVQsQ0FBMkI5YixJQUEzQixFQUFpQ21hLFVBQWpDLEVBQTZDeGpCLE1BQTdDLEVBQXFEO0FBQzFELFdBQU9rdkIsSUFBSSxDQUFDLElBQUQsRUFBTzdsQixJQUFQLEVBQWFtYSxVQUFiLEVBQXlCeGpCLE1BQXpCLENBQVg7QUFDRCxHQUZEO0FBR0QsQ0FKMEIsRUFJeEIsSUFKd0IsQ0FBM0I7O0FDSkEsSUFBSXF2Qyw2QkFBMkIsR0FBR254Qyw2QkFBbEM7QUFHQTs7O0FBQ0FteEMsNkJBQTJCLENBQUMsUUFBRCxFQUFXLFVBQVVuZ0IsSUFBVixFQUFnQjtBQUNwRCxTQUFPLFNBQVNqSixXQUFULENBQXFCNWMsSUFBckIsRUFBMkJtYSxVQUEzQixFQUF1Q3hqQixNQUF2QyxFQUErQztBQUNwRCxXQUFPa3ZCLElBQUksQ0FBQyxJQUFELEVBQU83bEIsSUFBUCxFQUFhbWEsVUFBYixFQUF5QnhqQixNQUF6QixDQUFYO0FBQ0QsR0FGRDtBQUdELENBSjBCLENBQTNCOztBQ0pBLElBQUlxdkMsMkJBQTJCLEdBQUdueEMsNkJBQWxDO0FBR0E7OztBQUNBbXhDLDJCQUEyQixDQUFDLFFBQUQsRUFBVyxVQUFVbmdCLElBQVYsRUFBZ0I7QUFDcEQsU0FBTyxTQUFTL0ksV0FBVCxDQUFxQjljLElBQXJCLEVBQTJCbWEsVUFBM0IsRUFBdUN4akIsTUFBdkMsRUFBK0M7QUFDcEQsV0FBT2t2QixJQUFJLENBQUMsSUFBRCxFQUFPN2xCLElBQVAsRUFBYW1hLFVBQWIsRUFBeUJ4akIsTUFBekIsQ0FBWDtBQUNELEdBRkQ7QUFHRCxDQUowQixDQUEzQjs7QUNIQSxJQUFJbW5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBQ0EsSUFBSW9KLHFCQUFtQixHQUFHcEoscUJBQTFCOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUdBOztBQUNBQSx3QkFBc0IsQ0FBQyxJQUFELEVBQU8sU0FBU25SLEVBQVQsQ0FBWWxPLEtBQVosRUFBbUI7QUFDOUMsTUFBSXRELENBQUMsR0FBR3lpQixhQUFXLENBQUMsSUFBRCxDQUFuQjtBQUNBLE1BQUloUixHQUFHLEdBQUc5TixtQkFBaUIsQ0FBQzNELENBQUQsQ0FBM0I7QUFDQSxNQUFJMFIsYUFBYSxHQUFHdk8scUJBQW1CLENBQUNHLEtBQUQsQ0FBdkM7QUFDQSxNQUFJcU8sQ0FBQyxHQUFHRCxhQUFhLElBQUksQ0FBakIsR0FBcUJBLGFBQXJCLEdBQXFDRCxHQUFHLEdBQUdDLGFBQW5EO0FBQ0EsU0FBUUMsQ0FBQyxHQUFHLENBQUosSUFBU0EsQ0FBQyxJQUFJRixHQUFmLEdBQXNCdFcsU0FBdEIsR0FBa0M2RSxDQUFDLENBQUMyUixDQUFELENBQTFDO0FBQ0QsQ0FOcUIsQ0FBdEI7O0FDVEEsSUFBSXFSLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJb3hDLFdBQVcsR0FBR3B4QyxlQUFsQjs7QUFFQSxJQUFJMG9CLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsWUFBRCxFQUFlLFNBQVM3UCxVQUFULENBQW9Cak8sTUFBcEIsRUFBNEJrTztBQUFNO0FBQWxDLEVBQStDO0FBQ2xGLFNBQU9vNEIsV0FBVyxDQUFDNXdDLElBQVosQ0FBaUJrb0IsYUFBVyxDQUFDLElBQUQsQ0FBNUIsRUFBb0M1ZCxNQUFwQyxFQUE0Q2tPLEtBQTVDLEVBQW1EblgsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekYsQ0FBUDtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk2bkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUlzWixRQUFNLEdBQUd0WixjQUFBLENBQXdDc1IsS0FBckQ7O0FBRUEsSUFBSW9YLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsT0FBRCxFQUFVLFNBQVN0WCxLQUFULENBQWVQO0FBQVc7QUFBMUIsRUFBMkM7QUFDekUsU0FBT3VJLFFBQU0sQ0FBQ29QLGFBQVcsQ0FBQyxJQUFELENBQVosRUFBb0IzWCxVQUFwQixFQUFnQ2xQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXRFLENBQWI7QUFDRCxDQUZxQixDQUF0Qjs7QUNSQSxJQUFJNm5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJcXhDLEtBQUssR0FBR3J4QyxXQUFaOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUdBO0FBQ0E7O0FBQ0FBLHdCQUFzQixDQUFDLE1BQUQsRUFBUyxTQUFTblAsSUFBVCxDQUFjNVk7QUFBTTtBQUFwQixFQUF3QztBQUNyRSxTQUFPd3dDLEtBQUssQ0FBQzdoQyxLQUFOLENBQVlrWixhQUFXLENBQUMsSUFBRCxDQUF2QixFQUErQjdtQixTQUEvQixDQUFQO0FBQ0QsQ0FGcUIsQ0FBdEI7O0lDVkF0Qyw2QkFBQSxHQUFpQixVQUFVa2dCLFdBQVYsRUFBdUJxTixJQUF2QixFQUE2QjtBQUM1QyxNQUFJdmpCLEtBQUssR0FBRyxDQUFaO0FBQ0EsTUFBSXpILE1BQU0sR0FBR2dyQixJQUFJLENBQUNockIsTUFBbEI7QUFDQSxNQUFJc0QsTUFBTSxHQUFHLElBQUlxYSxXQUFKLENBQWdCM2QsTUFBaEIsQ0FBYjs7QUFDQSxTQUFPQSxNQUFNLEdBQUd5SCxLQUFoQixFQUF1Qm5FLE1BQU0sQ0FBQ21FLEtBQUQsQ0FBTixHQUFnQnVqQixJQUFJLENBQUN2akIsS0FBSyxFQUFOLENBQXBCOztBQUN2QixTQUFPbkUsTUFBUDtBQUNELENBTkQ7O0FDQUEsSUFBSTZqQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSXNwQixvQkFBa0IsR0FBR3RwQixvQkFBekI7O0FBRUEsSUFBSXVuQix1QkFBdUIsR0FBRzBCLHFCQUFtQixDQUFDMUIsdUJBQWxEO0FBQ0EsSUFBSW9CLHdCQUFzQixHQUFHTSxxQkFBbUIsQ0FBQ04sc0JBQWpEO0FBR0E7O0lBQ0FwcEIsOEJBQUEsR0FBaUIsVUFBVTJRLGFBQVYsRUFBeUI7QUFDeEMsU0FBT3lZLHdCQUFzQixDQUFDVyxvQkFBa0IsQ0FBQ3BaLGFBQUQsRUFBZ0JBLGFBQWEsQ0FBQ3FYLHVCQUFELENBQTdCLENBQW5CLENBQTdCO0FBQ0QsQ0FGRDs7QUNSQSxJQUFJK3BCLDZCQUEyQixHQUFHdHhDLDZCQUFsQzs7QUFDQSxJQUFJdXhDLDhCQUE0QixHQUFHdnhDLDhCQUFuQzs7SUFFQVQsNEJBQUEsR0FBaUIsVUFBVW93QixRQUFWLEVBQW9CN0MsSUFBcEIsRUFBMEI7QUFDekMsU0FBT3drQiw2QkFBMkIsQ0FBQ0MsOEJBQTRCLENBQUM1aEIsUUFBRCxDQUE3QixFQUF5QzdDLElBQXpDLENBQWxDO0FBQ0QsQ0FGRDs7QUNGQSxJQUFJN0QscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUk0WixPQUFPLEdBQUc1WixjQUFBLENBQXdDb1IsTUFBdEQ7O0FBQ0EsSUFBSW9nQyxvQkFBa0IsR0FBR3h4Qyw0QkFBekI7O0FBRUEsSUFBSTBvQixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLFFBQUQsRUFBVyxTQUFTeFgsTUFBVCxDQUFnQkw7QUFBVztBQUEzQixFQUE0QztBQUMzRSxNQUFJK2IsSUFBSSxHQUFHbFQsT0FBTyxDQUFDOE8sYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBdEUsQ0FBbEI7QUFDQSxTQUFPb3dDLG9CQUFrQixDQUFDLElBQUQsRUFBTzFrQixJQUFQLENBQXpCO0FBQ0QsQ0FIcUIsQ0FBdEI7O0FDVEEsSUFBSTdELHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJOFosT0FBSyxHQUFHOVosY0FBQSxDQUF3Q3VSLElBQXBEOztBQUVBLElBQUltWCxhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLE1BQUQsRUFBUyxTQUFTclgsSUFBVCxDQUFja2dDO0FBQVU7QUFBeEIsRUFBeUM7QUFDdEUsU0FBTzMzQixPQUFLLENBQUM0TyxhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9CK29CLFNBQXBCLEVBQStCNXZDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXJFLENBQVo7QUFDRCxDQUZxQixDQUF0Qjs7QUNSQSxJQUFJNm5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJaWEsVUFBVSxHQUFHamEsY0FBQSxDQUF3Q3dSLFNBQXpEOztBQUVBLElBQUlrWCxhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLFdBQUQsRUFBYyxTQUFTcFgsU0FBVCxDQUFtQmlnQztBQUFVO0FBQTdCLEVBQThDO0FBQ2hGLFNBQU94M0IsVUFBVSxDQUFDeU8sYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQitvQixTQUFwQixFQUErQjV2QyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFyRSxDQUFqQjtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk2bkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUlnUyxVQUFRLEdBQUdoUyxjQUFBLENBQXdDa1IsT0FBdkQ7O0FBRUEsSUFBSXdYLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsU0FBRCxFQUFZLFNBQVMxWCxPQUFULENBQWlCSDtBQUFXO0FBQTVCLEVBQTZDO0FBQzdFaUIsRUFBQUEsVUFBUSxDQUFDMFcsYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBdEUsQ0FBUjtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk0dUMsNkNBQTJDLEdBQUdod0MscUNBQWxEOztBQUNBLElBQUlncEIsOEJBQTRCLEdBQUdocEIsbUJBQUEsQ0FBK0NncEIsNEJBQWxGOztBQUNBLElBQUlrbkIsY0FBYyxHQUFHbHdDLGdCQUFyQjtBQUdBOzs7QUFDQWdwQiw4QkFBNEIsQ0FBQyxNQUFELEVBQVNrbkIsY0FBVCxFQUF5QkYsNkNBQXpCLENBQTVCOztBQ05BLElBQUkvbUIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUk2YixTQUFTLEdBQUc3YixhQUFBLENBQXVDa0ssUUFBdkQ7O0FBRUEsSUFBSXdlLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsVUFBRCxFQUFhLFNBQVMxZSxRQUFULENBQWtCK1I7QUFBYztBQUFoQyxFQUFtRDtBQUNwRixTQUFPSixTQUFTLENBQUM2TSxhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9Cek0sYUFBcEIsRUFBbUNwYSxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF6RSxDQUFoQjtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk2bkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUk4YixRQUFRLEdBQUc5YixhQUFBLENBQXVDbUssT0FBdEQ7O0FBRUEsSUFBSXVlLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsU0FBRCxFQUFZLFNBQVN6ZSxPQUFULENBQWlCOFI7QUFBYztBQUEvQixFQUFrRDtBQUNsRixTQUFPSCxRQUFRLENBQUM0TSxhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9Cek0sYUFBcEIsRUFBbUNwYSxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF6RSxDQUFmO0FBQ0QsQ0FGcUIsQ0FBdEI7O0FDUkEsSUFBSXpCLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJNGMsb0JBQW9CLEdBQUc1YyxZQUFBLENBQXNDa0ksTUFBakU7O0FBQ0EsSUFBSStnQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSTB4QyxjQUFjLEdBQUcxeEMsaUJBQXJCOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUVBLElBQUlzVixVQUFRLEdBQUdyUSxpQkFBZSxDQUFDLFVBQUQsQ0FBOUI7QUFDQSxJQUFJNGlCLFlBQVUsR0FBR2xvQixRQUFNLENBQUNrb0IsVUFBeEI7QUFDQSxJQUFJOHBCLFdBQVcsR0FBR0QsY0FBYyxDQUFDcDBCLE1BQWpDO0FBQ0EsSUFBSXMwQixTQUFTLEdBQUdGLGNBQWMsQ0FBQzlxQyxJQUEvQjtBQUNBLElBQUlpckMsWUFBWSxHQUFHSCxjQUFjLENBQUNuMEIsT0FBbEM7QUFDQSxJQUFJbUwsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUNBLElBQUlrcEIsd0JBQXdCLEdBQUdqcUIsWUFBVSxJQUFJQSxZQUFVLENBQUM3ZixTQUFYLENBQXFCc04sVUFBckIsQ0FBN0M7QUFFQSxJQUFJeThCLHdCQUF3QixHQUFHLENBQUMsQ0FBQ0Qsd0JBQUYsSUFBOEJBLHdCQUF3QixDQUFDanRDLElBQXpCLEtBQWtDLFFBQS9GOztBQUVBLElBQUltdEMsZ0JBQWdCLEdBQUcsU0FBUzEwQixNQUFULEdBQWtCO0FBQ3ZDLFNBQU9xMEIsV0FBVyxDQUFDbnhDLElBQVosQ0FBaUJrb0IsYUFBVyxDQUFDLElBQUQsQ0FBNUIsQ0FBUDtBQUNELENBRkQ7QUFLQTs7O0FBQ0FFLHdCQUFzQixDQUFDLFNBQUQsRUFBWSxTQUFTckwsT0FBVCxHQUFtQjtBQUNuRCxTQUFPczBCLFlBQVksQ0FBQ3J4QyxJQUFiLENBQWtCa29CLGFBQVcsQ0FBQyxJQUFELENBQTdCLENBQVA7QUFDRCxDQUZxQixDQUF0QjtBQUlBOztBQUNBRSx3QkFBc0IsQ0FBQyxNQUFELEVBQVMsU0FBU2hpQixJQUFULEdBQWdCO0FBQzdDLFNBQU9nckMsU0FBUyxDQUFDcHhDLElBQVYsQ0FBZWtvQixhQUFXLENBQUMsSUFBRCxDQUExQixDQUFQO0FBQ0QsQ0FGcUIsQ0FBdEI7QUFJQTs7QUFDQUUsd0JBQXNCLENBQUMsUUFBRCxFQUFXb3BCLGdCQUFYLEVBQTZCcDFCLG9CQUFvQixJQUFJLENBQUNtMUIsd0JBQXRELENBQXRCO0FBRUE7O0FBQ0FucEIsd0JBQXNCLENBQUN0VCxVQUFELEVBQVcwOEIsZ0JBQVgsRUFBNkJwMUIsb0JBQW9CLElBQUksQ0FBQ20xQix3QkFBdEQsQ0FBdEI7O0FDcENBLElBQUk5b0IscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUNBLElBQUlxcEIsS0FBSyxHQUFHLEdBQUdqcEMsSUFBZjtBQUdBO0FBQ0E7O0FBQ0E0Zix3QkFBc0IsQ0FBQyxNQUFELEVBQVMsU0FBUzVmLElBQVQsQ0FBY29WLFNBQWQsRUFBeUI7QUFDdEQsU0FBTzZ6QixLQUFLLENBQUN6aUMsS0FBTixDQUFZa1osYUFBVyxDQUFDLElBQUQsQ0FBdkIsRUFBK0I3bUIsU0FBL0IsQ0FBUDtBQUNELENBRnFCLENBQXRCOztBQ1RBLElBQUlvbkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUlxZSxZQUFZLEdBQUdyZSxnQkFBbkI7O0FBRUEsSUFBSTBvQixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7QUFDQTs7QUFDQUEsd0JBQXNCLENBQUMsYUFBRCxFQUFnQixTQUFTdEssV0FBVCxDQUFxQnJDO0FBQWM7QUFBbkMsRUFBc0Q7QUFDMUYsU0FBT29DLFlBQVksQ0FBQzdPLEtBQWIsQ0FBbUJrWixhQUFXLENBQUMsSUFBRCxDQUE5QixFQUFzQzdtQixTQUF0QyxDQUFQO0FBQ0QsQ0FGcUIsQ0FBdEI7O0FDVEEsSUFBSW9uQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSXVlLElBQUksR0FBR3ZlLGNBQUEsQ0FBd0NtUixHQUFuRDs7QUFDQSxJQUFJb2dDLDhCQUE0QixHQUFHdnhDLDhCQUFuQzs7QUFFQSxJQUFJMG9CLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsS0FBRCxFQUFRLFNBQVN6WCxHQUFULENBQWFrSztBQUFNO0FBQW5CLEVBQW9DO0FBQ2hFLFNBQU9rRCxJQUFJLENBQUNtSyxhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9Cck4sS0FBcEIsRUFBMkJ4WixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFqRSxFQUE0RSxVQUFVNkUsQ0FBVixFQUFhbkUsTUFBYixFQUFxQjtBQUMxRyxXQUFPLEtBQUt5dkMsOEJBQTRCLENBQUN0ckMsQ0FBRCxDQUFqQyxFQUFzQ25FLE1BQXRDLENBQVA7QUFDRCxHQUZVLENBQVg7QUFHRCxDQUpxQixDQUF0Qjs7QUNUQSxJQUFJbW5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJZ3dDLDZDQUEyQyxHQUFHaHdDLHFDQUFsRDs7QUFFQSxJQUFJMm9CLHdCQUFzQixHQUFHTSxxQkFBbUIsQ0FBQ04sc0JBQWpEO0FBQ0EsSUFBSUssOEJBQTRCLEdBQUdDLHFCQUFtQixDQUFDRCw0QkFBdkQ7QUFHQTs7QUFDQUEsOEJBQTRCLENBQUMsSUFBRCxFQUFPLFNBQVN2SyxFQUFULEdBQTRCO0FBQzdELE1BQUlsVixLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUl6SCxNQUFNLEdBQUdELFNBQVMsQ0FBQ0MsTUFBdkI7QUFDQSxNQUFJc0QsTUFBTSxHQUFHLEtBQUt1akIsd0JBQXNCLENBQUMsSUFBRCxDQUEzQixFQUFtQzdtQixNQUFuQyxDQUFiOztBQUNBLFNBQU9BLE1BQU0sR0FBR3lILEtBQWhCLEVBQXVCbkUsTUFBTSxDQUFDbUUsS0FBRCxDQUFOLEdBQWdCMUgsU0FBUyxDQUFDMEgsS0FBSyxFQUFOLENBQXpCOztBQUN2QixTQUFPbkUsTUFBUDtBQUNELENBTjJCLEVBTXpCNHFDLDZDQU55QixDQUE1Qjs7QUNSQSxJQUFJL21CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJOGUsT0FBTyxHQUFHOWUsV0FBQSxDQUFxQzRlLElBQW5EOztBQUVBLElBQUk4SixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLFFBQUQsRUFBVyxTQUFTMUosTUFBVCxDQUFnQm5PO0FBQVc7QUFBM0IsRUFBaUQ7QUFDaEYsU0FBTytOLE9BQU8sQ0FBQzRKLGFBQVcsQ0FBQyxJQUFELENBQVosRUFBb0IzWCxVQUFwQixFQUFnQ2xQLFNBQVMsQ0FBQ0MsTUFBMUMsRUFBa0RELFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXhGLENBQWQ7QUFDRCxDQUZxQixDQUF0Qjs7QUNSQSxJQUFJNm5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJbWYsWUFBWSxHQUFHbmYsV0FBQSxDQUFxQzZlLEtBQXhEOztBQUVBLElBQUk2SixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLGFBQUQsRUFBZ0IsU0FBU3hKLFdBQVQsQ0FBcUJyTztBQUFXO0FBQWhDLEVBQXNEO0FBQzFGLFNBQU9vTyxZQUFZLENBQUN1SixhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9CM1gsVUFBcEIsRUFBZ0NsUCxTQUFTLENBQUNDLE1BQTFDLEVBQWtERCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUF4RixDQUFuQjtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk2bkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUNBLElBQUkxZixPQUFLLEdBQUc1SixJQUFJLENBQUM0SixLQUFqQjtBQUdBOztBQUNBMGYsd0JBQXNCLENBQUMsU0FBRCxFQUFZLFNBQVN0SixPQUFULEdBQW1CO0FBQ25ELE1BQUlqUSxJQUFJLEdBQUcsSUFBWDtBQUNBLE1BQUl2TixNQUFNLEdBQUc0bUIsYUFBVyxDQUFDclosSUFBRCxDQUFYLENBQWtCdk4sTUFBL0I7QUFDQSxNQUFJK2QsTUFBTSxHQUFHM1csT0FBSyxDQUFDcEgsTUFBTSxHQUFHLENBQVYsQ0FBbEI7QUFDQSxNQUFJeUgsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJMUksS0FBSjs7QUFDQSxTQUFPMEksS0FBSyxHQUFHc1csTUFBZixFQUF1QjtBQUNyQmhmLElBQUFBLEtBQUssR0FBR3dPLElBQUksQ0FBQzlGLEtBQUQsQ0FBWjtBQUNBOEYsSUFBQUEsSUFBSSxDQUFDOUYsS0FBSyxFQUFOLENBQUosR0FBZ0I4RixJQUFJLENBQUMsRUFBRXZOLE1BQUgsQ0FBcEI7QUFDQXVOLElBQUFBLElBQUksQ0FBQ3ZOLE1BQUQsQ0FBSixHQUFlakIsS0FBZjtBQUNEOztBQUFDLFNBQU93TyxJQUFQO0FBQ0gsQ0FYcUIsQ0FBdEI7O0FDUkEsSUFBSTRaLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJNEosbUJBQWlCLEdBQUc1SixtQkFBeEI7O0FBQ0EsSUFBSWl3QyxRQUFRLEdBQUdqd0MsVUFBZjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBRUEsSUFBSTBvQixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBRUEsSUFBSTdjLFFBQU0sR0FBR2hNLE9BQUssQ0FBQyxZQUFZO0FBQzdCO0FBQ0EsTUFBSWduQixTQUFKLENBQWMsQ0FBZCxFQUFpQjdmLEdBQWpCLENBQXFCLEVBQXJCO0FBQ0QsQ0FIaUIsQ0FBbEI7QUFNQTs7QUFDQTBoQix3QkFBc0IsQ0FBQyxLQUFELEVBQVEsU0FBUzFoQixHQUFULENBQWFpVTtBQUFVO0FBQXZCLEVBQXVDO0FBQ25FdU4sRUFBQUEsYUFBVyxDQUFDLElBQUQsQ0FBWDtBQUNBLE1BQUlqRCxNQUFNLEdBQUd3cUIsUUFBUSxDQUFDcHVDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXZDLEVBQWtELENBQWxELENBQXJCO0FBQ0EsTUFBSVUsTUFBTSxHQUFHLEtBQUtBLE1BQWxCO0FBQ0EsTUFBSXdNLEdBQUcsR0FBR3BLLFVBQVEsQ0FBQ2lYLFNBQUQsQ0FBbEI7QUFDQSxNQUFJekQsR0FBRyxHQUFHOU4sbUJBQWlCLENBQUMwRSxHQUFELENBQTNCO0FBQ0EsTUFBSS9FLEtBQUssR0FBRyxDQUFaO0FBQ0EsTUFBSW1PLEdBQUcsR0FBRytOLE1BQU4sR0FBZTNqQixNQUFuQixFQUEyQixNQUFNeWdCLFVBQVUsQ0FBQyxjQUFELENBQWhCOztBQUMzQixTQUFPaFosS0FBSyxHQUFHbU8sR0FBZixFQUFvQixLQUFLK04sTUFBTSxHQUFHbGMsS0FBZCxJQUF1QitFLEdBQUcsQ0FBQy9FLEtBQUssRUFBTixDQUExQjtBQUNyQixDQVRxQixFQVNuQndDLFFBVG1CLENBQXRCOztBQ2hCQSxJQUFJa2QscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUl1eEMsOEJBQTRCLEdBQUd2eEMsOEJBQW5DOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJMG9CLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFDQSxJQUFJc3BCLFFBQU0sR0FBRyxHQUFHanhDLEtBQWhCO0FBRUEsSUFBSThLLFFBQU0sR0FBR2hNLE9BQUssQ0FBQyxZQUFZO0FBQzdCO0FBQ0EsTUFBSWduQixTQUFKLENBQWMsQ0FBZCxFQUFpQjlsQixLQUFqQjtBQUNELENBSGlCLENBQWxCO0FBTUE7O0FBQ0EybkIsd0JBQXNCLENBQUMsT0FBRCxFQUFVLFNBQVMzbkIsS0FBVCxDQUFlK1gsS0FBZixFQUFzQkcsR0FBdEIsRUFBMkI7QUFDekQsTUFBSTJULElBQUksR0FBR29sQixRQUFNLENBQUMxeEMsSUFBUCxDQUFZa29CLGFBQVcsQ0FBQyxJQUFELENBQXZCLEVBQStCMVAsS0FBL0IsRUFBc0NHLEdBQXRDLENBQVg7QUFDQSxNQUFJaEosQ0FBQyxHQUFHb2hDLDhCQUE0QixDQUFDLElBQUQsQ0FBcEM7QUFDQSxNQUFJaG9DLEtBQUssR0FBRyxDQUFaO0FBQ0EsTUFBSXpILE1BQU0sR0FBR2dyQixJQUFJLENBQUNockIsTUFBbEI7QUFDQSxNQUFJc0QsTUFBTSxHQUFHLElBQUkrSyxDQUFKLENBQU1yTyxNQUFOLENBQWI7O0FBQ0EsU0FBT0EsTUFBTSxHQUFHeUgsS0FBaEIsRUFBdUJuRSxNQUFNLENBQUNtRSxLQUFELENBQU4sR0FBZ0J1akIsSUFBSSxDQUFDdmpCLEtBQUssRUFBTixDQUFwQjs7QUFDdkIsU0FBT25FLE1BQVA7QUFDRCxDQVJxQixFQVFuQjJHLFFBUm1CLENBQXRCOztBQ2ZBLElBQUlrZCxxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSTBmLE9BQUssR0FBRzFmLGNBQUEsQ0FBd0NxUixJQUFwRDs7QUFFQSxJQUFJcVgsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUdBOztBQUNBQSx3QkFBc0IsQ0FBQyxNQUFELEVBQVMsU0FBU3ZYLElBQVQsQ0FBY047QUFBVztBQUF6QixFQUEwQztBQUN2RSxTQUFPMk8sT0FBSyxDQUFDZ0osYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBdEUsQ0FBWjtBQUNELENBRnFCLENBQXRCOztBQ1JBLElBQUk2bkIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJRCxPQUFLLEdBQUdDLFFBQVo7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7QUFDQSxJQUFJd2dCLFlBQVksR0FBR3hnQixTQUFuQjs7QUFDQSxJQUFJeWdCLEVBQUUsR0FBR3pnQixlQUFUOztBQUNBLElBQUkwZ0IsVUFBVSxHQUFHMWdCLGdCQUFqQjs7QUFDQSxJQUFJMmdCLEVBQUUsR0FBRzNnQixlQUFUOztBQUNBLElBQUk0Z0IsTUFBTSxHQUFHNWdCLG1CQUFiOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUNBLElBQUliLFdBQVcsR0FBR3BvQixRQUFNLENBQUNvb0IsV0FBekI7QUFDQSxJQUFJbEgsVUFBVSxHQUFHa0gsV0FBVyxJQUFJQSxXQUFXLENBQUMvZixTQUFaLENBQXNCOFksSUFBdEQ7O0FBR0EsSUFBSXF4QiwwQkFBMEIsR0FBRyxDQUFDLENBQUN0eEIsVUFBRixJQUFnQixDQUFDOWdCLE9BQUssQ0FBQyxZQUFZO0FBQ2xFLE1BQUlnWSxLQUFLLEdBQUcsSUFBSWdRLFdBQUosQ0FBZ0IsQ0FBaEIsQ0FBWjtBQUNBaFEsRUFBQUEsS0FBSyxDQUFDK0ksSUFBTixDQUFXLElBQVg7QUFDQS9JLEVBQUFBLEtBQUssQ0FBQytJLElBQU4sQ0FBVyxFQUFYO0FBQ0QsQ0FKc0QsQ0FBdkQ7QUFNQSxJQUFJRyxXQUFXLEdBQUcsQ0FBQyxDQUFDSixVQUFGLElBQWdCLENBQUM5Z0IsT0FBSyxDQUFDLFlBQVk7QUFDbkQ7QUFDQSxNQUFJNGdCLEVBQUosRUFBUSxPQUFPQSxFQUFFLEdBQUcsRUFBWjtBQUNSLE1BQUlGLEVBQUosRUFBUSxPQUFPQSxFQUFFLEdBQUcsRUFBWjtBQUNSLE1BQUlDLFVBQUosRUFBZ0IsT0FBTyxJQUFQO0FBQ2hCLE1BQUlFLE1BQUosRUFBWSxPQUFPQSxNQUFNLEdBQUcsR0FBaEI7QUFFWixNQUFJN0ksS0FBSyxHQUFHLElBQUlnUSxXQUFKLENBQWdCLEdBQWhCLENBQVo7QUFDQSxNQUFJcXFCLFFBQVEsR0FBR2ptQyxLQUFLLENBQUMsR0FBRCxDQUFwQjtBQUNBLE1BQUk1QyxLQUFKLEVBQVc4b0MsR0FBWDs7QUFFQSxPQUFLOW9DLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUcsR0FBeEIsRUFBNkJBLEtBQUssRUFBbEMsRUFBc0M7QUFDcEM4b0MsSUFBQUEsR0FBRyxHQUFHOW9DLEtBQUssR0FBRyxDQUFkO0FBQ0F3TyxJQUFBQSxLQUFLLENBQUN4TyxLQUFELENBQUwsR0FBZSxNQUFNQSxLQUFyQjtBQUNBNm9DLElBQUFBLFFBQVEsQ0FBQzdvQyxLQUFELENBQVIsR0FBa0JBLEtBQUssR0FBRyxJQUFJOG9DLEdBQVosR0FBa0IsQ0FBcEM7QUFDRDs7QUFFRHQ2QixFQUFBQSxLQUFLLENBQUMrSSxJQUFOLENBQVcsVUFBVXBiLENBQVYsRUFBYTRKLENBQWIsRUFBZ0I7QUFDekIsV0FBTyxDQUFDNUosQ0FBQyxHQUFHLENBQUosR0FBUSxDQUFULEtBQWU0SixDQUFDLEdBQUcsQ0FBSixHQUFRLENBQXZCLENBQVA7QUFDRCxHQUZEOztBQUlBLE9BQUsvRixLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHLEdBQXhCLEVBQTZCQSxLQUFLLEVBQWxDLEVBQXNDO0FBQ3BDLFFBQUl3TyxLQUFLLENBQUN4TyxLQUFELENBQUwsS0FBaUI2b0MsUUFBUSxDQUFDN29DLEtBQUQsQ0FBN0IsRUFBc0MsT0FBTyxJQUFQO0FBQ3ZDO0FBQ0YsQ0F4QnVDLENBQXhDOztBQTBCQSxJQUFJZ1ksY0FBYyxHQUFHLFVBQVUzQixTQUFWLEVBQXFCO0FBQ3hDLFNBQU8sVUFBVTRCLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtBQUNyQixRQUFJN0IsU0FBUyxLQUFLeGUsU0FBbEIsRUFBNkIsT0FBTyxDQUFDd2UsU0FBUyxDQUFDNEIsQ0FBRCxFQUFJQyxDQUFKLENBQVYsSUFBb0IsQ0FBM0IsQ0FEUjs7QUFHckIsUUFBSUEsQ0FBQyxLQUFLQSxDQUFWLEVBQWEsT0FBTyxDQUFDLENBQVIsQ0FIUTs7QUFLckIsUUFBSUQsQ0FBQyxLQUFLQSxDQUFWLEVBQWEsT0FBTyxDQUFQO0FBQ2IsUUFBSUEsQ0FBQyxLQUFLLENBQU4sSUFBV0MsQ0FBQyxLQUFLLENBQXJCLEVBQXdCLE9BQU8sSUFBSUQsQ0FBSixHQUFRLENBQVIsSUFBYSxJQUFJQyxDQUFKLEdBQVEsQ0FBckIsR0FBeUIsQ0FBekIsR0FBNkIsQ0FBQyxDQUFyQztBQUN4QixXQUFPRCxDQUFDLEdBQUdDLENBQVg7QUFDRCxHQVJEO0FBU0QsQ0FWRDtBQWFBOzs7QUFDQW1ILHdCQUFzQixDQUFDLE1BQUQsRUFBUyxTQUFTOUgsSUFBVCxDQUFjbEIsU0FBZCxFQUF5QjtBQUN0RCxNQUFJN0gsS0FBSyxHQUFHLElBQVo7QUFDQSxNQUFJNkgsU0FBUyxLQUFLeGUsU0FBbEIsRUFBNkI4QixXQUFTLENBQUMwYyxTQUFELENBQVQ7QUFDN0IsTUFBSXFCLFdBQUosRUFBaUIsT0FBT0osVUFBVSxDQUFDcmdCLElBQVgsQ0FBZ0J1WCxLQUFoQixFQUF1QjZILFNBQXZCLENBQVA7QUFFakI4SSxFQUFBQSxhQUFXLENBQUMzUSxLQUFELENBQVg7QUFDQSxNQUFJNEosV0FBVyxHQUFHL1gsbUJBQWlCLENBQUNtTyxLQUFELENBQW5DO0FBQ0EsTUFBSTJKLEtBQUssR0FBR3ZWLEtBQUssQ0FBQ3dWLFdBQUQsQ0FBakI7QUFDQSxNQUFJcFksS0FBSjs7QUFFQSxPQUFLQSxLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHb1ksV0FBeEIsRUFBcUNwWSxLQUFLLEVBQTFDLEVBQThDO0FBQzVDbVksSUFBQUEsS0FBSyxDQUFDblksS0FBRCxDQUFMLEdBQWV3TyxLQUFLLENBQUN4TyxLQUFELENBQXBCO0FBQ0Q7O0FBRURtWSxFQUFBQSxLQUFLLEdBQUdsQixZQUFZLENBQUN6SSxLQUFELEVBQVF3SixjQUFjLENBQUMzQixTQUFELENBQXRCLENBQXBCOztBQUVBLE9BQUtyVyxLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHb1ksV0FBeEIsRUFBcUNwWSxLQUFLLEVBQTFDLEVBQThDO0FBQzVDd08sSUFBQUEsS0FBSyxDQUFDeE8sS0FBRCxDQUFMLEdBQWVtWSxLQUFLLENBQUNuWSxLQUFELENBQXBCO0FBQ0Q7O0FBRUQsU0FBT3dPLEtBQVA7QUFDRCxDQXJCcUIsRUFxQm5CLENBQUNrSixXQUFELElBQWdCa3hCLDBCQXJCRyxDQUF0Qjs7QUMvREEsSUFBSWxwQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSXlKLFFBQVEsR0FBR3pKLFVBQWY7O0FBQ0EsSUFBSTJKLGVBQWUsR0FBRzNKLGlCQUF0Qjs7QUFDQSxJQUFJdXhDLDhCQUE0QixHQUFHdnhDLDhCQUFuQzs7QUFFQSxJQUFJMG9CLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsVUFBRCxFQUFhLFNBQVMwcEIsUUFBVCxDQUFrQkMsS0FBbEIsRUFBeUJwNUIsR0FBekIsRUFBOEI7QUFDL0QsTUFBSWxULENBQUMsR0FBR3lpQixhQUFXLENBQUMsSUFBRCxDQUFuQjtBQUNBLE1BQUk1bUIsTUFBTSxHQUFHbUUsQ0FBQyxDQUFDbkUsTUFBZjtBQUNBLE1BQUkwd0MsVUFBVSxHQUFHN29DLGVBQWUsQ0FBQzRvQyxLQUFELEVBQVF6d0MsTUFBUixDQUFoQztBQUNBLE1BQUlxTyxDQUFDLEdBQUdvaEMsOEJBQTRCLENBQUN0ckMsQ0FBRCxDQUFwQztBQUNBLFNBQU8sSUFBSWtLLENBQUosQ0FDTGxLLENBQUMsQ0FBQzhjLE1BREcsRUFFTDljLENBQUMsQ0FBQ3FmLFVBQUYsR0FBZWt0QixVQUFVLEdBQUd2c0MsQ0FBQyxDQUFDbXFDLGlCQUZ6QixFQUdMM21DLFFBQVEsQ0FBQyxDQUFDMFAsR0FBRyxLQUFLL1gsU0FBUixHQUFvQlUsTUFBcEIsR0FBNkI2SCxlQUFlLENBQUN3UCxHQUFELEVBQU1yWCxNQUFOLENBQTdDLElBQThEMHdDLFVBQS9ELENBSEgsQ0FBUDtBQUtELENBVnFCLENBQXRCOztBQ1ZBLElBQUk3eUMsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUlpcEIscUJBQW1CLEdBQUdqcEIsbUJBQTFCOztBQUNBLElBQUlELE9BQUssR0FBR0MsUUFBWjs7QUFFQSxJQUFJK21CLFdBQVMsR0FBR3BuQixRQUFNLENBQUNvbkIsU0FBdkI7QUFDQSxJQUFJMkIsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUNBLElBQUk2cEIsZUFBZSxHQUFHLEdBQUdDLGNBQXpCO0FBQ0EsSUFBSVIsTUFBTSxHQUFHLEdBQUdqeEMsS0FBaEI7O0FBR0EsSUFBSTB4QyxvQkFBb0IsR0FBRyxDQUFDLENBQUM1ckIsV0FBRixJQUFlaG5CLE9BQUssQ0FBQyxZQUFZO0FBQzFEMHlDLEVBQUFBLGVBQWUsQ0FBQ2p5QyxJQUFoQixDQUFxQixJQUFJdW1CLFdBQUosQ0FBYyxDQUFkLENBQXJCO0FBQ0QsQ0FGOEMsQ0FBL0M7QUFJQSxJQUFJaGIsUUFBTSxHQUFHaE0sT0FBSyxDQUFDLFlBQVk7QUFDN0IsU0FBTyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8yeUMsY0FBUCxNQUEyQixJQUFJM3JCLFdBQUosQ0FBYyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWQsRUFBc0IyckIsY0FBdEIsRUFBbEM7QUFDRCxDQUZpQixDQUFMLElBRVAsQ0FBQzN5QyxPQUFLLENBQUMsWUFBWTtBQUN2QmduQixFQUFBQSxXQUFTLENBQUMvZSxTQUFWLENBQW9CMHFDLGNBQXBCLENBQW1DbHlDLElBQW5DLENBQXdDLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBeEM7QUFDRCxDQUZXLENBRlo7QUFPQTs7QUFDQW9vQix3QkFBc0IsQ0FBQyxnQkFBRCxFQUFtQixTQUFTOHBCLGNBQVQsR0FBMEI7QUFDakUsU0FBT0QsZUFBZSxDQUFDampDLEtBQWhCLENBQXNCbWpDLG9CQUFvQixHQUFHVCxNQUFNLENBQUMxeEMsSUFBUCxDQUFZa29CLGFBQVcsQ0FBQyxJQUFELENBQXZCLENBQUgsR0FBb0NBLGFBQVcsQ0FBQyxJQUFELENBQXpGLEVBQWlHN21CLFNBQWpHLENBQVA7QUFDRCxDQUZxQixFQUVuQmtLLFFBRm1CLENBQXRCOztBQ3ZCQSxJQUFJNmMsd0JBQXNCLEdBQUc1b0IsbUJBQUEsQ0FBK0M0b0Isc0JBQTVFOztBQUNBLElBQUk3b0IsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFFQSxJQUFJNm5CLFVBQVUsR0FBR2xvQixRQUFNLENBQUNrb0IsVUFBeEI7QUFDQSxJQUFJK3FCLG1CQUFtQixHQUFHL3FCLFVBQVUsSUFBSUEsVUFBVSxDQUFDN2YsU0FBekIsSUFBc0MsRUFBaEU7QUFDQSxJQUFJNnFDLGFBQWEsR0FBRyxHQUFHN3hDLFFBQXZCO0FBQ0EsSUFBSTh4QyxTQUFTLEdBQUcsR0FBRzlwQyxJQUFuQjs7QUFFQSxJQUFJakosT0FBSyxDQUFDLFlBQVk7QUFBRTh5QyxFQUFBQSxhQUFhLENBQUNyeUMsSUFBZCxDQUFtQixFQUFuQjtBQUF5QixDQUF4QyxDQUFULEVBQW9EO0FBQ2xEcXlDLEVBQUFBLGFBQWEsR0FBRyxTQUFTN3hDLFFBQVQsR0FBb0I7QUFDbEMsV0FBTzh4QyxTQUFTLENBQUN0eUMsSUFBVixDQUFlLElBQWYsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUFFRCxJQUFJdXlDLG1CQUFtQixHQUFHSCxtQkFBbUIsQ0FBQzV4QyxRQUFwQixJQUFnQzZ4QyxhQUExRDtBQUdBOztBQUNBanFCLHdCQUFzQixDQUFDLFVBQUQsRUFBYWlxQixhQUFiLEVBQTRCRSxtQkFBNUIsQ0FBdEI7O0FDbkJBLElBQUlyaEMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJZ0IsVUFBUSxHQUFHaEIsVUFBZjs7QUFFQSxJQUFJb2hCLFlBQVksR0FBR3plLE1BQU0sQ0FBQ3llLFlBQTFCO0FBQ0EsSUFBSTR4QixJQUFJLEdBQUcsZUFBWDtBQUNBLElBQUlDLElBQUksR0FBRyxlQUFYO0FBR0E7O0FBQ0F2aEMsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CO0FBQ2xCdXpDLEVBQUFBLFFBQVEsRUFBRSxTQUFTQSxRQUFULENBQWtCM25DLE1BQWxCLEVBQTBCO0FBQ2xDLFFBQUlrZixHQUFHLEdBQUd6cEIsVUFBUSxDQUFDdUssTUFBRCxDQUFsQjtBQUNBLFFBQUluRyxNQUFNLEdBQUcsRUFBYjtBQUNBLFFBQUl0RCxNQUFNLEdBQUcyb0IsR0FBRyxDQUFDM29CLE1BQWpCO0FBQ0EsUUFBSXlILEtBQUssR0FBRyxDQUFaO0FBQ0EsUUFBSTRYLEdBQUosRUFBU2xnQixLQUFUOztBQUNBLFdBQU9zSSxLQUFLLEdBQUd6SCxNQUFmLEVBQXVCO0FBQ3JCcWYsTUFBQUEsR0FBRyxHQUFHc0osR0FBRyxDQUFDbkosTUFBSixDQUFXL1gsS0FBSyxFQUFoQixDQUFOOztBQUNBLFVBQUk0WCxHQUFHLEtBQUssR0FBWixFQUFpQjtBQUNmLFlBQUlzSixHQUFHLENBQUNuSixNQUFKLENBQVcvWCxLQUFYLE1BQXNCLEdBQTFCLEVBQStCO0FBQzdCdEksVUFBQUEsS0FBSyxHQUFHd3BCLEdBQUcsQ0FBQ3hwQixLQUFKLENBQVVzSSxLQUFLLEdBQUcsQ0FBbEIsRUFBcUJBLEtBQUssR0FBRyxDQUE3QixDQUFSOztBQUNBLGNBQUkwcEMsSUFBSSxDQUFDdHNDLElBQUwsQ0FBVTFGLEtBQVYsQ0FBSixFQUFzQjtBQUNwQm1FLFlBQUFBLE1BQU0sSUFBSWdjLFlBQVksQ0FBQ2dVLFFBQVEsQ0FBQ24wQixLQUFELEVBQVEsRUFBUixDQUFULENBQXRCO0FBQ0FzSSxZQUFBQSxLQUFLLElBQUksQ0FBVDtBQUNBO0FBQ0Q7QUFDRixTQVBELE1BT087QUFDTHRJLFVBQUFBLEtBQUssR0FBR3dwQixHQUFHLENBQUN4cEIsS0FBSixDQUFVc0ksS0FBVixFQUFpQkEsS0FBSyxHQUFHLENBQXpCLENBQVI7O0FBQ0EsY0FBSXlwQyxJQUFJLENBQUNyc0MsSUFBTCxDQUFVMUYsS0FBVixDQUFKLEVBQXNCO0FBQ3BCbUUsWUFBQUEsTUFBTSxJQUFJZ2MsWUFBWSxDQUFDZ1UsUUFBUSxDQUFDbjBCLEtBQUQsRUFBUSxFQUFSLENBQVQsQ0FBdEI7QUFDQXNJLFlBQUFBLEtBQUssSUFBSSxDQUFUO0FBQ0E7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0RuRSxNQUFBQSxNQUFNLElBQUkrYixHQUFWO0FBQ0Q7O0FBQUMsV0FBTy9iLE1BQVA7QUFDSDtBQTVCaUIsQ0FBbkIsQ0FBRDs7OztBQ1RBLElBQUl3ZSxhQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSXF1QixXQUFXLEdBQUdydUIsd0JBQUEsQ0FBMENxdUIsV0FBNUQ7O0FBQ0EsSUFBSWxvQixXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUltekMsb0JBQW9CLEdBQUduekMsY0FBM0I7O0FBQ0EsSUFBSW9FLFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUVBLElBQUltUyxrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJaXBCLHNCQUFzQixHQUFHOW5CLHFCQUFtQixDQUFDaEIsU0FBakQ7QUFDQSxJQUFJa0ssTUFBSSxHQUFHNGhDLG9CQUFvQixDQUFDNWhDLElBQWhDO0FBQ0EsSUFBSUMsU0FBUyxHQUFHMmhDLG9CQUFvQixDQUFDM2hDLFNBQXJDO0FBQ0EsSUFBSW5OLEVBQUUsR0FBRyxDQUFUOztBQUdBLElBQUkrdUMsbUJBQW1CLEdBQUcsVUFBVXR2QyxLQUFWLEVBQWlCO0FBQ3pDLFNBQU9BLEtBQUssQ0FBQ3V2QyxNQUFOLEtBQWlCdnZDLEtBQUssQ0FBQ3V2QyxNQUFOLEdBQWUsSUFBSUMsbUJBQUosRUFBaEMsQ0FBUDtBQUNELENBRkQ7O0FBSUEsSUFBSUEsbUJBQW1CLEdBQUcsWUFBWTtBQUNwQyxPQUFLLzFCLE9BQUwsR0FBZSxFQUFmO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJZzJCLGtCQUFrQixHQUFHLFVBQVV6dkMsS0FBVixFQUFpQkgsR0FBakIsRUFBc0I7QUFDN0MsU0FBTzROLE1BQUksQ0FBQ3pOLEtBQUssQ0FBQ3laLE9BQVAsRUFBZ0IsVUFBVWxlLEVBQVYsRUFBYztBQUN2QyxXQUFPQSxFQUFFLENBQUMsQ0FBRCxDQUFGLEtBQVVzRSxHQUFqQjtBQUNELEdBRlUsQ0FBWDtBQUdELENBSkQ7O0FBTUEydkMsbUJBQW1CLENBQUN0ckMsU0FBcEIsR0FBZ0M7QUFDOUI3SCxFQUFBQSxHQUFHLEVBQUUsVUFBVXdELEdBQVYsRUFBZTtBQUNsQixRQUFJNHNCLEtBQUssR0FBR2dqQixrQkFBa0IsQ0FBQyxJQUFELEVBQU81dkMsR0FBUCxDQUE5QjtBQUNBLFFBQUk0c0IsS0FBSixFQUFXLE9BQU9BLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDWixHQUo2QjtBQUs5QnBwQixFQUFBQSxHQUFHLEVBQUUsVUFBVXhELEdBQVYsRUFBZTtBQUNsQixXQUFPLENBQUMsQ0FBQzR2QyxrQkFBa0IsQ0FBQyxJQUFELEVBQU81dkMsR0FBUCxDQUEzQjtBQUNELEdBUDZCO0FBUTlCdUQsRUFBQUEsR0FBRyxFQUFFLFVBQVV2RCxHQUFWLEVBQWU5QyxLQUFmLEVBQXNCO0FBQ3pCLFFBQUkwdkIsS0FBSyxHQUFHZ2pCLGtCQUFrQixDQUFDLElBQUQsRUFBTzV2QyxHQUFQLENBQTlCO0FBQ0EsUUFBSTRzQixLQUFKLEVBQVdBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVzF2QixLQUFYLENBQVgsS0FDSyxLQUFLMGMsT0FBTCxDQUFheFosSUFBYixDQUFrQixDQUFDSixHQUFELEVBQU05QyxLQUFOLENBQWxCO0FBQ04sR0FaNkI7QUFhOUIsWUFBVSxVQUFVOEMsR0FBVixFQUFlO0FBQ3ZCLFFBQUk0RixLQUFLLEdBQUdpSSxTQUFTLENBQUMsS0FBSytMLE9BQU4sRUFBZSxVQUFVbGUsRUFBVixFQUFjO0FBQ2hELGFBQU9BLEVBQUUsQ0FBQyxDQUFELENBQUYsS0FBVXNFLEdBQWpCO0FBQ0QsS0FGb0IsQ0FBckI7QUFHQSxRQUFJLENBQUM0RixLQUFMLEVBQVksS0FBS2dVLE9BQUwsQ0FBYXlFLE1BQWIsQ0FBb0J6WSxLQUFwQixFQUEyQixDQUEzQjtBQUNaLFdBQU8sQ0FBQyxDQUFDLENBQUNBLEtBQVY7QUFDRDtBQW5CNkIsQ0FBaEM7SUFzQkFoSyxnQkFBQSxHQUFpQjtBQUNmbXdCLEVBQUFBLGNBQWMsRUFBRSxVQUFVWCxPQUFWLEVBQW1CbE4sZ0JBQW5CLEVBQXFDclIsTUFBckMsRUFBNkMwZSxLQUE3QyxFQUFvRDtBQUNsRSxRQUFJL2UsQ0FBQyxHQUFHNGUsT0FBTyxDQUFDLFVBQVUxZixJQUFWLEVBQWdCOEcsUUFBaEIsRUFBMEI7QUFDeEMwTixNQUFBQSxZQUFVLENBQUN4VSxJQUFELEVBQU9jLENBQVAsRUFBVTBSLGdCQUFWLENBQVY7QUFDQTFQLE1BQUFBLGtCQUFnQixDQUFDOUMsSUFBRCxFQUFPO0FBQ3JCN0gsUUFBQUEsSUFBSSxFQUFFcWEsZ0JBRGU7QUFFckJ4ZCxRQUFBQSxFQUFFLEVBQUVBLEVBQUUsRUFGZTtBQUdyQmd2QyxRQUFBQSxNQUFNLEVBQUVqeUM7QUFIYSxPQUFQLENBQWhCO0FBS0EsVUFBSStVLFFBQVEsSUFBSS9VLFNBQWhCLEVBQTJCNFYsU0FBTyxDQUFDYixRQUFELEVBQVc5RyxJQUFJLENBQUM2ZixLQUFELENBQWYsRUFBd0I7QUFBRTdmLFFBQUFBLElBQUksRUFBRUEsSUFBUjtBQUFjZ0gsUUFBQUEsVUFBVSxFQUFFN0Y7QUFBMUIsT0FBeEIsQ0FBUDtBQUM1QixLQVJjLENBQWY7QUFVQSxRQUFJakksZ0JBQWdCLEdBQUc0bkIsc0JBQXNCLENBQUN0TyxnQkFBRCxDQUE3Qzs7QUFFQSxRQUFJeU8sTUFBTSxHQUFHLFVBQVVqaEIsSUFBVixFQUFnQjFMLEdBQWhCLEVBQXFCOUMsS0FBckIsRUFBNEI7QUFDdkMsVUFBSTBHLEtBQUssR0FBR2dCLGdCQUFnQixDQUFDOEcsSUFBRCxDQUE1QjtBQUNBLFVBQUlsRSxJQUFJLEdBQUdrakIsV0FBVyxDQUFDbG9CLFdBQVEsQ0FBQ3hDLEdBQUQsQ0FBVCxFQUFnQixJQUFoQixDQUF0QjtBQUNBLFVBQUl3SCxJQUFJLEtBQUssSUFBYixFQUFtQmlvQyxtQkFBbUIsQ0FBQzdyQyxLQUFELENBQW5CLENBQTJCTCxHQUEzQixDQUErQnZELEdBQS9CLEVBQW9DOUMsS0FBcEMsRUFBbkIsS0FDS3NLLElBQUksQ0FBQzVELEtBQUssQ0FBQ2xELEVBQVAsQ0FBSixHQUFpQnhELEtBQWpCO0FBQ0wsYUFBT3dPLElBQVA7QUFDRCxLQU5EOztBQVFBdVUsSUFBQUEsYUFBVyxDQUFDelQsQ0FBQyxDQUFDbkksU0FBSCxFQUFjO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGdCQUFVLFVBQVVyRSxHQUFWLEVBQWU7QUFDdkIsWUFBSTRELEtBQUssR0FBR2dCLGdCQUFnQixDQUFDLElBQUQsQ0FBNUI7QUFDQSxZQUFJLENBQUNsRixVQUFRLENBQUNNLEdBQUQsQ0FBYixFQUFvQixPQUFPLEtBQVA7QUFDcEIsWUFBSXdILElBQUksR0FBR2tqQixXQUFXLENBQUMxcUIsR0FBRCxDQUF0QjtBQUNBLFlBQUl3SCxJQUFJLEtBQUssSUFBYixFQUFtQixPQUFPaW9DLG1CQUFtQixDQUFDN3JDLEtBQUQsQ0FBbkIsQ0FBMkIsUUFBM0IsRUFBcUM1RCxHQUFyQyxDQUFQO0FBQ25CLGVBQU93SCxJQUFJLElBQUkvRyxRQUFNLENBQUMrRyxJQUFELEVBQU81RCxLQUFLLENBQUNsRCxFQUFiLENBQWQsSUFBa0MsT0FBTzhHLElBQUksQ0FBQzVELEtBQUssQ0FBQ2xELEVBQVAsQ0FBcEQ7QUFDRCxPQVZzQjtBQVd2QjtBQUNBO0FBQ0E7QUFDQThDLE1BQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWF4RCxHQUFiLEVBQWtCO0FBQ3JCLFlBQUk0RCxLQUFLLEdBQUdnQixnQkFBZ0IsQ0FBQyxJQUFELENBQTVCO0FBQ0EsWUFBSSxDQUFDbEYsVUFBUSxDQUFDTSxHQUFELENBQWIsRUFBb0IsT0FBTyxLQUFQO0FBQ3BCLFlBQUl3SCxJQUFJLEdBQUdrakIsV0FBVyxDQUFDMXFCLEdBQUQsQ0FBdEI7QUFDQSxZQUFJd0gsSUFBSSxLQUFLLElBQWIsRUFBbUIsT0FBT2lvQyxtQkFBbUIsQ0FBQzdyQyxLQUFELENBQW5CLENBQTJCSixHQUEzQixDQUErQnhELEdBQS9CLENBQVA7QUFDbkIsZUFBT3dILElBQUksSUFBSS9HLFFBQU0sQ0FBQytHLElBQUQsRUFBTzVELEtBQUssQ0FBQ2xELEVBQWIsQ0FBckI7QUFDRDtBQXBCc0IsS0FBZCxDQUFYO0FBdUJBdWYsSUFBQUEsYUFBVyxDQUFDelQsQ0FBQyxDQUFDbkksU0FBSCxFQUFjd0ksTUFBTSxHQUFHO0FBQ2hDO0FBQ0E7QUFDQXJRLE1BQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWF3RCxHQUFiLEVBQWtCO0FBQ3JCLFlBQUk0RCxLQUFLLEdBQUdnQixnQkFBZ0IsQ0FBQyxJQUFELENBQTVCOztBQUNBLFlBQUlsRixVQUFRLENBQUNNLEdBQUQsQ0FBWixFQUFtQjtBQUNqQixjQUFJd0gsSUFBSSxHQUFHa2pCLFdBQVcsQ0FBQzFxQixHQUFELENBQXRCO0FBQ0EsY0FBSXdILElBQUksS0FBSyxJQUFiLEVBQW1CLE9BQU9pb0MsbUJBQW1CLENBQUM3ckMsS0FBRCxDQUFuQixDQUEyQnBILEdBQTNCLENBQStCd0QsR0FBL0IsQ0FBUDtBQUNuQixpQkFBT3dILElBQUksR0FBR0EsSUFBSSxDQUFDNUQsS0FBSyxDQUFDbEQsRUFBUCxDQUFQLEdBQW9CakQsU0FBL0I7QUFDRDtBQUNGLE9BVitCO0FBV2hDO0FBQ0E7QUFDQThGLE1BQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWF2RCxHQUFiLEVBQWtCOUMsS0FBbEIsRUFBeUI7QUFDNUIsZUFBT3l2QixNQUFNLENBQUMsSUFBRCxFQUFPM3NCLEdBQVAsRUFBWTlDLEtBQVosQ0FBYjtBQUNEO0FBZitCLEtBQUgsR0FnQjNCO0FBQ0Y7QUFDQTtBQUNBMnVCLE1BQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWEzdUIsS0FBYixFQUFvQjtBQUN2QixlQUFPeXZCLE1BQU0sQ0FBQyxJQUFELEVBQU96dkIsS0FBUCxFQUFjLElBQWQsQ0FBYjtBQUNEO0FBTEMsS0FoQk8sQ0FBWDtBQXdCQSxXQUFPc1AsQ0FBUDtBQUNEO0FBdEVjLENBQWpCOztBQ3JEQSxJQUFJeFEsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUk0akIsYUFBVyxHQUFHNWpCLGFBQWxCOztBQUNBLElBQUk2dUIsc0JBQXNCLEdBQUc3dUIsd0JBQTdCOztBQUNBLElBQUk4d0IsWUFBVSxHQUFHOXdCLFlBQWpCOztBQUNBLElBQUl3ekMsZ0JBQWMsR0FBR3h6QyxnQkFBckI7O0FBQ0EsSUFBSXFELFVBQVEsR0FBR3JELFVBQWY7O0FBQ0EsSUFBSXl6QyxtQkFBbUIsR0FBR3p6QyxhQUFBLENBQXVDb0gsT0FBakU7O0FBQ0EsSUFBSVAsZUFBZSxHQUFHN0csYUFBdEI7O0FBRUEsSUFBSTB6QyxPQUFPLEdBQUcsQ0FBQy96QyxRQUFNLENBQUNnUCxhQUFSLElBQXlCLG1CQUFtQmhQLFFBQTFEOztBQUVBLElBQUlndUIsWUFBWSxHQUFHMXRCLE1BQU0sQ0FBQzB0QixZQUExQjtBQUNBLElBQUlnbUIsZUFBSjs7QUFFQSxJQUFJNWtCLE9BQU8sR0FBRyxVQUFVaUMsSUFBVixFQUFnQjtBQUM1QixTQUFPLFNBQVN0cUIsT0FBVCxHQUFtQjtBQUN4QixXQUFPc3FCLElBQUksQ0FBQyxJQUFELEVBQU9udkIsU0FBUyxDQUFDQyxNQUFWLEdBQW1CRCxTQUFTLENBQUMsQ0FBRCxDQUE1QixHQUFrQ1QsU0FBekMsQ0FBWDtBQUNELEdBRkQ7QUFHRCxDQUpEO0FBT0E7OztBQUNBLElBQUl3eUMsUUFBUSxHQUFHcjBDLGtCQUFBLEdBQWlCdXhCLFlBQVUsQ0FBQyxTQUFELEVBQVkvQixPQUFaLEVBQXFCeWtCLGdCQUFyQixDQUExQztBQUdBO0FBQ0E7O0FBQ0EsSUFBSTNzQyxlQUFlLElBQUk2c0MsT0FBdkIsRUFBZ0M7QUFDOUJDLEVBQUFBLGVBQWUsR0FBR0gsZ0JBQWMsQ0FBQzlqQixjQUFmLENBQThCWCxPQUE5QixFQUF1QyxTQUF2QyxFQUFrRCxJQUFsRCxDQUFsQjtBQUNBRixFQUFBQSxzQkFBc0IsQ0FBQ04sTUFBdkI7QUFDQSxNQUFJc2xCLGdCQUFnQixHQUFHRCxRQUFRLENBQUM1ckMsU0FBaEM7QUFDQSxNQUFJOHJDLFlBQVksR0FBR0QsZ0JBQWdCLENBQUMsUUFBRCxDQUFuQztBQUNBLE1BQUlFLFNBQVMsR0FBR0YsZ0JBQWdCLENBQUMxc0MsR0FBakM7QUFDQSxNQUFJNnNDLFNBQVMsR0FBR0gsZ0JBQWdCLENBQUMxekMsR0FBakM7QUFDQSxNQUFJOHpDLFNBQVMsR0FBR0osZ0JBQWdCLENBQUMzc0MsR0FBakM7QUFDQTBjLEVBQUFBLGFBQVcsQ0FBQ2l3QixnQkFBRCxFQUFtQjtBQUM1QixjQUFVLFVBQVVsd0MsR0FBVixFQUFlO0FBQ3ZCLFVBQUlOLFVBQVEsQ0FBQ00sR0FBRCxDQUFSLElBQWlCLENBQUNncUIsWUFBWSxDQUFDaHFCLEdBQUQsQ0FBbEMsRUFBeUM7QUFDdkMsWUFBSTRELEtBQUssR0FBR2tzQyxtQkFBbUIsQ0FBQyxJQUFELENBQS9CO0FBQ0EsWUFBSSxDQUFDbHNDLEtBQUssQ0FBQzhyQyxNQUFYLEVBQW1COXJDLEtBQUssQ0FBQzhyQyxNQUFOLEdBQWUsSUFBSU0sZUFBSixFQUFmO0FBQ25CLGVBQU9HLFlBQVksQ0FBQ3R6QyxJQUFiLENBQWtCLElBQWxCLEVBQXdCbUQsR0FBeEIsS0FBZ0M0RCxLQUFLLENBQUM4ckMsTUFBTixDQUFhLFFBQWIsRUFBdUIxdkMsR0FBdkIsQ0FBdkM7QUFDRDs7QUFBQyxhQUFPbXdDLFlBQVksQ0FBQ3R6QyxJQUFiLENBQWtCLElBQWxCLEVBQXdCbUQsR0FBeEIsQ0FBUDtBQUNILEtBUDJCO0FBUTVCd0QsSUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYXhELEdBQWIsRUFBa0I7QUFDckIsVUFBSU4sVUFBUSxDQUFDTSxHQUFELENBQVIsSUFBaUIsQ0FBQ2dxQixZQUFZLENBQUNocUIsR0FBRCxDQUFsQyxFQUF5QztBQUN2QyxZQUFJNEQsS0FBSyxHQUFHa3NDLG1CQUFtQixDQUFDLElBQUQsQ0FBL0I7QUFDQSxZQUFJLENBQUNsc0MsS0FBSyxDQUFDOHJDLE1BQVgsRUFBbUI5ckMsS0FBSyxDQUFDOHJDLE1BQU4sR0FBZSxJQUFJTSxlQUFKLEVBQWY7QUFDbkIsZUFBT0ksU0FBUyxDQUFDdnpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsS0FBNkI0RCxLQUFLLENBQUM4ckMsTUFBTixDQUFhbHNDLEdBQWIsQ0FBaUJ4RCxHQUFqQixDQUFwQztBQUNEOztBQUFDLGFBQU9vd0MsU0FBUyxDQUFDdnpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsQ0FBUDtBQUNILEtBZDJCO0FBZTVCeEQsSUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYXdELEdBQWIsRUFBa0I7QUFDckIsVUFBSU4sVUFBUSxDQUFDTSxHQUFELENBQVIsSUFBaUIsQ0FBQ2dxQixZQUFZLENBQUNocUIsR0FBRCxDQUFsQyxFQUF5QztBQUN2QyxZQUFJNEQsS0FBSyxHQUFHa3NDLG1CQUFtQixDQUFDLElBQUQsQ0FBL0I7QUFDQSxZQUFJLENBQUNsc0MsS0FBSyxDQUFDOHJDLE1BQVgsRUFBbUI5ckMsS0FBSyxDQUFDOHJDLE1BQU4sR0FBZSxJQUFJTSxlQUFKLEVBQWY7QUFDbkIsZUFBT0ksU0FBUyxDQUFDdnpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsSUFBNEJxd0MsU0FBUyxDQUFDeHpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsQ0FBNUIsR0FBd0Q0RCxLQUFLLENBQUM4ckMsTUFBTixDQUFhbHpDLEdBQWIsQ0FBaUJ3RCxHQUFqQixDQUEvRDtBQUNEOztBQUFDLGFBQU9xd0MsU0FBUyxDQUFDeHpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsQ0FBUDtBQUNILEtBckIyQjtBQXNCNUJ1RCxJQUFBQSxHQUFHLEVBQUUsU0FBU0EsR0FBVCxDQUFhdkQsR0FBYixFQUFrQjlDLEtBQWxCLEVBQXlCO0FBQzVCLFVBQUl3QyxVQUFRLENBQUNNLEdBQUQsQ0FBUixJQUFpQixDQUFDZ3FCLFlBQVksQ0FBQ2hxQixHQUFELENBQWxDLEVBQXlDO0FBQ3ZDLFlBQUk0RCxLQUFLLEdBQUdrc0MsbUJBQW1CLENBQUMsSUFBRCxDQUEvQjtBQUNBLFlBQUksQ0FBQ2xzQyxLQUFLLENBQUM4ckMsTUFBWCxFQUFtQjlyQyxLQUFLLENBQUM4ckMsTUFBTixHQUFlLElBQUlNLGVBQUosRUFBZjtBQUNuQkksUUFBQUEsU0FBUyxDQUFDdnpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsSUFBNEJzd0MsU0FBUyxDQUFDenpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsRUFBMEI5QyxLQUExQixDQUE1QixHQUErRDBHLEtBQUssQ0FBQzhyQyxNQUFOLENBQWFuc0MsR0FBYixDQUFpQnZELEdBQWpCLEVBQXNCOUMsS0FBdEIsQ0FBL0Q7QUFDRCxPQUpELE1BSU9vekMsU0FBUyxDQUFDenpDLElBQVYsQ0FBZSxJQUFmLEVBQXFCbUQsR0FBckIsRUFBMEI5QyxLQUExQjs7QUFDUCxhQUFPLElBQVA7QUFDRDtBQTdCMkIsR0FBbkIsQ0FBWDtBQStCRDs7QUNsRUQsSUFBSWl3QixVQUFVLEdBQUc5d0IsWUFBakI7O0FBQ0EsSUFBSXd6QyxjQUFjLEdBQUd4ekMsZ0JBQXJCO0FBR0E7OztBQUNBOHdCLFVBQVUsQ0FBQyxTQUFELEVBQVksVUFBVUUsSUFBVixFQUFnQjtBQUNwQyxTQUFPLFNBQVNrakIsT0FBVCxHQUFtQjtBQUFFLFdBQU9sakIsSUFBSSxDQUFDLElBQUQsRUFBT252QixTQUFTLENBQUNDLE1BQVYsR0FBbUJELFNBQVMsQ0FBQyxDQUFELENBQTVCLEdBQWtDVCxTQUF6QyxDQUFYO0FBQWlFLEdBQTdGO0FBQ0QsQ0FGUyxFQUVQb3lDLGNBRk8sQ0FBVjs7QUNOQSxJQUFJN3pDLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJd0UsUUFBTSxHQUFHeEUsV0FBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBRUEsSUFBSTZVLGdCQUFjLEdBQUc3VSxzQkFBckI7O0FBQ0EsSUFBSXlMLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUdBLElBQUltMEMsd0JBQXdCLEdBQUcsMEJBQS9CO0FBQ0EsSUFBSUMsZ0JBQWMsR0FBR252QyxpQkFBZSxDQUFDLGVBQUQsQ0FBcEM7QUFDQSxJQUFJb3ZDLGFBQWEsR0FBRzEwQyxRQUFNLENBQUMwMEMsYUFBM0I7QUFDQSxJQUFJQyw0QkFBNEIsR0FBRzl2QyxRQUFNLENBQUMrdkMsc0JBQTFDO0FBQ0EsSUFBSUEsd0JBQUosRUFBNEJ2c0MsU0FBNUI7O0FBRUEsSUFBSXNzQyw0QkFBSixFQUFrQztBQUNoQ0MsRUFBQUEsd0JBQXNCLEdBQUdELDRCQUF6QjtBQUNELENBRkQsTUFFTyxJQUFJN3lDLFlBQVUsQ0FBQzR5QyxhQUFELENBQWQsRUFBK0I7QUFDcENFLEVBQUFBLHdCQUFzQixHQUFHRixhQUFhLENBQUNyc0MsU0FBdkM7QUFDRCxDQUZNLE1BRUEsSUFBSXhELFFBQU0sQ0FBQzJ2Qyx3QkFBRCxDQUFOLElBQW9DeDBDLFFBQU0sQ0FBQ3cwQyx3QkFBRCxDQUE5QyxFQUEwRTtBQUMvRSxNQUFJO0FBQ0Y7QUFDQW5zQyxJQUFBQSxTQUFTLEdBQUc2TSxnQkFBYyxDQUFDQSxnQkFBYyxDQUFDQSxnQkFBYyxDQUFDalYsUUFBUSxDQUFDLDhCQUFELENBQVIsRUFBRCxDQUFmLENBQWYsQ0FBMUI7QUFDQSxRQUFJaVYsZ0JBQWMsQ0FBQzdNLFNBQUQsQ0FBZCxLQUE4Qi9ILE1BQU0sQ0FBQytILFNBQXpDLEVBQW9EdXNDLHdCQUFzQixHQUFHdnNDLFNBQXpCO0FBQ3JELEdBSkQsQ0FJRSxPQUFPbEksS0FBUCxFQUFjO0FBQUU7QUFBYTtBQUNoQzs7QUFFRCxJQUFJLENBQUN5MEMsd0JBQUwsRUFBNkJBLHdCQUFzQixHQUFHLEVBQXpCOztBQUc3QixJQUFJLENBQUM5eUMsWUFBVSxDQUFDOHlDLHdCQUFzQixDQUFDSCxnQkFBRCxDQUF2QixDQUFmLEVBQXlEO0FBQ3ZEM29DLEVBQUFBLFVBQVEsQ0FBQzhvQyx3QkFBRCxFQUF5QkgsZ0JBQXpCLEVBQXlDLFlBQVk7QUFDM0QsV0FBTyxJQUFQO0FBQ0QsR0FGTyxDQUFSO0FBR0Q7O0lBRUQ3MEMsc0JBQUEsR0FBaUJnMUMsd0JBQWpCOztBQ25DQSxJQUFJcHVDLFdBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTZPLFFBQU0sR0FBRzdPLGNBQWI7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUNBLElBQUk0akIsYUFBVyxHQUFHNWpCLGFBQWxCOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJdTBDLHdCQUFzQixHQUFHdjBDLHNCQUE3Qjs7QUFFQSxJQUFJKzRCLFNBQU8sR0FBR2gzQixZQUFVLENBQUMsU0FBRCxDQUF4QjtBQUVBLElBQUlvUSxrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDbEksR0FBM0M7O0FBRUEsSUFBSXEwQyxpQ0FBaUMsR0FBRyxVQUFVcHZDLE1BQVYsRUFBa0I2MkIsT0FBbEIsRUFBMkJHLE1BQTNCLEVBQW1DO0FBQ3pFLE1BQUl0bEIsSUFBSSxHQUFHMVIsTUFBTSxDQUFDMFIsSUFBbEI7QUFDQWlpQixFQUFBQSxTQUFPLENBQUNrRCxPQUFSLENBQWdCNzJCLE1BQU0sQ0FBQ3ZFLEtBQXZCLEVBQThCNjZCLElBQTlCLENBQW1DLFVBQVU3NkIsS0FBVixFQUFpQjtBQUNsRG83QixJQUFBQSxPQUFPLENBQUM7QUFBRW5sQixNQUFBQSxJQUFJLEVBQUVBLElBQVI7QUFBY2pXLE1BQUFBLEtBQUssRUFBRUE7QUFBckIsS0FBRCxDQUFQO0FBQ0QsR0FGRCxFQUVHdTdCLE1BRkg7QUFHRCxDQUxEOztBQU9BLElBQUlxWSx1QkFBcUIsR0FBRyxTQUFTSixhQUFULENBQXVCdnhDLFFBQXZCLEVBQWlDO0FBQzNEcVAsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCclAsSUFBQUEsUUFBUSxFQUFFcUQsV0FBUSxDQUFDckQsUUFBRCxDQURHO0FBRXJCMlQsSUFBQUEsSUFBSSxFQUFFM1QsUUFBUSxDQUFDMlQ7QUFGTSxHQUFQLENBQWhCO0FBSUQsQ0FMRDs7QUFPQWcrQix1QkFBcUIsQ0FBQ3pzQyxTQUF0QixHQUFrQzRiLGFBQVcsQ0FBQy9VLFFBQU0sQ0FBQzBsQyx3QkFBRCxDQUFQLEVBQWlDO0FBQzVFOTlCLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNrQyxHQUFkLEVBQW1CO0FBQ3ZCLFFBQUlwUixLQUFLLEdBQUdnQixrQkFBZ0IsQ0FBQyxJQUFELENBQTVCO0FBQ0EsUUFBSW1zQyxNQUFNLEdBQUcsQ0FBQyxDQUFDN3lDLFNBQVMsQ0FBQ0MsTUFBekI7QUFDQSxXQUFPLElBQUlpM0IsU0FBSixDQUFZLFVBQVVrRCxPQUFWLEVBQW1CRyxNQUFuQixFQUEyQjtBQUM1QyxVQUFJaDNCLE1BQU0sR0FBR2UsV0FBUSxDQUFDb0IsS0FBSyxDQUFDa1AsSUFBTixDQUFXakgsS0FBWCxDQUFpQmpJLEtBQUssQ0FBQ3pFLFFBQXZCLEVBQWlDNHhDLE1BQU0sR0FBRyxDQUFDLzdCLEdBQUQsQ0FBSCxHQUFXLEVBQWxELENBQUQsQ0FBckI7QUFDQTY3QixNQUFBQSxpQ0FBaUMsQ0FBQ3B2QyxNQUFELEVBQVM2MkIsT0FBVCxFQUFrQkcsTUFBbEIsQ0FBakM7QUFDRCxLQUhNLENBQVA7QUFJRCxHQVIyRTtBQVM1RSxZQUFVLFVBQVV6akIsR0FBVixFQUFlO0FBQ3ZCLFFBQUk3VixRQUFRLEdBQUd5RixrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCekYsUUFBdEM7QUFDQSxRQUFJNHhDLE1BQU0sR0FBRyxDQUFDLENBQUM3eUMsU0FBUyxDQUFDQyxNQUF6QjtBQUNBLFdBQU8sSUFBSWkzQixTQUFKLENBQVksVUFBVWtELE9BQVYsRUFBbUJHLE1BQW5CLEVBQTJCO0FBQzVDLFVBQUl1WSxPQUFPLEdBQUc1dkMsV0FBUyxDQUFDakMsUUFBRCxFQUFXLFFBQVgsQ0FBdkI7QUFDQSxVQUFJNnhDLE9BQU8sS0FBS3Z6QyxTQUFoQixFQUEyQixPQUFPNjZCLE9BQU8sQ0FBQztBQUFFbmxCLFFBQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxRQUFBQSxLQUFLLEVBQUU4WDtBQUFyQixPQUFELENBQWQ7QUFDM0IsVUFBSXZULE1BQU0sR0FBR2UsV0FBUSxDQUFDd3VDLE9BQU8sQ0FBQ25sQyxLQUFSLENBQWMxTSxRQUFkLEVBQXdCNHhDLE1BQU0sR0FBRyxDQUFDLzdCLEdBQUQsQ0FBSCxHQUFXLEVBQXpDLENBQUQsQ0FBckI7QUFDQTY3QixNQUFBQSxpQ0FBaUMsQ0FBQ3B2QyxNQUFELEVBQVM2MkIsT0FBVCxFQUFrQkcsTUFBbEIsQ0FBakM7QUFDRCxLQUxNLENBQVA7QUFNRCxHQWxCMkU7QUFtQjVFLFdBQVMsVUFBVXpqQixHQUFWLEVBQWU7QUFDdEIsUUFBSTdWLFFBQVEsR0FBR3lGLGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUJ6RixRQUF0QztBQUNBLFFBQUk0eEMsTUFBTSxHQUFHLENBQUMsQ0FBQzd5QyxTQUFTLENBQUNDLE1BQXpCO0FBQ0EsV0FBTyxJQUFJaTNCLFNBQUosQ0FBWSxVQUFVa0QsT0FBVixFQUFtQkcsTUFBbkIsRUFBMkI7QUFDNUMsVUFBSXdZLE1BQU0sR0FBRzd2QyxXQUFTLENBQUNqQyxRQUFELEVBQVcsT0FBWCxDQUF0QjtBQUNBLFVBQUk4eEMsTUFBTSxLQUFLeHpDLFNBQWYsRUFBMEIsT0FBT2c3QixNQUFNLENBQUN6akIsR0FBRCxDQUFiO0FBQzFCLFVBQUl2VCxNQUFNLEdBQUdlLFdBQVEsQ0FBQ3l1QyxNQUFNLENBQUNwbEMsS0FBUCxDQUFhMU0sUUFBYixFQUF1QjR4QyxNQUFNLEdBQUcsQ0FBQy83QixHQUFELENBQUgsR0FBVyxFQUF4QyxDQUFELENBQXJCO0FBQ0E2N0IsTUFBQUEsaUNBQWlDLENBQUNwdkMsTUFBRCxFQUFTNjJCLE9BQVQsRUFBa0JHLE1BQWxCLENBQWpDO0FBQ0QsS0FMTSxDQUFQO0FBTUQ7QUE1QjJFLENBQWpDLENBQTdDO0lBK0JBNzhCLHFCQUFBLEdBQWlCazFDLHVCQUFqQjs7QUMzREEsSUFBSUEsdUJBQXFCLEdBQUd6MEMscUJBQTVCOztBQUNBLElBQUltRyxXQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJK0UsV0FBUyxHQUFHL0UsV0FBaEI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBRUEsSUFBSW8wQyxnQkFBYyxHQUFHbnZDLGlCQUFlLENBQUMsZUFBRCxDQUFwQzs7SUFFQTFGLGtCQUFBLEdBQWlCLFVBQVVGLEVBQVYsRUFBY29XLGFBQWQsRUFBNkI7QUFDNUMsTUFBSTdULE1BQU0sR0FBR0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCaUQsV0FBUyxDQUFDMUYsRUFBRCxFQUFLKzBDLGdCQUFMLENBQWhDLEdBQXVEMytCLGFBQXBFO0FBQ0EsU0FBTzdULE1BQU0sR0FBR3VFLFdBQVEsQ0FBQ3ZFLE1BQU0sQ0FBQ3BCLElBQVAsQ0FBWW5CLEVBQVosQ0FBRCxDQUFYLEdBQStCLElBQUlvMUMsdUJBQUosQ0FBMEIxK0IsYUFBVyxDQUFDMVcsRUFBRCxDQUFyQyxDQUE1QztBQUNELENBSEQ7O0FDUkEsSUFBSU0sUUFBTSxHQUFHSyxRQUFiOztJQUVBVCxZQUFBLEdBQWlCLFVBQVVzMUMsV0FBVixFQUF1QjtBQUN0QyxTQUFPbDFDLFFBQU0sQ0FBQ2sxQyxXQUFELENBQU4sQ0FBb0I3c0MsU0FBM0I7QUFDRCxDQUZEOztBQ0FBOztBQUNBLElBQUk5RSxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUVBLElBQUlxWSxnQkFBZ0IsR0FBRyxnQkFBdkI7O0FBRUEsSUFBSXhPLGNBQVksR0FBRyxVQUFVdkMsSUFBVixFQUFnQjtBQUNqQyxNQUFJd3RDLFdBQVcsR0FBR3h0QyxJQUFJLElBQUksQ0FBMUI7QUFDQSxNQUFJeXRDLFdBQVcsR0FBR3p0QyxJQUFJLElBQUksQ0FBMUI7QUFDQSxNQUFJcUosUUFBUSxHQUFHckosSUFBSSxJQUFJLENBQXZCO0FBQ0EsTUFBSW9KLE9BQU8sR0FBR3BKLElBQUksSUFBSSxDQUF0QjtBQUNBLFNBQU8sVUFBVXhFLFFBQVYsRUFBb0JVLEVBQXBCLEVBQXdCc0gsTUFBeEIsRUFBZ0M7QUFDckMzRSxJQUFBQSxXQUFRLENBQUNyRCxRQUFELENBQVI7QUFDQSxRQUFJaTJCLE9BQU8sR0FBR2gzQixZQUFVLENBQUMsU0FBRCxDQUF4QjtBQUNBLFFBQUkwVSxJQUFJLEdBQUd2VCxXQUFTLENBQUNKLFFBQVEsQ0FBQzJULElBQVYsQ0FBcEI7QUFDQSxRQUFJbE4sS0FBSyxHQUFHLENBQVo7QUFDQSxRQUFJeXJDLE9BQU8sR0FBR3h4QyxFQUFFLEtBQUtwQyxTQUFyQjtBQUNBLFFBQUk0ekMsT0FBTyxJQUFJLENBQUNGLFdBQWhCLEVBQTZCNXhDLFdBQVMsQ0FBQ00sRUFBRCxDQUFUO0FBRTdCLFdBQU8sSUFBSXUxQixPQUFKLENBQVksVUFBVWtELE9BQVYsRUFBbUJHLE1BQW5CLEVBQTJCO0FBQzVDLFVBQUk2WSxjQUFjLEdBQUcsVUFBVXJ6QyxNQUFWLEVBQWtCSixRQUFsQixFQUE0QjtBQUMvQyxZQUFJO0FBQ0YsY0FBSTB6QyxZQUFZLEdBQUdud0MsV0FBUyxDQUFDakMsUUFBRCxFQUFXLFFBQVgsQ0FBNUI7O0FBQ0EsY0FBSW95QyxZQUFKLEVBQWtCO0FBQ2hCLG1CQUFPbmMsT0FBTyxDQUFDa0QsT0FBUixDQUFnQmlaLFlBQVksQ0FBQzEwQyxJQUFiLENBQWtCc0MsUUFBbEIsQ0FBaEIsRUFBNkM0NEIsSUFBN0MsQ0FBa0QsWUFBWTtBQUNuRTk1QixjQUFBQSxNQUFNLENBQUNKLFFBQUQsQ0FBTjtBQUNELGFBRk0sRUFFSixVQUFVMUIsS0FBVixFQUFpQjtBQUNsQnM4QixjQUFBQSxNQUFNLENBQUN0OEIsS0FBRCxDQUFOO0FBQ0QsYUFKTSxDQUFQO0FBS0Q7QUFDRixTQVRELENBU0UsT0FBT3FuQyxNQUFQLEVBQWU7QUFDZixpQkFBTy9LLE1BQU0sQ0FBQytLLE1BQUQsQ0FBYjtBQUNEOztBQUFDdmxDLFFBQUFBLE1BQU0sQ0FBQ0osUUFBRCxDQUFOO0FBQ0gsT0FiRDs7QUFlQSxVQUFJMnpDLE9BQU8sR0FBRyxVQUFVcjFDLEtBQVYsRUFBaUI7QUFDN0JtMUMsUUFBQUEsY0FBYyxDQUFDN1ksTUFBRCxFQUFTdDhCLEtBQVQsQ0FBZDtBQUNELE9BRkQ7O0FBSUEsVUFBSXMxQyxJQUFJLEdBQUcsWUFBWTtBQUNyQixZQUFJO0FBQ0YsY0FBSU4sV0FBVyxJQUFLdnJDLEtBQUssR0FBRzhPLGdCQUF4QixJQUE2QzI4QixPQUFqRCxFQUEwRDtBQUN4RCxrQkFBTTN6QyxTQUFTLENBQUMsb0RBQUQsQ0FBZjtBQUNEOztBQUNEMDNCLFVBQUFBLE9BQU8sQ0FBQ2tELE9BQVIsQ0FBZ0I5MUIsV0FBUSxDQUFDc1EsSUFBSSxDQUFDalcsSUFBTCxDQUFVc0MsUUFBVixDQUFELENBQXhCLEVBQStDNDRCLElBQS9DLENBQW9ELFVBQVVobEIsSUFBVixFQUFnQjtBQUNsRSxnQkFBSTtBQUNGLGtCQUFJdlEsV0FBUSxDQUFDdVEsSUFBRCxDQUFSLENBQWVJLElBQW5CLEVBQXlCO0FBQ3ZCLG9CQUFJZytCLFdBQUosRUFBaUI7QUFDZmhxQyxrQkFBQUEsTUFBTSxDQUFDaEosTUFBUCxHQUFnQnlILEtBQWhCO0FBQ0EweUIsa0JBQUFBLE9BQU8sQ0FBQ254QixNQUFELENBQVA7QUFDRCxpQkFIRCxNQUdPbXhCLE9BQU8sQ0FBQ3ZyQixPQUFPLEdBQUcsS0FBSCxHQUFXQyxRQUFRLElBQUl2UCxTQUEvQixDQUFQO0FBQ1IsZUFMRCxNQUtPO0FBQ0wsb0JBQUlQLEtBQUssR0FBRzZWLElBQUksQ0FBQzdWLEtBQWpCOztBQUNBLG9CQUFJbTBDLE9BQUosRUFBYTtBQUNYamMsa0JBQUFBLE9BQU8sQ0FBQ2tELE9BQVIsQ0FBZ0I2WSxXQUFXLEdBQUd0eEMsRUFBRSxDQUFDM0MsS0FBRCxFQUFRMEksS0FBUixDQUFMLEdBQXNCL0YsRUFBRSxDQUFDM0MsS0FBRCxDQUFuRCxFQUE0RDY2QixJQUE1RCxDQUFpRSxVQUFVdDJCLE1BQVYsRUFBa0I7QUFDakYsd0JBQUkydkMsV0FBSixFQUFpQjtBQUNmSyxzQkFBQUEsSUFBSTtBQUNMLHFCQUZELE1BRU8sSUFBSXprQyxRQUFKLEVBQWM7QUFDbkJ2TCxzQkFBQUEsTUFBTSxHQUFHZ3dDLElBQUksRUFBUCxHQUFZSCxjQUFjLENBQUNoWixPQUFELEVBQVUsS0FBVixDQUFoQztBQUNELHFCQUZNLE1BRUEsSUFBSTZZLFdBQUosRUFBaUI7QUFDdEJocUMsc0JBQUFBLE1BQU0sQ0FBQ3ZCLEtBQUssRUFBTixDQUFOLEdBQWtCbkUsTUFBbEI7QUFDQWd3QyxzQkFBQUEsSUFBSTtBQUNMLHFCQUhNLE1BR0E7QUFDTGh3QyxzQkFBQUEsTUFBTSxHQUFHNnZDLGNBQWMsQ0FBQ2haLE9BQUQsRUFBVXZyQixPQUFPLElBQUk3UCxLQUFyQixDQUFqQixHQUErQ3UwQyxJQUFJLEVBQXpEO0FBQ0Q7QUFDRixtQkFYRCxFQVdHRCxPQVhIO0FBWUQsaUJBYkQsTUFhTztBQUNMcnFDLGtCQUFBQSxNQUFNLENBQUN2QixLQUFLLEVBQU4sQ0FBTixHQUFrQjFJLEtBQWxCO0FBQ0F1MEMsa0JBQUFBLElBQUk7QUFDTDtBQUNGO0FBQ0YsYUExQkQsQ0EwQkUsT0FBT3QxQyxLQUFQLEVBQWM7QUFBRXExQyxjQUFBQSxPQUFPLENBQUNyMUMsS0FBRCxDQUFQO0FBQWlCO0FBQ3BDLFdBNUJELEVBNEJHcTFDLE9BNUJIO0FBNkJELFNBakNELENBaUNFLE9BQU9oTyxNQUFQLEVBQWU7QUFBRWdPLFVBQUFBLE9BQU8sQ0FBQ2hPLE1BQUQsQ0FBUDtBQUFrQjtBQUN0QyxPQW5DRDs7QUFxQ0FpTyxNQUFBQSxJQUFJO0FBQ0wsS0ExRE0sQ0FBUDtBQTJERCxHQW5FRDtBQW9FRCxDQXpFRDs7SUEyRUE3MUMsc0JBQUEsR0FBaUI7QUFDZjgxQyxFQUFBQSxPQUFPLEVBQUV4ckMsY0FBWSxDQUFDLENBQUQsQ0FETjtBQUVmcUgsRUFBQUEsT0FBTyxFQUFFckgsY0FBWSxDQUFDLENBQUQsQ0FGTjtBQUdmeUgsRUFBQUEsS0FBSyxFQUFFekgsY0FBWSxDQUFDLENBQUQsQ0FISjtBQUlmd0gsRUFBQUEsSUFBSSxFQUFFeEgsY0FBWSxDQUFDLENBQUQsQ0FKSDtBQUtmMEgsRUFBQUEsSUFBSSxFQUFFMUgsY0FBWSxDQUFDLENBQUQ7QUFMSCxDQUFqQjs7QUNwRkEsSUFBSXlHLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUlnUSxlQUFhLEdBQUdoUSxlQUFwQjs7QUFDQSxJQUFJczFDLGtCQUFnQixHQUFHdDFDLGtCQUF2Qjs7QUFDQSxJQUFJK1YsYUFBVyxHQUFHL1YsYUFBbEI7O0FBQ0EsSUFBSXdWLG1CQUFpQixHQUFHeFYsbUJBQXhCOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJdTFDLFVBQVUsR0FBR3YxQyxZQUFqQjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXkwQyx1QkFBcUIsR0FBR3owQyxxQkFBNUI7O0FBQ0EsSUFBSXExQyxPQUFPLEdBQUdyMUMsc0JBQUEsQ0FBaURxMUMsT0FBL0Q7O0FBRUEsSUFBSWpCLGdCQUFjLEdBQUdudkMsaUJBQWUsQ0FBQyxlQUFELENBQXBDO0FBQ0EsSUFBSW9YLGFBQWEsR0FBR2s1QixVQUFVLENBQUMsT0FBRCxDQUFWLENBQW9CajRCLE1BQXhDO0FBR0E7O0lBQ0EvZCxnQkFBQSxHQUFpQixTQUFTaTJDLFNBQVQsQ0FBbUJDO0FBQVc7QUFBOUIsRUFBOEU7QUFDN0YsTUFBSXRsQyxDQUFDLEdBQUcsSUFBUjtBQUNBLE1BQUl1SixlQUFlLEdBQUc3WCxTQUFTLENBQUNDLE1BQWhDO0FBQ0EsTUFBSXVaLEtBQUssR0FBRzNCLGVBQWUsR0FBRyxDQUFsQixHQUFzQjdYLFNBQVMsQ0FBQyxDQUFELENBQS9CLEdBQXFDVCxTQUFqRDtBQUNBLE1BQUlvWixPQUFPLEdBQUdkLGVBQWUsR0FBRyxDQUFsQixHQUFzQjdYLFNBQVMsQ0FBQyxDQUFELENBQS9CLEdBQXFDVCxTQUFuRDtBQUNBLFNBQU8sS0FBS1csWUFBVSxDQUFDLFNBQUQsQ0FBZixFQUE0QixVQUFVazZCLE9BQVYsRUFBbUI7QUFDcEQsUUFBSWgyQixDQUFDLEdBQUcvQixVQUFRLENBQUN1eEMsVUFBRCxDQUFoQjtBQUNBLFFBQUlwNkIsS0FBSyxLQUFLamEsU0FBZCxFQUF5QmlhLEtBQUssR0FBRy9LLE1BQUksQ0FBQytLLEtBQUQsRUFBUWIsT0FBUixFQUFpQixDQUFqQixDQUFaO0FBQ3pCLFFBQUlrN0Isa0JBQWtCLEdBQUczd0MsV0FBUyxDQUFDa0IsQ0FBRCxFQUFJbXVDLGdCQUFKLENBQWxDO0FBQ0EsUUFBSXVCLGlCQUFpQixHQUFHRCxrQkFBa0IsR0FBR3QwQyxTQUFILEdBQWVvVSxtQkFBaUIsQ0FBQ3ZQLENBQUQsQ0FBakIsSUFBd0JvVyxhQUFqRjtBQUNBLFFBQUl6RCxDQUFDLEdBQUc1SSxlQUFhLENBQUNHLENBQUQsQ0FBYixHQUFtQixJQUFJQSxDQUFKLEVBQW5CLEdBQTZCLEVBQXJDO0FBQ0EsUUFBSXJOLFFBQVEsR0FBRzR5QyxrQkFBa0IsR0FDN0JKLGtCQUFnQixDQUFDcnZDLENBQUQsRUFBSXl2QyxrQkFBSixDQURhLEdBRTdCLElBQUlqQix1QkFBSixDQUEwQjErQixhQUFXLENBQUM5UCxDQUFELEVBQUkwdkMsaUJBQUosQ0FBckMsQ0FGSjtBQUdBMVosSUFBQUEsT0FBTyxDQUFDb1osT0FBTyxDQUFDdnlDLFFBQUQsRUFBV3VZLEtBQVgsRUFBa0J6QyxDQUFsQixDQUFSLENBQVA7QUFDRCxHQVZNLENBQVA7QUFXRCxDQWhCRDs7QUNuQkEsSUFBSWxILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXcxQyxTQUFTLEdBQUd4MUMsZ0JBQWhCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQmdCLEVBQUFBLElBQUksRUFBRTtBQUF6QixDQUFELEVBQWtDO0FBQ2pDMHBDLEVBQUFBLFNBQVMsRUFBRUE7QUFEc0IsQ0FBbEMsQ0FBRDs7QUNIQSxJQUFJOWpDLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTQxQyxlQUFhLEdBQUc1MUMsY0FBQSxDQUF3Q3lSLFlBQTVEOztBQUNBLElBQUkrRixrQkFBZ0IsR0FBR3hYLGtCQUF2QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQzJnQyxFQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQjlrQztBQUFXO0FBQTlCLElBQStDO0FBQ3hELFdBQU82a0MsZUFBYSxDQUFDLElBQUQsRUFBTzdrQyxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBcEI7QUFDRDtBQUhpQyxDQUFuQyxDQUFEO0FBTUFvVyxrQkFBZ0IsQ0FBQyxXQUFELENBQWhCOztBQ2JBLElBQUk5RixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk0MUMsZUFBYSxHQUFHNTFDLGNBQUEsQ0FBd0N5UixZQUE1RDs7QUFDQSxJQUFJK0Ysa0JBQWdCLEdBQUd4WCxrQkFBdkI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEN6RCxFQUFBQSxZQUFZLEVBQUUsU0FBU0EsWUFBVCxDQUFzQlY7QUFBVztBQUFqQyxJQUFrRDtBQUM5RCxXQUFPNmtDLGVBQWEsQ0FBQyxJQUFELEVBQU83a0MsVUFBUCxFQUFtQmxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXpELENBQXBCO0FBQ0Q7QUFIaUMsQ0FBbkMsQ0FBRDtBQU1Bb1csa0JBQWdCLENBQUMsY0FBRCxDQUFoQjs7QUNiQSxJQUFJbEgsTUFBSSxHQUFHdFEsbUJBQVg7O0FBQ0EsSUFBSXNCLGVBQWEsR0FBR3RCLGFBQXBCOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7O0FBR0EsSUFBSTZKLFlBQVksR0FBRyxVQUFVdkMsSUFBVixFQUFnQjtBQUNqQyxNQUFJd3VDLGtCQUFrQixHQUFHeHVDLElBQUksSUFBSSxDQUFqQztBQUNBLFNBQU8sVUFBVXlDLEtBQVYsRUFBaUJnSCxVQUFqQixFQUE2QjFCLElBQTdCLEVBQW1DO0FBQ3hDLFFBQUlwSixDQUFDLEdBQUcvQixVQUFRLENBQUM2RixLQUFELENBQWhCO0FBQ0EsUUFBSXJLLElBQUksR0FBRzRCLGVBQWEsQ0FBQzJFLENBQUQsQ0FBeEI7QUFDQSxRQUFJZ0wsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYTFCLElBQWIsRUFBbUIsQ0FBbkIsQ0FBeEI7QUFDQSxRQUFJOUYsS0FBSyxHQUFHSyxtQkFBaUIsQ0FBQ2xLLElBQUQsQ0FBN0I7QUFDQSxRQUFJbUIsS0FBSixFQUFXdUUsTUFBWDs7QUFDQSxXQUFPbUUsS0FBSyxLQUFLLENBQWpCLEVBQW9CO0FBQ2xCMUksTUFBQUEsS0FBSyxHQUFHbkIsSUFBSSxDQUFDNkosS0FBRCxDQUFaO0FBQ0FuRSxNQUFBQSxNQUFNLEdBQUc2TCxhQUFhLENBQUNwUSxLQUFELEVBQVEwSSxLQUFSLEVBQWV0RCxDQUFmLENBQXRCO0FBQ0EsVUFBSWIsTUFBSixFQUFZLFFBQVFrQyxJQUFSO0FBQ1YsYUFBSyxDQUFMO0FBQVEsaUJBQU96RyxLQUFQO0FBQWM7O0FBQ3RCLGFBQUssQ0FBTDtBQUFRLGlCQUFPMEksS0FBUDtBQUFjO0FBRlo7QUFJYjs7QUFDRCxXQUFPdXNDLGtCQUFrQixHQUFHLENBQUMsQ0FBSixHQUFRMTBDLFNBQWpDO0FBQ0QsR0FmRDtBQWdCRCxDQWxCRDs7SUFvQkE3QixzQkFBQSxHQUFpQjtBQUNmO0FBQ0E7QUFDQXcyQyxFQUFBQSxRQUFRLEVBQUVsc0MsWUFBWSxDQUFDLENBQUQsQ0FIUDtBQUlmO0FBQ0E7QUFDQW1zQyxFQUFBQSxhQUFhLEVBQUVuc0MsWUFBWSxDQUFDLENBQUQ7QUFOWixDQUFqQjs7QUN6QkEsSUFBSTZILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWkyQyxXQUFTLEdBQUdqMkMsc0JBQUEsQ0FBa0QrMUMsUUFBbEU7O0FBQ0EsSUFBSXYrQixrQkFBZ0IsR0FBR3hYLGtCQUF2QjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE9BQVY7QUFBbUJvSyxFQUFBQSxLQUFLLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQzZnQyxFQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQmhsQztBQUFXO0FBQTdCLElBQXVEO0FBQy9ELFdBQU9rbEMsV0FBUyxDQUFDLElBQUQsRUFBT2xsQyxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBaEI7QUFDRDtBQUhpQyxDQUFuQyxDQUFEO0FBTUFvVyxrQkFBZ0IsQ0FBQyxVQUFELENBQWhCOztBQ1pBLElBQUk5RixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrMkMsZ0JBQWMsR0FBR2wyQyxzQkFBQSxDQUFrRGcyQyxhQUF2RTs7QUFDQSxJQUFJeCtCLGtCQUFnQixHQUFHeFgsa0JBQXZCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQm9LLEVBQUFBLEtBQUssRUFBRTtBQUExQixDQUFELEVBQW1DO0FBQ2xDOGdDLEVBQUFBLGFBQWEsRUFBRSxTQUFTQSxhQUFULENBQXVCamxDO0FBQVc7QUFBbEMsSUFBNEQ7QUFDekUsV0FBT21sQyxnQkFBYyxDQUFDLElBQUQsRUFBT25sQyxVQUFQLEVBQW1CbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBekQsQ0FBckI7QUFDRDtBQUhpQyxDQUFuQyxDQUFEO0FBTUFvVyxrQkFBZ0IsQ0FBQyxlQUFELENBQWhCOztBQ2JBLElBQUlsSCxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJc0IsYUFBYSxHQUFHdEIsYUFBcEI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSThGLGFBQWEsR0FBRzlGLGVBQXBCOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7QUFDQSxJQUFJbTJDLFlBQVksR0FBR24yQyxjQUFuQjs7QUFDQSxJQUFJc3hDLDZCQUEyQixHQUFHdHhDLDZCQUFsQzs7QUFFQSxJQUFJK0QsTUFBSSxHQUFHLEdBQUdBLElBQWQ7O0lBRUF4RSxZQUFBLEdBQWlCLFVBQVV3SyxLQUFWLEVBQWlCZ0gsVUFBakIsRUFBNkIxQixJQUE3QixFQUFtQyttQyxtQkFBbkMsRUFBd0Q7QUFDdkUsTUFBSW53QyxDQUFDLEdBQUcvQixVQUFRLENBQUM2RixLQUFELENBQWhCO0FBQ0EsTUFBSXJLLElBQUksR0FBRzRCLGFBQWEsQ0FBQzJFLENBQUQsQ0FBeEI7QUFDQSxNQUFJZ0wsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYTFCLElBQWIsRUFBbUIsQ0FBbkIsQ0FBeEI7QUFDQSxNQUFJdkUsTUFBTSxHQUFHcXJDLFlBQVksQ0FBQyxJQUFELENBQXpCO0FBQ0EsTUFBSXIwQyxNQUFNLEdBQUc4SCxtQkFBaUIsQ0FBQ2xLLElBQUQsQ0FBOUI7QUFDQSxNQUFJNkosS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJa1csV0FBSixFQUFpQjliLEdBQWpCLEVBQXNCOUMsS0FBdEI7O0FBQ0EsU0FBTWlCLE1BQU0sR0FBR3lILEtBQWYsRUFBc0JBLEtBQUssRUFBM0IsRUFBK0I7QUFDN0IxSSxJQUFBQSxLQUFLLEdBQUduQixJQUFJLENBQUM2SixLQUFELENBQVo7QUFDQTVGLElBQUFBLEdBQUcsR0FBR21DLGFBQWEsQ0FBQ21MLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUTBJLEtBQVIsRUFBZXRELENBQWYsQ0FBZCxDQUFuQixDQUY2QjtBQUk3Qjs7QUFDQSxRQUFJdEMsR0FBRyxJQUFJbUgsTUFBWCxFQUFtQi9HLE1BQUksQ0FBQ3ZELElBQUwsQ0FBVXNLLE1BQU0sQ0FBQ25ILEdBQUQsQ0FBaEIsRUFBdUI5QyxLQUF2QixFQUFuQixLQUNLaUssTUFBTSxDQUFDbkgsR0FBRCxDQUFOLEdBQWMsQ0FBQzlDLEtBQUQsQ0FBZDtBQUNOOztBQUNELE1BQUl1MUMsbUJBQUosRUFBeUI7QUFDdkIzMkIsSUFBQUEsV0FBVyxHQUFHMjJCLG1CQUFtQixDQUFDbndDLENBQUQsQ0FBakM7O0FBQ0EsUUFBSXdaLFdBQVcsS0FBS3RULEtBQXBCLEVBQTJCO0FBQ3pCLFdBQUt4SSxHQUFMLElBQVltSCxNQUFaLEVBQW9CQSxNQUFNLENBQUNuSCxHQUFELENBQU4sR0FBYzJ0Qyw2QkFBMkIsQ0FBQzd4QixXQUFELEVBQWMzVSxNQUFNLENBQUNuSCxHQUFELENBQXBCLENBQXpDO0FBQ3JCO0FBQ0Y7O0FBQUMsU0FBT21ILE1BQVA7QUFDSCxDQXRCRDs7QUNUQSxJQUFJNEcsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcTJDLFVBQVEsR0FBR3IyQyxZQUFmOztBQUNBLElBQUlxUSx1QkFBdUIsR0FBR3JRLHlCQUE5Qjs7QUFDQSxJQUFJd1gsa0JBQWdCLEdBQUd4WCxrQkFBdkI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbENvaEMsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJ2bEM7QUFBVztBQUE1QixJQUE2QztBQUNwRCxRQUFJeUosT0FBTyxHQUFHM1ksU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBcEQ7QUFDQSxXQUFPaTFDLFVBQVEsQ0FBQyxJQUFELEVBQU90bEMsVUFBUCxFQUFtQnlKLE9BQW5CLEVBQTRCbkssdUJBQTVCLENBQWY7QUFDRDtBQUppQyxDQUFuQyxDQUFEO0FBT0FtSCxrQkFBZ0IsQ0FBQyxTQUFELENBQWhCOztBQ2ZBLElBQUk5RixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlvTSxPQUFPLEdBQUdwTSxTQUFkOzs7QUFHQSxJQUFJcTRCLFFBQVEsR0FBR3A0QixNQUFNLENBQUNvNEIsUUFBdEI7O0FBRUEsSUFBSWtlLG1CQUFtQixHQUFHLFVBQVV4K0IsS0FBVixFQUFpQnkrQixjQUFqQixFQUFpQztBQUN6RCxNQUFJLENBQUNuZSxRQUFELElBQWEsQ0FBQ2pzQixPQUFPLENBQUMyTCxLQUFELENBQXJCLElBQWdDLENBQUNzZ0IsUUFBUSxDQUFDdGdCLEtBQUQsQ0FBN0MsRUFBc0QsT0FBTyxLQUFQO0FBQ3RELE1BQUl4TyxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUl6SCxNQUFNLEdBQUdpVyxLQUFLLENBQUNqVyxNQUFuQjtBQUNBLE1BQUk4WSxPQUFKOztBQUNBLFNBQU9yUixLQUFLLEdBQUd6SCxNQUFmLEVBQXVCO0FBQ3JCOFksSUFBQUEsT0FBTyxHQUFHN0MsS0FBSyxDQUFDeE8sS0FBSyxFQUFOLENBQWY7O0FBQ0EsUUFBSSxFQUFFLE9BQU9xUixPQUFQLEtBQW1CLFFBQW5CLElBQWdDNDdCLGNBQWMsSUFBSSxPQUFPNTdCLE9BQVAsS0FBbUIsV0FBdkUsQ0FBSixFQUEwRjtBQUN4RixhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUFDLFNBQU85WSxNQUFNLEtBQUssQ0FBbEI7QUFDSCxDQVhEO0FBY0E7OztBQUNBNFAsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsT0FBVjtBQUFtQmdCLEVBQUFBLElBQUksRUFBRTtBQUF6QixDQUFELEVBQWtDO0FBQ2pDMnFDLEVBQUFBLGdCQUFnQixFQUFFLFNBQVNBLGdCQUFULENBQTBCNTFDLEtBQTFCLEVBQWlDO0FBQ2pELFFBQUksQ0FBQzAxQyxtQkFBbUIsQ0FBQzExQyxLQUFELEVBQVEsSUFBUixDQUF4QixFQUF1QyxPQUFPLEtBQVA7QUFDdkMsUUFBSTByQixHQUFHLEdBQUcxckIsS0FBSyxDQUFDMHJCLEdBQWhCO0FBQ0EsUUFBSUEsR0FBRyxDQUFDenFCLE1BQUosS0FBZWpCLEtBQUssQ0FBQ2lCLE1BQXJCLElBQStCLENBQUN5MEMsbUJBQW1CLENBQUNocUIsR0FBRCxFQUFNLEtBQU4sQ0FBdkQsRUFBcUUsT0FBTyxLQUFQO0FBQ3JFLFdBQU8sSUFBUDtBQUNEO0FBTmdDLENBQWxDLENBQUQ7O0FDcEJBLElBQUk5bUIsYUFBVyxHQUFHekYsV0FBbEI7O0FBQ0EsSUFBSXdYLGtCQUFnQixHQUFHeFgsa0JBQXZCOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUk0SixtQkFBaUIsR0FBRzVKLG1CQUF4Qjs7QUFDQSxJQUFJRSxnQkFBYyxHQUFHRixvQkFBQSxDQUErQ2tHLENBQXBFO0FBR0E7OztBQUNBLElBQUlULGFBQVcsSUFBSSxFQUFFLGVBQWUsRUFBakIsQ0FBbkIsRUFBeUM7QUFDdkN2RixFQUFBQSxnQkFBYyxDQUFDaU0sS0FBSyxDQUFDbkUsU0FBUCxFQUFrQixXQUFsQixFQUErQjtBQUMzQ2xILElBQUFBLFlBQVksRUFBRSxJQUQ2QjtBQUUzQ1gsSUFBQUEsR0FBRyxFQUFFLFNBQVNpakMsU0FBVCxHQUFxQjtBQUN4QixVQUFJbjlCLENBQUMsR0FBRy9CLFVBQVEsQ0FBQyxJQUFELENBQWhCO0FBQ0EsVUFBSXdULEdBQUcsR0FBRzlOLG1CQUFpQixDQUFDM0QsQ0FBRCxDQUEzQjtBQUNBLGFBQU95UixHQUFHLElBQUksQ0FBUCxHQUFXLENBQVgsR0FBZUEsR0FBRyxHQUFHLENBQTVCO0FBQ0Q7QUFOMEMsR0FBL0IsQ0FBZDtBQVNBRixFQUFBQSxrQkFBZ0IsQ0FBQyxXQUFELENBQWhCO0FBQ0Q7O0FDbkJELElBQUkvUixhQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJd1gsa0JBQWdCLEdBQUd4WCxrQkFBdkI7O0FBQ0EsSUFBSWtFLFVBQVEsR0FBR2xFLFVBQWY7O0FBQ0EsSUFBSTRKLG1CQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlFLGdCQUFjLEdBQUdGLG9CQUFBLENBQStDa0csQ0FBcEU7QUFHQTs7O0FBQ0EsSUFBSVQsYUFBVyxJQUFJLEVBQUUsY0FBYyxFQUFoQixDQUFuQixFQUF3QztBQUN0Q3ZGLEVBQUFBLGdCQUFjLENBQUNpTSxLQUFLLENBQUNuRSxTQUFQLEVBQWtCLFVBQWxCLEVBQThCO0FBQzFDbEgsSUFBQUEsWUFBWSxFQUFFLElBRDRCO0FBRTFDWCxJQUFBQSxHQUFHLEVBQUUsU0FBU3UyQyxRQUFULEdBQW9CO0FBQ3ZCLFVBQUl6d0MsQ0FBQyxHQUFHL0IsVUFBUSxDQUFDLElBQUQsQ0FBaEI7QUFDQSxVQUFJd1QsR0FBRyxHQUFHOU4sbUJBQWlCLENBQUMzRCxDQUFELENBQTNCO0FBQ0EsYUFBT3lSLEdBQUcsSUFBSSxDQUFQLEdBQVd0VyxTQUFYLEdBQXVCNkUsQ0FBQyxDQUFDeVIsR0FBRyxHQUFHLENBQVAsQ0FBL0I7QUFDRCxLQU55QztBQU8xQ3hRLElBQUFBLEdBQUcsRUFBRSxTQUFTd3ZDLFFBQVQsQ0FBa0I3MUMsS0FBbEIsRUFBeUI7QUFDNUIsVUFBSW9GLENBQUMsR0FBRy9CLFVBQVEsQ0FBQyxJQUFELENBQWhCO0FBQ0EsVUFBSXdULEdBQUcsR0FBRzlOLG1CQUFpQixDQUFDM0QsQ0FBRCxDQUEzQjtBQUNBLGFBQU9BLENBQUMsQ0FBQ3lSLEdBQUcsSUFBSSxDQUFQLEdBQVcsQ0FBWCxHQUFlQSxHQUFHLEdBQUcsQ0FBdEIsQ0FBRCxHQUE0QjdXLEtBQW5DO0FBQ0Q7QUFYeUMsR0FBOUIsQ0FBZDtBQWNBMlcsRUFBQUEsa0JBQWdCLENBQUMsVUFBRCxDQUFoQjtBQUNEOztBQ3hCRCxJQUFJdFUsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSTRKLGlCQUFpQixHQUFHNUosbUJBQXhCOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJdVEsa0JBQWtCLEdBQUd2USxvQkFBekI7O0FBRUEsSUFBSStELE1BQUksR0FBRyxHQUFHQSxJQUFkO0FBR0E7O0lBQ0F4RSxlQUFBLEdBQWlCLFNBQVNvM0MsUUFBVCxDQUFrQkMsUUFBbEIsRUFBNEI7QUFDM0MsTUFBSXZuQyxJQUFJLEdBQUduTCxVQUFRLENBQUMsSUFBRCxDQUFuQjtBQUNBLE1BQUlwQyxNQUFNLEdBQUc4SCxpQkFBaUIsQ0FBQ3lGLElBQUQsQ0FBOUI7QUFDQSxNQUFJakssTUFBTSxHQUFHbUwsa0JBQWtCLENBQUNsQixJQUFELEVBQU8sQ0FBUCxDQUEvQjtBQUNBLE1BQUk0aEIsR0FBRyxHQUFHbHZCLFlBQVUsQ0FBQyxLQUFELENBQXBCO0FBQ0EsTUFBSW9QLEdBQUcsR0FBRyxJQUFJOGYsR0FBSixFQUFWO0FBQ0EsTUFBSTRsQixnQkFBSixFQUFzQnR0QyxLQUF0QixFQUE2QnV0QyxJQUE3QixFQUFtQ256QyxHQUFuQztBQUNBLE1BQUlpekMsUUFBUSxJQUFJLElBQWhCLEVBQXNCQyxnQkFBZ0IsR0FBRzN6QyxXQUFTLENBQUMwekMsUUFBRCxDQUE1QixDQUF0QixLQUNLQyxnQkFBZ0IsR0FBRyxVQUFVaDJDLEtBQVYsRUFBaUI7QUFDdkMsV0FBT0EsS0FBUDtBQUNELEdBRkk7O0FBR0wsT0FBSzBJLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUd6SCxNQUF4QixFQUFnQ3lILEtBQUssRUFBckMsRUFBeUM7QUFDdkN1dEMsSUFBQUEsSUFBSSxHQUFHem5DLElBQUksQ0FBQzlGLEtBQUQsQ0FBWDtBQUNBNUYsSUFBQUEsR0FBRyxHQUFHa3pDLGdCQUFnQixDQUFDQyxJQUFELENBQXRCO0FBQ0EsUUFBSSxDQUFDM2xDLEdBQUcsQ0FBQ2hLLEdBQUosQ0FBUXhELEdBQVIsQ0FBTCxFQUFtQndOLEdBQUcsQ0FBQ2pLLEdBQUosQ0FBUXZELEdBQVIsRUFBYW16QyxJQUFiO0FBQ3BCOztBQUNEM2xDLEVBQUFBLEdBQUcsQ0FBQ0QsT0FBSixDQUFZLFVBQVVyUSxLQUFWLEVBQWlCO0FBQzNCa0QsSUFBQUEsTUFBSSxDQUFDdkQsSUFBTCxDQUFVNEUsTUFBVixFQUFrQnZFLEtBQWxCO0FBQ0QsR0FGRDtBQUdBLFNBQU91RSxNQUFQO0FBQ0QsQ0FwQkQ7O0FDVkEsSUFBSXNNLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXdYLGdCQUFnQixHQUFHeFgsa0JBQXZCOztBQUNBLElBQUkyMkMsUUFBUSxHQUFHMzJDLGVBQWY7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxPQUFWO0FBQW1Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbEN5aEMsRUFBQUEsUUFBUSxFQUFFQTtBQUR3QixDQUFuQyxDQUFEO0FBSUFuL0IsZ0JBQWdCLENBQUMsVUFBRCxDQUFoQjs7QUNUQSxJQUFJOUYsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJNmpCLFlBQVUsR0FBRzdqQixZQUFqQjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSW9FLFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUl1MEMsd0JBQXNCLEdBQUd2MEMsc0JBQTdCOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBRUEsSUFBSXFNLGVBQWEsR0FBR3BILGlCQUFlLENBQUMsYUFBRCxDQUFuQzs7QUFFQSxJQUFJOHhDLHdCQUF3QixHQUFHLFNBQVMxQyxhQUFULEdBQXlCO0FBQ3REeHdCLEVBQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU9rekIsd0JBQVAsQ0FBVjtBQUNELENBRkQ7O0FBSUFBLHdCQUF3QixDQUFDL3VDLFNBQXpCLEdBQXFDdXNDLHdCQUFyQzs7QUFFQSxJQUFJLENBQUNud0MsUUFBTSxDQUFDbXdDLHdCQUFELEVBQXlCbG9DLGVBQXpCLENBQVgsRUFBb0Q7QUFDbER2RixFQUFBQSw2QkFBMkIsQ0FBQ3l0Qyx3QkFBRCxFQUF5QmxvQyxlQUF6QixFQUF3QyxlQUF4QyxDQUEzQjtBQUNEOztBQUVELElBQWUsQ0FBQ2pJLFFBQU0sQ0FBQ213Qyx3QkFBRCxFQUF5QixhQUF6QixDQUFsQixJQUE2REEsd0JBQXNCLENBQUNua0MsV0FBdkIsS0FBdUNuUSxNQUF4RyxFQUFnSDtBQUM5RzZHLEVBQUFBLDZCQUEyQixDQUFDeXRDLHdCQUFELEVBQXlCLGFBQXpCLEVBQXdDd0Msd0JBQXhDLENBQTNCO0FBQ0Q7O0FBRURybEMsSUFBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLEVBQUFBLE1BQU0sRUFBRW05QjtBQUF4QixDQUFELEVBQW9DO0FBQ25DZ0wsRUFBQUEsYUFBYSxFQUFFMEM7QUFEb0IsQ0FBcEMsQ0FBRDs7QUN6QkEsSUFBSTd6QyxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsV0FBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNk8sUUFBTSxHQUFHN08sY0FBYjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSTRqQixhQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUkrRSxXQUFTLEdBQUcvRSxXQUFoQjs7QUFDQSxJQUFJdTBDLHdCQUFzQixHQUFHdjBDLHNCQUE3Qjs7QUFFQSxJQUFJKzRCLFNBQU8sR0FBR2gzQixZQUFVLENBQUMsU0FBRCxDQUF4QjtBQUVBLElBQUlvUSxrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDbEksR0FBM0M7QUFFQSxJQUFJa00sZUFBYSxHQUFHcEgsaUJBQWUsQ0FBQyxhQUFELENBQW5DOztJQUVBMUYsd0JBQUEsR0FBaUIsVUFBVXkzQyxXQUFWLEVBQXVCMWdDLFdBQXZCLEVBQW9DO0FBQ25ELE1BQUkyZ0Msa0JBQWtCLEdBQUcsU0FBUzVDLGFBQVQsQ0FBdUI5c0MsS0FBdkIsRUFBOEI7QUFDckRBLElBQUFBLEtBQUssQ0FBQ2tQLElBQU4sR0FBYXZULFdBQVMsQ0FBQ3FFLEtBQUssQ0FBQ3pFLFFBQU4sQ0FBZTJULElBQWhCLENBQXRCO0FBQ0FsUCxJQUFBQSxLQUFLLENBQUN1UCxJQUFOLEdBQWEsS0FBYjtBQUNBdlAsSUFBQUEsS0FBSyxDQUFDMnZDLGNBQU4sR0FBdUIsQ0FBQzVnQyxXQUF4QjtBQUNBbkUsSUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPNUssS0FBUCxDQUFoQjtBQUNELEdBTEQ7O0FBT0EwdkMsRUFBQUEsa0JBQWtCLENBQUNqdkMsU0FBbkIsR0FBK0I0YixhQUFXLENBQUMvVSxRQUFNLENBQUMwbEMsd0JBQUQsQ0FBUCxFQUFpQztBQUN6RTk5QixJQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFja0MsR0FBZCxFQUFtQjtBQUN2QixVQUFJdEosSUFBSSxHQUFHLElBQVg7QUFDQSxVQUFJOG5DLFdBQVcsR0FBRyxDQUFDLENBQUN0MUMsU0FBUyxDQUFDQyxNQUE5QjtBQUNBLGFBQU8sSUFBSWkzQixTQUFKLENBQVksVUFBVWtELE9BQVYsRUFBbUI7QUFDcEMsWUFBSTEwQixLQUFLLEdBQUdnQixrQkFBZ0IsQ0FBQzhHLElBQUQsQ0FBNUI7QUFDQSxZQUFJOEUsSUFBSSxHQUFHZ2pDLFdBQVcsR0FBRyxDQUFDNXZDLEtBQUssQ0FBQzJ2QyxjQUFOLEdBQXVCOTFDLFNBQXZCLEdBQW1DdVgsR0FBcEMsQ0FBSCxHQUE4Q3JDLFdBQVcsR0FBRyxFQUFILEdBQVEsQ0FBQ2xWLFNBQUQsQ0FBdkY7QUFDQW1HLFFBQUFBLEtBQUssQ0FBQzJ2QyxjQUFOLEdBQXVCLEtBQXZCO0FBQ0FqYixRQUFBQSxPQUFPLENBQUMxMEIsS0FBSyxDQUFDdVAsSUFBTixHQUFhO0FBQUVBLFVBQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxVQUFBQSxLQUFLLEVBQUVPO0FBQXJCLFNBQWIsR0FBZ0QrRSxXQUFRLENBQUM2d0MsV0FBVyxDQUFDeDJDLElBQVosQ0FBaUIrRyxLQUFqQixFQUF3Qnd4QixTQUF4QixFQUFpQzVrQixJQUFqQyxDQUFELENBQXpELENBQVA7QUFDRCxPQUxNLENBQVA7QUFNRCxLQVZ3RTtBQVd6RSxjQUFVLFVBQVV0VCxLQUFWLEVBQWlCO0FBQ3pCLFVBQUl3TyxJQUFJLEdBQUcsSUFBWDtBQUNBLGFBQU8sSUFBSTBwQixTQUFKLENBQVksVUFBVWtELE9BQVYsRUFBbUJHLE1BQW5CLEVBQTJCO0FBQzVDLFlBQUk3MEIsS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUM4RyxJQUFELENBQTVCO0FBQ0EsWUFBSXZNLFFBQVEsR0FBR3lFLEtBQUssQ0FBQ3pFLFFBQXJCO0FBQ0F5RSxRQUFBQSxLQUFLLENBQUN1UCxJQUFOLEdBQWEsSUFBYjtBQUNBLFlBQUlzZ0MsUUFBUSxHQUFHcnlDLFdBQVMsQ0FBQ2pDLFFBQUQsRUFBVyxRQUFYLENBQXhCO0FBQ0EsWUFBSXMwQyxRQUFRLEtBQUtoMkMsU0FBakIsRUFBNEIsT0FBTzY2QixPQUFPLENBQUM7QUFBRW5sQixVQUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjalcsVUFBQUEsS0FBSyxFQUFFQTtBQUFyQixTQUFELENBQWQ7QUFDNUJrNEIsUUFBQUEsU0FBTyxDQUFDa0QsT0FBUixDQUFnQm1iLFFBQVEsQ0FBQzUyQyxJQUFULENBQWNzQyxRQUFkLEVBQXdCakMsS0FBeEIsQ0FBaEIsRUFBZ0Q2NkIsSUFBaEQsQ0FBcUQsVUFBVXQyQixNQUFWLEVBQWtCO0FBQ3JFZSxVQUFBQSxXQUFRLENBQUNmLE1BQUQsQ0FBUjtBQUNBNjJCLFVBQUFBLE9BQU8sQ0FBQztBQUFFbmxCLFlBQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxZQUFBQSxLQUFLLEVBQUVBO0FBQXJCLFdBQUQsQ0FBUDtBQUNELFNBSEQsRUFHR3U3QixNQUhIO0FBSUQsT0FWTSxDQUFQO0FBV0QsS0F4QndFO0FBeUJ6RSxhQUFTLFVBQVV2N0IsS0FBVixFQUFpQjtBQUN4QixVQUFJd08sSUFBSSxHQUFHLElBQVg7QUFDQSxhQUFPLElBQUkwcEIsU0FBSixDQUFZLFVBQVVrRCxPQUFWLEVBQW1CRyxNQUFuQixFQUEyQjtBQUM1QyxZQUFJNzBCLEtBQUssR0FBR2dCLGtCQUFnQixDQUFDOEcsSUFBRCxDQUE1QjtBQUNBLFlBQUl2TSxRQUFRLEdBQUd5RSxLQUFLLENBQUN6RSxRQUFyQjtBQUNBeUUsUUFBQUEsS0FBSyxDQUFDdVAsSUFBTixHQUFhLElBQWI7QUFDQSxZQUFJdWdDLE9BQU8sR0FBR3R5QyxXQUFTLENBQUNqQyxRQUFELEVBQVcsT0FBWCxDQUF2QjtBQUNBLFlBQUl1MEMsT0FBTyxLQUFLajJDLFNBQWhCLEVBQTJCLE9BQU9nN0IsTUFBTSxDQUFDdjdCLEtBQUQsQ0FBYjtBQUMzQm83QixRQUFBQSxPQUFPLENBQUNvYixPQUFPLENBQUM3MkMsSUFBUixDQUFhc0MsUUFBYixFQUF1QmpDLEtBQXZCLENBQUQsQ0FBUDtBQUNELE9BUE0sQ0FBUDtBQVFEO0FBbkN3RSxHQUFqQyxDQUExQzs7QUFzQ0EsTUFBSSxDQUFDeVYsV0FBTCxFQUFrQjtBQUNoQnhQLElBQUFBLDZCQUEyQixDQUFDbXdDLGtCQUFrQixDQUFDanZDLFNBQXBCLEVBQStCcUUsZUFBL0IsRUFBOEMsV0FBOUMsQ0FBM0I7QUFDRDs7QUFFRCxTQUFPNHFDLGtCQUFQO0FBQ0QsQ0FuREQ7O0FDakJBLElBQUl2bEMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJczNDLDBCQUF3QixHQUFHdDNDLHdCQUEvQjs7QUFFQSxJQUFJaTNDLG9CQUFrQixHQUFHSywwQkFBd0IsQ0FBQyxVQUFVdmUsT0FBVixFQUFtQjVrQixJQUFuQixFQUF5QjtBQUN6RSxNQUFJNU0sS0FBSyxHQUFHLElBQVo7QUFDQSxNQUFJekUsUUFBUSxHQUFHeUUsS0FBSyxDQUFDekUsUUFBckI7QUFFQSxTQUFPaTJCLE9BQU8sQ0FBQ2tELE9BQVIsQ0FBZ0I5MUIsVUFBUSxDQUFDb0IsS0FBSyxDQUFDa1AsSUFBTixDQUFXakgsS0FBWCxDQUFpQjFNLFFBQWpCLEVBQTJCcVIsSUFBM0IsQ0FBRCxDQUF4QixFQUE0RHVuQixJQUE1RCxDQUFpRSxVQUFVaGxCLElBQVYsRUFBZ0I7QUFDdEYsUUFBSXZRLFVBQVEsQ0FBQ3VRLElBQUQsQ0FBUixDQUFlSSxJQUFuQixFQUF5QjtBQUN2QnZQLE1BQUFBLEtBQUssQ0FBQ3VQLElBQU4sR0FBYSxJQUFiO0FBQ0EsYUFBTztBQUFFQSxRQUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjalcsUUFBQUEsS0FBSyxFQUFFTztBQUFyQixPQUFQO0FBQ0Q7O0FBQ0QsV0FBTztBQUFFMFYsTUFBQUEsSUFBSSxFQUFFLEtBQVI7QUFBZWpXLE1BQUFBLEtBQUssRUFBRSxDQUFDMEcsS0FBSyxDQUFDZ0MsS0FBTixFQUFELEVBQWdCbU4sSUFBSSxDQUFDN1YsS0FBckI7QUFBdEIsS0FBUDtBQUNELEdBTk0sQ0FBUDtBQU9ELENBWGdELENBQWpEO0FBYUE2USxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxlQUFWO0FBQTJCb0ssRUFBQUEsS0FBSyxFQUFFLElBQWxDO0FBQXdDK3JCLEVBQUFBLElBQUksRUFBRTtBQUE5QyxDQUFELEVBQXVEO0FBQ3REc1csRUFBQUEsY0FBYyxFQUFFLFNBQVNBLGNBQVQsR0FBMEI7QUFDeEMsV0FBTyxJQUFJTixvQkFBSixDQUF1QjtBQUM1Qm4wQyxNQUFBQSxRQUFRLEVBQUVxRCxVQUFRLENBQUMsSUFBRCxDQURVO0FBRTVCb0QsTUFBQUEsS0FBSyxFQUFFO0FBRnFCLEtBQXZCLENBQVA7QUFJRDtBQU5xRCxDQUF2RCxDQUFEOztBQ2pCQSxJQUFJbUksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOHZDLG1CQUFpQixHQUFHOXZDLG1CQUF4Qjs7QUFDQSxJQUFJczNDLDBCQUF3QixHQUFHdDNDLHdCQUEvQjs7QUFFQSxJQUFJaTNDLG9CQUFrQixHQUFHSywwQkFBd0IsQ0FBQyxVQUFVdmUsT0FBVixFQUFtQjVrQixJQUFuQixFQUF5QjtBQUN6RSxNQUFJNU0sS0FBSyxHQUFHLElBQVo7QUFFQSxTQUFPLElBQUl3eEIsT0FBSixDQUFZLFVBQVVrRCxPQUFWLEVBQW1CRyxNQUFuQixFQUEyQjtBQUM1QyxRQUFJZ1osSUFBSSxHQUFHLFlBQVk7QUFDckIsVUFBSTtBQUNGcmMsUUFBQUEsT0FBTyxDQUFDa0QsT0FBUixDQUNFOTFCLFVBQVEsQ0FBQ29CLEtBQUssQ0FBQ2tQLElBQU4sQ0FBV2pILEtBQVgsQ0FBaUJqSSxLQUFLLENBQUN6RSxRQUF2QixFQUFpQ3lFLEtBQUssQ0FBQ2c1QixTQUFOLEdBQWtCLEVBQWxCLEdBQXVCcHNCLElBQXhELENBQUQsQ0FEVixFQUVFdW5CLElBRkYsQ0FFTyxVQUFVaGxCLElBQVYsRUFBZ0I7QUFDckIsY0FBSTtBQUNGLGdCQUFJdlEsVUFBUSxDQUFDdVEsSUFBRCxDQUFSLENBQWVJLElBQW5CLEVBQXlCO0FBQ3ZCdlAsY0FBQUEsS0FBSyxDQUFDdVAsSUFBTixHQUFhLElBQWI7QUFDQW1sQixjQUFBQSxPQUFPLENBQUM7QUFBRW5sQixnQkFBQUEsSUFBSSxFQUFFLElBQVI7QUFBY2pXLGdCQUFBQSxLQUFLLEVBQUVPO0FBQXJCLGVBQUQsQ0FBUDtBQUNELGFBSEQsTUFHTyxJQUFJbUcsS0FBSyxDQUFDZzVCLFNBQVYsRUFBcUI7QUFDMUJoNUIsY0FBQUEsS0FBSyxDQUFDZzVCLFNBQU47QUFDQTZVLGNBQUFBLElBQUk7QUFDTCxhQUhNLE1BR0FuWixPQUFPLENBQUM7QUFBRW5sQixjQUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlalcsY0FBQUEsS0FBSyxFQUFFNlYsSUFBSSxDQUFDN1Y7QUFBM0IsYUFBRCxDQUFQO0FBQ1IsV0FSRCxDQVFFLE9BQU8yMkMsR0FBUCxFQUFZO0FBQUVwYixZQUFBQSxNQUFNLENBQUNvYixHQUFELENBQU47QUFBYztBQUMvQixTQVpELEVBWUdwYixNQVpIO0FBYUQsT0FkRCxDQWNFLE9BQU90OEIsS0FBUCxFQUFjO0FBQUVzOEIsUUFBQUEsTUFBTSxDQUFDdDhCLEtBQUQsQ0FBTjtBQUFnQjtBQUNuQyxLQWhCRDs7QUFrQkFzMUMsSUFBQUEsSUFBSTtBQUNMLEdBcEJNLENBQVA7QUFxQkQsQ0F4QmdELENBQWpEO0FBMEJBMWpDLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdER3VyxFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjdkssS0FBZCxFQUFxQjtBQUN6QixXQUFPLElBQUkrSixvQkFBSixDQUF1QjtBQUM1Qm4wQyxNQUFBQSxRQUFRLEVBQUVxRCxVQUFRLENBQUMsSUFBRCxDQURVO0FBRTVCbzZCLE1BQUFBLFNBQVMsRUFBRXVQLG1CQUFpQixDQUFDNUMsS0FBRDtBQUZBLEtBQXZCLENBQVA7QUFJRDtBQU5xRCxDQUF2RCxDQUFEOztBQy9CQSxJQUFJeDdCLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNaLE1BQU0sR0FBR3RaLHNCQUFBLENBQWlEc1IsS0FBOUQ7O0FBRUFJLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdEQzdkIsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZTlOLEVBQWYsRUFBbUI7QUFDeEIsV0FBTzhWLE1BQU0sQ0FBQyxJQUFELEVBQU85VixFQUFQLENBQWI7QUFDRDtBQUhxRCxDQUF2RCxDQUFEOztBQ0hBLElBQUlrTyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJczNDLDBCQUF3QixHQUFHdDNDLHdCQUEvQjs7QUFFQSxJQUFJaTNDLG9CQUFrQixHQUFHSywwQkFBd0IsQ0FBQyxVQUFVdmUsT0FBVixFQUFtQjVrQixJQUFuQixFQUF5QjtBQUN6RSxNQUFJNU0sS0FBSyxHQUFHLElBQVo7QUFDQSxNQUFJbXdDLFFBQVEsR0FBR253QyxLQUFLLENBQUNtd0MsUUFBckI7QUFFQSxTQUFPLElBQUkzZSxPQUFKLENBQVksVUFBVWtELE9BQVYsRUFBbUJHLE1BQW5CLEVBQTJCO0FBQzVDLFFBQUlnWixJQUFJLEdBQUcsWUFBWTtBQUNyQixVQUFJO0FBQ0ZyYyxRQUFBQSxPQUFPLENBQUNrRCxPQUFSLENBQWdCOTFCLFVBQVEsQ0FBQ29CLEtBQUssQ0FBQ2tQLElBQU4sQ0FBV2pILEtBQVgsQ0FBaUJqSSxLQUFLLENBQUN6RSxRQUF2QixFQUFpQ3FSLElBQWpDLENBQUQsQ0FBeEIsRUFBa0V1bkIsSUFBbEUsQ0FBdUUsVUFBVWhsQixJQUFWLEVBQWdCO0FBQ3JGLGNBQUk7QUFDRixnQkFBSXZRLFVBQVEsQ0FBQ3VRLElBQUQsQ0FBUixDQUFlSSxJQUFuQixFQUF5QjtBQUN2QnZQLGNBQUFBLEtBQUssQ0FBQ3VQLElBQU4sR0FBYSxJQUFiO0FBQ0FtbEIsY0FBQUEsT0FBTyxDQUFDO0FBQUVubEIsZ0JBQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxnQkFBQUEsS0FBSyxFQUFFTztBQUFyQixlQUFELENBQVA7QUFDRCxhQUhELE1BR087QUFDTCxrQkFBSVAsS0FBSyxHQUFHNlYsSUFBSSxDQUFDN1YsS0FBakI7QUFDQWs0QixjQUFBQSxPQUFPLENBQUNrRCxPQUFSLENBQWdCeWIsUUFBUSxDQUFDNzJDLEtBQUQsQ0FBeEIsRUFBaUM2NkIsSUFBakMsQ0FBc0MsVUFBVWljLFFBQVYsRUFBb0I7QUFDeERBLGdCQUFBQSxRQUFRLEdBQUcxYixPQUFPLENBQUM7QUFBRW5sQixrQkFBQUEsSUFBSSxFQUFFLEtBQVI7QUFBZWpXLGtCQUFBQSxLQUFLLEVBQUVBO0FBQXRCLGlCQUFELENBQVYsR0FBNEN1MEMsSUFBSSxFQUF4RDtBQUNELGVBRkQsRUFFR2haLE1BRkg7QUFHRDtBQUNGLFdBVkQsQ0FVRSxPQUFPb2IsR0FBUCxFQUFZO0FBQUVwYixZQUFBQSxNQUFNLENBQUNvYixHQUFELENBQU47QUFBYztBQUMvQixTQVpELEVBWUdwYixNQVpIO0FBYUQsT0FkRCxDQWNFLE9BQU90OEIsS0FBUCxFQUFjO0FBQUVzOEIsUUFBQUEsTUFBTSxDQUFDdDhCLEtBQUQsQ0FBTjtBQUFnQjtBQUNuQyxLQWhCRDs7QUFrQkFzMUMsSUFBQUEsSUFBSTtBQUNMLEdBcEJNLENBQVA7QUFxQkQsQ0F6QmdELENBQWpEO0FBMkJBMWpDLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdEQ3dkIsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JzbUMsUUFBaEIsRUFBMEI7QUFDaEMsV0FBTyxJQUFJVCxvQkFBSixDQUF1QjtBQUM1Qm4wQyxNQUFBQSxRQUFRLEVBQUVxRCxVQUFRLENBQUMsSUFBRCxDQURVO0FBRTVCdXhDLE1BQUFBLFFBQVEsRUFBRXgwQyxXQUFTLENBQUN3MEMsUUFBRDtBQUZTLEtBQXZCLENBQVA7QUFJRDtBQU5xRCxDQUF2RCxDQUFEOztBQ2hDQSxJQUFJaG1DLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSThaLEtBQUssR0FBRzlaLHNCQUFBLENBQWlEdVIsSUFBN0Q7O0FBRUFHLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdEQxdkIsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBYy9OLEVBQWQsRUFBa0I7QUFDdEIsV0FBT3NXLEtBQUssQ0FBQyxJQUFELEVBQU90VyxFQUFQLENBQVo7QUFDRDtBQUhxRCxDQUF2RCxDQUFEOztBQ0hBLElBQUlrTyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJczNDLDBCQUF3QixHQUFHdDNDLHdCQUEvQjs7QUFDQSxJQUFJczFDLGtCQUFnQixHQUFHdDFDLGtCQUF2Qjs7QUFFQSxJQUFJaTNDLG9CQUFrQixHQUFHSywwQkFBd0IsQ0FBQyxVQUFVdmUsT0FBVixFQUFtQjtBQUNuRSxNQUFJeHhCLEtBQUssR0FBRyxJQUFaO0FBQ0EsTUFBSWdULE1BQU0sR0FBR2hULEtBQUssQ0FBQ2dULE1BQW5CO0FBQ0EsTUFBSXE5QixhQUFKO0FBRUEsU0FBTyxJQUFJN2UsT0FBSixDQUFZLFVBQVVrRCxPQUFWLEVBQW1CRyxNQUFuQixFQUEyQjtBQUM1QyxRQUFJeWIsU0FBUyxHQUFHLFlBQVk7QUFDMUIsVUFBSTtBQUNGOWUsUUFBQUEsT0FBTyxDQUFDa0QsT0FBUixDQUFnQjkxQixVQUFRLENBQUNvQixLQUFLLENBQUNrUCxJQUFOLENBQVdqVyxJQUFYLENBQWdCK0csS0FBSyxDQUFDekUsUUFBdEIsQ0FBRCxDQUF4QixFQUEyRDQ0QixJQUEzRCxDQUFnRSxVQUFVaGxCLElBQVYsRUFBZ0I7QUFDOUUsY0FBSTtBQUNGLGdCQUFJdlEsVUFBUSxDQUFDdVEsSUFBRCxDQUFSLENBQWVJLElBQW5CLEVBQXlCO0FBQ3ZCdlAsY0FBQUEsS0FBSyxDQUFDdVAsSUFBTixHQUFhLElBQWI7QUFDQW1sQixjQUFBQSxPQUFPLENBQUM7QUFBRW5sQixnQkFBQUEsSUFBSSxFQUFFLElBQVI7QUFBY2pXLGdCQUFBQSxLQUFLLEVBQUVPO0FBQXJCLGVBQUQsQ0FBUDtBQUNELGFBSEQsTUFHTztBQUNMMjNCLGNBQUFBLE9BQU8sQ0FBQ2tELE9BQVIsQ0FBZ0IxaEIsTUFBTSxDQUFDN0QsSUFBSSxDQUFDN1YsS0FBTixDQUF0QixFQUFvQzY2QixJQUFwQyxDQUF5QyxVQUFVb2MsTUFBVixFQUFrQjtBQUN6RCxvQkFBSTtBQUNGdndDLGtCQUFBQSxLQUFLLENBQUNxd0MsYUFBTixHQUFzQkEsYUFBYSxHQUFHdEMsa0JBQWdCLENBQUN3QyxNQUFELENBQXREO0FBQ0F2d0Msa0JBQUFBLEtBQUssQ0FBQ3d3QyxTQUFOLEdBQWtCNzBDLFdBQVMsQ0FBQzAwQyxhQUFhLENBQUNuaEMsSUFBZixDQUEzQjtBQUNBLHlCQUFPdWhDLFNBQVMsRUFBaEI7QUFDRCxpQkFKRCxDQUlFLE9BQU83USxNQUFQLEVBQWU7QUFBRS9LLGtCQUFBQSxNQUFNLENBQUMrSyxNQUFELENBQU47QUFBaUI7QUFDckMsZUFORCxFQU1HL0ssTUFOSDtBQU9EO0FBQ0YsV0FiRCxDQWFFLE9BQU84SyxNQUFQLEVBQWU7QUFBRTlLLFlBQUFBLE1BQU0sQ0FBQzhLLE1BQUQsQ0FBTjtBQUFpQjtBQUNyQyxTQWZELEVBZUc5SyxNQWZIO0FBZ0JELE9BakJELENBaUJFLE9BQU90OEIsS0FBUCxFQUFjO0FBQUVzOEIsUUFBQUEsTUFBTSxDQUFDdDhCLEtBQUQsQ0FBTjtBQUFnQjtBQUNuQyxLQW5CRDs7QUFxQkEsUUFBSWs0QyxTQUFTLEdBQUcsWUFBWTtBQUMxQixVQUFJSixhQUFhLEdBQUdyd0MsS0FBSyxDQUFDcXdDLGFBQTFCLEVBQXlDO0FBQ3ZDLFlBQUk7QUFDRjdlLFVBQUFBLE9BQU8sQ0FBQ2tELE9BQVIsQ0FBZ0I5MUIsVUFBUSxDQUFDb0IsS0FBSyxDQUFDd3dDLFNBQU4sQ0FBZ0J2M0MsSUFBaEIsQ0FBcUJvM0MsYUFBckIsQ0FBRCxDQUF4QixFQUErRGxjLElBQS9ELENBQW9FLFVBQVV0MkIsTUFBVixFQUFrQjtBQUNwRixnQkFBSTtBQUNGLGtCQUFJZSxVQUFRLENBQUNmLE1BQUQsQ0FBUixDQUFpQjBSLElBQXJCLEVBQTJCO0FBQ3pCdlAsZ0JBQUFBLEtBQUssQ0FBQ3F3QyxhQUFOLEdBQXNCcndDLEtBQUssQ0FBQ3d3QyxTQUFOLEdBQWtCLElBQXhDO0FBQ0FGLGdCQUFBQSxTQUFTO0FBQ1YsZUFIRCxNQUdPNWIsT0FBTyxDQUFDO0FBQUVubEIsZ0JBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVqVyxnQkFBQUEsS0FBSyxFQUFFdUUsTUFBTSxDQUFDdkU7QUFBN0IsZUFBRCxDQUFQO0FBQ1IsYUFMRCxDQUtFLE9BQU9xbUMsTUFBUCxFQUFlO0FBQUU5SyxjQUFBQSxNQUFNLENBQUM4SyxNQUFELENBQU47QUFBaUI7QUFDckMsV0FQRCxFQU9HOUssTUFQSDtBQVFELFNBVEQsQ0FTRSxPQUFPdDhCLEtBQVAsRUFBYztBQUFFczhCLFVBQUFBLE1BQU0sQ0FBQ3Q4QixLQUFELENBQU47QUFBZ0I7QUFDbkMsT0FYRCxNQVdPKzNDLFNBQVM7QUFDakIsS0FiRDs7QUFlQUcsSUFBQUEsU0FBUztBQUNWLEdBdENNLENBQVA7QUF1Q0QsQ0E1Q2dELENBQWpEO0FBOENBdG1DLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdERqbUIsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJULE1BQWpCLEVBQXlCO0FBQ2hDLFdBQU8sSUFBSTA4QixvQkFBSixDQUF1QjtBQUM1Qm4wQyxNQUFBQSxRQUFRLEVBQUVxRCxVQUFRLENBQUMsSUFBRCxDQURVO0FBRTVCb1UsTUFBQUEsTUFBTSxFQUFFclgsV0FBUyxDQUFDcVgsTUFBRCxDQUZXO0FBRzVCcTlCLE1BQUFBLGFBQWEsRUFBRSxJQUhhO0FBSTVCRyxNQUFBQSxTQUFTLEVBQUU7QUFKaUIsS0FBdkIsQ0FBUDtBQU1EO0FBUnFELENBQXZELENBQUQ7O0FDcERBLElBQUlybUMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJZ1MsUUFBUSxHQUFHaFMsc0JBQUEsQ0FBaURrUixPQUFoRTs7QUFFQVEsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsZUFBVjtBQUEyQm9LLEVBQUFBLEtBQUssRUFBRSxJQUFsQztBQUF3QytyQixFQUFBQSxJQUFJLEVBQUU7QUFBOUMsQ0FBRCxFQUF1RDtBQUN0RC92QixFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQjFOLEVBQWpCLEVBQXFCO0FBQzVCLFdBQU93TyxRQUFRLENBQUMsSUFBRCxFQUFPeE8sRUFBUCxDQUFmO0FBQ0Q7QUFIcUQsQ0FBdkQsQ0FBRDs7QUNMQTtBQUNBLElBQUlrTyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlrRSxVQUFRLEdBQUdsRSxVQUFmOztBQUNBLElBQUl1MEMsc0JBQXNCLEdBQUd2MEMsc0JBQTdCOztBQUNBLElBQUlzM0MsMEJBQXdCLEdBQUd0M0Msd0JBQS9COztBQUNBLElBQUlzMUMsZ0JBQWdCLEdBQUd0MUMsa0JBQXZCOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJd1YsbUJBQWlCLEdBQUd4VixtQkFBeEI7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUl5MEMscUJBQXFCLEdBQUd6MEMscUJBQTVCOztBQUVBLElBQUlvMEMsY0FBYyxHQUFHbnZDLGlCQUFlLENBQUMsZUFBRCxDQUFwQztBQUVBLElBQUlvaUIsZUFBYSxHQUFHLEdBQUdBLGFBQXZCO0FBRUEsSUFBSTR2QixvQkFBa0IsR0FBR0ssMEJBQXdCLENBQUMsVUFBVXZlLE9BQVYsRUFBbUI1a0IsSUFBbkIsRUFBeUI7QUFDekUsU0FBT2hPLFVBQVEsQ0FBQyxLQUFLc1EsSUFBTCxDQUFVakgsS0FBVixDQUFnQixLQUFLMU0sUUFBckIsRUFBK0JxUixJQUEvQixDQUFELENBQWY7QUFDRCxDQUZnRCxFQUU5QyxJQUY4QyxDQUFqRDtBQUlBekMsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsZUFBVjtBQUEyQmdCLEVBQUFBLElBQUksRUFBRTtBQUFqQyxDQUFELEVBQTBDO0FBQ3pDb04sRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY2pULENBQWQsRUFBaUI7QUFDckIsUUFBSU0sTUFBTSxHQUFHckMsVUFBUSxDQUFDK0IsQ0FBRCxDQUFyQjtBQUNBLFFBQUl3UCxhQUFhLEdBQUcxUSxXQUFTLENBQUN3QixNQUFELEVBQVM2dEMsY0FBVCxDQUE3QjtBQUNBLFFBQUl0eEMsUUFBSjs7QUFDQSxRQUFJMlMsYUFBSixFQUFtQjtBQUNqQjNTLE1BQUFBLFFBQVEsR0FBR3d5QyxnQkFBZ0IsQ0FBQy91QyxNQUFELEVBQVNrUCxhQUFULENBQTNCO0FBQ0EsVUFBSTRSLGVBQWEsQ0FBQzdtQixJQUFkLENBQW1CK3pDLHNCQUFuQixFQUEyQ3p4QyxRQUEzQyxDQUFKLEVBQTBELE9BQU9BLFFBQVA7QUFDM0Q7O0FBQ0QsUUFBSUEsUUFBUSxLQUFLMUIsU0FBakIsRUFBNEI7QUFDMUJxVSxNQUFBQSxhQUFhLEdBQUdELG1CQUFpQixDQUFDalAsTUFBRCxDQUFqQztBQUNBLFVBQUlrUCxhQUFKLEVBQW1CLE9BQU8sSUFBSWcvQixxQkFBSixDQUEwQjErQixhQUFXLENBQUN4UCxNQUFELEVBQVNrUCxhQUFULENBQXJDLENBQVA7QUFDcEI7O0FBQ0QsV0FBTyxJQUFJd2hDLG9CQUFKLENBQXVCO0FBQUVuMEMsTUFBQUEsUUFBUSxFQUFFQSxRQUFRLEtBQUsxQixTQUFiLEdBQXlCMEIsUUFBekIsR0FBb0N5RDtBQUFoRCxLQUF2QixDQUFQO0FBQ0Q7QUFkd0MsQ0FBMUMsQ0FBRDs7QUNuQkEsSUFBSW1MLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzM0MsMEJBQXdCLEdBQUd0M0Msd0JBQS9COztBQUVBLElBQUlpM0Msb0JBQWtCLEdBQUdLLDBCQUF3QixDQUFDLFVBQVV2ZSxPQUFWLEVBQW1CNWtCLElBQW5CLEVBQXlCO0FBQ3pFLE1BQUk1TSxLQUFLLEdBQUcsSUFBWjtBQUNBLE1BQUlnVCxNQUFNLEdBQUdoVCxLQUFLLENBQUNnVCxNQUFuQjtBQUVBLFNBQU93ZSxPQUFPLENBQUNrRCxPQUFSLENBQWdCOTFCLFVBQVEsQ0FBQ29CLEtBQUssQ0FBQ2tQLElBQU4sQ0FBV2pILEtBQVgsQ0FBaUJqSSxLQUFLLENBQUN6RSxRQUF2QixFQUFpQ3FSLElBQWpDLENBQUQsQ0FBeEIsRUFBa0V1bkIsSUFBbEUsQ0FBdUUsVUFBVWhsQixJQUFWLEVBQWdCO0FBQzVGLFFBQUl2USxVQUFRLENBQUN1USxJQUFELENBQVIsQ0FBZUksSUFBbkIsRUFBeUI7QUFDdkJ2UCxNQUFBQSxLQUFLLENBQUN1UCxJQUFOLEdBQWEsSUFBYjtBQUNBLGFBQU87QUFBRUEsUUFBQUEsSUFBSSxFQUFFLElBQVI7QUFBY2pXLFFBQUFBLEtBQUssRUFBRU87QUFBckIsT0FBUDtBQUNEOztBQUNELFdBQU8yM0IsT0FBTyxDQUFDa0QsT0FBUixDQUFnQjFoQixNQUFNLENBQUM3RCxJQUFJLENBQUM3VixLQUFOLENBQXRCLEVBQW9DNjZCLElBQXBDLENBQXlDLFVBQVU3NkIsS0FBVixFQUFpQjtBQUMvRCxhQUFPO0FBQUVpVyxRQUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlalcsUUFBQUEsS0FBSyxFQUFFQTtBQUF0QixPQUFQO0FBQ0QsS0FGTSxDQUFQO0FBR0QsR0FSTSxDQUFQO0FBU0QsQ0FiZ0QsQ0FBakQ7QUFlQTZRLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdEQ5dkIsRUFBQUEsR0FBRyxFQUFFLFNBQVNBLEdBQVQsQ0FBYW9KLE1BQWIsRUFBcUI7QUFDeEIsV0FBTyxJQUFJMDhCLG9CQUFKLENBQXVCO0FBQzVCbjBDLE1BQUFBLFFBQVEsRUFBRXFELFVBQVEsQ0FBQyxJQUFELENBRFU7QUFFNUJvVSxNQUFBQSxNQUFNLEVBQUVyWCxXQUFTLENBQUNxWCxNQUFEO0FBRlcsS0FBdkIsQ0FBUDtBQUlEO0FBTnFELENBQXZELENBQUQ7O0FDcEJBLElBQUk3SSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBRUEsSUFBSSs0QixTQUFPLEdBQUdoM0IsWUFBVSxDQUFDLFNBQUQsQ0FBeEI7QUFFQTJQLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdEQvaEIsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0IrNEI7QUFBUTtBQUF4QixJQUE4QztBQUNwRCxRQUFJbjFDLFFBQVEsR0FBR3FELFVBQVEsQ0FBQyxJQUFELENBQXZCO0FBQ0EsUUFBSXNRLElBQUksR0FBR3ZULFdBQVMsQ0FBQ0osUUFBUSxDQUFDMlQsSUFBVixDQUFwQjtBQUNBLFFBQUl5aEMsU0FBUyxHQUFHcjJDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQztBQUNBLFFBQUlxMkMsV0FBVyxHQUFHRCxTQUFTLEdBQUc5MkMsU0FBSCxHQUFlUyxTQUFTLENBQUMsQ0FBRCxDQUFuRDtBQUNBcUIsSUFBQUEsV0FBUyxDQUFDKzBDLE9BQUQsQ0FBVDtBQUVBLFdBQU8sSUFBSWxmLFNBQUosQ0FBWSxVQUFVa0QsT0FBVixFQUFtQkcsTUFBbkIsRUFBMkI7QUFDNUMsVUFBSWdaLElBQUksR0FBRyxZQUFZO0FBQ3JCLFlBQUk7QUFDRnJjLFVBQUFBLFNBQU8sQ0FBQ2tELE9BQVIsQ0FBZ0I5MUIsVUFBUSxDQUFDc1EsSUFBSSxDQUFDalcsSUFBTCxDQUFVc0MsUUFBVixDQUFELENBQXhCLEVBQStDNDRCLElBQS9DLENBQW9ELFVBQVVobEIsSUFBVixFQUFnQjtBQUNsRSxnQkFBSTtBQUNGLGtCQUFJdlEsVUFBUSxDQUFDdVEsSUFBRCxDQUFSLENBQWVJLElBQW5CLEVBQXlCO0FBQ3ZCb2hDLGdCQUFBQSxTQUFTLEdBQUc5YixNQUFNLENBQUMvNkIsU0FBUyxDQUFDLGdEQUFELENBQVYsQ0FBVCxHQUF5RTQ2QixPQUFPLENBQUNrYyxXQUFELENBQXpGO0FBQ0QsZUFGRCxNQUVPO0FBQ0wsb0JBQUl0M0MsS0FBSyxHQUFHNlYsSUFBSSxDQUFDN1YsS0FBakI7O0FBQ0Esb0JBQUlxM0MsU0FBSixFQUFlO0FBQ2JBLGtCQUFBQSxTQUFTLEdBQUcsS0FBWjtBQUNBQyxrQkFBQUEsV0FBVyxHQUFHdDNDLEtBQWQ7QUFDQXUwQyxrQkFBQUEsSUFBSTtBQUNMLGlCQUpELE1BSU87QUFDTHJjLGtCQUFBQSxTQUFPLENBQUNrRCxPQUFSLENBQWdCZ2MsT0FBTyxDQUFDRSxXQUFELEVBQWN0M0MsS0FBZCxDQUF2QixFQUE2QzY2QixJQUE3QyxDQUFrRCxVQUFVdDJCLE1BQVYsRUFBa0I7QUFDbEUreUMsb0JBQUFBLFdBQVcsR0FBRy95QyxNQUFkO0FBQ0Fnd0Msb0JBQUFBLElBQUk7QUFDTCxtQkFIRCxFQUdHaFosTUFISDtBQUlEO0FBQ0Y7QUFDRixhQWhCRCxDQWdCRSxPQUFPb2IsR0FBUCxFQUFZO0FBQUVwYixjQUFBQSxNQUFNLENBQUNvYixHQUFELENBQU47QUFBYztBQUMvQixXQWxCRCxFQWtCR3BiLE1BbEJIO0FBbUJELFNBcEJELENBb0JFLE9BQU90OEIsS0FBUCxFQUFjO0FBQUVzOEIsVUFBQUEsTUFBTSxDQUFDdDhCLEtBQUQsQ0FBTjtBQUFnQjtBQUNuQyxPQXRCRDs7QUF3QkFzMUMsTUFBQUEsSUFBSTtBQUNMLEtBMUJNLENBQVA7QUEyQkQ7QUFuQ3FELENBQXZELENBQUQ7O0FDUEEsSUFBSTFqQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUkwZixLQUFLLEdBQUcxZixzQkFBQSxDQUFpRHFSLElBQTdEOztBQUVBSyxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxlQUFWO0FBQTJCb0ssRUFBQUEsS0FBSyxFQUFFLElBQWxDO0FBQXdDK3JCLEVBQUFBLElBQUksRUFBRTtBQUE5QyxDQUFELEVBQXVEO0FBQ3RENXZCLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWM3TixFQUFkLEVBQWtCO0FBQ3RCLFdBQU9rYyxLQUFLLENBQUMsSUFBRCxFQUFPbGMsRUFBUCxDQUFaO0FBQ0Q7QUFIcUQsQ0FBdkQsQ0FBRDs7QUNIQSxJQUFJa08sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOHZDLG1CQUFpQixHQUFHOXZDLG1CQUF4Qjs7QUFDQSxJQUFJczNDLHdCQUF3QixHQUFHdDNDLHdCQUEvQjs7QUFFQSxJQUFJaTNDLGtCQUFrQixHQUFHSyx3QkFBd0IsQ0FBQyxVQUFVdmUsT0FBVixFQUFtQjVrQixJQUFuQixFQUF5QjtBQUN6RSxNQUFJclIsUUFBUSxHQUFHLEtBQUtBLFFBQXBCO0FBQ0EsTUFBSW95QyxZQUFKLEVBQWtCOXZDLE1BQWxCOztBQUNBLE1BQUksQ0FBQyxLQUFLbTdCLFNBQUwsRUFBTCxFQUF1QjtBQUNyQm43QixJQUFBQSxNQUFNLEdBQUc7QUFBRTBSLE1BQUFBLElBQUksRUFBRSxJQUFSO0FBQWNqVyxNQUFBQSxLQUFLLEVBQUVPO0FBQXJCLEtBQVQ7QUFDQSxTQUFLMFYsSUFBTCxHQUFZLElBQVo7QUFDQW8rQixJQUFBQSxZQUFZLEdBQUdweUMsUUFBUSxDQUFDLFFBQUQsQ0FBdkI7O0FBQ0EsUUFBSW95QyxZQUFZLEtBQUs5ekMsU0FBckIsRUFBZ0M7QUFDOUIsYUFBTzIzQixPQUFPLENBQUNrRCxPQUFSLENBQWdCaVosWUFBWSxDQUFDMTBDLElBQWIsQ0FBa0JzQyxRQUFsQixDQUFoQixFQUE2QzQ0QixJQUE3QyxDQUFrRCxZQUFZO0FBQ25FLGVBQU90MkIsTUFBUDtBQUNELE9BRk0sQ0FBUDtBQUdEOztBQUNELFdBQU9BLE1BQVA7QUFDRDs7QUFBQyxTQUFPLEtBQUtxUixJQUFMLENBQVVqSCxLQUFWLENBQWdCMU0sUUFBaEIsRUFBMEJxUixJQUExQixDQUFQO0FBQ0gsQ0FkZ0QsQ0FBakQ7QUFnQkF6QyxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxlQUFWO0FBQTJCb0ssRUFBQUEsS0FBSyxFQUFFLElBQWxDO0FBQXdDK3JCLEVBQUFBLElBQUksRUFBRTtBQUE5QyxDQUFELEVBQXVEO0FBQ3REbVgsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY2xMLEtBQWQsRUFBcUI7QUFDekIsV0FBTyxJQUFJK0osa0JBQUosQ0FBdUI7QUFDNUJuMEMsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FEVTtBQUU1Qm82QixNQUFBQSxTQUFTLEVBQUV1UCxtQkFBaUIsQ0FBQzVDLEtBQUQ7QUFGQSxLQUF2QixDQUFQO0FBSUQ7QUFOcUQsQ0FBdkQsQ0FBRDs7QUNyQkEsSUFBSXg3QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxNEMsUUFBUSxHQUFHcjRDLHNCQUFBLENBQWlEcTFDLE9BQWhFOztBQUVBM2pDLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLGVBQVY7QUFBMkJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBbEM7QUFBd0MrckIsRUFBQUEsSUFBSSxFQUFFO0FBQTlDLENBQUQsRUFBdUQ7QUFDdERvVSxFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxHQUFtQjtBQUMxQixXQUFPZ0QsUUFBUSxDQUFDLElBQUQsRUFBT2ozQyxTQUFQLEVBQWtCLEVBQWxCLENBQWY7QUFDRDtBQUhxRCxDQUF2RCxDQUFEOztBQ0pBLElBQUlpSCxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUNBLElBQUkwYywyQkFBeUIsR0FBRzFjLDJCQUFoQzs7QUFDQSxJQUFJcUQsVUFBUSxHQUFHckQsVUFBZjs7QUFDQSxJQUFJNk0sa0JBQWdCLEdBQUc3TSxzQkFBdkI7O0FBQ0EsSUFBSXlGLGFBQVcsR0FBR3pGLFdBQWxCOztBQUVBLElBQUlzNEMsZUFBZSxHQUFHLGtDQUF0QjtBQUNBLElBQUlDLHNCQUFzQixHQUFHLHNCQUE3QjtBQUVBLElBQUlwbUMsa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSXFCLGtCQUFnQixHQUFHRixxQkFBbUIsQ0FBQ2hCLFNBQXBCLENBQThCa3hDLHNCQUE5QixDQUF2QjtBQUVBLElBQUlDLGNBQWMsR0FBRzk3QiwyQkFBeUIsQ0FBQyxTQUFTKzdCLG9CQUFULENBQThCei9CLEtBQTlCLEVBQXFDRyxHQUFyQyxFQUEwQ3UvQixNQUExQyxFQUFrRGx4QyxJQUFsRCxFQUF3RG14QyxJQUF4RCxFQUE4REMsR0FBOUQsRUFBbUU7QUFDaEgsTUFBSSxPQUFPNS9CLEtBQVAsSUFBZ0J4UixJQUFoQixJQUF5QjJSLEdBQUcsS0FBS29LLFFBQVIsSUFBb0JwSyxHQUFHLEtBQUssQ0FBQ29LLFFBQTdCLElBQXlDLE9BQU9wSyxHQUFQLElBQWMzUixJQUFwRixFQUEyRjtBQUN6RixVQUFNLElBQUluRyxTQUFKLENBQWNpM0MsZUFBZCxDQUFOO0FBQ0Q7O0FBQ0QsTUFBSXQvQixLQUFLLEtBQUt1SyxRQUFWLElBQXNCdkssS0FBSyxLQUFLLENBQUN1SyxRQUFyQyxFQUErQztBQUM3QyxVQUFNLElBQUloQixVQUFKLENBQWUrMUIsZUFBZixDQUFOO0FBQ0Q7O0FBQ0QsTUFBSU8sVUFBVSxHQUFHMS9CLEdBQUcsR0FBR0gsS0FBdkI7QUFDQSxNQUFJOC9CLFlBQVksR0FBRyxLQUFuQjtBQUNBLE1BQUlwaUMsSUFBSjs7QUFDQSxNQUFJZ2lDLE1BQU0sS0FBS3QzQyxTQUFmLEVBQTBCO0FBQ3hCc1YsSUFBQUEsSUFBSSxHQUFHdFYsU0FBUDtBQUNELEdBRkQsTUFFTyxJQUFJaUMsVUFBUSxDQUFDcTFDLE1BQUQsQ0FBWixFQUFzQjtBQUMzQmhpQyxJQUFBQSxJQUFJLEdBQUdnaUMsTUFBTSxDQUFDaGlDLElBQWQ7QUFDQW9pQyxJQUFBQSxZQUFZLEdBQUcsQ0FBQyxDQUFDSixNQUFNLENBQUNLLFNBQXhCO0FBQ0QsR0FITSxNQUdBLElBQUksT0FBT0wsTUFBUCxJQUFpQmx4QyxJQUFyQixFQUEyQjtBQUNoQ2tQLElBQUFBLElBQUksR0FBR2dpQyxNQUFQO0FBQ0QsR0FGTSxNQUVBO0FBQ0wsVUFBTSxJQUFJcjNDLFNBQUosQ0FBY2kzQyxlQUFkLENBQU47QUFDRDs7QUFDRCxNQUFJNWhDLElBQUksSUFBSSxJQUFaLEVBQWtCO0FBQ2hCQSxJQUFBQSxJQUFJLEdBQUdtaUMsVUFBVSxHQUFHRCxHQUFILEdBQVMsQ0FBQ0EsR0FBM0I7QUFDRDs7QUFDRCxNQUFJLE9BQU9saUMsSUFBUCxJQUFlbFAsSUFBbkIsRUFBeUI7QUFDdkIsVUFBTSxJQUFJbkcsU0FBSixDQUFjaTNDLGVBQWQsQ0FBTjtBQUNEOztBQUNELE1BQUk1aEMsSUFBSSxLQUFLNk0sUUFBVCxJQUFxQjdNLElBQUksS0FBSyxDQUFDNk0sUUFBL0IsSUFBNEM3TSxJQUFJLEtBQUtpaUMsSUFBVCxJQUFpQjMvQixLQUFLLEtBQUtHLEdBQTNFLEVBQWlGO0FBQy9FLFVBQU0sSUFBSW9KLFVBQUosQ0FBZSsxQixlQUFmLENBQU47QUFDRCxHQTVCK0c7OztBQThCaEgsTUFBSVUsT0FBTyxHQUFHaGdDLEtBQUssSUFBSUEsS0FBVCxJQUFrQkcsR0FBRyxJQUFJQSxHQUF6QixJQUFnQ3pDLElBQUksSUFBSUEsSUFBeEMsSUFBaUR5QyxHQUFHLEdBQUdILEtBQVAsS0FBbUJ0QyxJQUFJLEdBQUdpaUMsSUFBeEY7QUFDQXhtQyxFQUFBQSxrQkFBZ0IsQ0FBQyxJQUFELEVBQU87QUFDckIzSyxJQUFBQSxJQUFJLEVBQUUrd0Msc0JBRGU7QUFFckJ2L0IsSUFBQUEsS0FBSyxFQUFFQSxLQUZjO0FBR3JCRyxJQUFBQSxHQUFHLEVBQUVBLEdBSGdCO0FBSXJCekMsSUFBQUEsSUFBSSxFQUFFQSxJQUplO0FBS3JCb2lDLElBQUFBLFlBQVksRUFBRUEsWUFMTztBQU1yQkUsSUFBQUEsT0FBTyxFQUFFQSxPQU5ZO0FBT3JCQyxJQUFBQSxZQUFZLEVBQUVOLElBUE87QUFRckJBLElBQUFBLElBQUksRUFBRUE7QUFSZSxHQUFQLENBQWhCOztBQVVBLE1BQUksQ0FBQ2x6QyxhQUFMLEVBQWtCO0FBQ2hCLFNBQUt1VCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxTQUFLRyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLekMsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS3FpQyxTQUFMLEdBQWlCRCxZQUFqQjtBQUNEO0FBQ0YsQ0EvQzZDLEVBK0MzQ1Asc0JBL0MyQyxFQStDbkIsU0FBUzloQyxJQUFULEdBQWdCO0FBQ3pDLE1BQUlsUCxLQUFLLEdBQUdnQixrQkFBZ0IsQ0FBQyxJQUFELENBQTVCO0FBQ0EsTUFBSWhCLEtBQUssQ0FBQ3l4QyxPQUFWLEVBQW1CLE9BQU87QUFBRW40QyxJQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixJQUFBQSxJQUFJLEVBQUU7QUFBMUIsR0FBUDtBQUNuQixNQUFJa0MsS0FBSyxHQUFHelIsS0FBSyxDQUFDeVIsS0FBbEI7QUFDQSxNQUFJRyxHQUFHLEdBQUc1UixLQUFLLENBQUM0UixHQUFoQjtBQUNBLE1BQUl6QyxJQUFJLEdBQUduUCxLQUFLLENBQUNtUCxJQUFqQjtBQUNBLE1BQUl3aUMsb0JBQW9CLEdBQUdsZ0MsS0FBSyxHQUFJdEMsSUFBSSxHQUFHblAsS0FBSyxDQUFDMHhDLFlBQU4sRUFBM0M7QUFDQSxNQUFJQyxvQkFBb0IsS0FBSy8vQixHQUE3QixFQUFrQzVSLEtBQUssQ0FBQ3l4QyxPQUFOLEdBQWdCLElBQWhCO0FBQ2xDLE1BQUlGLFlBQVksR0FBR3Z4QyxLQUFLLENBQUN1eEMsWUFBekI7QUFDQSxNQUFJSyxZQUFKOztBQUNBLE1BQUloZ0MsR0FBRyxHQUFHSCxLQUFWLEVBQWlCO0FBQ2ZtZ0MsSUFBQUEsWUFBWSxHQUFHTCxZQUFZLEdBQUdJLG9CQUFvQixHQUFHLy9CLEdBQTFCLEdBQWdDKy9CLG9CQUFvQixJQUFJLy9CLEdBQW5GO0FBQ0QsR0FGRCxNQUVPO0FBQ0xnZ0MsSUFBQUEsWUFBWSxHQUFHTCxZQUFZLEdBQUczL0IsR0FBRyxHQUFHKy9CLG9CQUFULEdBQWdDLy9CLEdBQUcsSUFBSSsvQixvQkFBbEU7QUFDRDs7QUFDRCxNQUFJQyxZQUFKLEVBQWtCO0FBQ2hCLFdBQU87QUFBRXQ0QyxNQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixNQUFBQSxJQUFJLEVBQUV2UCxLQUFLLENBQUN5eEMsT0FBTixHQUFnQjtBQUExQyxLQUFQO0FBQ0Q7O0FBQUMsU0FBTztBQUFFbjRDLElBQUFBLEtBQUssRUFBRXE0QyxvQkFBVDtBQUErQnBpQyxJQUFBQSxJQUFJLEVBQUU7QUFBckMsR0FBUDtBQUNILENBakU2QyxDQUE5Qzs7QUFtRUEsSUFBSTBnQixNQUFNLEdBQUcsVUFBVWgwQixFQUFWLEVBQWM7QUFDekIsU0FBTztBQUFFckQsSUFBQUEsR0FBRyxFQUFFcUQsRUFBUDtBQUFXMEQsSUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFBRTtBQUFhLEtBQTNDO0FBQTZDcEcsSUFBQUEsWUFBWSxFQUFFLElBQTNEO0FBQWlFSCxJQUFBQSxVQUFVLEVBQUU7QUFBN0UsR0FBUDtBQUNELENBRkQ7O0FBSUEsSUFBSThFLGFBQUosRUFBaUI7QUFDZm9ILEVBQUFBLGtCQUFnQixDQUFDMnJDLGNBQWMsQ0FBQ3h3QyxTQUFoQixFQUEyQjtBQUN6Q2dSLElBQUFBLEtBQUssRUFBRXdlLE1BQU0sQ0FBQyxZQUFZO0FBQ3hCLGFBQU9qdkIsa0JBQWdCLENBQUMsSUFBRCxDQUFoQixDQUF1QnlRLEtBQTlCO0FBQ0QsS0FGWSxDQUQ0QjtBQUl6Q0csSUFBQUEsR0FBRyxFQUFFcWUsTUFBTSxDQUFDLFlBQVk7QUFDdEIsYUFBT2p2QixrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCNFEsR0FBOUI7QUFDRCxLQUZVLENBSjhCO0FBT3pDNC9CLElBQUFBLFNBQVMsRUFBRXZoQixNQUFNLENBQUMsWUFBWTtBQUM1QixhQUFPanZCLGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUJ1d0MsWUFBOUI7QUFDRCxLQUZnQixDQVB3QjtBQVV6Q3BpQyxJQUFBQSxJQUFJLEVBQUU4Z0IsTUFBTSxDQUFDLFlBQVk7QUFDdkIsYUFBT2p2QixrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCbU8sSUFBOUI7QUFDRCxLQUZXO0FBVjZCLEdBQTNCLENBQWhCO0FBY0Q7O0lBRURuWCxvQkFBQSxHQUFpQmk1QyxjQUFqQjs7QUNwR0E7O0FBQ0EsSUFBSTltQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5NEMsc0JBQW9CLEdBQUd6NEMsb0JBQTNCO0FBR0E7OztBQUNBLElBQUksT0FBT281QyxNQUFQLElBQWlCLFVBQXJCLEVBQWlDO0FBQy9CMW5DLEVBQUFBLElBQUMsQ0FBQztBQUFFNUcsSUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixJQUFBQSxJQUFJLEVBQUU7QUFBMUIsR0FBRCxFQUFtQztBQUNsQ3V0QyxJQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlcmdDLEtBQWYsRUFBc0JHLEdBQXRCLEVBQTJCdS9CLE1BQTNCLEVBQW1DO0FBQ3hDLGFBQU8sSUFBSUQsc0JBQUosQ0FBeUJ6L0IsS0FBekIsRUFBZ0NHLEdBQWhDLEVBQXFDdS9CLE1BQXJDLEVBQTZDLFFBQTdDLEVBQXVEVSxNQUFNLENBQUMsQ0FBRCxDQUE3RCxFQUFrRUEsTUFBTSxDQUFDLENBQUQsQ0FBeEUsQ0FBUDtBQUNEO0FBSGlDLEdBQW5DLENBQUQ7QUFLRDs7QUNiRDtBQUNBLElBQUlub0IsS0FBRyxHQUFHanhCLE1BQVY7O0FBQ0EsSUFBSTBHLFNBQU8sR0FBRzFHLGtCQUFkOztBQUNBLElBQUk2TyxRQUFNLEdBQUc3TyxjQUFiOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUVBLElBQUlzNUMsSUFBSSxHQUFHLFlBQVk7QUFDckI7QUFDQSxPQUFLL3lDLE1BQUwsR0FBYyxJQUFkO0FBQ0EsT0FBSzlELE1BQUwsR0FBYyxJQUFkLENBSHFCOztBQUtyQixPQUFLODJDLFVBQUwsR0FBa0IsSUFBbEI7QUFDQSxPQUFLQyxjQUFMLEdBQXNCM3FDLFFBQU0sQ0FBQyxJQUFELENBQTVCO0FBQ0QsQ0FQRDs7QUFTQXlxQyxJQUFJLENBQUN0eEMsU0FBTCxDQUFlN0gsR0FBZixHQUFxQixVQUFVd0QsR0FBVixFQUFlODFDLFdBQWYsRUFBNEI7QUFDL0MsU0FBTyxLQUFLOTFDLEdBQUwsTUFBYyxLQUFLQSxHQUFMLElBQVk4MUMsV0FBVyxFQUFyQyxDQUFQO0FBQ0QsQ0FGRDs7QUFJQUgsSUFBSSxDQUFDdHhDLFNBQUwsQ0FBZXlPLElBQWYsR0FBc0IsVUFBVXBNLENBQVYsRUFBYWhMLEVBQWIsRUFBaUJxNkMsU0FBakIsRUFBNEI7QUFDaEQsTUFBSTUxQyxLQUFLLEdBQUc0MUMsU0FBUyxHQUNqQixLQUFLRixjQUFMLENBQW9CbnZDLENBQXBCLE1BQTJCLEtBQUttdkMsY0FBTCxDQUFvQm52QyxDQUFwQixJQUF5QixJQUFJM0QsU0FBSixFQUFwRCxDQURpQixHQUVqQixLQUFLNnlDLFVBQUwsS0FBb0IsS0FBS0EsVUFBTCxHQUFrQixJQUFJdG9CLEtBQUosRUFBdEMsQ0FGSjtBQUdBLE1BQUlWLEtBQUssR0FBR3pzQixLQUFLLENBQUMzRCxHQUFOLENBQVVkLEVBQVYsQ0FBWjtBQUNBLE1BQUksQ0FBQ2t4QixLQUFMLEVBQVl6c0IsS0FBSyxDQUFDb0QsR0FBTixDQUFVN0gsRUFBVixFQUFja3hCLEtBQUssR0FBRyxJQUFJK29CLElBQUosRUFBdEI7QUFDWixTQUFPL29CLEtBQVA7QUFDRCxDQVBEOztBQVNBLElBQUlvcEIsTUFBSSxHQUFHLElBQUlMLElBQUosRUFBWDs7SUFFQS81QyxZQUFBLEdBQWlCLFlBQVk7QUFDM0IsTUFBSXE2QyxNQUFNLEdBQUdELE1BQWI7QUFDQSxNQUFJNzNDLE1BQU0sR0FBR0QsU0FBUyxDQUFDQyxNQUF2QjtBQUNBLE1BQUl1SSxDQUFKLEVBQU9oTCxFQUFQLENBSDJCOztBQUszQixPQUFLZ0wsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHdkksTUFBaEIsRUFBd0J1SSxDQUFDLEVBQXpCLEVBQTZCO0FBQzNCLFFBQUloSCxVQUFRLENBQUNoRSxFQUFFLEdBQUd3QyxTQUFTLENBQUN3SSxDQUFELENBQWYsQ0FBWixFQUFpQ3V2QyxNQUFNLEdBQUdBLE1BQU0sQ0FBQ25qQyxJQUFQLENBQVlwTSxDQUFaLEVBQWVoTCxFQUFmLEVBQW1CLElBQW5CLENBQVQ7QUFDbEM7O0FBQ0QsTUFBSSxTQUFTWSxNQUFULElBQW1CMjVDLE1BQU0sS0FBS0QsTUFBbEMsRUFBd0MsTUFBTXQ0QyxTQUFTLENBQUMsdURBQUQsQ0FBZjs7QUFDeEMsT0FBS2dKLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR3ZJLE1BQWhCLEVBQXdCdUksQ0FBQyxFQUF6QixFQUE2QjtBQUMzQixRQUFJLENBQUNoSCxVQUFRLENBQUNoRSxFQUFFLEdBQUd3QyxTQUFTLENBQUN3SSxDQUFELENBQWYsQ0FBYixFQUFrQ3V2QyxNQUFNLEdBQUdBLE1BQU0sQ0FBQ25qQyxJQUFQLENBQVlwTSxDQUFaLEVBQWVoTCxFQUFmLEVBQW1CLEtBQW5CLENBQVQ7QUFDbkM7O0FBQUMsU0FBT3U2QyxNQUFQO0FBQ0gsQ0FaRDs7QUM5QkEsSUFBSWxvQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2NUMscUJBQW1CLEdBQUc3NUMsWUFBMUI7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUk2TyxRQUFNLEdBQUc3TyxjQUFiOztBQUVBLElBQUl5NUMsV0FBVyxHQUFHLFlBQVk7QUFDNUIsTUFBSTVoQixNQUFNLEdBQUc5MUIsWUFBVSxDQUFDLFFBQUQsRUFBVyxRQUFYLENBQXZCO0FBQ0EsU0FBTzgxQixNQUFNLEdBQUdBLE1BQU0sQ0FBQ2hwQixRQUFNLENBQUMsSUFBRCxDQUFQLENBQVQsR0FBMEJBLFFBQU0sQ0FBQyxJQUFELENBQTdDO0FBQ0QsQ0FIRDs7O0FBTUE2QyxJQUFDLENBQUM7QUFBRS9SLEVBQUFBLE1BQU0sRUFBRTtBQUFWLENBQUQsRUFBbUI7QUFDbEJtNkMsRUFBQUEsWUFBWSxFQUFFLFNBQVNBLFlBQVQsR0FBd0I7QUFDcEMsV0FBT0QscUJBQW1CLENBQUNycUMsS0FBcEIsQ0FBMEJ2UCxNQUExQixFQUFrQzRCLFNBQWxDLEVBQTZDMUIsR0FBN0MsQ0FBaUQsUUFBakQsRUFBMkRzNUMsV0FBM0QsQ0FBUDtBQUNEO0FBSGlCLENBQW5CLENBQUQ7O0FDWEEsSUFBSS9uQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk2NUMsbUJBQW1CLEdBQUc3NUMsWUFBMUI7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOzs7QUFHQTBSLElBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFO0FBQVYsQ0FBRCxFQUFtQjtBQUNsQm82QyxFQUFBQSxlQUFlLEVBQUUsU0FBU0EsZUFBVCxHQUEyQjtBQUMxQyxRQUFJbDRDLFNBQVMsQ0FBQ0MsTUFBVixLQUFxQixDQUFyQixJQUEwQixPQUFPRCxTQUFTLENBQUMsQ0FBRCxDQUFoQixLQUF3QixRQUF0RCxFQUFnRSxPQUFPRSxZQUFVLENBQUMsUUFBRCxDQUFWLENBQXFCLEtBQXJCLEVBQTRCRixTQUFTLENBQUMsQ0FBRCxDQUFyQyxDQUFQO0FBQ2hFLFdBQU9nNEMsbUJBQW1CLENBQUNycUMsS0FBcEIsQ0FBMEIsSUFBMUIsRUFBZ0MzTixTQUFoQyxFQUEyQzFCLEdBQTNDLENBQStDLFFBQS9DLEVBQXlENEIsWUFBVSxDQUFDLFFBQUQsQ0FBbkUsQ0FBUDtBQUNEO0FBSmlCLENBQW5CLENBQUQ7O0FDSEEsSUFBSTJQLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSUQsT0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlvRSxRQUFNLEdBQUdwRSxnQkFBYjs7QUFDQSxJQUFJaUYsaUJBQWUsR0FBR2pGLGlCQUF0Qjs7QUFDQSxJQUFJbWMsbUJBQWlCLEdBQUduYyxhQUFBLENBQXVDbWMsaUJBQS9EOztBQUdBLElBQUk5UCxlQUFhLEdBQUdwSCxpQkFBZSxDQUFDLGFBQUQsQ0FBbkM7QUFFQSxJQUFJKzBDLGNBQWMsR0FBR3I2QyxRQUFNLENBQUNzNkMsUUFBNUI7O0FBR0EsSUFBSWx1QyxRQUFNLEdBQ0wsQ0FBQ3RLLFlBQVUsQ0FBQ3U0QyxjQUFELENBREgsSUFFUkEsY0FBYyxDQUFDaHlDLFNBQWYsS0FBNkJtVSxtQkFGckI7QUFBQSxHQUlSLENBQUNwYyxPQUFLLENBQUMsWUFBWTtBQUFFaTZDLEVBQUFBLGNBQWMsQ0FBQyxFQUFELENBQWQ7QUFBcUIsQ0FBcEMsQ0FKWDs7QUFNQSxJQUFJeDlCLG1CQUFtQixHQUFHLFNBQVN5OUIsUUFBVCxHQUFvQjtBQUM1Q3AyQixFQUFBQSxZQUFVLENBQUMsSUFBRCxFQUFPckgsbUJBQVAsQ0FBVjtBQUNELENBRkQ7O0FBSUEsSUFBSSxDQUFDcFksUUFBTSxDQUFDK1gsbUJBQUQsRUFBb0I5UCxlQUFwQixDQUFYLEVBQStDO0FBQzdDdkYsRUFBQUEsNkJBQTJCLENBQUNxVixtQkFBRCxFQUFvQjlQLGVBQXBCLEVBQW1DLFVBQW5DLENBQTNCO0FBQ0Q7O0FBRUQsSUFBSU4sUUFBTSxJQUFJLENBQUMzSCxRQUFNLENBQUMrWCxtQkFBRCxFQUFvQixhQUFwQixDQUFqQixJQUF1REEsbUJBQWlCLENBQUMvTCxXQUFsQixLQUFrQ25RLE1BQTdGLEVBQXFHO0FBQ25HNkcsRUFBQUEsNkJBQTJCLENBQUNxVixtQkFBRCxFQUFvQixhQUFwQixFQUFtQ0ssbUJBQW5DLENBQTNCO0FBQ0Q7O0FBRURBLG1CQUFtQixDQUFDeFUsU0FBcEIsR0FBZ0NtVSxtQkFBaEM7QUFFQXpLLElBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0J1TSxFQUFBQSxNQUFNLEVBQUVIO0FBQXhCLENBQUQsRUFBbUM7QUFDbENrdUMsRUFBQUEsUUFBUSxFQUFFejlCO0FBRHdCLENBQW5DLENBQUQ7O0FDckNBLElBQUl0WixXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNk8sUUFBTSxHQUFHN08sY0FBYjs7QUFDQSxJQUFJOEcsNkJBQTJCLEdBQUc5Ryw2QkFBbEM7O0FBQ0EsSUFBSTRqQixhQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBQ0EsSUFBSStFLFdBQVMsR0FBRy9FLFdBQWhCOztBQUNBLElBQUltYyxtQkFBaUIsR0FBR25jLGFBQUEsQ0FBdUNtYyxpQkFBL0Q7O0FBRUEsSUFBSWhLLGtCQUFnQixHQUFHOUoscUJBQW1CLENBQUNuQixHQUEzQztBQUNBLElBQUlxQixrQkFBZ0IsR0FBR0YscUJBQW1CLENBQUNsSSxHQUEzQztBQUVBLElBQUlrTSxlQUFhLEdBQUdwSCxpQkFBZSxDQUFDLGFBQUQsQ0FBbkM7O0lBRUExRixtQkFBQSxHQUFpQixVQUFVeTNDLFdBQVYsRUFBdUIxZ0MsV0FBdkIsRUFBb0M7QUFDbkQsTUFBSTRqQyxhQUFhLEdBQUcsU0FBU0QsUUFBVCxDQUFrQjF5QyxLQUFsQixFQUF5QjtBQUMzQ0EsSUFBQUEsS0FBSyxDQUFDa1AsSUFBTixHQUFhdlQsV0FBUyxDQUFDcUUsS0FBSyxDQUFDekUsUUFBTixDQUFlMlQsSUFBaEIsQ0FBdEI7QUFDQWxQLElBQUFBLEtBQUssQ0FBQ3VQLElBQU4sR0FBYSxLQUFiO0FBQ0F2UCxJQUFBQSxLQUFLLENBQUM0eUMsU0FBTixHQUFrQixDQUFDN2pDLFdBQW5CO0FBQ0FuRSxJQUFBQSxrQkFBZ0IsQ0FBQyxJQUFELEVBQU81SyxLQUFQLENBQWhCO0FBQ0QsR0FMRDs7QUFPQTJ5QyxFQUFBQSxhQUFhLENBQUNseUMsU0FBZCxHQUEwQjRiLGFBQVcsQ0FBQy9VLFFBQU0sQ0FBQ3NOLG1CQUFELENBQVAsRUFBNEI7QUFDL0QxRixJQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFja0MsR0FBZCxFQUFtQjtBQUN2QixVQUFJcFIsS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUMsSUFBRCxDQUE1QjtBQUNBLFVBQUk0TCxJQUFJLEdBQUd0UyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBQ3lGLEtBQUssQ0FBQzR5QyxTQUFOLEdBQWtCLzRDLFNBQWxCLEdBQThCdVgsR0FBL0IsQ0FBbkIsR0FBeURyQyxXQUFXLEdBQUcsRUFBSCxHQUFRLENBQUNsVixTQUFELENBQXZGO0FBQ0FtRyxNQUFBQSxLQUFLLENBQUM0eUMsU0FBTixHQUFrQixLQUFsQjtBQUNBLFVBQUkvMEMsTUFBTSxHQUFHbUMsS0FBSyxDQUFDdVAsSUFBTixHQUFhMVYsU0FBYixHQUF5QjQxQyxXQUFXLENBQUN4MkMsSUFBWixDQUFpQitHLEtBQWpCLEVBQXdCNE0sSUFBeEIsQ0FBdEM7QUFDQSxhQUFPO0FBQUUyQyxRQUFBQSxJQUFJLEVBQUV2UCxLQUFLLENBQUN1UCxJQUFkO0FBQW9CalcsUUFBQUEsS0FBSyxFQUFFdUU7QUFBM0IsT0FBUDtBQUNELEtBUDhEO0FBUS9ELGNBQVUsVUFBVXZFLEtBQVYsRUFBaUI7QUFDekIsVUFBSTBHLEtBQUssR0FBR2dCLGtCQUFnQixDQUFDLElBQUQsQ0FBNUI7QUFDQSxVQUFJekYsUUFBUSxHQUFHeUUsS0FBSyxDQUFDekUsUUFBckI7QUFDQXlFLE1BQUFBLEtBQUssQ0FBQ3VQLElBQU4sR0FBYSxJQUFiO0FBQ0EsVUFBSXNnQyxRQUFRLEdBQUdyeUMsV0FBUyxDQUFDakMsUUFBRCxFQUFXLFFBQVgsQ0FBeEI7QUFDQSxhQUFPO0FBQUVnVSxRQUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjalcsUUFBQUEsS0FBSyxFQUFFdTJDLFFBQVEsR0FBR2p4QyxVQUFRLENBQUNpeEMsUUFBUSxDQUFDNTJDLElBQVQsQ0FBY3NDLFFBQWQsRUFBd0JqQyxLQUF4QixDQUFELENBQVIsQ0FBeUNBLEtBQTVDLEdBQW9EQTtBQUFqRixPQUFQO0FBQ0QsS0FkOEQ7QUFlL0QsYUFBUyxVQUFVQSxLQUFWLEVBQWlCO0FBQ3hCLFVBQUkwRyxLQUFLLEdBQUdnQixrQkFBZ0IsQ0FBQyxJQUFELENBQTVCO0FBQ0EsVUFBSXpGLFFBQVEsR0FBR3lFLEtBQUssQ0FBQ3pFLFFBQXJCO0FBQ0F5RSxNQUFBQSxLQUFLLENBQUN1UCxJQUFOLEdBQWEsSUFBYjtBQUNBLFVBQUl1Z0MsT0FBTyxHQUFHdHlDLFdBQVMsQ0FBQ2pDLFFBQUQsRUFBVyxPQUFYLENBQXZCO0FBQ0EsVUFBSXUwQyxPQUFKLEVBQWEsT0FBT0EsT0FBTyxDQUFDNzJDLElBQVIsQ0FBYXNDLFFBQWIsRUFBdUJqQyxLQUF2QixDQUFQO0FBQ2IsWUFBTUEsS0FBTjtBQUNEO0FBdEI4RCxHQUE1QixDQUFyQzs7QUF5QkEsTUFBSSxDQUFDeVYsV0FBTCxFQUFrQjtBQUNoQnhQLElBQUFBLDZCQUEyQixDQUFDb3pDLGFBQWEsQ0FBQ2x5QyxTQUFmLEVBQTBCcUUsZUFBMUIsRUFBeUMsV0FBekMsQ0FBM0I7QUFDRDs7QUFFRCxTQUFPNnRDLGFBQVA7QUFDRCxDQXRDRDs7QUNkQSxJQUFJeG9DLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSW82QyxxQkFBbUIsR0FBR3A2QyxtQkFBMUI7O0FBRUEsSUFBSWs2QyxlQUFhLEdBQUdFLHFCQUFtQixDQUFDLFVBQVVqbUMsSUFBVixFQUFnQjtBQUN0RCxNQUFJL08sTUFBTSxHQUFHZSxVQUFRLENBQUMsS0FBS3NRLElBQUwsQ0FBVWpILEtBQVYsQ0FBZ0IsS0FBSzFNLFFBQXJCLEVBQStCcVIsSUFBL0IsQ0FBRCxDQUFyQjtBQUNBLE1BQUkyQyxJQUFJLEdBQUcsS0FBS0EsSUFBTCxHQUFZLENBQUMsQ0FBQzFSLE1BQU0sQ0FBQzBSLElBQWhDO0FBQ0EsTUFBSSxDQUFDQSxJQUFMLEVBQVcsT0FBTyxDQUFDLEtBQUt2TixLQUFMLEVBQUQsRUFBZW5FLE1BQU0sQ0FBQ3ZFLEtBQXRCLENBQVA7QUFDWixDQUpzQyxDQUF2QztBQU1BNlEsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRHNXLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULEdBQTBCO0FBQ3hDLFdBQU8sSUFBSTJDLGVBQUosQ0FBa0I7QUFDdkJwM0MsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FESztBQUV2Qm9ELE1BQUFBLEtBQUssRUFBRTtBQUZnQixLQUFsQixDQUFQO0FBSUQ7QUFOZ0QsQ0FBbEQsQ0FBRDs7QUNWQSxJQUFJbUksSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOHZDLG1CQUFpQixHQUFHOXZDLG1CQUF4Qjs7QUFDQSxJQUFJbzZDLHFCQUFtQixHQUFHcDZDLG1CQUExQjs7QUFFQSxJQUFJazZDLGVBQWEsR0FBR0UscUJBQW1CLENBQUMsVUFBVWptQyxJQUFWLEVBQWdCO0FBQ3RELE1BQUlyUixRQUFRLEdBQUcsS0FBS0EsUUFBcEI7QUFDQSxNQUFJMlQsSUFBSSxHQUFHLEtBQUtBLElBQWhCO0FBQ0EsTUFBSXJSLE1BQUosRUFBWTBSLElBQVo7O0FBQ0EsU0FBTyxLQUFLeXBCLFNBQVosRUFBdUI7QUFDckIsU0FBS0EsU0FBTDtBQUNBbjdCLElBQUFBLE1BQU0sR0FBR2UsVUFBUSxDQUFDc1EsSUFBSSxDQUFDalcsSUFBTCxDQUFVc0MsUUFBVixDQUFELENBQWpCO0FBQ0FnVSxJQUFBQSxJQUFJLEdBQUcsS0FBS0EsSUFBTCxHQUFZLENBQUMsQ0FBQzFSLE1BQU0sQ0FBQzBSLElBQTVCO0FBQ0EsUUFBSUEsSUFBSixFQUFVO0FBQ1g7O0FBQ0QxUixFQUFBQSxNQUFNLEdBQUdlLFVBQVEsQ0FBQ3NRLElBQUksQ0FBQ2pILEtBQUwsQ0FBVzFNLFFBQVgsRUFBcUJxUixJQUFyQixDQUFELENBQWpCO0FBQ0EyQyxFQUFBQSxJQUFJLEdBQUcsS0FBS0EsSUFBTCxHQUFZLENBQUMsQ0FBQzFSLE1BQU0sQ0FBQzBSLElBQTVCO0FBQ0EsTUFBSSxDQUFDQSxJQUFMLEVBQVcsT0FBTzFSLE1BQU0sQ0FBQ3ZFLEtBQWQ7QUFDWixDQWJzQyxDQUF2QztBQWVBNlEsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRHdXLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWN2SyxLQUFkLEVBQXFCO0FBQ3pCLFdBQU8sSUFBSWdOLGVBQUosQ0FBa0I7QUFDdkJwM0MsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FESztBQUV2Qm82QixNQUFBQSxTQUFTLEVBQUV1UCxtQkFBaUIsQ0FBQzVDLEtBQUQ7QUFGTCxLQUFsQixDQUFQO0FBSUQ7QUFOZ0QsQ0FBbEQsQ0FBRDs7QUNwQkEsSUFBSXg3QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFFQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFVBQVY7QUFBc0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBN0I7QUFBbUMrckIsRUFBQUEsSUFBSSxFQUFFO0FBQXpDLENBQUQsRUFBa0Q7QUFDakQzdkIsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZTlOLEVBQWYsRUFBbUI7QUFDeEIyQyxJQUFBQSxVQUFRLENBQUMsSUFBRCxDQUFSO0FBQ0FqRCxJQUFBQSxXQUFTLENBQUNNLEVBQUQsQ0FBVDtBQUNBLFdBQU8sQ0FBQ3dULFNBQU8sQ0FBQyxJQUFELEVBQU8sVUFBVW5XLEtBQVYsRUFBaUI4VixJQUFqQixFQUF1QjtBQUMzQyxVQUFJLENBQUNuVCxFQUFFLENBQUMzQyxLQUFELENBQVAsRUFBZ0IsT0FBTzhWLElBQUksRUFBWDtBQUNqQixLQUZjLEVBRVo7QUFBRUwsTUFBQUEsV0FBVyxFQUFFLElBQWY7QUFBcUJDLE1BQUFBLFdBQVcsRUFBRTtBQUFsQyxLQUZZLENBQVAsQ0FFcUNMLE9BRjdDO0FBR0Q7QUFQZ0QsQ0FBbEQsQ0FBRDs7QUNMQSxJQUFJeEUsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSW82QyxxQkFBbUIsR0FBR3A2QyxtQkFBMUI7O0FBQ0EsSUFBSWtiLDhCQUE0QixHQUFHbGIsOEJBQW5DOztBQUVBLElBQUlrNkMsZUFBYSxHQUFHRSxxQkFBbUIsQ0FBQyxVQUFVam1DLElBQVYsRUFBZ0I7QUFDdEQsTUFBSXJSLFFBQVEsR0FBRyxLQUFLQSxRQUFwQjtBQUNBLE1BQUk0MEMsUUFBUSxHQUFHLEtBQUtBLFFBQXBCO0FBQ0EsTUFBSWpoQyxJQUFJLEdBQUcsS0FBS0EsSUFBaEI7QUFDQSxNQUFJclIsTUFBSixFQUFZMFIsSUFBWixFQUFrQmpXLEtBQWxCOztBQUNBLFNBQU8sSUFBUCxFQUFhO0FBQ1h1RSxJQUFBQSxNQUFNLEdBQUdlLFVBQVEsQ0FBQ3NRLElBQUksQ0FBQ2pILEtBQUwsQ0FBVzFNLFFBQVgsRUFBcUJxUixJQUFyQixDQUFELENBQWpCO0FBQ0EyQyxJQUFBQSxJQUFJLEdBQUcsS0FBS0EsSUFBTCxHQUFZLENBQUMsQ0FBQzFSLE1BQU0sQ0FBQzBSLElBQTVCO0FBQ0EsUUFBSUEsSUFBSixFQUFVO0FBQ1ZqVyxJQUFBQSxLQUFLLEdBQUd1RSxNQUFNLENBQUN2RSxLQUFmO0FBQ0EsUUFBSXFhLDhCQUE0QixDQUFDcFksUUFBRCxFQUFXNDBDLFFBQVgsRUFBcUI3MkMsS0FBckIsQ0FBaEMsRUFBNkQsT0FBT0EsS0FBUDtBQUM5RDtBQUNGLENBWnNDLENBQXZDO0FBY0E2USxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxVQUFWO0FBQXNCb0ssRUFBQUEsS0FBSyxFQUFFLElBQTdCO0FBQW1DK3JCLEVBQUFBLElBQUksRUFBRTtBQUF6QyxDQUFELEVBQWtEO0FBQ2pEN3ZCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCc21DLFFBQWhCLEVBQTBCO0FBQ2hDLFdBQU8sSUFBSXdDLGVBQUosQ0FBa0I7QUFDdkJwM0MsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FESztBQUV2QnV4QyxNQUFBQSxRQUFRLEVBQUV4MEMsV0FBUyxDQUFDdzBDLFFBQUQ7QUFGSSxLQUFsQixDQUFQO0FBSUQ7QUFOZ0QsQ0FBbEQsQ0FBRDs7QUNwQkEsSUFBSWhtQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFFQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFVBQVY7QUFBc0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBN0I7QUFBbUMrckIsRUFBQUEsSUFBSSxFQUFFO0FBQXpDLENBQUQsRUFBa0Q7QUFDakQxdkIsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBYy9OLEVBQWQsRUFBa0I7QUFDdEIyQyxJQUFBQSxVQUFRLENBQUMsSUFBRCxDQUFSO0FBQ0FqRCxJQUFBQSxXQUFTLENBQUNNLEVBQUQsQ0FBVDtBQUNBLFdBQU93VCxTQUFPLENBQUMsSUFBRCxFQUFPLFVBQVVuVyxLQUFWLEVBQWlCOFYsSUFBakIsRUFBdUI7QUFDMUMsVUFBSW5ULEVBQUUsQ0FBQzNDLEtBQUQsQ0FBTixFQUFlLE9BQU84VixJQUFJLENBQUM5VixLQUFELENBQVg7QUFDaEIsS0FGYSxFQUVYO0FBQUV5VixNQUFBQSxXQUFXLEVBQUUsSUFBZjtBQUFxQkMsTUFBQUEsV0FBVyxFQUFFO0FBQWxDLEtBRlcsQ0FBUCxDQUVzQ25SLE1BRjdDO0FBR0Q7QUFQZ0QsQ0FBbEQsQ0FBRDs7QUNMQSxJQUFJc00sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXdWLG1CQUFpQixHQUFHeFYsbUJBQXhCOztBQUNBLElBQUlvNkMscUJBQW1CLEdBQUdwNkMsbUJBQTFCOztBQUNBLElBQUlnVyxlQUFhLEdBQUdoVyxlQUFwQjs7QUFFQSxJQUFJazZDLGVBQWEsR0FBR0UscUJBQW1CLENBQUMsWUFBWTtBQUNsRCxNQUFJdDNDLFFBQVEsR0FBRyxLQUFLQSxRQUFwQjtBQUNBLE1BQUl5WCxNQUFNLEdBQUcsS0FBS0EsTUFBbEI7QUFDQSxNQUFJblYsTUFBSixFQUFZMHlDLE1BQVosRUFBb0JwaUMsY0FBcEIsRUFBb0NraUMsYUFBcEM7O0FBRUEsU0FBTyxJQUFQLEVBQWE7QUFDWCxRQUFJO0FBQ0YsVUFBSUEsYUFBYSxHQUFHLEtBQUtBLGFBQXpCLEVBQXdDO0FBQ3RDeHlDLFFBQUFBLE1BQU0sR0FBR2UsVUFBUSxDQUFDLEtBQUs0eEMsU0FBTCxDQUFldjNDLElBQWYsQ0FBb0JvM0MsYUFBcEIsQ0FBRCxDQUFqQjtBQUNBLFlBQUksQ0FBQ3h5QyxNQUFNLENBQUMwUixJQUFaLEVBQWtCLE9BQU8xUixNQUFNLENBQUN2RSxLQUFkO0FBQ2xCLGFBQUsrMkMsYUFBTCxHQUFxQixLQUFLRyxTQUFMLEdBQWlCLElBQXRDO0FBQ0Q7O0FBRUQzeUMsTUFBQUEsTUFBTSxHQUFHZSxVQUFRLENBQUMsS0FBS3NRLElBQUwsQ0FBVWpXLElBQVYsQ0FBZXNDLFFBQWYsQ0FBRCxDQUFqQjtBQUVBLFVBQUksS0FBS2dVLElBQUwsR0FBWSxDQUFDLENBQUMxUixNQUFNLENBQUMwUixJQUF6QixFQUErQjtBQUUvQmdoQyxNQUFBQSxNQUFNLEdBQUd2OUIsTUFBTSxDQUFDblYsTUFBTSxDQUFDdkUsS0FBUixDQUFmO0FBQ0E2VSxNQUFBQSxjQUFjLEdBQUdGLG1CQUFpQixDQUFDc2lDLE1BQUQsQ0FBbEM7O0FBRUEsVUFBSSxDQUFDcGlDLGNBQUwsRUFBcUI7QUFDbkIsY0FBTXJVLFNBQVMsQ0FBQyxvREFBRCxDQUFmO0FBQ0Q7O0FBRUQsV0FBS3UyQyxhQUFMLEdBQXFCQSxhQUFhLEdBQUd6eEMsVUFBUSxDQUFDdVAsY0FBYyxDQUFDbFYsSUFBZixDQUFvQnMzQyxNQUFwQixDQUFELENBQTdDO0FBQ0EsV0FBS0MsU0FBTCxHQUFpQjcwQyxXQUFTLENBQUMwMEMsYUFBYSxDQUFDbmhDLElBQWYsQ0FBMUI7QUFDRCxLQXBCRCxDQW9CRSxPQUFPM1csS0FBUCxFQUFjO0FBQ2RrVyxNQUFBQSxlQUFhLENBQUNsVCxRQUFELEVBQVcsT0FBWCxFQUFvQmhELEtBQXBCLENBQWI7QUFDRDtBQUNGO0FBQ0YsQ0E5QnNDLENBQXZDO0FBZ0NBNFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRGptQixFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQlQsTUFBakIsRUFBeUI7QUFDaEMsV0FBTyxJQUFJMi9CLGVBQUosQ0FBa0I7QUFDdkJwM0MsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FESztBQUV2Qm9VLE1BQUFBLE1BQU0sRUFBRXJYLFdBQVMsQ0FBQ3FYLE1BQUQsQ0FGTTtBQUd2QnE5QixNQUFBQSxhQUFhLEVBQUUsSUFIUTtBQUl2QkcsTUFBQUEsU0FBUyxFQUFFO0FBSlksS0FBbEIsQ0FBUDtBQU1EO0FBUmdELENBQWxELENBQUQ7O0FDdkNBLElBQUlybUMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFFQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFVBQVY7QUFBc0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBN0I7QUFBbUMrckIsRUFBQUEsSUFBSSxFQUFFO0FBQXpDLENBQUQsRUFBa0Q7QUFDakQvdkIsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUIxTixFQUFqQixFQUFxQjtBQUM1QndULElBQUFBLFNBQU8sQ0FBQzdRLFVBQVEsQ0FBQyxJQUFELENBQVQsRUFBaUIzQyxFQUFqQixFQUFxQjtBQUFFOFMsTUFBQUEsV0FBVyxFQUFFO0FBQWYsS0FBckIsQ0FBUDtBQUNEO0FBSGdELENBQWxELENBQUQ7O0FDTkE7QUFDQSxJQUFJNUUsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFDQSxJQUFJbWMsaUJBQWlCLEdBQUduYyxhQUFBLENBQXVDbWMsaUJBQS9EOztBQUNBLElBQUlpK0IscUJBQW1CLEdBQUdwNkMsbUJBQTFCOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJd1YsbUJBQWlCLEdBQUd4VixtQkFBeEI7O0FBRUEsSUFBSXFuQixhQUFhLEdBQUcsR0FBR0EsYUFBdkI7QUFFQSxJQUFJNnlCLGVBQWEsR0FBR0UscUJBQW1CLENBQUMsVUFBVWptQyxJQUFWLEVBQWdCO0FBQ3RELE1BQUkvTyxNQUFNLEdBQUdlLFVBQVEsQ0FBQyxLQUFLc1EsSUFBTCxDQUFVakgsS0FBVixDQUFnQixLQUFLMU0sUUFBckIsRUFBK0JxUixJQUEvQixDQUFELENBQXJCO0FBQ0EsTUFBSTJDLElBQUksR0FBRyxLQUFLQSxJQUFMLEdBQVksQ0FBQyxDQUFDMVIsTUFBTSxDQUFDMFIsSUFBaEM7QUFDQSxNQUFJLENBQUNBLElBQUwsRUFBVyxPQUFPMVIsTUFBTSxDQUFDdkUsS0FBZDtBQUNaLENBSnNDLEVBSXBDLElBSm9DLENBQXZDO0FBTUE2USxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxVQUFWO0FBQXNCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTVCLENBQUQsRUFBcUM7QUFDcENvTixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjalQsQ0FBZCxFQUFpQjtBQUNyQixRQUFJTSxNQUFNLEdBQUdyQyxVQUFRLENBQUMrQixDQUFELENBQXJCO0FBQ0EsUUFBSXdQLGFBQWEsR0FBR0QsbUJBQWlCLENBQUNqUCxNQUFELENBQXJDO0FBQ0EsUUFBSXpELFFBQUo7O0FBQ0EsUUFBSTJTLGFBQUosRUFBbUI7QUFDakIzUyxNQUFBQSxRQUFRLEdBQUdpVCxhQUFXLENBQUN4UCxNQUFELEVBQVNrUCxhQUFULENBQXRCO0FBQ0EsVUFBSTRSLGFBQWEsQ0FBQzdtQixJQUFkLENBQW1CMmIsaUJBQW5CLEVBQXNDclosUUFBdEMsQ0FBSixFQUFxRCxPQUFPQSxRQUFQO0FBQ3RELEtBSEQsTUFHTztBQUNMQSxNQUFBQSxRQUFRLEdBQUd5RCxNQUFYO0FBQ0Q7O0FBQUMsV0FBTyxJQUFJMnpDLGVBQUosQ0FBa0I7QUFBRXAzQyxNQUFBQSxRQUFRLEVBQUVBO0FBQVosS0FBbEIsQ0FBUDtBQUNIO0FBWG1DLENBQXJDLENBQUQ7O0FDZkEsSUFBSTRPLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlvNkMscUJBQW1CLEdBQUdwNkMsbUJBQTFCOztBQUNBLElBQUlrYiw0QkFBNEIsR0FBR2xiLDhCQUFuQzs7QUFFQSxJQUFJazZDLGVBQWEsR0FBR0UscUJBQW1CLENBQUMsVUFBVWptQyxJQUFWLEVBQWdCO0FBQ3RELE1BQUlyUixRQUFRLEdBQUcsS0FBS0EsUUFBcEI7QUFDQSxNQUFJc0MsTUFBTSxHQUFHZSxVQUFRLENBQUMsS0FBS3NRLElBQUwsQ0FBVWpILEtBQVYsQ0FBZ0IxTSxRQUFoQixFQUEwQnFSLElBQTFCLENBQUQsQ0FBckI7QUFDQSxNQUFJMkMsSUFBSSxHQUFHLEtBQUtBLElBQUwsR0FBWSxDQUFDLENBQUMxUixNQUFNLENBQUMwUixJQUFoQztBQUNBLE1BQUksQ0FBQ0EsSUFBTCxFQUFXLE9BQU9vRSw0QkFBNEIsQ0FBQ3BZLFFBQUQsRUFBVyxLQUFLeVgsTUFBaEIsRUFBd0JuVixNQUFNLENBQUN2RSxLQUEvQixDQUFuQztBQUNaLENBTHNDLENBQXZDO0FBT0E2USxJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxVQUFWO0FBQXNCb0ssRUFBQUEsS0FBSyxFQUFFLElBQTdCO0FBQW1DK3JCLEVBQUFBLElBQUksRUFBRTtBQUF6QyxDQUFELEVBQWtEO0FBQ2pEOXZCLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWFvSixNQUFiLEVBQXFCO0FBQ3hCLFdBQU8sSUFBSTIvQixlQUFKLENBQWtCO0FBQ3ZCcDNDLE1BQUFBLFFBQVEsRUFBRXFELFVBQVEsQ0FBQyxJQUFELENBREs7QUFFdkJvVSxNQUFBQSxNQUFNLEVBQUVyWCxXQUFTLENBQUNxWCxNQUFEO0FBRk0sS0FBbEIsQ0FBUDtBQUlEO0FBTmdELENBQWxELENBQUQ7O0FDYkEsSUFBSTdJLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUVBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRC9oQixFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQis0QjtBQUFRO0FBQXhCLElBQThDO0FBQ3BEOXhDLElBQUFBLFVBQVEsQ0FBQyxJQUFELENBQVI7QUFDQWpELElBQUFBLFdBQVMsQ0FBQyswQyxPQUFELENBQVQ7QUFDQSxRQUFJQyxTQUFTLEdBQUdyMkMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5DO0FBQ0EsUUFBSXEyQyxXQUFXLEdBQUdELFNBQVMsR0FBRzkyQyxTQUFILEdBQWVTLFNBQVMsQ0FBQyxDQUFELENBQW5EO0FBQ0FtVixJQUFBQSxTQUFPLENBQUMsSUFBRCxFQUFPLFVBQVVuVyxLQUFWLEVBQWlCO0FBQzdCLFVBQUlxM0MsU0FBSixFQUFlO0FBQ2JBLFFBQUFBLFNBQVMsR0FBRyxLQUFaO0FBQ0FDLFFBQUFBLFdBQVcsR0FBR3QzQyxLQUFkO0FBQ0QsT0FIRCxNQUdPO0FBQ0xzM0MsUUFBQUEsV0FBVyxHQUFHRixPQUFPLENBQUNFLFdBQUQsRUFBY3QzQyxLQUFkLENBQXJCO0FBQ0Q7QUFDRixLQVBNLEVBT0o7QUFBRXlWLE1BQUFBLFdBQVcsRUFBRTtBQUFmLEtBUEksQ0FBUDtBQVFBLFFBQUk0aEMsU0FBSixFQUFlLE1BQU03MkMsU0FBUyxDQUFDLGdEQUFELENBQWY7QUFDZixXQUFPODJDLFdBQVA7QUFDRDtBQWhCZ0QsQ0FBbEQsQ0FBRDs7QUNMQSxJQUFJem1DLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUVBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRDV2QixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjN04sRUFBZCxFQUFrQjtBQUN0QjJDLElBQUFBLFVBQVEsQ0FBQyxJQUFELENBQVI7QUFDQWpELElBQUFBLFdBQVMsQ0FBQ00sRUFBRCxDQUFUO0FBQ0EsV0FBT3dULFNBQU8sQ0FBQyxJQUFELEVBQU8sVUFBVW5XLEtBQVYsRUFBaUI4VixJQUFqQixFQUF1QjtBQUMxQyxVQUFJblQsRUFBRSxDQUFDM0MsS0FBRCxDQUFOLEVBQWUsT0FBTzhWLElBQUksRUFBWDtBQUNoQixLQUZhLEVBRVg7QUFBRUwsTUFBQUEsV0FBVyxFQUFFLElBQWY7QUFBcUJDLE1BQUFBLFdBQVcsRUFBRTtBQUFsQyxLQUZXLENBQVAsQ0FFc0NMLE9BRjdDO0FBR0Q7QUFQZ0QsQ0FBbEQsQ0FBRDs7QUNMQSxJQUFJeEUsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJOHZDLGlCQUFpQixHQUFHOXZDLG1CQUF4Qjs7QUFDQSxJQUFJbzZDLG1CQUFtQixHQUFHcDZDLG1CQUExQjs7QUFDQSxJQUFJZ1csYUFBYSxHQUFHaFcsZUFBcEI7O0FBRUEsSUFBSWs2QyxhQUFhLEdBQUdFLG1CQUFtQixDQUFDLFVBQVVqbUMsSUFBVixFQUFnQjtBQUN0RCxNQUFJclIsUUFBUSxHQUFHLEtBQUtBLFFBQXBCOztBQUNBLE1BQUksQ0FBQyxLQUFLeTlCLFNBQUwsRUFBTCxFQUF1QjtBQUNyQixTQUFLenBCLElBQUwsR0FBWSxJQUFaO0FBQ0EsV0FBT2QsYUFBYSxDQUFDbFQsUUFBRCxFQUFXLFFBQVgsRUFBcUIxQixTQUFyQixDQUFwQjtBQUNEOztBQUNELE1BQUlnRSxNQUFNLEdBQUdlLFVBQVEsQ0FBQyxLQUFLc1EsSUFBTCxDQUFVakgsS0FBVixDQUFnQjFNLFFBQWhCLEVBQTBCcVIsSUFBMUIsQ0FBRCxDQUFyQjtBQUNBLE1BQUkyQyxJQUFJLEdBQUcsS0FBS0EsSUFBTCxHQUFZLENBQUMsQ0FBQzFSLE1BQU0sQ0FBQzBSLElBQWhDO0FBQ0EsTUFBSSxDQUFDQSxJQUFMLEVBQVcsT0FBTzFSLE1BQU0sQ0FBQ3ZFLEtBQWQ7QUFDWixDQVRzQyxDQUF2QztBQVdBNlEsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRG1YLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNsTCxLQUFkLEVBQXFCO0FBQ3pCLFdBQU8sSUFBSWdOLGFBQUosQ0FBa0I7QUFDdkJwM0MsTUFBQUEsUUFBUSxFQUFFcUQsVUFBUSxDQUFDLElBQUQsQ0FESztBQUV2Qm82QixNQUFBQSxTQUFTLEVBQUV1UCxpQkFBaUIsQ0FBQzVDLEtBQUQ7QUFGTCxLQUFsQixDQUFQO0FBSUQ7QUFOZ0QsQ0FBbEQsQ0FBRDs7QUNqQkEsSUFBSXg3QixJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUVBLElBQUkrRCxJQUFJLEdBQUcsR0FBR0EsSUFBZDtBQUVBMk4sSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsVUFBVjtBQUFzQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE3QjtBQUFtQytyQixFQUFBQSxJQUFJLEVBQUU7QUFBekMsQ0FBRCxFQUFrRDtBQUNqRG9VLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULEdBQW1CO0FBQzFCLFFBQUlqd0MsTUFBTSxHQUFHLEVBQWI7QUFDQTRSLElBQUFBLFNBQU8sQ0FBQzdRLFVBQVEsQ0FBQyxJQUFELENBQVQsRUFBaUJwQyxJQUFqQixFQUF1QjtBQUFFc0wsTUFBQUEsSUFBSSxFQUFFakssTUFBUjtBQUFnQmtSLE1BQUFBLFdBQVcsRUFBRTtBQUE3QixLQUF2QixDQUFQO0FBQ0EsV0FBT2xSLE1BQVA7QUFDRDtBQUxnRCxDQUFsRCxDQUFEOztBQ1BBLElBQUlsQyxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7O0lBR0FULHFCQUFBLEdBQWlCLFlBQTZCO0FBQzVDLE1BQUl1eEIsVUFBVSxHQUFHM3FCLFVBQVEsQ0FBQyxJQUFELENBQXpCO0FBQ0EsTUFBSWswQyxPQUFPLEdBQUduM0MsV0FBUyxDQUFDNHRCLFVBQVUsQ0FBQyxRQUFELENBQVgsQ0FBdkI7QUFDQSxNQUFJd3BCLFVBQVUsR0FBRyxJQUFqQjtBQUNBLE1BQUlDLFVBQUo7O0FBQ0EsT0FBSyxJQUFJM2lDLENBQUMsR0FBRyxDQUFSLEVBQVdGLEdBQUcsR0FBRzdWLFNBQVMsQ0FBQ0MsTUFBaEMsRUFBd0M4VixDQUFDLEdBQUdGLEdBQTVDLEVBQWlERSxDQUFDLEVBQWxELEVBQXNEO0FBQ3BEMmlDLElBQUFBLFVBQVUsR0FBR0YsT0FBTyxDQUFDNzVDLElBQVIsQ0FBYXN3QixVQUFiLEVBQXlCanZCLFNBQVMsQ0FBQytWLENBQUQsQ0FBbEMsQ0FBYjtBQUNBMGlDLElBQUFBLFVBQVUsR0FBR0EsVUFBVSxJQUFJQyxVQUEzQjtBQUNEOztBQUNELFNBQU8sQ0FBQyxDQUFDRCxVQUFUO0FBQ0QsQ0FWRDs7QUNKQSxJQUFJNW9DLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJdzZDLHFCQUFtQixHQUFHeDZDLHFCQUExQjtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEb1IsRUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsR0FBc0M7QUFDL0MsV0FBT0QscUJBQW1CLENBQUNockMsS0FBcEIsQ0FBMEIsSUFBMUIsRUFBZ0MzTixTQUFoQyxDQUFQO0FBQ0Q7QUFINEQsQ0FBOUQsQ0FBRDs7QUNOQSxJQUFJc0UsVUFBUSxHQUFHbkcsV0FBZjtBQUdBOzs7SUFDQVQsVUFBQSxHQUFpQixTQUFTbTdDLE9BQVQsQ0FBaUIvMkMsR0FBakIsRUFBc0J3N0IsT0FBdEIsRUFBK0I7QUFDOUMsTUFBSWh1QixHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLE1BQUl0RixLQUFLLEdBQUlzUSxHQUFHLENBQUNoSyxHQUFKLENBQVF4RCxHQUFSLEtBQWdCLFlBQVl3N0IsT0FBN0IsR0FDUkEsT0FBTyxDQUFDd2IsTUFBUixDQUFleHBDLEdBQUcsQ0FBQ2hSLEdBQUosQ0FBUXdELEdBQVIsQ0FBZixFQUE2QkEsR0FBN0IsRUFBa0N3TixHQUFsQyxDQURRLEdBRVJndUIsT0FBTyxDQUFDeWIsTUFBUixDQUFlajNDLEdBQWYsRUFBb0J3TixHQUFwQixDQUZKO0FBR0FBLEVBQUFBLEdBQUcsQ0FBQ2pLLEdBQUosQ0FBUXZELEdBQVIsRUFBYTlDLEtBQWI7QUFDQSxTQUFPQSxLQUFQO0FBQ0QsQ0FQRDs7QUNKQSxJQUFJNlEsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUk2NkMsVUFBUSxHQUFHNzZDLFVBQWY7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RHFSLEVBQUFBLE9BQU8sRUFBRUc7QUFEb0QsQ0FBOUQsQ0FBRDs7SUNQQXQ3QyxnQkFBQSxHQUFpQixVQUFVRixFQUFWLEVBQWM7QUFDN0I7QUFDQSxTQUFPNHhCLEdBQUcsQ0FBQ2pwQixTQUFKLENBQWN1VixPQUFkLENBQXNCL2MsSUFBdEIsQ0FBMkJuQixFQUEzQixDQUFQO0FBQ0QsQ0FIRDs7QUNDQSxJQUFJcVMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJODZDLGdCQUFjLEdBQUc5NkMsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0QvM0IsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZVA7QUFBVztBQUExQixJQUEyQztBQUNoRCxRQUFJSSxHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUdnNEMsZ0JBQWMsQ0FBQzNwQyxHQUFELENBQTdCO0FBQ0EsUUFBSUYsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsV0FBTyxDQUFDNFYsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVVhLEdBQVYsRUFBZTlDLEtBQWYsRUFBc0I4VixJQUF0QixFQUE0QjtBQUNwRCxVQUFJLENBQUMxRixhQUFhLENBQUNwUSxLQUFELEVBQVE4QyxHQUFSLEVBQWF3TixHQUFiLENBQWxCLEVBQXFDLE9BQU93RixJQUFJLEVBQVg7QUFDdEMsS0FGYyxFQUVaO0FBQUVOLE1BQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxNQUFBQSxXQUFXLEVBQUUsSUFBakM7QUFBdUNDLE1BQUFBLFdBQVcsRUFBRTtBQUFwRCxLQUZZLENBQVAsQ0FFdURMLE9BRi9EO0FBR0Q7QUFSNEQsQ0FBOUQsQ0FBRDs7QUNUQSxJQUFJeEUsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlzcEIsb0JBQWtCLEdBQUd0cEIsb0JBQXpCOztBQUNBLElBQUk4NkMsZ0JBQWMsR0FBRzk2QyxnQkFBckI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RGo0QixFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQkw7QUFBVztBQUEzQixJQUE0QztBQUNsRCxRQUFJSSxHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUdnNEMsZ0JBQWMsQ0FBQzNwQyxHQUFELENBQTdCO0FBQ0EsUUFBSUYsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsUUFBSTI1QyxNQUFNLEdBQUcsS0FBS3p4QixvQkFBa0IsQ0FBQ25ZLEdBQUQsRUFBTXBQLFlBQVUsQ0FBQyxLQUFELENBQWhCLENBQXZCLEdBQWI7QUFDQSxRQUFJMlIsTUFBTSxHQUFHeFEsV0FBUyxDQUFDNjNDLE1BQU0sQ0FBQzd6QyxHQUFSLENBQXRCO0FBQ0E4UCxJQUFBQSxTQUFPLENBQUNsVSxRQUFELEVBQVcsVUFBVWEsR0FBVixFQUFlOUMsS0FBZixFQUFzQjtBQUN0QyxVQUFJb1EsYUFBYSxDQUFDcFEsS0FBRCxFQUFROEMsR0FBUixFQUFhd04sR0FBYixDQUFqQixFQUFvQ3VDLE1BQU0sQ0FBQ2xULElBQVAsQ0FBWXU2QyxNQUFaLEVBQW9CcDNDLEdBQXBCLEVBQXlCOUMsS0FBekI7QUFDckMsS0FGTSxFQUVKO0FBQUV3VixNQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsTUFBQUEsV0FBVyxFQUFFO0FBQWpDLEtBRkksQ0FBUDtBQUdBLFdBQU95a0MsTUFBUDtBQUNEO0FBWDRELENBQTlELENBQUQ7O0FDWkEsSUFBSXJwQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUk4NkMsZ0JBQWMsR0FBRzk2QyxnQkFBckI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RDkzQixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjUjtBQUFXO0FBQXpCLElBQTBDO0FBQzlDLFFBQUlJLEdBQUcsR0FBR2hMLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXJELFFBQVEsR0FBR2c0QyxnQkFBYyxDQUFDM3BDLEdBQUQsQ0FBN0I7QUFDQSxRQUFJRixhQUFhLEdBQUdYLE1BQUksQ0FBQ1MsVUFBRCxFQUFhbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBbkQsRUFBOEQsQ0FBOUQsQ0FBeEI7QUFDQSxXQUFPNFYsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVVhLEdBQVYsRUFBZTlDLEtBQWYsRUFBc0I4VixJQUF0QixFQUE0QjtBQUNuRCxVQUFJMUYsYUFBYSxDQUFDcFEsS0FBRCxFQUFROEMsR0FBUixFQUFhd04sR0FBYixDQUFqQixFQUFvQyxPQUFPd0YsSUFBSSxDQUFDOVYsS0FBRCxDQUFYO0FBQ3JDLEtBRmEsRUFFWDtBQUFFd1YsTUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLFdBQVcsRUFBRSxJQUFqQztBQUF1Q0MsTUFBQUEsV0FBVyxFQUFFO0FBQXBELEtBRlcsQ0FBUCxDQUV3RG5SLE1BRi9EO0FBR0Q7QUFSNEQsQ0FBOUQsQ0FBRDs7QUNUQSxJQUFJc00sSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJODZDLGdCQUFjLEdBQUc5NkMsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0QyUixFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQmpxQztBQUFXO0FBQTVCLElBQTZDO0FBQ3BELFFBQUlJLEdBQUcsR0FBR2hMLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXJELFFBQVEsR0FBR2c0QyxnQkFBYyxDQUFDM3BDLEdBQUQsQ0FBN0I7QUFDQSxRQUFJRixhQUFhLEdBQUdYLE1BQUksQ0FBQ1MsVUFBRCxFQUFhbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBbkQsRUFBOEQsQ0FBOUQsQ0FBeEI7QUFDQSxXQUFPNFYsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVVhLEdBQVYsRUFBZTlDLEtBQWYsRUFBc0I4VixJQUF0QixFQUE0QjtBQUNuRCxVQUFJMUYsYUFBYSxDQUFDcFEsS0FBRCxFQUFROEMsR0FBUixFQUFhd04sR0FBYixDQUFqQixFQUFvQyxPQUFPd0YsSUFBSSxDQUFDaFQsR0FBRCxDQUFYO0FBQ3JDLEtBRmEsRUFFWDtBQUFFMFMsTUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLFdBQVcsRUFBRSxJQUFqQztBQUF1Q0MsTUFBQUEsV0FBVyxFQUFFO0FBQXBELEtBRlcsQ0FBUCxDQUV3RG5SLE1BRi9EO0FBR0Q7QUFSNEQsQ0FBOUQsQ0FBRDs7QUNSQSxJQUFJbEMsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSWtwQixjQUFZLEdBQUdscEIsY0FBbkI7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkOztJQUVBVCxjQUFBLEdBQWlCLFNBQVMyWixJQUFULENBQWNuUTtBQUFPO0FBQXJCLEVBQTZDO0FBQzVELE1BQUlqSCxNQUFNLEdBQUdELFNBQVMsQ0FBQ0MsTUFBdkI7QUFDQSxNQUFJNlksS0FBSyxHQUFHN1ksTUFBTSxHQUFHLENBQVQsR0FBYUQsU0FBUyxDQUFDLENBQUQsQ0FBdEIsR0FBNEJULFNBQXhDO0FBQ0EsTUFBSWthLE9BQUosRUFBYXZELEtBQWIsRUFBb0JjLENBQXBCLEVBQXVCNUgsYUFBdkI7QUFDQWlZLEVBQUFBLGNBQVksQ0FBQyxJQUFELENBQVo7QUFDQTVOLEVBQUFBLE9BQU8sR0FBR1gsS0FBSyxLQUFLdlosU0FBcEI7QUFDQSxNQUFJa2EsT0FBSixFQUFhcFksV0FBUyxDQUFDeVgsS0FBRCxDQUFUO0FBQ2IsTUFBSTVSLE1BQU0sSUFBSTNILFNBQWQsRUFBeUIsT0FBTyxJQUFJLElBQUosRUFBUDtBQUN6QjJXLEVBQUFBLEtBQUssR0FBRyxFQUFSOztBQUNBLE1BQUl1RCxPQUFKLEVBQWE7QUFDWHpDLElBQUFBLENBQUMsR0FBRyxDQUFKO0FBQ0E1SCxJQUFBQSxhQUFhLEdBQUdYLE1BQUksQ0FBQ3FLLEtBQUQsRUFBUTdZLE1BQU0sR0FBRyxDQUFULEdBQWFELFNBQVMsQ0FBQyxDQUFELENBQXRCLEdBQTRCVCxTQUFwQyxFQUErQyxDQUEvQyxDQUFwQjtBQUNBNFYsSUFBQUEsU0FBTyxDQUFDak8sTUFBRCxFQUFTLFVBQVVreUMsUUFBVixFQUFvQjtBQUNsQ2xqQyxNQUFBQSxLQUFLLENBQUNoVSxJQUFOLENBQVdrTixhQUFhLENBQUNncUMsUUFBRCxFQUFXcGlDLENBQUMsRUFBWixDQUF4QjtBQUNELEtBRk0sQ0FBUDtBQUdELEdBTkQsTUFNTztBQUNMN0IsSUFBQUEsU0FBTyxDQUFDak8sTUFBRCxFQUFTZ1AsS0FBSyxDQUFDaFUsSUFBZixFQUFxQjtBQUFFc0wsTUFBQUEsSUFBSSxFQUFFMEk7QUFBUixLQUFyQixDQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJLElBQUosQ0FBU0EsS0FBVCxDQUFQO0FBQ0QsQ0FuQkQ7O0FDUEEsSUFBSXJHLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtaLE1BQUksR0FBR2xaLGNBQVg7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXZCLENBQUQsRUFBZ0M7QUFDL0JvTixFQUFBQSxJQUFJLEVBQUVBO0FBRHlCLENBQWhDLENBQUQ7O0FDSkEsSUFBSXhILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBdkIsQ0FBRCxFQUFnQztBQUMvQndxQyxFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQm5nQyxRQUFqQixFQUEyQitrQyxhQUEzQixFQUEwQztBQUNqRGg0QyxJQUFBQSxXQUFTLENBQUNnNEMsYUFBRCxDQUFUO0FBQ0EsUUFBSXA0QyxRQUFRLEdBQUdpVCxhQUFXLENBQUNJLFFBQUQsQ0FBMUI7QUFDQSxRQUFJNGtDLE1BQU0sR0FBRyxJQUFJLElBQUosRUFBYjtBQUNBLFFBQUk1ekMsR0FBRyxHQUFHakUsV0FBUyxDQUFDNjNDLE1BQU0sQ0FBQzV6QyxHQUFSLENBQW5CO0FBQ0EsUUFBSWhILEdBQUcsR0FBRytDLFdBQVMsQ0FBQzYzQyxNQUFNLENBQUM1NkMsR0FBUixDQUFuQjtBQUNBLFFBQUkrRyxHQUFHLEdBQUdoRSxXQUFTLENBQUM2M0MsTUFBTSxDQUFDN3pDLEdBQVIsQ0FBbkI7QUFDQThQLElBQUFBLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVOFgsT0FBVixFQUFtQjtBQUNuQyxVQUFJdWdDLFVBQVUsR0FBR0QsYUFBYSxDQUFDdGdDLE9BQUQsQ0FBOUI7QUFDQSxVQUFJLENBQUN6VCxHQUFHLENBQUMzRyxJQUFKLENBQVN1NkMsTUFBVCxFQUFpQkksVUFBakIsQ0FBTCxFQUFtQ2owQyxHQUFHLENBQUMxRyxJQUFKLENBQVN1NkMsTUFBVCxFQUFpQkksVUFBakIsRUFBNkIsQ0FBQ3ZnQyxPQUFELENBQTdCLEVBQW5DLEtBQ0t6YSxHQUFHLENBQUNLLElBQUosQ0FBU3U2QyxNQUFULEVBQWlCSSxVQUFqQixFQUE2QnAzQyxJQUE3QixDQUFrQzZXLE9BQWxDO0FBQ04sS0FKTSxFQUlKO0FBQUV0RSxNQUFBQSxXQUFXLEVBQUU7QUFBZixLQUpJLENBQVA7QUFLQSxXQUFPeWtDLE1BQVA7QUFDRDtBQWQ4QixDQUFoQyxDQUFEOztBQ1JBO0FBQ0E7SUFDQXg3QyxlQUFBLEdBQWlCLFVBQVVpaUIsQ0FBVixFQUFhQyxDQUFiLEVBQWdCO0FBQy9CO0FBQ0EsU0FBT0QsQ0FBQyxLQUFLQyxDQUFOLElBQVdELENBQUMsSUFBSUEsQ0FBTCxJQUFVQyxDQUFDLElBQUlBLENBQWpDO0FBQ0QsQ0FIRDs7QUNEQSxJQUFJL1AsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUk4NkMsZ0JBQWMsR0FBRzk2QyxnQkFBckI7O0FBQ0EsSUFBSW83QyxhQUFhLEdBQUdwN0MsZUFBcEI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RG4vQixFQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQitSLGFBQWxCLEVBQWlDO0FBQ3pDLFdBQU9qRixTQUFPLENBQUM4akMsZ0JBQWMsQ0FBQzMwQyxVQUFRLENBQUMsSUFBRCxDQUFULENBQWYsRUFBaUMsVUFBVXhDLEdBQVYsRUFBZTlDLEtBQWYsRUFBc0I4VixJQUF0QixFQUE0QjtBQUN6RSxVQUFJeWtDLGFBQWEsQ0FBQ3Y2QyxLQUFELEVBQVFvYixhQUFSLENBQWpCLEVBQXlDLE9BQU90RixJQUFJLEVBQVg7QUFDMUMsS0FGYSxFQUVYO0FBQUVOLE1BQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxNQUFBQSxXQUFXLEVBQUUsSUFBakM7QUFBdUNDLE1BQUFBLFdBQVcsRUFBRTtBQUFwRCxLQUZXLENBQVAsQ0FFd0RMLE9BRi9EO0FBR0Q7QUFMNEQsQ0FBOUQsQ0FBRDs7QUNUQSxJQUFJeEUsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXZCLENBQUQsRUFBZ0M7QUFDL0J1dkMsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZWxsQyxRQUFmLEVBQXlCK2tDLGFBQXpCLEVBQXdDO0FBQzdDLFFBQUlILE1BQU0sR0FBRyxJQUFJLElBQUosRUFBYjtBQUNBNzNDLElBQUFBLFdBQVMsQ0FBQ2c0QyxhQUFELENBQVQ7QUFDQSxRQUFJeG5DLE1BQU0sR0FBR3hRLFdBQVMsQ0FBQzYzQyxNQUFNLENBQUM3ekMsR0FBUixDQUF0QjtBQUNBOFAsSUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXlFLE9BQVYsRUFBbUI7QUFDbkNsSCxNQUFBQSxNQUFNLENBQUNsVCxJQUFQLENBQVl1NkMsTUFBWixFQUFvQkcsYUFBYSxDQUFDdGdDLE9BQUQsQ0FBakMsRUFBNENBLE9BQTVDO0FBQ0QsS0FGTSxDQUFQO0FBR0EsV0FBT21nQyxNQUFQO0FBQ0Q7QUFUOEIsQ0FBaEMsQ0FBRDs7QUNOQSxJQUFJcnBDLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJODZDLGdCQUFjLEdBQUc5NkMsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0RpUyxFQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlci9CLGFBQWYsRUFBOEI7QUFDbkMsV0FBT2pGLFNBQU8sQ0FBQzhqQyxnQkFBYyxDQUFDMzBDLFVBQVEsQ0FBQyxJQUFELENBQVQsQ0FBZixFQUFpQyxVQUFVeEMsR0FBVixFQUFlOUMsS0FBZixFQUFzQjhWLElBQXRCLEVBQTRCO0FBQ3pFLFVBQUk5VixLQUFLLEtBQUtvYixhQUFkLEVBQTZCLE9BQU90RixJQUFJLENBQUNoVCxHQUFELENBQVg7QUFDOUIsS0FGYSxFQUVYO0FBQUUwUyxNQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsTUFBQUEsV0FBVyxFQUFFLElBQWpDO0FBQXVDQyxNQUFBQSxXQUFXLEVBQUU7QUFBcEQsS0FGVyxDQUFQLENBRXdEblIsTUFGL0Q7QUFHRDtBQUw0RCxDQUE5RCxDQUFEOztBQ1JBLElBQUlzTSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJc1EsTUFBSSxHQUFHdFEsbUJBQVg7O0FBQ0EsSUFBSXNwQixvQkFBa0IsR0FBR3RwQixvQkFBekI7O0FBQ0EsSUFBSTg2QyxnQkFBYyxHQUFHOTZDLGdCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEa1MsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJ4cUM7QUFBVztBQUE1QixJQUE2QztBQUNwRCxRQUFJSSxHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUdnNEMsZ0JBQWMsQ0FBQzNwQyxHQUFELENBQTdCO0FBQ0EsUUFBSUYsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsUUFBSTI1QyxNQUFNLEdBQUcsS0FBS3p4QixvQkFBa0IsQ0FBQ25ZLEdBQUQsRUFBTXBQLFlBQVUsQ0FBQyxLQUFELENBQWhCLENBQXZCLEdBQWI7QUFDQSxRQUFJMlIsTUFBTSxHQUFHeFEsV0FBUyxDQUFDNjNDLE1BQU0sQ0FBQzd6QyxHQUFSLENBQXRCO0FBQ0E4UCxJQUFBQSxTQUFPLENBQUNsVSxRQUFELEVBQVcsVUFBVWEsR0FBVixFQUFlOUMsS0FBZixFQUFzQjtBQUN0QzZTLE1BQUFBLE1BQU0sQ0FBQ2xULElBQVAsQ0FBWXU2QyxNQUFaLEVBQW9COXBDLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUThDLEdBQVIsRUFBYXdOLEdBQWIsQ0FBakMsRUFBb0R0USxLQUFwRDtBQUNELEtBRk0sRUFFSjtBQUFFd1YsTUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLFdBQVcsRUFBRTtBQUFqQyxLQUZJLENBQVA7QUFHQSxXQUFPeWtDLE1BQVA7QUFDRDtBQVg0RCxDQUE5RCxDQUFEOztBQ1pBLElBQUlycEMsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlzcEIsb0JBQWtCLEdBQUd0cEIsb0JBQXpCOztBQUNBLElBQUk4NkMsZ0JBQWMsR0FBRzk2QyxnQkFBckI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RG1TLEVBQUFBLFNBQVMsRUFBRSxTQUFTQSxTQUFULENBQW1CenFDO0FBQVc7QUFBOUIsSUFBK0M7QUFDeEQsUUFBSUksR0FBRyxHQUFHaEwsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJckQsUUFBUSxHQUFHZzRDLGdCQUFjLENBQUMzcEMsR0FBRCxDQUE3QjtBQUNBLFFBQUlGLGFBQWEsR0FBR1gsTUFBSSxDQUFDUyxVQUFELEVBQWFsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFuRCxFQUE4RCxDQUE5RCxDQUF4QjtBQUNBLFFBQUkyNUMsTUFBTSxHQUFHLEtBQUt6eEIsb0JBQWtCLENBQUNuWSxHQUFELEVBQU1wUCxZQUFVLENBQUMsS0FBRCxDQUFoQixDQUF2QixHQUFiO0FBQ0EsUUFBSTJSLE1BQU0sR0FBR3hRLFdBQVMsQ0FBQzYzQyxNQUFNLENBQUM3ekMsR0FBUixDQUF0QjtBQUNBOFAsSUFBQUEsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVVhLEdBQVYsRUFBZTlDLEtBQWYsRUFBc0I7QUFDdEM2UyxNQUFBQSxNQUFNLENBQUNsVCxJQUFQLENBQVl1NkMsTUFBWixFQUFvQnAzQyxHQUFwQixFQUF5QnNOLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUThDLEdBQVIsRUFBYXdOLEdBQWIsQ0FBdEM7QUFDRCxLQUZNLEVBRUo7QUFBRWtGLE1BQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxNQUFBQSxXQUFXLEVBQUU7QUFBakMsS0FGSSxDQUFQO0FBR0EsV0FBT3lrQyxNQUFQO0FBQ0Q7QUFYNEQsQ0FBOUQsQ0FBRDs7QUNaQSxJQUFJcnBDLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RDtBQUNBdHBCLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWU1SjtBQUFTO0FBQXhCLElBQTJDO0FBQ2hELFFBQUloRixHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUl1TixNQUFNLEdBQUd4USxXQUFTLENBQUNpTyxHQUFHLENBQUNqSyxHQUFMLENBQXRCO0FBQ0EsUUFBSXdTLGVBQWUsR0FBRzdYLFNBQVMsQ0FBQ0MsTUFBaEM7QUFDQSxRQUFJdUksQ0FBQyxHQUFHLENBQVI7O0FBQ0EsV0FBT0EsQ0FBQyxHQUFHcVAsZUFBWCxFQUE0QjtBQUMxQjFDLE1BQUFBLFNBQU8sQ0FBQ25WLFNBQVMsQ0FBQ3dJLENBQUMsRUFBRixDQUFWLEVBQWlCcUosTUFBakIsRUFBeUI7QUFBRXJFLFFBQUFBLElBQUksRUFBRThCLEdBQVI7QUFBYWtGLFFBQUFBLFVBQVUsRUFBRTtBQUF6QixPQUF6QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBT2xGLEdBQVA7QUFDRDtBQVg0RCxDQUE5RCxDQUFEOztJQ1BBNVIsWUFBQSxHQUFpQixTQUFTa2YsRUFBVCxHQUFjO0FBQzdCLE1BQUkzYyxNQUFNLEdBQUdELFNBQVMsQ0FBQ0MsTUFBdkI7QUFDQSxNQUFJOFcsQ0FBQyxHQUFHLElBQUl6TSxLQUFKLENBQVVySyxNQUFWLENBQVI7O0FBQ0EsU0FBT0EsTUFBTSxFQUFiLEVBQWlCOFcsQ0FBQyxDQUFDOVcsTUFBRCxDQUFELEdBQVlELFNBQVMsQ0FBQ0MsTUFBRCxDQUFyQjs7QUFDakIsU0FBTyxJQUFJLElBQUosQ0FBUzhXLENBQVQsQ0FBUDtBQUNELENBTEQ7O0FDRkEsSUFBSWxILElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXllLElBQUUsR0FBR3plLFlBQVQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXZCLENBQUQsRUFBZ0M7QUFDL0IyUyxFQUFBQSxFQUFFLEVBQUVBO0FBRDJCLENBQWhDLENBQUQ7O0FDSkEsSUFBSS9NLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSTg2QyxnQkFBYyxHQUFHOTZDLGdCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEbnFCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCbk87QUFBVztBQUEzQixJQUFpRDtBQUN2RCxRQUFJSSxHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUdnNEMsZ0JBQWMsQ0FBQzNwQyxHQUFELENBQTdCO0FBQ0EsUUFBSSttQyxTQUFTLEdBQUdyMkMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5DO0FBQ0EsUUFBSXEyQyxXQUFXLEdBQUdELFNBQVMsR0FBRzkyQyxTQUFILEdBQWVTLFNBQVMsQ0FBQyxDQUFELENBQW5EO0FBQ0FxQixJQUFBQSxXQUFTLENBQUM2TixVQUFELENBQVQ7QUFDQWlHLElBQUFBLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVYSxHQUFWLEVBQWU5QyxLQUFmLEVBQXNCO0FBQ3RDLFVBQUlxM0MsU0FBSixFQUFlO0FBQ2JBLFFBQUFBLFNBQVMsR0FBRyxLQUFaO0FBQ0FDLFFBQUFBLFdBQVcsR0FBR3QzQyxLQUFkO0FBQ0QsT0FIRCxNQUdPO0FBQ0xzM0MsUUFBQUEsV0FBVyxHQUFHcG5DLFVBQVUsQ0FBQ29uQyxXQUFELEVBQWN0M0MsS0FBZCxFQUFxQjhDLEdBQXJCLEVBQTBCd04sR0FBMUIsQ0FBeEI7QUFDRDtBQUNGLEtBUE0sRUFPSjtBQUFFa0YsTUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLFdBQVcsRUFBRTtBQUFqQyxLQVBJLENBQVA7QUFRQSxRQUFJNGhDLFNBQUosRUFBZSxNQUFNNzJDLFNBQVMsQ0FBQywyQ0FBRCxDQUFmO0FBQ2YsV0FBTzgyQyxXQUFQO0FBQ0Q7QUFqQjRELENBQTlELENBQUQ7O0FDVEEsSUFBSXptQyxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUk4NkMsY0FBYyxHQUFHOTZDLGdCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLElBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEaDRCLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWNOO0FBQVc7QUFBekIsSUFBMEM7QUFDOUMsUUFBSUksR0FBRyxHQUFHaEwsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJckQsUUFBUSxHQUFHZzRDLGNBQWMsQ0FBQzNwQyxHQUFELENBQTdCO0FBQ0EsUUFBSUYsYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsV0FBTzRWLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVYSxHQUFWLEVBQWU5QyxLQUFmLEVBQXNCOFYsSUFBdEIsRUFBNEI7QUFDbkQsVUFBSTFGLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUThDLEdBQVIsRUFBYXdOLEdBQWIsQ0FBakIsRUFBb0MsT0FBT3dGLElBQUksRUFBWDtBQUNyQyxLQUZhLEVBRVg7QUFBRU4sTUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLFdBQVcsRUFBRSxJQUFqQztBQUF1Q0MsTUFBQUEsV0FBVyxFQUFFO0FBQXBELEtBRlcsQ0FBUCxDQUV3REwsT0FGL0Q7QUFHRDtBQVI0RCxDQUE5RCxDQUFEOztBQ1RBLElBQUl4RSxJQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0RzUixFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQmgzQyxHQUFoQixFQUFxQjgzQztBQUFTO0FBQTlCLElBQTZDO0FBQ25ELFFBQUl0cUMsR0FBRyxHQUFHaEwsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJckUsTUFBTSxHQUFHRCxTQUFTLENBQUNDLE1BQXZCO0FBQ0FvQixJQUFBQSxXQUFTLENBQUN1NEMsUUFBRCxDQUFUO0FBQ0EsUUFBSUMsY0FBYyxHQUFHdnFDLEdBQUcsQ0FBQ2hLLEdBQUosQ0FBUXhELEdBQVIsQ0FBckI7O0FBQ0EsUUFBSSxDQUFDKzNDLGNBQUQsSUFBbUI1NUMsTUFBTSxHQUFHLENBQWhDLEVBQW1DO0FBQ2pDLFlBQU1ULFNBQVMsQ0FBQyx1QkFBRCxDQUFmO0FBQ0Q7O0FBQ0QsUUFBSVIsS0FBSyxHQUFHNjZDLGNBQWMsR0FBR3ZxQyxHQUFHLENBQUNoUixHQUFKLENBQVF3RCxHQUFSLENBQUgsR0FBa0JULFdBQVMsQ0FBQ3BCLE1BQU0sR0FBRyxDQUFULEdBQWFELFNBQVMsQ0FBQyxDQUFELENBQXRCLEdBQTRCVCxTQUE3QixDQUFULENBQWlEdUMsR0FBakQsRUFBc0R3TixHQUF0RCxDQUE1QztBQUNBQSxJQUFBQSxHQUFHLENBQUNqSyxHQUFKLENBQVF2RCxHQUFSLEVBQWE4M0MsUUFBUSxDQUFDNTZDLEtBQUQsRUFBUThDLEdBQVIsRUFBYXdOLEdBQWIsQ0FBckI7QUFDQSxXQUFPQSxHQUFQO0FBQ0Q7QUFaNEQsQ0FBOUQsQ0FBRDs7QUNQQSxJQUFJMVAsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7QUFHQTs7O0lBQ0FULFNBQUEsR0FBaUIsU0FBU284QyxNQUFULENBQWdCaDRDLEdBQWhCLEVBQXFCaTRDO0FBQVM7QUFBOUIsRUFBZ0Q7QUFDL0QsTUFBSXpxQyxHQUFHLEdBQUdoTCxVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLE1BQUkwMUMsUUFBUSxHQUFHaDZDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXJEO0FBQ0EsTUFBSVAsS0FBSjs7QUFDQSxNQUFJLENBQUNZLFlBQVUsQ0FBQ202QyxRQUFELENBQVgsSUFBeUIsQ0FBQ242QyxZQUFVLENBQUNvNkMsUUFBRCxDQUF4QyxFQUFvRDtBQUNsRCxVQUFNeDZDLFNBQVMsQ0FBQyxnQ0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsTUFBSThQLEdBQUcsQ0FBQ2hLLEdBQUosQ0FBUXhELEdBQVIsQ0FBSixFQUFrQjtBQUNoQjlDLElBQUFBLEtBQUssR0FBR3NRLEdBQUcsQ0FBQ2hSLEdBQUosQ0FBUXdELEdBQVIsQ0FBUjs7QUFDQSxRQUFJbEMsWUFBVSxDQUFDbTZDLFFBQUQsQ0FBZCxFQUEwQjtBQUN4Qi82QyxNQUFBQSxLQUFLLEdBQUcrNkMsUUFBUSxDQUFDLzZDLEtBQUQsQ0FBaEI7QUFDQXNRLE1BQUFBLEdBQUcsQ0FBQ2pLLEdBQUosQ0FBUXZELEdBQVIsRUFBYTlDLEtBQWI7QUFDRDtBQUNGLEdBTkQsTUFNTyxJQUFJWSxZQUFVLENBQUNvNkMsUUFBRCxDQUFkLEVBQTBCO0FBQy9CaDdDLElBQUFBLEtBQUssR0FBR2c3QyxRQUFRLEVBQWhCO0FBQ0ExcUMsSUFBQUEsR0FBRyxDQUFDakssR0FBSixDQUFRdkQsR0FBUixFQUFhOUMsS0FBYjtBQUNEOztBQUFDLFNBQU9BLEtBQVA7QUFDSCxDQWpCRDs7QUNKQSxJQUFJNlEsSUFBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUk4N0MsU0FBTyxHQUFHOTdDLFNBQWQ7QUFHQTs7O0FBQ0EwUixJQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQ3A4QixFQUFBQSxJQUFJLEVBQUUsUUFBaEQ7QUFBMERxSCxFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEUsQ0FBRCxFQUE4RTtBQUM3RTBTLEVBQUFBLGNBQWMsRUFBRUQ7QUFENkQsQ0FBOUUsQ0FBRDs7QUNOQSxJQUFJcHFDLElBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJODdDLFNBQU8sR0FBRzk3QyxTQUFkO0FBR0E7OztBQUNBMFIsSUFBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0RzUyxFQUFBQSxNQUFNLEVBQUVHO0FBRHFELENBQTlELENBQUQ7O0FDUkEsSUFBSXBxQyxHQUFDLEdBQUcxUixPQUFSOztBQUVBLElBQUlzSixHQUFHLEdBQUdoSyxJQUFJLENBQUNnSyxHQUFmO0FBQ0EsSUFBSUQsR0FBRyxHQUFHL0osSUFBSSxDQUFDK0osR0FBZjtBQUdBOztBQUNBcUksR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDa3dDLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWV4NkIsQ0FBZixFQUFrQnk2QixLQUFsQixFQUF5QkMsS0FBekIsRUFBZ0M7QUFDckMsV0FBTzV5QyxHQUFHLENBQUM0eUMsS0FBRCxFQUFRN3lDLEdBQUcsQ0FBQzR5QyxLQUFELEVBQVF6NkIsQ0FBUixDQUFYLENBQVY7QUFDRDtBQUgrQixDQUFqQyxDQUFEOztBQ1BBLElBQUk5UCxHQUFDLEdBQUcxUixPQUFSO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDcXdDLEVBQUFBLFdBQVcsRUFBRTc4QyxJQUFJLENBQUM4OEMsRUFBTCxHQUFVO0FBRFMsQ0FBakMsQ0FBRDs7QUNKQSxJQUFJMXFDLEdBQUMsR0FBRzFSLE9BQVI7O0FBRUEsSUFBSXE4QyxXQUFXLEdBQUcsTUFBTS84QyxJQUFJLENBQUM4OEMsRUFBN0I7QUFHQTs7QUFDQTFxQyxHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaEN3d0MsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsQ0FBaUJDLE9BQWpCLEVBQTBCO0FBQ2pDLFdBQU9BLE9BQU8sR0FBR0YsV0FBakI7QUFDRDtBQUgrQixDQUFqQyxDQUFEOztBQ05BO0FBQ0E7SUFDQTk4QyxTQUFBLEdBQWlCRCxJQUFJLENBQUNrOUMsS0FBTCxJQUFjLFNBQVNBLEtBQVQsQ0FBZWg3QixDQUFmLEVBQWtCaTdCLEtBQWxCLEVBQXlCQyxNQUF6QixFQUFpQ0MsTUFBakMsRUFBeUNDLE9BQXpDLEVBQWtEO0FBQy9FLE1BQ0UvNkMsU0FBUyxDQUFDQyxNQUFWLEtBQXFCO0FBQ25CO0FBREYsS0FFSzBmLENBQUMsSUFBSUEsQ0FGVixJQUdLaTdCLEtBQUssSUFBSUEsS0FIZCxJQUlLQyxNQUFNLElBQUlBLE1BSmYsSUFLS0MsTUFBTSxJQUFJQSxNQUxmLElBTUtDLE9BQU8sSUFBSUE7QUFDZDtBQVJKLElBU0UsT0FBT2w1QixHQUFQO0FBQ0YsTUFBSWxDLENBQUMsS0FBSytCLFFBQU4sSUFBa0IvQixDQUFDLEtBQUssQ0FBQytCLFFBQTdCLEVBQXVDLE9BQU8vQixDQUFQO0FBQ3ZDLFNBQU8sQ0FBQ0EsQ0FBQyxHQUFHaTdCLEtBQUwsS0FBZUcsT0FBTyxHQUFHRCxNQUF6QixLQUFvQ0QsTUFBTSxHQUFHRCxLQUE3QyxJQUFzREUsTUFBN0Q7QUFDRCxDQWJEOztBQ0ZBLElBQUlqckMsR0FBQyxHQUFHMVIsT0FBUjs7QUFFQSxJQUFJdzhDLE9BQUssR0FBR3g4QyxTQUFaOztBQUNBLElBQUkweUIsTUFBTSxHQUFHMXlCLFVBQWI7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaEMrd0MsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsQ0FBZ0JyN0IsQ0FBaEIsRUFBbUJpN0IsS0FBbkIsRUFBMEJDLE1BQTFCLEVBQWtDQyxNQUFsQyxFQUEwQ0MsT0FBMUMsRUFBbUQ7QUFDekQsV0FBT2xxQixNQUFNLENBQUM4cEIsT0FBSyxDQUFDaDdCLENBQUQsRUFBSWk3QixLQUFKLEVBQVdDLE1BQVgsRUFBbUJDLE1BQW5CLEVBQTJCQyxPQUEzQixDQUFOLENBQWI7QUFDRDtBQUgrQixDQUFqQyxDQUFEOztBQ1BBLElBQUlsckMsR0FBQyxHQUFHMVIsT0FBUjtBQUdBO0FBQ0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDZ3hDLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWVDLEVBQWYsRUFBbUJDLEVBQW5CLEVBQXVCQyxFQUF2QixFQUEyQkMsRUFBM0IsRUFBK0I7QUFDcEMsUUFBSUMsR0FBRyxHQUFHSixFQUFFLEtBQUssQ0FBakI7QUFDQSxRQUFJSyxHQUFHLEdBQUdKLEVBQUUsS0FBSyxDQUFqQjtBQUNBLFFBQUlLLEdBQUcsR0FBR0osRUFBRSxLQUFLLENBQWpCO0FBQ0EsV0FBT0csR0FBRyxJQUFJRixFQUFFLEtBQUssQ0FBWCxDQUFILElBQW9CLENBQUNDLEdBQUcsR0FBR0UsR0FBTixHQUFZLENBQUNGLEdBQUcsR0FBR0UsR0FBUCxJQUFjLEVBQUVGLEdBQUcsR0FBR0UsR0FBTixLQUFjLENBQWhCLENBQTNCLE1BQW1ELEVBQXZFLElBQTZFLENBQXBGO0FBQ0Q7QUFOK0IsQ0FBakMsQ0FBRDs7QUNMQSxJQUFJM3JDLEdBQUMsR0FBRzFSLE9BQVI7QUFHQTtBQUNBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBeEIsQ0FBRCxFQUFpQztBQUNoQ3d4QyxFQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlQyxDQUFmLEVBQWtCbDhCLENBQWxCLEVBQXFCO0FBQzFCLFFBQUltUyxNQUFNLEdBQUcsTUFBYjtBQUNBLFFBQUlncUIsRUFBRSxHQUFHLENBQUNELENBQVY7QUFDQSxRQUFJRSxFQUFFLEdBQUcsQ0FBQ3A4QixDQUFWO0FBQ0EsUUFBSXE4QixFQUFFLEdBQUdGLEVBQUUsR0FBR2hxQixNQUFkO0FBQ0EsUUFBSW1xQixFQUFFLEdBQUdGLEVBQUUsR0FBR2pxQixNQUFkO0FBQ0EsUUFBSW9xQixFQUFFLEdBQUdKLEVBQUUsSUFBSSxFQUFmO0FBQ0EsUUFBSUssRUFBRSxHQUFHSixFQUFFLElBQUksRUFBZjtBQUNBLFFBQUlyckIsQ0FBQyxHQUFHLENBQUN3ckIsRUFBRSxHQUFHRCxFQUFMLEtBQVksQ0FBYixLQUFtQkQsRUFBRSxHQUFHQyxFQUFMLEtBQVksRUFBL0IsQ0FBUjtBQUNBLFdBQU9DLEVBQUUsR0FBR0MsRUFBTCxJQUFXenJCLENBQUMsSUFBSSxFQUFoQixLQUF1QixDQUFDc3JCLEVBQUUsR0FBR0csRUFBTCxLQUFZLENBQWIsS0FBbUJ6ckIsQ0FBQyxHQUFHb0IsTUFBdkIsS0FBa0MsRUFBekQsQ0FBUDtBQUNEO0FBWCtCLENBQWpDLENBQUQ7O0FDTEEsSUFBSTloQixHQUFDLEdBQUcxUixPQUFSO0FBR0E7QUFDQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXhCLENBQUQsRUFBaUM7QUFDaENneUMsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZWYsRUFBZixFQUFtQkMsRUFBbkIsRUFBdUJDLEVBQXZCLEVBQTJCQyxFQUEzQixFQUErQjtBQUNwQyxRQUFJQyxHQUFHLEdBQUdKLEVBQUUsS0FBSyxDQUFqQjtBQUNBLFFBQUlLLEdBQUcsR0FBR0osRUFBRSxLQUFLLENBQWpCO0FBQ0EsUUFBSUssR0FBRyxHQUFHSixFQUFFLEtBQUssQ0FBakI7QUFDQSxXQUFPRyxHQUFHLElBQUlGLEVBQUUsS0FBSyxDQUFYLENBQUgsSUFBb0IsQ0FBQyxDQUFDQyxHQUFELEdBQU9FLEdBQVAsR0FBYSxFQUFFRixHQUFHLEdBQUdFLEdBQVIsSUFBZUYsR0FBRyxHQUFHRSxHQUFOLEtBQWMsQ0FBM0MsTUFBa0QsRUFBdEUsSUFBNEUsQ0FBbkY7QUFDRDtBQU4rQixDQUFqQyxDQUFEOztBQ0xBLElBQUkzckMsR0FBQyxHQUFHMVIsT0FBUjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBeEIsQ0FBRCxFQUFpQztBQUNoQ3V3QyxFQUFBQSxXQUFXLEVBQUUsTUFBTS84QyxJQUFJLENBQUM4OEM7QUFEUSxDQUFqQyxDQUFEOztBQ0pBLElBQUkxcUMsR0FBQyxHQUFHMVIsT0FBUjs7QUFFQSxJQUFJbThDLFdBQVcsR0FBRzc4QyxJQUFJLENBQUM4OEMsRUFBTCxHQUFVLEdBQTVCO0FBR0E7O0FBQ0ExcUMsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDeXdDLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCRCxPQUFqQixFQUEwQjtBQUNqQyxXQUFPQSxPQUFPLEdBQUdILFdBQWpCO0FBQ0Q7QUFIK0IsQ0FBakMsQ0FBRDs7QUNOQSxJQUFJenFDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXc4QyxLQUFLLEdBQUd4OEMsU0FBWjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBeEIsQ0FBRCxFQUFpQztBQUNoQzB3QyxFQUFBQSxLQUFLLEVBQUVBO0FBRHlCLENBQWpDLENBQUQ7O0FDTEEsSUFBSTlxQyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUl1MUIsY0FBYyxHQUFHdjFCLGdCQUFyQjs7QUFDQSxJQUFJMGMsMkJBQXlCLEdBQUcxYywyQkFBaEM7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBRUEsSUFBSSs5QyxhQUFhLEdBQUcsZUFBcEI7QUFDQSxJQUFJQyx1QkFBdUIsR0FBR0QsYUFBYSxHQUFHLFlBQTlDO0FBQ0EsSUFBSTVyQyxrQkFBZ0IsR0FBRzlKLHFCQUFtQixDQUFDbkIsR0FBM0M7QUFDQSxJQUFJcUIsa0JBQWdCLEdBQUdGLHFCQUFtQixDQUFDaEIsU0FBcEIsQ0FBOEIyMkMsdUJBQTlCLENBQXZCO0FBQ0EsSUFBSUMsZUFBZSxHQUFHLDRFQUF0QjtBQUVBLElBQUlDLHNCQUFzQixHQUFHeGhDLDJCQUF5QixDQUFDLFNBQVN5aEMscUJBQVQsQ0FBK0JDLElBQS9CLEVBQXFDO0FBQzFGanNDLEVBQUFBLGtCQUFnQixDQUFDLElBQUQsRUFBTztBQUNyQjNLLElBQUFBLElBQUksRUFBRXcyQyx1QkFEZTtBQUVyQkksSUFBQUEsSUFBSSxFQUFFQSxJQUFJLEdBQUc7QUFGUSxHQUFQLENBQWhCO0FBSUQsQ0FMcUQsRUFLbkRMLGFBTG1ELEVBS3BDLFNBQVN0bkMsSUFBVCxHQUFnQjtBQUNoQyxNQUFJbFAsS0FBSyxHQUFHZ0Isa0JBQWdCLENBQUMsSUFBRCxDQUE1QjtBQUNBLE1BQUk2MUMsSUFBSSxHQUFHNzJDLEtBQUssQ0FBQzYyQyxJQUFOLEdBQWEsQ0FBQzcyQyxLQUFLLENBQUM2MkMsSUFBTixHQUFhLFVBQWIsR0FBMEIsS0FBM0IsSUFBb0MsVUFBNUQ7QUFDQSxTQUFPO0FBQUV2OUMsSUFBQUEsS0FBSyxFQUFFLENBQUN1OUMsSUFBSSxHQUFHLFVBQVIsSUFBc0IsVUFBL0I7QUFBMkN0bkMsSUFBQUEsSUFBSSxFQUFFO0FBQWpELEdBQVA7QUFDRCxDQVRxRCxDQUF0RDtBQVlBO0FBQ0E7O0FBQ0FwRixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxNQUFWO0FBQWtCZ0IsRUFBQUEsSUFBSSxFQUFFLElBQXhCO0FBQThCSSxFQUFBQSxNQUFNLEVBQUU7QUFBdEMsQ0FBRCxFQUErQztBQUM5Q215QyxFQUFBQSxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQmgvQyxFQUFwQixFQUF3QjtBQUNsQyxRQUFJKytDLElBQUksR0FBR2o0QyxVQUFRLENBQUM5RyxFQUFELENBQVIsQ0FBYSsrQyxJQUF4QjtBQUNBLFFBQUksQ0FBQzdvQixjQUFjLENBQUM2b0IsSUFBRCxDQUFuQixFQUEyQixNQUFNLzhDLFNBQVMsQ0FBQzQ4QyxlQUFELENBQWY7QUFDM0IsV0FBTyxJQUFJQyxzQkFBSixDQUEyQkUsSUFBM0IsQ0FBUDtBQUNEO0FBTDZDLENBQS9DLENBQUQ7O0FDMUJBLElBQUkxc0MsR0FBQyxHQUFHMVIsT0FBUjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBeEIsQ0FBRCxFQUFpQztBQUNoQ3d5QyxFQUFBQSxPQUFPLEVBQUUsU0FBU0EsT0FBVCxDQUFpQjk4QixDQUFqQixFQUFvQjtBQUMzQixXQUFPLENBQUNBLENBQUMsR0FBRyxDQUFDQSxDQUFOLEtBQVlBLENBQVosSUFBaUJBLENBQUMsSUFBSSxDQUF0QixHQUEwQixJQUFJQSxDQUFKLElBQVMsQ0FBQytCLFFBQXBDLEdBQStDL0IsQ0FBQyxHQUFHLENBQTFEO0FBQ0Q7QUFIK0IsQ0FBakMsQ0FBRDs7QUNKQSxJQUFJOVAsR0FBQyxHQUFHMVIsT0FBUjtBQUdBO0FBQ0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsTUFBVjtBQUFrQmdCLEVBQUFBLElBQUksRUFBRTtBQUF4QixDQUFELEVBQWlDO0FBQ2hDeXlDLEVBQUFBLEtBQUssRUFBRSxTQUFTQSxLQUFULENBQWVoQixDQUFmLEVBQWtCbDhCLENBQWxCLEVBQXFCO0FBQzFCLFFBQUltUyxNQUFNLEdBQUcsTUFBYjtBQUNBLFFBQUlncUIsRUFBRSxHQUFHLENBQUNELENBQVY7QUFDQSxRQUFJRSxFQUFFLEdBQUcsQ0FBQ3A4QixDQUFWO0FBQ0EsUUFBSXE4QixFQUFFLEdBQUdGLEVBQUUsR0FBR2hxQixNQUFkO0FBQ0EsUUFBSW1xQixFQUFFLEdBQUdGLEVBQUUsR0FBR2pxQixNQUFkO0FBQ0EsUUFBSW9xQixFQUFFLEdBQUdKLEVBQUUsS0FBSyxFQUFoQjtBQUNBLFFBQUlLLEVBQUUsR0FBR0osRUFBRSxLQUFLLEVBQWhCO0FBQ0EsUUFBSXJyQixDQUFDLEdBQUcsQ0FBQ3dyQixFQUFFLEdBQUdELEVBQUwsS0FBWSxDQUFiLEtBQW1CRCxFQUFFLEdBQUdDLEVBQUwsS0FBWSxFQUEvQixDQUFSO0FBQ0EsV0FBT0MsRUFBRSxHQUFHQyxFQUFMLElBQVd6ckIsQ0FBQyxLQUFLLEVBQWpCLEtBQXdCLENBQUNzckIsRUFBRSxHQUFHRyxFQUFMLEtBQVksQ0FBYixLQUFtQnpyQixDQUFDLEdBQUdvQixNQUF2QixNQUFtQyxFQUEzRCxDQUFQO0FBQ0Q7QUFYK0IsQ0FBakMsQ0FBRDs7QUNKQSxJQUFJOWhCLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSW9KLG1CQUFtQixHQUFHcEoscUJBQTFCOztBQUNBLElBQUlvMUIsVUFBUSxHQUFHcDFCLGNBQWY7O0FBRUEsSUFBSXcrQyw2QkFBNkIsR0FBRywrQkFBcEM7QUFDQSxJQUFJQyxhQUFhLEdBQUcsZUFBcEI7QUFDQSxJQUFJQyxLQUFLLEdBQUcsWUFBWjtBQUdBOztBQUNBaHRDLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQzZ5QyxFQUFBQSxVQUFVLEVBQUUsU0FBU0EsVUFBVCxDQUFvQnB6QyxNQUFwQixFQUE0QjBwQixLQUE1QixFQUFtQztBQUM3QyxRQUFJN1IsSUFBSSxHQUFHLENBQVg7QUFDQSxRQUFJb2pCLENBQUosRUFBT29ZLE9BQVA7QUFDQSxRQUFJLE9BQU9yekMsTUFBUCxJQUFpQixRQUFyQixFQUErQixNQUFNbEssU0FBUyxDQUFDbTlDLDZCQUFELENBQWY7QUFDL0IsUUFBSSxDQUFDanpDLE1BQU0sQ0FBQ3pKLE1BQVosRUFBb0IsTUFBTTRpQyxXQUFXLENBQUM4Wiw2QkFBRCxDQUFqQjs7QUFDcEIsUUFBSWp6QyxNQUFNLENBQUMrVixNQUFQLENBQWMsQ0FBZCxLQUFvQixHQUF4QixFQUE2QjtBQUMzQjhCLE1BQUFBLElBQUksR0FBRyxDQUFDLENBQVI7QUFDQTdYLE1BQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDdEssS0FBUCxDQUFhLENBQWIsQ0FBVDtBQUNBLFVBQUksQ0FBQ3NLLE1BQU0sQ0FBQ3pKLE1BQVosRUFBb0IsTUFBTTRpQyxXQUFXLENBQUM4Wiw2QkFBRCxDQUFqQjtBQUNyQjs7QUFDRGhZLElBQUFBLENBQUMsR0FBR3ZSLEtBQUssS0FBSzd6QixTQUFWLEdBQXNCLEVBQXRCLEdBQTJCZ0ksbUJBQW1CLENBQUM2ckIsS0FBRCxDQUFsRDtBQUNBLFFBQUl1UixDQUFDLEdBQUcsQ0FBSixJQUFTQSxDQUFDLEdBQUcsRUFBakIsRUFBcUIsTUFBTWprQixVQUFVLENBQUNrOEIsYUFBRCxDQUFoQjs7QUFDckIsUUFBSSxDQUFDQyxLQUFLLENBQUMvM0MsSUFBTixDQUFXNEUsTUFBWCxDQUFELElBQXVCLENBQUNxekMsT0FBTyxHQUFHeHBCLFVBQVEsQ0FBQzdwQixNQUFELEVBQVNpN0IsQ0FBVCxDQUFuQixFQUFnQ3hsQyxRQUFoQyxDQUF5Q3dsQyxDQUF6QyxNQUFnRGo3QixNQUEzRSxFQUFtRjtBQUNqRixZQUFNbTVCLFdBQVcsQ0FBQzhaLDZCQUFELENBQWpCO0FBQ0Q7O0FBQ0QsV0FBT3A3QixJQUFJLEdBQUd3N0IsT0FBZDtBQUNEO0FBakJpQyxDQUFuQyxDQUFEOztBQ1ZBLElBQUlsdEMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeTRDLG9CQUFvQixHQUFHejRDLG9CQUEzQjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQ3V0QyxFQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlcmdDLEtBQWYsRUFBc0JHLEdBQXRCLEVBQTJCdS9CLE1BQTNCLEVBQW1DO0FBQ3hDLFdBQU8sSUFBSUQsb0JBQUosQ0FBeUJ6L0IsS0FBekIsRUFBZ0NHLEdBQWhDLEVBQXFDdS9CLE1BQXJDLEVBQTZDLFFBQTdDLEVBQXVELENBQXZELEVBQTBELENBQTFELENBQVA7QUFDRDtBQUhpQyxDQUFuQyxDQUFEOztBQ0xBLElBQUlyd0MscUJBQW1CLEdBQUdySSxhQUExQjs7QUFDQSxJQUFJMGMsMkJBQXlCLEdBQUcxYywyQkFBaEM7O0FBQ0EsSUFBSW9FLFFBQU0sR0FBR3BFLGdCQUFiOztBQUNBLElBQUk0TSxVQUFVLEdBQUc1TSxZQUFqQjs7QUFDQSxJQUFJa0UsVUFBUSxHQUFHbEUsVUFBZjs7QUFFQSxJQUFJNitDLGVBQWUsR0FBRyxpQkFBdEI7QUFDQSxJQUFJMXNDLGtCQUFnQixHQUFHOUoscUJBQW1CLENBQUNuQixHQUEzQztBQUNBLElBQUlxQixrQkFBZ0IsR0FBR0YscUJBQW1CLENBQUNoQixTQUFwQixDQUE4QnczQyxlQUE5QixDQUF2QjtJQUVBdC9DLGNBQUEsR0FBaUJtZCwyQkFBeUIsQ0FBQyxTQUFTb2lDLGNBQVQsQ0FBd0IvMUMsTUFBeEIsRUFBZ0MvRSxJQUFoQyxFQUFzQztBQUMvRSxNQUFJdUMsTUFBTSxHQUFHckMsVUFBUSxDQUFDNkUsTUFBRCxDQUFyQjtBQUNBb0osRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssSUFBQUEsSUFBSSxFQUFFcTNDLGVBRGU7QUFFckI3NkMsSUFBQUEsSUFBSSxFQUFFQSxJQUZlO0FBR3JCdUMsSUFBQUEsTUFBTSxFQUFFQSxNQUhhO0FBSXJCSyxJQUFBQSxJQUFJLEVBQUVnRyxVQUFVLENBQUNyRyxNQUFELENBSks7QUFLckJnRCxJQUFBQSxLQUFLLEVBQUU7QUFMYyxHQUFQLENBQWhCO0FBT0QsQ0FUeUMsRUFTdkMsUUFUdUMsRUFTN0IsU0FBU2tOLElBQVQsR0FBZ0I7QUFDM0IsTUFBSWxQLEtBQUssR0FBR2dCLGtCQUFnQixDQUFDLElBQUQsQ0FBNUI7QUFDQSxNQUFJM0IsSUFBSSxHQUFHVyxLQUFLLENBQUNYLElBQWpCOztBQUNBLFNBQU8sSUFBUCxFQUFhO0FBQ1gsUUFBSUEsSUFBSSxLQUFLLElBQVQsSUFBaUJXLEtBQUssQ0FBQ2dDLEtBQU4sSUFBZTNDLElBQUksQ0FBQzlFLE1BQXpDLEVBQWlEO0FBQy9DeUYsTUFBQUEsS0FBSyxDQUFDaEIsTUFBTixHQUFlZ0IsS0FBSyxDQUFDWCxJQUFOLEdBQWEsSUFBNUI7QUFDQSxhQUFPO0FBQUUvRixRQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixRQUFBQSxJQUFJLEVBQUU7QUFBMUIsT0FBUDtBQUNEOztBQUNELFFBQUluVCxHQUFHLEdBQUdpRCxJQUFJLENBQUNXLEtBQUssQ0FBQ2dDLEtBQU4sRUFBRCxDQUFkO0FBQ0EsUUFBSWhELE1BQU0sR0FBR2dCLEtBQUssQ0FBQ2hCLE1BQW5CO0FBQ0EsUUFBSSxDQUFDbkMsUUFBTSxDQUFDbUMsTUFBRCxFQUFTNUMsR0FBVCxDQUFYLEVBQTBCOztBQUMxQixZQUFRNEQsS0FBSyxDQUFDdkQsSUFBZDtBQUNFLFdBQUssTUFBTDtBQUFhLGVBQU87QUFBRW5ELFVBQUFBLEtBQUssRUFBRThDLEdBQVQ7QUFBY21ULFVBQUFBLElBQUksRUFBRTtBQUFwQixTQUFQOztBQUNiLFdBQUssUUFBTDtBQUFlLGVBQU87QUFBRWpXLFVBQUFBLEtBQUssRUFBRTBGLE1BQU0sQ0FBQzVDLEdBQUQsQ0FBZjtBQUFzQm1ULFVBQUFBLElBQUksRUFBRTtBQUE1QixTQUFQO0FBRmpCO0FBR0U7OztBQUFjLFdBQU87QUFBRWpXLE1BQUFBLEtBQUssRUFBRSxDQUFDOEMsR0FBRCxFQUFNNEMsTUFBTSxDQUFDNUMsR0FBRCxDQUFaLENBQVQ7QUFBNkJtVCxNQUFBQSxJQUFJLEVBQUU7QUFBbkMsS0FBUDtBQUNqQjtBQUNGLENBekJ5QyxDQUExQzs7QUNWQSxJQUFJcEYsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJOCtDLGdCQUFjLEdBQUc5K0MsY0FBckI7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbENpekMsRUFBQUEsY0FBYyxFQUFFLFNBQVNBLGNBQVQsQ0FBd0J4NEMsTUFBeEIsRUFBZ0M7QUFDOUMsV0FBTyxJQUFJdTRDLGdCQUFKLENBQW1CdjRDLE1BQW5CLEVBQTJCLFNBQTNCLENBQVA7QUFDRDtBQUhpQyxDQUFuQyxDQUFEOztBQ0xBLElBQUltTCxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUk4K0MsZ0JBQWMsR0FBRzkrQyxjQUFyQjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JnQixFQUFBQSxJQUFJLEVBQUU7QUFBMUIsQ0FBRCxFQUFtQztBQUNsQ2t6QyxFQUFBQSxXQUFXLEVBQUUsU0FBU0EsV0FBVCxDQUFxQno0QyxNQUFyQixFQUE2QjtBQUN4QyxXQUFPLElBQUl1NEMsZ0JBQUosQ0FBbUJ2NEMsTUFBbkIsRUFBMkIsTUFBM0IsQ0FBUDtBQUNEO0FBSGlDLENBQW5DLENBQUQ7O0FDTEEsSUFBSW1MLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSTgrQyxjQUFjLEdBQUc5K0MsY0FBckI7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9CZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTFCLENBQUQsRUFBbUM7QUFDbENtekMsRUFBQUEsYUFBYSxFQUFFLFNBQVNBLGFBQVQsQ0FBdUIxNEMsTUFBdkIsRUFBK0I7QUFDNUMsV0FBTyxJQUFJdTRDLGNBQUosQ0FBbUJ2NEMsTUFBbkIsRUFBMkIsUUFBM0IsQ0FBUDtBQUNEO0FBSGlDLENBQW5DLENBQUQ7O0FDSkEsSUFBSW1MLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXlGLGFBQVcsR0FBR3pGLFdBQWxCOztBQUNBLElBQUk4aEIsVUFBVSxHQUFHOWhCLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSWdRLGFBQWEsR0FBR2hRLGVBQXBCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlxRCxVQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUlFLGdCQUFjLEdBQUdGLG9CQUFBLENBQStDa0csQ0FBcEU7O0FBQ0EsSUFBSXVGLFVBQVEsR0FBR3pMLGtCQUFmOztBQUNBLElBQUk0akIsYUFBVyxHQUFHNWpCLGFBQWxCOztBQUNBLElBQUkrVixhQUFXLEdBQUcvVixhQUFsQjs7QUFDQSxJQUFJK0UsU0FBUyxHQUFHL0UsV0FBaEI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7O0FBQ0EsSUFBSTY4QixnQkFBZ0IsR0FBRzc4QixrQkFBdkI7O0FBQ0EsSUFBSWlGLGlCQUFlLEdBQUdqRixpQkFBdEI7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBRUEsSUFBSWsvQyxVQUFVLEdBQUdqNkMsaUJBQWUsQ0FBQyxZQUFELENBQWhDO0FBQ0EsSUFBSXNELGtCQUFnQixHQUFHRixxQkFBbUIsQ0FBQ2xJLEdBQTNDO0FBQ0EsSUFBSWdTLGtCQUFnQixHQUFHOUoscUJBQW1CLENBQUNuQixHQUEzQzs7QUFFQSxJQUFJaTRDLG1CQUFtQixHQUFHLFVBQVVDLGlCQUFWLEVBQTZCO0FBQ3JELE1BQUlDLE9BQU8sR0FBR0QsaUJBQWlCLENBQUNDLE9BQWhDOztBQUNBLE1BQUlBLE9BQUosRUFBYTtBQUNYRCxJQUFBQSxpQkFBaUIsQ0FBQ0MsT0FBbEIsR0FBNEJqK0MsU0FBNUI7O0FBQ0EsUUFBSTtBQUNGaStDLE1BQUFBLE9BQU87QUFDUixLQUZELENBRUUsT0FBT3YvQyxLQUFQLEVBQWM7QUFDZCs4QixNQUFBQSxnQkFBZ0IsQ0FBQy84QixLQUFELENBQWhCO0FBQ0Q7QUFDRjtBQUNGLENBVkQ7O0FBWUEsSUFBSXcvQyxrQkFBa0IsR0FBRyxVQUFVRixpQkFBVixFQUE2QjtBQUNwRCxTQUFPQSxpQkFBaUIsQ0FBQ0csUUFBbEIsS0FBK0JuK0MsU0FBdEM7QUFDRCxDQUZEOztBQUlBLElBQUl3TSxLQUFLLEdBQUcsVUFBVXd4QyxpQkFBVixFQUE2QjtBQUN2QyxNQUFJSSxZQUFZLEdBQUdKLGlCQUFpQixDQUFDdjNDLE1BQXJDOztBQUNBLE1BQUksQ0FBQ3BDLGFBQUwsRUFBa0I7QUFDaEIrNUMsSUFBQUEsWUFBWSxDQUFDQyxNQUFiLEdBQXNCLElBQXRCO0FBQ0EsUUFBSUMsb0JBQW9CLEdBQUdOLGlCQUFpQixDQUFDTSxvQkFBN0M7QUFDQSxRQUFJQSxvQkFBSixFQUEwQkEsb0JBQW9CLENBQUNELE1BQXJCLEdBQThCLElBQTlCO0FBQzNCOztBQUFDTCxFQUFBQSxpQkFBaUIsQ0FBQ0csUUFBbEIsR0FBNkJuK0MsU0FBN0I7QUFDSCxDQVBEOztBQVNBLElBQUl1K0MsWUFBWSxHQUFHLFVBQVVKLFFBQVYsRUFBb0JLLFVBQXBCLEVBQWdDO0FBQ2pELE1BQUlSLGlCQUFpQixHQUFHanRDLGtCQUFnQixDQUFDLElBQUQsRUFBTztBQUM3Q2t0QyxJQUFBQSxPQUFPLEVBQUVqK0MsU0FEb0M7QUFFN0NtK0MsSUFBQUEsUUFBUSxFQUFFcDVDLFVBQVEsQ0FBQ281QyxRQUFELENBRjJCO0FBRzdDRyxJQUFBQSxvQkFBb0IsRUFBRXQrQztBQUh1QixHQUFQLENBQXhDO0FBS0EsTUFBSTRYLEtBQUo7QUFDQSxNQUFJLENBQUN2VCxhQUFMLEVBQWtCLEtBQUtnNkMsTUFBTCxHQUFjLEtBQWQ7O0FBQ2xCLE1BQUk7QUFDRixRQUFJem1DLEtBQUssR0FBR2pVLFNBQVMsQ0FBQ3c2QyxRQUFELEVBQVcsT0FBWCxDQUFyQixFQUEwQ3ZtQyxLQUFLLENBQUN4WSxJQUFOLENBQVcrK0MsUUFBWCxFQUFxQixJQUFyQjtBQUMzQyxHQUZELENBRUUsT0FBT3ovQyxLQUFQLEVBQWM7QUFDZCs4QixJQUFBQSxnQkFBZ0IsQ0FBQy84QixLQUFELENBQWhCO0FBQ0Q7O0FBQ0QsTUFBSXcvQyxrQkFBa0IsQ0FBQ0YsaUJBQUQsQ0FBdEIsRUFBMkM7QUFDM0MsTUFBSU0sb0JBQW9CLEdBQUdOLGlCQUFpQixDQUFDTSxvQkFBbEIsR0FBeUMsSUFBSUcsb0JBQUosQ0FBeUIsSUFBekIsQ0FBcEU7O0FBQ0EsTUFBSTtBQUNGLFFBQUlSLE9BQU8sR0FBR08sVUFBVSxDQUFDRixvQkFBRCxDQUF4QjtBQUNBLFFBQUlGLFlBQVksR0FBR0gsT0FBbkI7QUFDQSxRQUFJQSxPQUFPLElBQUksSUFBZixFQUFxQkQsaUJBQWlCLENBQUNDLE9BQWxCLEdBQTRCNTlDLFlBQVUsQ0FBQzQ5QyxPQUFPLENBQUNTLFdBQVQsQ0FBVixHQUM3QyxZQUFZO0FBQUVOLE1BQUFBLFlBQVksQ0FBQ00sV0FBYjtBQUE2QixLQURFLEdBRTdDNThDLFdBQVMsQ0FBQ204QyxPQUFELENBRlE7QUFHdEIsR0FORCxDQU1FLE9BQU92L0MsS0FBUCxFQUFjO0FBQ2Q0L0MsSUFBQUEsb0JBQW9CLENBQUM1L0MsS0FBckIsQ0FBMkJBLEtBQTNCO0FBQ0E7QUFDRDs7QUFBQyxNQUFJdy9DLGtCQUFrQixDQUFDRixpQkFBRCxDQUF0QixFQUEyQ0QsbUJBQW1CLENBQUNDLGlCQUFELENBQW5CO0FBQzlDLENBekJEOztBQTJCQU8sWUFBWSxDQUFDMzNDLFNBQWIsR0FBeUI0YixhQUFXLENBQUMsRUFBRCxFQUFLO0FBQ3ZDazhCLEVBQUFBLFdBQVcsRUFBRSxTQUFTQSxXQUFULEdBQXVCO0FBQ2xDLFFBQUlWLGlCQUFpQixHQUFHNzJDLGtCQUFnQixDQUFDLElBQUQsQ0FBeEM7O0FBQ0EsUUFBSSxDQUFDKzJDLGtCQUFrQixDQUFDRixpQkFBRCxDQUF2QixFQUE0QztBQUMxQ3h4QyxNQUFBQSxLQUFLLENBQUN3eEMsaUJBQUQsQ0FBTDtBQUNBRCxNQUFBQSxtQkFBbUIsQ0FBQ0MsaUJBQUQsQ0FBbkI7QUFDRDtBQUNGO0FBUHNDLENBQUwsQ0FBcEM7QUFVQSxJQUFJMzVDLGFBQUosRUFBaUJ2RixnQkFBYyxDQUFDeS9DLFlBQVksQ0FBQzMzQyxTQUFkLEVBQXlCLFFBQXpCLEVBQW1DO0FBQ2hFbEgsRUFBQUEsWUFBWSxFQUFFLElBRGtEO0FBRWhFWCxFQUFBQSxHQUFHLEVBQUUsWUFBWTtBQUNmLFdBQU9tL0Msa0JBQWtCLENBQUMvMkMsa0JBQWdCLENBQUMsSUFBRCxDQUFqQixDQUF6QjtBQUNEO0FBSitELENBQW5DLENBQWQ7O0FBT2pCLElBQUlzM0Msb0JBQW9CLEdBQUcsVUFBVUwsWUFBVixFQUF3QjtBQUNqRHJ0QyxFQUFBQSxrQkFBZ0IsQ0FBQyxJQUFELEVBQU87QUFBRXF0QyxJQUFBQSxZQUFZLEVBQUVBO0FBQWhCLEdBQVAsQ0FBaEI7QUFDQSxNQUFJLENBQUMvNUMsYUFBTCxFQUFrQixLQUFLZzZDLE1BQUwsR0FBYyxLQUFkO0FBQ25CLENBSEQ7O0FBS0FJLG9CQUFvQixDQUFDNzNDLFNBQXJCLEdBQWlDNGIsYUFBVyxDQUFDLEVBQUQsRUFBSztBQUMvQ25OLEVBQUFBLElBQUksRUFBRSxTQUFTQSxJQUFULENBQWM1VixLQUFkLEVBQXFCO0FBQ3pCLFFBQUl1K0MsaUJBQWlCLEdBQUc3MkMsa0JBQWdCLENBQUNBLGtCQUFnQixDQUFDLElBQUQsQ0FBaEIsQ0FBdUJpM0MsWUFBeEIsQ0FBeEM7O0FBQ0EsUUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0YsaUJBQUQsQ0FBdkIsRUFBNEM7QUFDMUMsVUFBSUcsUUFBUSxHQUFHSCxpQkFBaUIsQ0FBQ0csUUFBakM7O0FBQ0EsVUFBSTtBQUNGLFlBQUlRLFVBQVUsR0FBR2g3QyxTQUFTLENBQUN3NkMsUUFBRCxFQUFXLE1BQVgsQ0FBMUI7QUFDQSxZQUFJUSxVQUFKLEVBQWdCQSxVQUFVLENBQUN2L0MsSUFBWCxDQUFnQisrQyxRQUFoQixFQUEwQjErQyxLQUExQjtBQUNqQixPQUhELENBR0UsT0FBT2YsS0FBUCxFQUFjO0FBQ2QrOEIsUUFBQUEsZ0JBQWdCLENBQUMvOEIsS0FBRCxDQUFoQjtBQUNEO0FBQ0Y7QUFDRixHQVo4QztBQWEvQ0EsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZWUsS0FBZixFQUFzQjtBQUMzQixRQUFJdStDLGlCQUFpQixHQUFHNzJDLGtCQUFnQixDQUFDQSxrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCaTNDLFlBQXhCLENBQXhDOztBQUNBLFFBQUksQ0FBQ0Ysa0JBQWtCLENBQUNGLGlCQUFELENBQXZCLEVBQTRDO0FBQzFDLFVBQUlHLFFBQVEsR0FBR0gsaUJBQWlCLENBQUNHLFFBQWpDO0FBQ0EzeEMsTUFBQUEsS0FBSyxDQUFDd3hDLGlCQUFELENBQUw7O0FBQ0EsVUFBSTtBQUNGLFlBQUlZLFdBQVcsR0FBR2o3QyxTQUFTLENBQUN3NkMsUUFBRCxFQUFXLE9BQVgsQ0FBM0I7QUFDQSxZQUFJUyxXQUFKLEVBQWlCQSxXQUFXLENBQUN4L0MsSUFBWixDQUFpQisrQyxRQUFqQixFQUEyQjErQyxLQUEzQixFQUFqQixLQUNLZzhCLGdCQUFnQixDQUFDaDhCLEtBQUQsQ0FBaEI7QUFDTixPQUpELENBSUUsT0FBTzIyQyxHQUFQLEVBQVk7QUFDWjNhLFFBQUFBLGdCQUFnQixDQUFDMmEsR0FBRCxDQUFoQjtBQUNEOztBQUFDMkgsTUFBQUEsbUJBQW1CLENBQUNDLGlCQUFELENBQW5CO0FBQ0g7QUFDRixHQTFCOEM7QUEyQi9DYSxFQUFBQSxRQUFRLEVBQUUsU0FBU0EsUUFBVCxHQUFvQjtBQUM1QixRQUFJYixpQkFBaUIsR0FBRzcyQyxrQkFBZ0IsQ0FBQ0Esa0JBQWdCLENBQUMsSUFBRCxDQUFoQixDQUF1QmkzQyxZQUF4QixDQUF4Qzs7QUFDQSxRQUFJLENBQUNGLGtCQUFrQixDQUFDRixpQkFBRCxDQUF2QixFQUE0QztBQUMxQyxVQUFJRyxRQUFRLEdBQUdILGlCQUFpQixDQUFDRyxRQUFqQztBQUNBM3hDLE1BQUFBLEtBQUssQ0FBQ3d4QyxpQkFBRCxDQUFMOztBQUNBLFVBQUk7QUFDRixZQUFJYyxjQUFjLEdBQUduN0MsU0FBUyxDQUFDdzZDLFFBQUQsRUFBVyxVQUFYLENBQTlCO0FBQ0EsWUFBSVcsY0FBSixFQUFvQkEsY0FBYyxDQUFDMS9DLElBQWYsQ0FBb0IrK0MsUUFBcEI7QUFDckIsT0FIRCxDQUdFLE9BQU96L0MsS0FBUCxFQUFjO0FBQ2QrOEIsUUFBQUEsZ0JBQWdCLENBQUMvOEIsS0FBRCxDQUFoQjtBQUNEOztBQUFDcS9DLE1BQUFBLG1CQUFtQixDQUFDQyxpQkFBRCxDQUFuQjtBQUNIO0FBQ0Y7QUF2QzhDLENBQUwsQ0FBNUM7QUEwQ0EsSUFBSTM1QyxhQUFKLEVBQWlCdkYsZ0JBQWMsQ0FBQzIvQyxvQkFBb0IsQ0FBQzczQyxTQUF0QixFQUFpQyxRQUFqQyxFQUEyQztBQUN4RWxILEVBQUFBLFlBQVksRUFBRSxJQUQwRDtBQUV4RVgsRUFBQUEsR0FBRyxFQUFFLFlBQVk7QUFDZixXQUFPbS9DLGtCQUFrQixDQUFDLzJDLGtCQUFnQixDQUFDQSxrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCaTNDLFlBQXhCLENBQWpCLENBQXpCO0FBQ0Q7QUFKdUUsQ0FBM0MsQ0FBZDs7QUFPakIsSUFBSVcsV0FBVyxHQUFHLFNBQVNDLFVBQVQsQ0FBb0JSLFVBQXBCLEVBQWdDO0FBQ2hELzdCLEVBQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU9zOEIsV0FBUCxFQUFvQixZQUFwQixDQUFWO0FBQ0FodUMsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQUV5dEMsSUFBQUEsVUFBVSxFQUFFMThDLFdBQVMsQ0FBQzA4QyxVQUFEO0FBQXZCLEdBQVAsQ0FBaEI7QUFDRCxDQUhEOztBQUtBaDhCLGFBQVcsQ0FBQ3U4QixXQUFXLENBQUNuNEMsU0FBYixFQUF3QjtBQUNqQ3E0QyxFQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxDQUFtQmQsUUFBbkIsRUFBNkI7QUFDdEMsUUFBSXo5QyxNQUFNLEdBQUdELFNBQVMsQ0FBQ0MsTUFBdkI7QUFDQSxXQUFPLElBQUk2OUMsWUFBSixDQUFpQmwrQyxZQUFVLENBQUM4OUMsUUFBRCxDQUFWLEdBQXVCO0FBQzdDOW9DLE1BQUFBLElBQUksRUFBRThvQyxRQUR1QztBQUU3Q3ovQyxNQUFBQSxLQUFLLEVBQUVnQyxNQUFNLEdBQUcsQ0FBVCxHQUFhRCxTQUFTLENBQUMsQ0FBRCxDQUF0QixHQUE0QlQsU0FGVTtBQUc3QzYrQyxNQUFBQSxRQUFRLEVBQUVuK0MsTUFBTSxHQUFHLENBQVQsR0FBYUQsU0FBUyxDQUFDLENBQUQsQ0FBdEIsR0FBNEJUO0FBSE8sS0FBdkIsR0FJcEJpQyxVQUFRLENBQUNrOEMsUUFBRCxDQUFSLEdBQXFCQSxRQUFyQixHQUFnQyxFQUo3QixFQUlpQ2gzQyxrQkFBZ0IsQ0FBQyxJQUFELENBQWhCLENBQXVCcTNDLFVBSnhELENBQVA7QUFLRDtBQVJnQyxDQUF4QixDQUFYO0FBV0FoOEIsYUFBVyxDQUFDdThCLFdBQUQsRUFBYztBQUN2QmpuQyxFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjc0ksQ0FBZCxFQUFpQjtBQUNyQixRQUFJclIsQ0FBQyxHQUFHSCxhQUFhLENBQUMsSUFBRCxDQUFiLEdBQXNCLElBQXRCLEdBQTZCbXdDLFdBQXJDO0FBQ0EsUUFBSUcsZ0JBQWdCLEdBQUd2N0MsU0FBUyxDQUFDb0IsVUFBUSxDQUFDcWIsQ0FBRCxDQUFULEVBQWMwOUIsVUFBZCxDQUFoQzs7QUFDQSxRQUFJb0IsZ0JBQUosRUFBc0I7QUFDcEIsVUFBSUMsVUFBVSxHQUFHcDZDLFVBQVEsQ0FBQ202QyxnQkFBZ0IsQ0FBQzkvQyxJQUFqQixDQUFzQmdoQixDQUF0QixDQUFELENBQXpCO0FBQ0EsYUFBTysrQixVQUFVLENBQUNud0MsV0FBWCxLQUEyQkQsQ0FBM0IsR0FBK0Jvd0MsVUFBL0IsR0FBNEMsSUFBSXB3QyxDQUFKLENBQU0sVUFBVW92QyxRQUFWLEVBQW9CO0FBQzNFLGVBQU9nQixVQUFVLENBQUNGLFNBQVgsQ0FBcUJkLFFBQXJCLENBQVA7QUFDRCxPQUZrRCxDQUFuRDtBQUdEOztBQUNELFFBQUl6OEMsUUFBUSxHQUFHaVQsYUFBVyxDQUFDeUwsQ0FBRCxDQUExQjtBQUNBLFdBQU8sSUFBSXJSLENBQUosQ0FBTSxVQUFVb3ZDLFFBQVYsRUFBb0I7QUFDL0J2b0MsTUFBQUEsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVV6RCxFQUFWLEVBQWNzWCxJQUFkLEVBQW9CO0FBQ3BDNG9DLFFBQUFBLFFBQVEsQ0FBQzlvQyxJQUFULENBQWNwWCxFQUFkO0FBQ0EsWUFBSWtnRCxRQUFRLENBQUNFLE1BQWIsRUFBcUIsT0FBTzlvQyxJQUFJLEVBQVg7QUFDdEIsT0FITSxFQUdKO0FBQUVMLFFBQUFBLFdBQVcsRUFBRSxJQUFmO0FBQXFCQyxRQUFBQSxXQUFXLEVBQUU7QUFBbEMsT0FISSxDQUFQO0FBSUFncEMsTUFBQUEsUUFBUSxDQUFDVSxRQUFUO0FBQ0QsS0FOTSxDQUFQO0FBT0QsR0FsQnNCO0FBbUJ2QnhoQyxFQUFBQSxFQUFFLEVBQUUsU0FBU0EsRUFBVCxHQUFjO0FBQ2hCLFFBQUl0TyxDQUFDLEdBQUdILGFBQWEsQ0FBQyxJQUFELENBQWIsR0FBc0IsSUFBdEIsR0FBNkJtd0MsV0FBckM7QUFDQSxRQUFJcitDLE1BQU0sR0FBR0QsU0FBUyxDQUFDQyxNQUF2QjtBQUNBLFFBQUk0ZixLQUFLLEdBQUcsSUFBSXZWLEtBQUosQ0FBVXJLLE1BQVYsQ0FBWjtBQUNBLFFBQUl5SCxLQUFLLEdBQUcsQ0FBWjs7QUFDQSxXQUFPQSxLQUFLLEdBQUd6SCxNQUFmLEVBQXVCNGYsS0FBSyxDQUFDblksS0FBRCxDQUFMLEdBQWUxSCxTQUFTLENBQUMwSCxLQUFLLEVBQU4sQ0FBeEI7O0FBQ3ZCLFdBQU8sSUFBSTRHLENBQUosQ0FBTSxVQUFVb3ZDLFFBQVYsRUFBb0I7QUFDL0IsV0FBSyxJQUFJbDFDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd2SSxNQUFwQixFQUE0QnVJLENBQUMsRUFBN0IsRUFBaUM7QUFDL0JrMUMsUUFBQUEsUUFBUSxDQUFDOW9DLElBQVQsQ0FBY2lMLEtBQUssQ0FBQ3JYLENBQUQsQ0FBbkI7QUFDQSxZQUFJazFDLFFBQVEsQ0FBQ0UsTUFBYixFQUFxQjtBQUN0Qjs7QUFBQ0YsTUFBQUEsUUFBUSxDQUFDVSxRQUFUO0FBQ0gsS0FMTSxDQUFQO0FBTUQ7QUEvQnNCLENBQWQsQ0FBWDtBQWtDQXgwQyxVQUFRLENBQUMwMEMsV0FBVyxDQUFDbjRDLFNBQWIsRUFBd0JrM0MsVUFBeEIsRUFBb0MsWUFBWTtBQUFFLFNBQU8sSUFBUDtBQUFjLENBQWhFLENBQVI7QUFFQXh0QyxHQUFDLENBQUM7QUFBRS9SLEVBQUFBLE1BQU0sRUFBRTtBQUFWLENBQUQsRUFBbUI7QUFDbEJ5Z0QsRUFBQUEsVUFBVSxFQUFFRDtBQURNLENBQW5CLENBQUQ7QUFJQXIrQixVQUFVLENBQUMsWUFBRCxDQUFWOztBQzNNQSxJQUFJcFEsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJODhCLDBCQUEwQixHQUFHOThCLHNCQUFqQzs7QUFDQSxJQUFJKzhCLE9BQU8sR0FBRy84QixTQUFkO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DLFNBQU8sVUFBVWlGLFVBQVYsRUFBc0I7QUFDM0IsUUFBSXlyQixpQkFBaUIsR0FBR00sMEJBQTBCLENBQUM1MkIsQ0FBM0IsQ0FBNkIsSUFBN0IsQ0FBeEI7QUFDQSxRQUFJZCxNQUFNLEdBQUcyM0IsT0FBTyxDQUFDaHNCLFVBQUQsQ0FBcEI7QUFDQSxLQUFDM0wsTUFBTSxDQUFDdEYsS0FBUCxHQUFlMDhCLGlCQUFpQixDQUFDSixNQUFqQyxHQUEwQ0ksaUJBQWlCLENBQUNQLE9BQTdELEVBQXNFNzJCLE1BQU0sQ0FBQ3ZFLEtBQTdFO0FBQ0EsV0FBTzI3QixpQkFBaUIsQ0FBQ2YsT0FBekI7QUFDRDtBQU5rQyxDQUFwQyxDQUFEOztBQ1BBO0FBQ0EsSUFBSXhLLEtBQUcsR0FBR2p4QixNQUFWOztBQUNBLElBQUkwRyxPQUFPLEdBQUcxRyxrQkFBZDs7QUFDQSxJQUFJd0UsTUFBTSxHQUFHeEUsZ0JBQWI7O0FBRUEsSUFBSTRILFFBQVEsR0FBR3BELE1BQU0sQ0FBQyxVQUFELENBQXJCO0FBQ0EsSUFBSVYsT0FBSyxHQUFHOEQsUUFBUSxDQUFDOUQsS0FBVCxLQUFtQjhELFFBQVEsQ0FBQzlELEtBQVQsR0FBaUIsSUFBSTRDLE9BQUosRUFBcEMsQ0FBWjs7QUFFQSxJQUFJODVDLHdCQUFzQixHQUFHLFVBQVUxMUMsTUFBVixFQUFrQjIxQyxTQUFsQixFQUE2QjV4QyxNQUE3QixFQUFxQztBQUNoRSxNQUFJNnhDLGNBQWMsR0FBRzU4QyxPQUFLLENBQUMzRCxHQUFOLENBQVUySyxNQUFWLENBQXJCOztBQUNBLE1BQUksQ0FBQzQxQyxjQUFMLEVBQXFCO0FBQ25CLFFBQUksQ0FBQzd4QyxNQUFMLEVBQWE7QUFDYi9LLElBQUFBLE9BQUssQ0FBQ29ELEdBQU4sQ0FBVTRELE1BQVYsRUFBa0I0MUMsY0FBYyxHQUFHLElBQUl6dkIsS0FBSixFQUFuQztBQUNEOztBQUNELE1BQUkwdkIsV0FBVyxHQUFHRCxjQUFjLENBQUN2Z0QsR0FBZixDQUFtQnNnRCxTQUFuQixDQUFsQjs7QUFDQSxNQUFJLENBQUNFLFdBQUwsRUFBa0I7QUFDaEIsUUFBSSxDQUFDOXhDLE1BQUwsRUFBYTtBQUNiNnhDLElBQUFBLGNBQWMsQ0FBQ3g1QyxHQUFmLENBQW1CdTVDLFNBQW5CLEVBQThCRSxXQUFXLEdBQUcsSUFBSTF2QixLQUFKLEVBQTVDO0FBQ0Q7O0FBQUMsU0FBTzB2QixXQUFQO0FBQ0gsQ0FYRDs7QUFhQSxJQUFJQyx3QkFBc0IsR0FBRyxVQUFVQyxXQUFWLEVBQXVCNTZDLENBQXZCLEVBQTBCOUMsQ0FBMUIsRUFBNkI7QUFDeEQsTUFBSTI5QyxXQUFXLEdBQUdOLHdCQUFzQixDQUFDdjZDLENBQUQsRUFBSTlDLENBQUosRUFBTyxLQUFQLENBQXhDO0FBQ0EsU0FBTzI5QyxXQUFXLEtBQUsxL0MsU0FBaEIsR0FBNEIsS0FBNUIsR0FBb0MwL0MsV0FBVyxDQUFDMzVDLEdBQVosQ0FBZ0IwNUMsV0FBaEIsQ0FBM0M7QUFDRCxDQUhEOztBQUtBLElBQUlFLHdCQUFzQixHQUFHLFVBQVVGLFdBQVYsRUFBdUI1NkMsQ0FBdkIsRUFBMEI5QyxDQUExQixFQUE2QjtBQUN4RCxNQUFJMjlDLFdBQVcsR0FBR04sd0JBQXNCLENBQUN2NkMsQ0FBRCxFQUFJOUMsQ0FBSixFQUFPLEtBQVAsQ0FBeEM7QUFDQSxTQUFPMjlDLFdBQVcsS0FBSzEvQyxTQUFoQixHQUE0QkEsU0FBNUIsR0FBd0MwL0MsV0FBVyxDQUFDM2dELEdBQVosQ0FBZ0IwZ0QsV0FBaEIsQ0FBL0M7QUFDRCxDQUhEOztBQUtBLElBQUlHLDJCQUF5QixHQUFHLFVBQVVILFdBQVYsRUFBdUJJLGFBQXZCLEVBQXNDaDdDLENBQXRDLEVBQXlDOUMsQ0FBekMsRUFBNEM7QUFDMUVxOUMsRUFBQUEsd0JBQXNCLENBQUN2NkMsQ0FBRCxFQUFJOUMsQ0FBSixFQUFPLElBQVAsQ0FBdEIsQ0FBbUMrRCxHQUFuQyxDQUF1QzI1QyxXQUF2QyxFQUFvREksYUFBcEQ7QUFDRCxDQUZEOztBQUlBLElBQUlDLHlCQUF1QixHQUFHLFVBQVVwMkMsTUFBVixFQUFrQjIxQyxTQUFsQixFQUE2QjtBQUN6RCxNQUFJSyxXQUFXLEdBQUdOLHdCQUFzQixDQUFDMTFDLE1BQUQsRUFBUzIxQyxTQUFULEVBQW9CLEtBQXBCLENBQXhDO0FBQ0EsTUFBSTc1QyxJQUFJLEdBQUcsRUFBWDtBQUNBLE1BQUlrNkMsV0FBSixFQUFpQkEsV0FBVyxDQUFDNXZDLE9BQVosQ0FBb0IsVUFBVW82QixDQUFWLEVBQWEzbkMsR0FBYixFQUFrQjtBQUFFaUQsSUFBQUEsSUFBSSxDQUFDN0MsSUFBTCxDQUFVSixHQUFWO0FBQWlCLEdBQXpEO0FBQ2pCLFNBQU9pRCxJQUFQO0FBQ0QsQ0FMRDs7QUFPQSxJQUFJdTZDLGVBQWEsR0FBRyxVQUFVOWhELEVBQVYsRUFBYztBQUNoQyxTQUFPQSxFQUFFLEtBQUsrQixTQUFQLElBQW9CLE9BQU8vQixFQUFQLElBQWEsUUFBakMsR0FBNENBLEVBQTVDLEdBQWlEc0QsTUFBTSxDQUFDdEQsRUFBRCxDQUE5RDtBQUNELENBRkQ7O0lBSUFFLGVBQUEsR0FBaUI7QUFDZnVFLEVBQUFBLEtBQUssRUFBRUEsT0FEUTtBQUVmczlDLEVBQUFBLE1BQU0sRUFBRVosd0JBRk87QUFHZnI1QyxFQUFBQSxHQUFHLEVBQUV5NUMsd0JBSFU7QUFJZnpnRCxFQUFBQSxHQUFHLEVBQUU0Z0Qsd0JBSlU7QUFLZjc1QyxFQUFBQSxHQUFHLEVBQUU4NUMsMkJBTFU7QUFNZnA2QyxFQUFBQSxJQUFJLEVBQUVzNkMseUJBTlM7QUFPZkcsRUFBQUEsS0FBSyxFQUFFRjtBQVBRLENBQWpCOztBQzlDQSxJQUFJenZDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNoRCx1QkFBcUIsR0FBR3RoRCxlQUE1Qjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFFQSxJQUFJbWhELGVBQWEsR0FBR0csdUJBQXFCLENBQUNELEtBQTFDO0FBQ0EsSUFBSUwsMkJBQXlCLEdBQUdNLHVCQUFxQixDQUFDcDZDLEdBQXREO0FBR0E7O0FBQ0F3SyxHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTNCLENBQUQsRUFBb0M7QUFDbkN5MUMsRUFBQUEsY0FBYyxFQUFFLFNBQVNBLGNBQVQsQ0FBd0JDLFdBQXhCLEVBQXFDQyxhQUFyQyxFQUFvRDMyQztBQUFPO0FBQTNELElBQThFO0FBQzVGLFFBQUkyMUMsU0FBUyxHQUFHNStDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QlYsU0FBdkIsR0FBbUMrL0MsZUFBYSxDQUFDdC9DLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBaEU7QUFDQW0vQyxJQUFBQSwyQkFBeUIsQ0FBQ1EsV0FBRCxFQUFjQyxhQUFkLEVBQTZCdDdDLFVBQVEsQ0FBQzJFLE1BQUQsQ0FBckMsRUFBK0MyMUMsU0FBL0MsQ0FBekI7QUFDRDtBQUprQyxDQUFwQyxDQUFEOztBQ1RBLElBQUkvdUMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJc2hELHVCQUFxQixHQUFHdGhELGVBQTVCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUVBLElBQUltaEQsZUFBYSxHQUFHRyx1QkFBcUIsQ0FBQ0QsS0FBMUM7QUFDQSxJQUFJYixzQkFBc0IsR0FBR2MsdUJBQXFCLENBQUNGLE1BQW5EO0FBQ0EsSUFBSXQ5QyxLQUFLLEdBQUd3OUMsdUJBQXFCLENBQUN4OUMsS0FBbEM7QUFHQTs7QUFDQTROLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQzQxQyxFQUFBQSxjQUFjLEVBQUUsU0FBU0EsY0FBVCxDQUF3QkYsV0FBeEIsRUFBcUMxMkM7QUFBTztBQUE1QyxJQUErRDtBQUM3RSxRQUFJMjFDLFNBQVMsR0FBRzUrQyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJWLFNBQXZCLEdBQW1DKy9DLGVBQWEsQ0FBQ3QvQyxTQUFTLENBQUMsQ0FBRCxDQUFWLENBQWhFO0FBQ0EsUUFBSWkvQyxXQUFXLEdBQUdOLHNCQUFzQixDQUFDcjZDLFVBQVEsQ0FBQzJFLE1BQUQsQ0FBVCxFQUFtQjIxQyxTQUFuQixFQUE4QixLQUE5QixDQUF4QztBQUNBLFFBQUlLLFdBQVcsS0FBSzEvQyxTQUFoQixJQUE2QixDQUFDMC9DLFdBQVcsQ0FBQyxRQUFELENBQVgsQ0FBc0JVLFdBQXRCLENBQWxDLEVBQXNFLE9BQU8sS0FBUDtBQUN0RSxRQUFJVixXQUFXLENBQUN6d0IsSUFBaEIsRUFBc0IsT0FBTyxJQUFQO0FBQ3RCLFFBQUlxd0IsY0FBYyxHQUFHNThDLEtBQUssQ0FBQzNELEdBQU4sQ0FBVTJLLE1BQVYsQ0FBckI7QUFDQTQxQyxJQUFBQSxjQUFjLENBQUMsUUFBRCxDQUFkLENBQXlCRCxTQUF6QjtBQUNBLFdBQU8sQ0FBQyxDQUFDQyxjQUFjLENBQUNyd0IsSUFBakIsSUFBeUJ2c0IsS0FBSyxDQUFDLFFBQUQsQ0FBTCxDQUFnQmdILE1BQWhCLENBQWhDO0FBQ0Q7QUFUa0MsQ0FBcEMsQ0FBRDs7QUNWQSxJQUFJNEcsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJc2hELHVCQUFxQixHQUFHdGhELGVBQTVCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUk2VSxnQkFBYyxHQUFHN1Usc0JBQXJCOztBQUVBLElBQUk0Z0Qsd0JBQXNCLEdBQUdVLHVCQUFxQixDQUFDbjZDLEdBQW5EO0FBQ0EsSUFBSTQ1Qyx3QkFBc0IsR0FBR08sdUJBQXFCLENBQUNuaEQsR0FBbkQ7QUFDQSxJQUFJZ2hELGVBQWEsR0FBR0csdUJBQXFCLENBQUNELEtBQTFDOztBQUVBLElBQUlNLG1CQUFtQixHQUFHLFVBQVVkLFdBQVYsRUFBdUI1NkMsQ0FBdkIsRUFBMEI5QyxDQUExQixFQUE2QjtBQUNyRCxNQUFJaUIsTUFBTSxHQUFHdzhDLHdCQUFzQixDQUFDQyxXQUFELEVBQWM1NkMsQ0FBZCxFQUFpQjlDLENBQWpCLENBQW5DO0FBQ0EsTUFBSWlCLE1BQUosRUFBWSxPQUFPMjhDLHdCQUFzQixDQUFDRixXQUFELEVBQWM1NkMsQ0FBZCxFQUFpQjlDLENBQWpCLENBQTdCO0FBQ1osTUFBSXc0QixNQUFNLEdBQUc5bUIsZ0JBQWMsQ0FBQzVPLENBQUQsQ0FBM0I7QUFDQSxTQUFPMDFCLE1BQU0sS0FBSyxJQUFYLEdBQWtCZ21CLG1CQUFtQixDQUFDZCxXQUFELEVBQWNsbEIsTUFBZCxFQUFzQng0QixDQUF0QixDQUFyQyxHQUFnRS9CLFNBQXZFO0FBQ0QsQ0FMRDtBQVFBOzs7QUFDQXNRLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQzgxQyxFQUFBQSxXQUFXLEVBQUUsU0FBU0EsV0FBVCxDQUFxQkosV0FBckIsRUFBa0MxMkM7QUFBTztBQUF6QyxJQUE0RDtBQUN2RSxRQUFJMjFDLFNBQVMsR0FBRzUrQyxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJWLFNBQXZCLEdBQW1DKy9DLGVBQWEsQ0FBQ3QvQyxTQUFTLENBQUMsQ0FBRCxDQUFWLENBQWhFO0FBQ0EsV0FBTzgvQyxtQkFBbUIsQ0FBQ0gsV0FBRCxFQUFjcjdDLFVBQVEsQ0FBQzJFLE1BQUQsQ0FBdEIsRUFBZ0MyMUMsU0FBaEMsQ0FBMUI7QUFDRDtBQUprQyxDQUFwQyxDQUFEOztBQ2xCQSxJQUFJL3VDLEdBQUMsR0FBRzFSLE9BQVI7OztBQUVBLElBQUkybUMsS0FBRyxHQUFHM21DLE1BQVY7O0FBQ0EsSUFBSXNoRCx1QkFBcUIsR0FBR3RoRCxlQUE1Qjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDs7QUFFQSxJQUFJa2hELHlCQUF1QixHQUFHSSx1QkFBcUIsQ0FBQzE2QyxJQUFwRDtBQUNBLElBQUl1NkMsZUFBYSxHQUFHRyx1QkFBcUIsQ0FBQ0QsS0FBMUM7O0FBRUEsSUFBSW5vQyxNQUFJLEdBQUcsVUFBVTJvQyxJQUFWLEVBQWdCO0FBQ3pCLE1BQUl6OEMsTUFBTSxHQUFHLEVBQWI7QUFDQTRSLEVBQUFBLFNBQU8sQ0FBQzZxQyxJQUFELEVBQU96OEMsTUFBTSxDQUFDckIsSUFBZCxFQUFvQjtBQUFFc0wsSUFBQUEsSUFBSSxFQUFFaks7QUFBUixHQUFwQixDQUFQO0FBQ0EsU0FBT0EsTUFBUDtBQUNELENBSkQ7O0FBTUEsSUFBSTA4QyxvQkFBb0IsR0FBRyxVQUFVNzdDLENBQVYsRUFBYTlDLENBQWIsRUFBZ0I7QUFDekMsTUFBSTQrQyxLQUFLLEdBQUdiLHlCQUF1QixDQUFDajdDLENBQUQsRUFBSTlDLENBQUosQ0FBbkM7QUFDQSxNQUFJdzRCLE1BQU0sR0FBRzltQixnQkFBYyxDQUFDNU8sQ0FBRCxDQUEzQjtBQUNBLE1BQUkwMUIsTUFBTSxLQUFLLElBQWYsRUFBcUIsT0FBT29tQixLQUFQO0FBQ3JCLE1BQUlDLEtBQUssR0FBR0Ysb0JBQW9CLENBQUNubUIsTUFBRCxFQUFTeDRCLENBQVQsQ0FBaEM7QUFDQSxTQUFPNitDLEtBQUssQ0FBQ2xnRCxNQUFOLEdBQWVpZ0QsS0FBSyxDQUFDamdELE1BQU4sR0FBZW9YLE1BQUksQ0FBQyxJQUFJeXRCLEtBQUosQ0FBUW9iLEtBQUssQ0FBQ3YzQyxNQUFOLENBQWF3M0MsS0FBYixDQUFSLENBQUQsQ0FBbkIsR0FBb0RBLEtBQW5FLEdBQTJFRCxLQUFsRjtBQUNELENBTkQ7QUFTQTs7O0FBQ0Fyd0MsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DbTJDLEVBQUFBLGVBQWUsRUFBRSxTQUFTQSxlQUFULENBQXlCbjNDO0FBQU87QUFBaEMsSUFBbUQ7QUFDbEUsUUFBSTIxQyxTQUFTLEdBQUc1K0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCVixTQUF2QixHQUFtQysvQyxlQUFhLENBQUN0L0MsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUFoRTtBQUNBLFdBQU9pZ0Qsb0JBQW9CLENBQUMzN0MsVUFBUSxDQUFDMkUsTUFBRCxDQUFULEVBQW1CMjFDLFNBQW5CLENBQTNCO0FBQ0Q7QUFKa0MsQ0FBcEMsQ0FBRDs7QUMzQkEsSUFBSS91QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlzaEQsdUJBQXFCLEdBQUd0aEQsZUFBNUI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBRUEsSUFBSStnRCxzQkFBc0IsR0FBR08sdUJBQXFCLENBQUNuaEQsR0FBbkQ7QUFDQSxJQUFJZ2hELGVBQWEsR0FBR0csdUJBQXFCLENBQUNELEtBQTFDO0FBR0E7O0FBQ0EzdkMsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DbzJDLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCVixXQUF4QixFQUFxQzEyQztBQUFPO0FBQTVDLElBQStEO0FBQzdFLFFBQUkyMUMsU0FBUyxHQUFHNStDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QlYsU0FBdkIsR0FBbUMrL0MsZUFBYSxDQUFDdC9DLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBaEU7QUFDQSxXQUFPay9DLHNCQUFzQixDQUFDUyxXQUFELEVBQWNyN0MsVUFBUSxDQUFDMkUsTUFBRCxDQUF0QixFQUFnQzIxQyxTQUFoQyxDQUE3QjtBQUNEO0FBSmtDLENBQXBDLENBQUQ7O0FDVEEsSUFBSS91QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlzaEQsdUJBQXFCLEdBQUd0aEQsZUFBNUI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBRUEsSUFBSWtoRCx1QkFBdUIsR0FBR0ksdUJBQXFCLENBQUMxNkMsSUFBcEQ7QUFDQSxJQUFJdTZDLGVBQWEsR0FBR0csdUJBQXFCLENBQUNELEtBQTFDO0FBR0E7O0FBQ0EzdkMsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DcTJDLEVBQUFBLGtCQUFrQixFQUFFLFNBQVNBLGtCQUFULENBQTRCcjNDO0FBQU87QUFBbkMsSUFBc0Q7QUFDeEUsUUFBSTIxQyxTQUFTLEdBQUc1K0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCVixTQUF2QixHQUFtQysvQyxlQUFhLENBQUN0L0MsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUFoRTtBQUNBLFdBQU9xL0MsdUJBQXVCLENBQUMvNkMsVUFBUSxDQUFDMkUsTUFBRCxDQUFULEVBQW1CMjFDLFNBQW5CLENBQTlCO0FBQ0Q7QUFKa0MsQ0FBcEMsQ0FBRDs7QUNUQSxJQUFJL3VDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXNoRCx1QkFBcUIsR0FBR3RoRCxlQUE1Qjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNlUsZ0JBQWMsR0FBRzdVLHNCQUFyQjs7QUFFQSxJQUFJNGdELHdCQUFzQixHQUFHVSx1QkFBcUIsQ0FBQ242QyxHQUFuRDtBQUNBLElBQUlnNkMsZUFBYSxHQUFHRyx1QkFBcUIsQ0FBQ0QsS0FBMUM7O0FBRUEsSUFBSWUsbUJBQW1CLEdBQUcsVUFBVXZCLFdBQVYsRUFBdUI1NkMsQ0FBdkIsRUFBMEI5QyxDQUExQixFQUE2QjtBQUNyRCxNQUFJaUIsTUFBTSxHQUFHdzhDLHdCQUFzQixDQUFDQyxXQUFELEVBQWM1NkMsQ0FBZCxFQUFpQjlDLENBQWpCLENBQW5DO0FBQ0EsTUFBSWlCLE1BQUosRUFBWSxPQUFPLElBQVA7QUFDWixNQUFJdTNCLE1BQU0sR0FBRzltQixnQkFBYyxDQUFDNU8sQ0FBRCxDQUEzQjtBQUNBLFNBQU8wMUIsTUFBTSxLQUFLLElBQVgsR0FBa0J5bUIsbUJBQW1CLENBQUN2QixXQUFELEVBQWNsbEIsTUFBZCxFQUFzQng0QixDQUF0QixDQUFyQyxHQUFnRSxLQUF2RTtBQUNELENBTEQ7QUFRQTs7O0FBQ0F1TyxHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQTNCLENBQUQsRUFBb0M7QUFDbkN1MkMsRUFBQUEsV0FBVyxFQUFFLFNBQVNBLFdBQVQsQ0FBcUJiLFdBQXJCLEVBQWtDMTJDO0FBQU87QUFBekMsSUFBNEQ7QUFDdkUsUUFBSTIxQyxTQUFTLEdBQUc1K0MsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCVixTQUF2QixHQUFtQysvQyxlQUFhLENBQUN0L0MsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUFoRTtBQUNBLFdBQU91Z0QsbUJBQW1CLENBQUNaLFdBQUQsRUFBY3I3QyxVQUFRLENBQUMyRSxNQUFELENBQXRCLEVBQWdDMjFDLFNBQWhDLENBQTFCO0FBQ0Q7QUFKa0MsQ0FBcEMsQ0FBRDs7QUNqQkEsSUFBSS91QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlzaEQsdUJBQXFCLEdBQUd0aEQsZUFBNUI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBRUEsSUFBSTRnRCxzQkFBc0IsR0FBR1UsdUJBQXFCLENBQUNuNkMsR0FBbkQ7QUFDQSxJQUFJZzZDLGVBQWEsR0FBR0csdUJBQXFCLENBQUNELEtBQTFDO0FBR0E7O0FBQ0EzdkMsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DdzJDLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCZCxXQUF4QixFQUFxQzEyQztBQUFPO0FBQTVDLElBQStEO0FBQzdFLFFBQUkyMUMsU0FBUyxHQUFHNStDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QlYsU0FBdkIsR0FBbUMrL0MsZUFBYSxDQUFDdC9DLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBaEU7QUFDQSxXQUFPKytDLHNCQUFzQixDQUFDWSxXQUFELEVBQWNyN0MsVUFBUSxDQUFDMkUsTUFBRCxDQUF0QixFQUFnQzIxQyxTQUFoQyxDQUE3QjtBQUNEO0FBSmtDLENBQXBDLENBQUQ7O0FDVEEsSUFBSS91QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlzaEQscUJBQXFCLEdBQUd0aEQsZUFBNUI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBRUEsSUFBSW1oRCxhQUFhLEdBQUdHLHFCQUFxQixDQUFDRCxLQUExQztBQUNBLElBQUlMLHlCQUF5QixHQUFHTSxxQkFBcUIsQ0FBQ3A2QyxHQUF0RDtBQUdBOztBQUNBd0ssR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQmdCLEVBQUFBLElBQUksRUFBRTtBQUEzQixDQUFELEVBQW9DO0FBQ25DbEUsRUFBQUEsUUFBUSxFQUFFLFNBQVNBLFFBQVQsQ0FBa0I0NUMsV0FBbEIsRUFBK0JDLGFBQS9CLEVBQThDO0FBQ3RELFdBQU8sU0FBU2MsU0FBVCxDQUFtQnozQyxNQUFuQixFQUEyQm5ILEdBQTNCLEVBQWdDO0FBQ3JDcTlDLE1BQUFBLHlCQUF5QixDQUFDUSxXQUFELEVBQWNDLGFBQWQsRUFBNkJ0N0MsVUFBUSxDQUFDMkUsTUFBRCxDQUFyQyxFQUErQ3EyQyxhQUFhLENBQUN4OUMsR0FBRCxDQUE1RCxDQUF6QjtBQUNELEtBRkQ7QUFHRDtBQUxrQyxDQUFwQyxDQUFEOztBQ1JBLElBQUlULFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOzs7SUFHQVQsa0JBQUEsR0FBaUIsWUFBNkI7QUFDNUMsTUFBSTJILEdBQUcsR0FBR2YsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxNQUFJcThDLEtBQUssR0FBR3QvQyxXQUFTLENBQUNnRSxHQUFHLENBQUNzb0IsR0FBTCxDQUFyQjs7QUFDQSxPQUFLLElBQUk1WCxDQUFDLEdBQUcsQ0FBUixFQUFXRixHQUFHLEdBQUc3VixTQUFTLENBQUNDLE1BQWhDLEVBQXdDOFYsQ0FBQyxHQUFHRixHQUE1QyxFQUFpREUsQ0FBQyxFQUFsRCxFQUFzRDtBQUNwRDRxQyxJQUFBQSxLQUFLLENBQUNoaUQsSUFBTixDQUFXMEcsR0FBWCxFQUFnQnJGLFNBQVMsQ0FBQytWLENBQUQsQ0FBekI7QUFDRDs7QUFDRCxTQUFPMVEsR0FBUDtBQUNELENBUEQ7O0FDSkEsSUFBSXdLLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJeWlELGtCQUFnQixHQUFHemlELGtCQUF2QjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEcVosRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsR0FBbUM7QUFDekMsV0FBT0Qsa0JBQWdCLENBQUNqekMsS0FBakIsQ0FBdUIsSUFBdkIsRUFBNkIzTixTQUE3QixDQUFQO0FBQ0Q7QUFINEQsQ0FBOUQsQ0FBRDs7QUNOQSxJQUFJNlAsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUl3NkMscUJBQW1CLEdBQUd4NkMscUJBQTFCO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0RvUixFQUFBQSxTQUFTLEVBQUUsU0FBU0EsU0FBVCxHQUFzQztBQUMvQyxXQUFPRCxxQkFBbUIsQ0FBQ2hyQyxLQUFwQixDQUEwQixJQUExQixFQUFnQzNOLFNBQWhDLENBQVA7QUFDRDtBQUg0RCxDQUE5RCxDQUFEOztBQ05BLElBQUk2UCxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJc3BCLG9CQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEc1osRUFBQUEsVUFBVSxFQUFFLFNBQVNBLFVBQVQsQ0FBb0J4c0MsUUFBcEIsRUFBOEI7QUFDeEMsUUFBSWpQLEdBQUcsR0FBR2YsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJeThDLE1BQU0sR0FBRyxLQUFLdDVCLG9CQUFrQixDQUFDcGlCLEdBQUQsRUFBTW5GLFlBQVUsQ0FBQyxLQUFELENBQWhCLENBQXZCLEVBQWlEbUYsR0FBakQsQ0FBYjtBQUNBLFFBQUltekMsT0FBTyxHQUFHbjNDLFdBQVMsQ0FBQzAvQyxNQUFNLENBQUMsUUFBRCxDQUFQLENBQXZCO0FBQ0E1ckMsSUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXRWLEtBQVYsRUFBaUI7QUFDakN3NUMsTUFBQUEsT0FBTyxDQUFDNzVDLElBQVIsQ0FBYW9pRCxNQUFiLEVBQXFCL2hELEtBQXJCO0FBQ0QsS0FGTSxDQUFQO0FBR0EsV0FBTytoRCxNQUFQO0FBQ0Q7QUFUNEQsQ0FBOUQsQ0FBRDs7SUNYQXJqRCxnQkFBQSxHQUFpQixVQUFVRixFQUFWLEVBQWM7QUFDN0I7QUFDQSxTQUFPc25DLEdBQUcsQ0FBQzMrQixTQUFKLENBQWNzVixNQUFkLENBQXFCOWMsSUFBckIsQ0FBMEJuQixFQUExQixDQUFQO0FBQ0QsQ0FIRDs7QUNDQSxJQUFJcVMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJNmlELGdCQUFjLEdBQUc3aUQsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0QvM0IsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZVA7QUFBVztBQUExQixJQUEyQztBQUNoRCxRQUFJN0osR0FBRyxHQUFHZixVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUcrL0MsZ0JBQWMsQ0FBQzM3QyxHQUFELENBQTdCO0FBQ0EsUUFBSStKLGFBQWEsR0FBR1gsTUFBSSxDQUFDUyxVQUFELEVBQWFsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFuRCxFQUE4RCxDQUE5RCxDQUF4QjtBQUNBLFdBQU8sQ0FBQzRWLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVakMsS0FBVixFQUFpQjhWLElBQWpCLEVBQXVCO0FBQy9DLFVBQUksQ0FBQzFGLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUUEsS0FBUixFQUFlcUcsR0FBZixDQUFsQixFQUF1QyxPQUFPeVAsSUFBSSxFQUFYO0FBQ3hDLEtBRmMsRUFFWjtBQUFFTCxNQUFBQSxXQUFXLEVBQUUsSUFBZjtBQUFxQkMsTUFBQUEsV0FBVyxFQUFFO0FBQWxDLEtBRlksQ0FBUCxDQUVxQ0wsT0FGN0M7QUFHRDtBQVI0RCxDQUE5RCxDQUFEOztBQ1RBLElBQUl4RSxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJc1EsTUFBSSxHQUFHdFEsbUJBQVg7O0FBQ0EsSUFBSXNwQixvQkFBa0IsR0FBR3RwQixvQkFBekI7O0FBQ0EsSUFBSTZpRCxnQkFBYyxHQUFHN2lELGdCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEajRCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCTDtBQUFXO0FBQTNCLElBQTRDO0FBQ2xELFFBQUk3SixHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXJELFFBQVEsR0FBRysvQyxnQkFBYyxDQUFDMzdDLEdBQUQsQ0FBN0I7QUFDQSxRQUFJK0osYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsUUFBSXdoRCxNQUFNLEdBQUcsS0FBS3Q1QixvQkFBa0IsQ0FBQ3BpQixHQUFELEVBQU1uRixZQUFVLENBQUMsS0FBRCxDQUFoQixDQUF2QixHQUFiO0FBQ0EsUUFBSXlnRCxLQUFLLEdBQUd0L0MsV0FBUyxDQUFDMC9DLE1BQU0sQ0FBQ3B6QixHQUFSLENBQXJCO0FBQ0F4WSxJQUFBQSxTQUFPLENBQUNsVSxRQUFELEVBQVcsVUFBVWpDLEtBQVYsRUFBaUI7QUFDakMsVUFBSW9RLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUUEsS0FBUixFQUFlcUcsR0FBZixDQUFqQixFQUFzQ3M3QyxLQUFLLENBQUNoaUQsSUFBTixDQUFXb2lELE1BQVgsRUFBbUIvaEQsS0FBbkI7QUFDdkMsS0FGTSxFQUVKO0FBQUV5VixNQUFBQSxXQUFXLEVBQUU7QUFBZixLQUZJLENBQVA7QUFHQSxXQUFPc3NDLE1BQVA7QUFDRDtBQVg0RCxDQUE5RCxDQUFEOztBQ1pBLElBQUlseEMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJNmlELGdCQUFjLEdBQUc3aUQsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0Q5M0IsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY1I7QUFBVztBQUF6QixJQUEwQztBQUM5QyxRQUFJN0osR0FBRyxHQUFHZixVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUcrL0MsZ0JBQWMsQ0FBQzM3QyxHQUFELENBQTdCO0FBQ0EsUUFBSStKLGFBQWEsR0FBR1gsTUFBSSxDQUFDUyxVQUFELEVBQWFsUCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFuRCxFQUE4RCxDQUE5RCxDQUF4QjtBQUNBLFdBQU80VixTQUFPLENBQUNsVSxRQUFELEVBQVcsVUFBVWpDLEtBQVYsRUFBaUI4VixJQUFqQixFQUF1QjtBQUM5QyxVQUFJMUYsYUFBYSxDQUFDcFEsS0FBRCxFQUFRQSxLQUFSLEVBQWVxRyxHQUFmLENBQWpCLEVBQXNDLE9BQU95UCxJQUFJLENBQUM5VixLQUFELENBQVg7QUFDdkMsS0FGYSxFQUVYO0FBQUV5VixNQUFBQSxXQUFXLEVBQUUsSUFBZjtBQUFxQkMsTUFBQUEsV0FBVyxFQUFFO0FBQWxDLEtBRlcsQ0FBUCxDQUVzQ25SLE1BRjdDO0FBR0Q7QUFSNEQsQ0FBOUQsQ0FBRDs7QUNWQSxJQUFJc00sR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa1osTUFBSSxHQUFHbFosY0FBWDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBdkIsQ0FBRCxFQUFnQztBQUMvQm9OLEVBQUFBLElBQUksRUFBRUE7QUFEeUIsQ0FBaEMsQ0FBRDs7QUNKQSxJQUFJeEgsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNwQixvQkFBa0IsR0FBR3RwQixvQkFBekI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RHlaLEVBQUFBLFlBQVksRUFBRSxTQUFTQSxZQUFULENBQXNCM3NDLFFBQXRCLEVBQWdDO0FBQzVDLFFBQUlqUCxHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXk4QyxNQUFNLEdBQUcsS0FBS3Q1QixvQkFBa0IsQ0FBQ3BpQixHQUFELEVBQU1uRixZQUFVLENBQUMsS0FBRCxDQUFoQixDQUF2QixHQUFiO0FBQ0EsUUFBSWdoRCxRQUFRLEdBQUc3L0MsV0FBUyxDQUFDZ0UsR0FBRyxDQUFDQyxHQUFMLENBQXhCO0FBQ0EsUUFBSXE3QyxLQUFLLEdBQUd0L0MsV0FBUyxDQUFDMC9DLE1BQU0sQ0FBQ3B6QixHQUFSLENBQXJCO0FBQ0F4WSxJQUFBQSxTQUFPLENBQUNiLFFBQUQsRUFBVyxVQUFVdFYsS0FBVixFQUFpQjtBQUNqQyxVQUFJa2lELFFBQVEsQ0FBQ3ZpRCxJQUFULENBQWMwRyxHQUFkLEVBQW1CckcsS0FBbkIsQ0FBSixFQUErQjJoRCxLQUFLLENBQUNoaUQsSUFBTixDQUFXb2lELE1BQVgsRUFBbUIvaEQsS0FBbkI7QUFDaEMsS0FGTSxDQUFQO0FBR0EsV0FBTytoRCxNQUFQO0FBQ0Q7QUFWNEQsQ0FBOUQsQ0FBRDs7QUNWQSxJQUFJbHhDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RDJaLEVBQUFBLGNBQWMsRUFBRSxTQUFTQSxjQUFULENBQXdCN3NDLFFBQXhCLEVBQWtDO0FBQ2hELFFBQUlqUCxHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSTQ4QyxRQUFRLEdBQUc3L0MsV0FBUyxDQUFDZ0UsR0FBRyxDQUFDQyxHQUFMLENBQXhCO0FBQ0EsV0FBTyxDQUFDNlAsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXRWLEtBQVYsRUFBaUI4VixJQUFqQixFQUF1QjtBQUMvQyxVQUFJb3NDLFFBQVEsQ0FBQ3ZpRCxJQUFULENBQWMwRyxHQUFkLEVBQW1CckcsS0FBbkIsTUFBOEIsSUFBbEMsRUFBd0MsT0FBTzhWLElBQUksRUFBWDtBQUN6QyxLQUZjLEVBRVo7QUFBRUosTUFBQUEsV0FBVyxFQUFFO0FBQWYsS0FGWSxDQUFQLENBRWtCTCxPQUYxQjtBQUdEO0FBUDRELENBQTlELENBQUQ7O0FDUkEsSUFBSXhFLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJK0IsWUFBVSxHQUFHL0IsWUFBakI7O0FBQ0EsSUFBSWtELFdBQVMsR0FBR2xELFdBQWhCOztBQUNBLElBQUl5QixZQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJK1YsYUFBVyxHQUFHL1YsYUFBbEI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RDRaLEVBQUFBLFVBQVUsRUFBRSxTQUFTQSxVQUFULENBQW9COXNDLFFBQXBCLEVBQThCO0FBQ3hDLFFBQUlyVCxRQUFRLEdBQUdpVCxhQUFXLENBQUMsSUFBRCxDQUExQjtBQUNBLFFBQUltdEMsUUFBUSxHQUFHLzhDLFVBQVEsQ0FBQ2dRLFFBQUQsQ0FBdkI7QUFDQSxRQUFJNHNDLFFBQVEsR0FBR0csUUFBUSxDQUFDLzdDLEdBQXhCOztBQUNBLFFBQUksQ0FBQzFGLFlBQVUsQ0FBQ3NoRCxRQUFELENBQWYsRUFBMkI7QUFDekJHLE1BQUFBLFFBQVEsR0FBRyxLQUFLbmhELFlBQVUsQ0FBQyxLQUFELENBQWYsRUFBd0JvVSxRQUF4QixDQUFYO0FBQ0E0c0MsTUFBQUEsUUFBUSxHQUFHNy9DLFdBQVMsQ0FBQ2dnRCxRQUFRLENBQUMvN0MsR0FBVixDQUFwQjtBQUNEOztBQUNELFdBQU8sQ0FBQzZQLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVakMsS0FBVixFQUFpQjhWLElBQWpCLEVBQXVCO0FBQy9DLFVBQUlvc0MsUUFBUSxDQUFDdmlELElBQVQsQ0FBYzBpRCxRQUFkLEVBQXdCcmlELEtBQXhCLE1BQW1DLEtBQXZDLEVBQThDLE9BQU84VixJQUFJLEVBQVg7QUFDL0MsS0FGYyxFQUVaO0FBQUVMLE1BQUFBLFdBQVcsRUFBRSxJQUFmO0FBQXFCQyxNQUFBQSxXQUFXLEVBQUU7QUFBbEMsS0FGWSxDQUFQLENBRXFDTCxPQUY3QztBQUdEO0FBWjRELENBQTlELENBQUQ7O0FDWEEsSUFBSXhFLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RDhaLEVBQUFBLFlBQVksRUFBRSxTQUFTQSxZQUFULENBQXNCaHRDLFFBQXRCLEVBQWdDO0FBQzVDLFFBQUlqUCxHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSTQ4QyxRQUFRLEdBQUc3L0MsV0FBUyxDQUFDZ0UsR0FBRyxDQUFDQyxHQUFMLENBQXhCO0FBQ0EsV0FBTyxDQUFDNlAsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXRWLEtBQVYsRUFBaUI4VixJQUFqQixFQUF1QjtBQUMvQyxVQUFJb3NDLFFBQVEsQ0FBQ3ZpRCxJQUFULENBQWMwRyxHQUFkLEVBQW1CckcsS0FBbkIsTUFBOEIsS0FBbEMsRUFBeUMsT0FBTzhWLElBQUksRUFBWDtBQUMxQyxLQUZjLEVBRVo7QUFBRUosTUFBQUEsV0FBVyxFQUFFO0FBQWYsS0FGWSxDQUFQLENBRWtCTCxPQUYxQjtBQUdEO0FBUDRELENBQTlELENBQUQ7O0FDUkEsSUFBSXhFLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJNmlELGdCQUFjLEdBQUc3aUQsZ0JBQXJCOztBQUNBLElBQUlnWCxTQUFPLEdBQUdoWCxTQUFkO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QityQixFQUFBQSxJQUFJLEVBQUUsSUFBcEM7QUFBMEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQWxELENBQUQsRUFBOEQ7QUFDN0RyZ0MsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsQ0FBY29WLFNBQWQsRUFBeUI7QUFDN0IsUUFBSWxYLEdBQUcsR0FBR2YsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJckQsUUFBUSxHQUFHKy9DLGdCQUFjLENBQUMzN0MsR0FBRCxDQUE3QjtBQUNBLFFBQUlrOEMsR0FBRyxHQUFHaGxDLFNBQVMsS0FBS2hkLFNBQWQsR0FBMEIsR0FBMUIsR0FBZ0N1QixNQUFNLENBQUN5YixTQUFELENBQWhEO0FBQ0EsUUFBSWhaLE1BQU0sR0FBRyxFQUFiO0FBQ0E0UixJQUFBQSxTQUFPLENBQUNsVSxRQUFELEVBQVdzQyxNQUFNLENBQUNyQixJQUFsQixFQUF3QjtBQUFFc0wsTUFBQUEsSUFBSSxFQUFFakssTUFBUjtBQUFnQmtSLE1BQUFBLFdBQVcsRUFBRTtBQUE3QixLQUF4QixDQUFQO0FBQ0EsV0FBT2xSLE1BQU0sQ0FBQzRELElBQVAsQ0FBWW82QyxHQUFaLENBQVA7QUFDRDtBQVI0RCxDQUE5RCxDQUFEOztBQ1JBLElBQUkxeEMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUkrQixZQUFVLEdBQUcvQixZQUFqQjs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSXNRLE1BQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlzcEIsb0JBQWtCLEdBQUd0cEIsb0JBQXpCOztBQUNBLElBQUk2aUQsZ0JBQWMsR0FBRzdpRCxnQkFBckI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RGw0QixFQUFBQSxHQUFHLEVBQUUsU0FBU0EsR0FBVCxDQUFhSjtBQUFXO0FBQXhCLElBQXlDO0FBQzVDLFFBQUk3SixHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXJELFFBQVEsR0FBRysvQyxnQkFBYyxDQUFDMzdDLEdBQUQsQ0FBN0I7QUFDQSxRQUFJK0osYUFBYSxHQUFHWCxNQUFJLENBQUNTLFVBQUQsRUFBYWxQLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQW5ELEVBQThELENBQTlELENBQXhCO0FBQ0EsUUFBSXdoRCxNQUFNLEdBQUcsS0FBS3Q1QixvQkFBa0IsQ0FBQ3BpQixHQUFELEVBQU1uRixZQUFVLENBQUMsS0FBRCxDQUFoQixDQUF2QixHQUFiO0FBQ0EsUUFBSXlnRCxLQUFLLEdBQUd0L0MsV0FBUyxDQUFDMC9DLE1BQU0sQ0FBQ3B6QixHQUFSLENBQXJCO0FBQ0F4WSxJQUFBQSxTQUFPLENBQUNsVSxRQUFELEVBQVcsVUFBVWpDLEtBQVYsRUFBaUI7QUFDakMyaEQsTUFBQUEsS0FBSyxDQUFDaGlELElBQU4sQ0FBV29pRCxNQUFYLEVBQW1CM3hDLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUUEsS0FBUixFQUFlcUcsR0FBZixDQUFoQztBQUNELEtBRk0sRUFFSjtBQUFFb1AsTUFBQUEsV0FBVyxFQUFFO0FBQWYsS0FGSSxDQUFQO0FBR0EsV0FBT3NzQyxNQUFQO0FBQ0Q7QUFYNEQsQ0FBOUQsQ0FBRDs7QUNiQSxJQUFJbHhDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXllLElBQUUsR0FBR3plLFlBQVQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCZ0IsRUFBQUEsSUFBSSxFQUFFO0FBQXZCLENBQUQsRUFBZ0M7QUFDL0IyUyxFQUFBQSxFQUFFLEVBQUVBO0FBRDJCLENBQWhDLENBQUQ7O0FDSkEsSUFBSS9NLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJa0QsV0FBUyxHQUFHbEQsV0FBaEI7O0FBQ0EsSUFBSW1HLFVBQVEsR0FBR25HLFdBQWY7O0FBQ0EsSUFBSTZpRCxnQkFBYyxHQUFHN2lELGdCQUFyQjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEbnFCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCbk87QUFBVztBQUEzQixJQUFpRDtBQUN2RCxRQUFJN0osR0FBRyxHQUFHZixVQUFRLENBQUMsSUFBRCxDQUFsQjtBQUNBLFFBQUlyRCxRQUFRLEdBQUcrL0MsZ0JBQWMsQ0FBQzM3QyxHQUFELENBQTdCO0FBQ0EsUUFBSWd4QyxTQUFTLEdBQUdyMkMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5DO0FBQ0EsUUFBSXEyQyxXQUFXLEdBQUdELFNBQVMsR0FBRzkyQyxTQUFILEdBQWVTLFNBQVMsQ0FBQyxDQUFELENBQW5EO0FBQ0FxQixJQUFBQSxXQUFTLENBQUM2TixVQUFELENBQVQ7QUFDQWlHLElBQUFBLFNBQU8sQ0FBQ2xVLFFBQUQsRUFBVyxVQUFVakMsS0FBVixFQUFpQjtBQUNqQyxVQUFJcTNDLFNBQUosRUFBZTtBQUNiQSxRQUFBQSxTQUFTLEdBQUcsS0FBWjtBQUNBQyxRQUFBQSxXQUFXLEdBQUd0M0MsS0FBZDtBQUNELE9BSEQsTUFHTztBQUNMczNDLFFBQUFBLFdBQVcsR0FBR3BuQyxVQUFVLENBQUNvbkMsV0FBRCxFQUFjdDNDLEtBQWQsRUFBcUJBLEtBQXJCLEVBQTRCcUcsR0FBNUIsQ0FBeEI7QUFDRDtBQUNGLEtBUE0sRUFPSjtBQUFFb1AsTUFBQUEsV0FBVyxFQUFFO0FBQWYsS0FQSSxDQUFQO0FBUUEsUUFBSTRoQyxTQUFKLEVBQWUsTUFBTTcyQyxTQUFTLENBQUMsMkNBQUQsQ0FBZjtBQUNmLFdBQU84MkMsV0FBUDtBQUNEO0FBakI0RCxDQUE5RCxDQUFEOztBQ1RBLElBQUl6bUMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUltRyxVQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlzUSxNQUFJLEdBQUd0USxtQkFBWDs7QUFDQSxJQUFJNmlELGNBQWMsR0FBRzdpRCxnQkFBckI7O0FBQ0EsSUFBSWdYLFNBQU8sR0FBR2hYLFNBQWQ7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCb0ssRUFBQUEsS0FBSyxFQUFFLElBQXhCO0FBQThCK3JCLEVBQUFBLElBQUksRUFBRSxJQUFwQztBQUEwQy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBbEQsQ0FBRCxFQUE4RDtBQUM3RGg0QixFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxDQUFjTjtBQUFXO0FBQXpCLElBQTBDO0FBQzlDLFFBQUk3SixHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXJELFFBQVEsR0FBRysvQyxjQUFjLENBQUMzN0MsR0FBRCxDQUE3QjtBQUNBLFFBQUkrSixhQUFhLEdBQUdYLE1BQUksQ0FBQ1MsVUFBRCxFQUFhbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBbkQsRUFBOEQsQ0FBOUQsQ0FBeEI7QUFDQSxXQUFPNFYsU0FBTyxDQUFDbFUsUUFBRCxFQUFXLFVBQVVqQyxLQUFWLEVBQWlCOFYsSUFBakIsRUFBdUI7QUFDOUMsVUFBSTFGLGFBQWEsQ0FBQ3BRLEtBQUQsRUFBUUEsS0FBUixFQUFlcUcsR0FBZixDQUFqQixFQUFzQyxPQUFPeVAsSUFBSSxFQUFYO0FBQ3ZDLEtBRmEsRUFFWDtBQUFFTCxNQUFBQSxXQUFXLEVBQUUsSUFBZjtBQUFxQkMsTUFBQUEsV0FBVyxFQUFFO0FBQWxDLEtBRlcsQ0FBUCxDQUVzQ0wsT0FGN0M7QUFHRDtBQVI0RCxDQUE5RCxDQUFEOztBQ1RBLElBQUl4RSxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrRCxXQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJc3BCLG9CQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJZ1gsU0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEZ2EsRUFBQUEsbUJBQW1CLEVBQUUsU0FBU0EsbUJBQVQsQ0FBNkJsdEMsUUFBN0IsRUFBdUM7QUFDMUQsUUFBSWpQLEdBQUcsR0FBR2YsVUFBUSxDQUFDLElBQUQsQ0FBbEI7QUFDQSxRQUFJeThDLE1BQU0sR0FBRyxLQUFLdDVCLG9CQUFrQixDQUFDcGlCLEdBQUQsRUFBTW5GLFlBQVUsQ0FBQyxLQUFELENBQWhCLENBQXZCLEVBQWlEbUYsR0FBakQsQ0FBYjtBQUNBLFFBQUltekMsT0FBTyxHQUFHbjNDLFdBQVMsQ0FBQzAvQyxNQUFNLENBQUMsUUFBRCxDQUFQLENBQXZCO0FBQ0EsUUFBSUosS0FBSyxHQUFHdC9DLFdBQVMsQ0FBQzAvQyxNQUFNLENBQUNwekIsR0FBUixDQUFyQjtBQUNBeFksSUFBQUEsU0FBTyxDQUFDYixRQUFELEVBQVcsVUFBVXRWLEtBQVYsRUFBaUI7QUFDakN3NUMsTUFBQUEsT0FBTyxDQUFDNzVDLElBQVIsQ0FBYW9pRCxNQUFiLEVBQXFCL2hELEtBQXJCLEtBQStCMmhELEtBQUssQ0FBQ2hpRCxJQUFOLENBQVdvaUQsTUFBWCxFQUFtQi9oRCxLQUFuQixDQUEvQjtBQUNELEtBRk0sQ0FBUDtBQUdBLFdBQU8raEQsTUFBUDtBQUNEO0FBVjRELENBQTlELENBQUQ7O0FDVkEsSUFBSWx4QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSStCLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrRCxTQUFTLEdBQUdsRCxXQUFoQjs7QUFDQSxJQUFJbUcsVUFBUSxHQUFHbkcsV0FBZjs7QUFDQSxJQUFJc3BCLGtCQUFrQixHQUFHdHBCLG9CQUF6Qjs7QUFDQSxJQUFJZ1gsT0FBTyxHQUFHaFgsU0FBZDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBaUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBeEI7QUFBOEIrckIsRUFBQUEsSUFBSSxFQUFFLElBQXBDO0FBQTBDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUFsRCxDQUFELEVBQThEO0FBQzdEaWEsRUFBQUEsS0FBSyxFQUFFLFNBQVNBLEtBQVQsQ0FBZW50QyxRQUFmLEVBQXlCO0FBQzlCLFFBQUlqUCxHQUFHLEdBQUdmLFVBQVEsQ0FBQyxJQUFELENBQWxCO0FBQ0EsUUFBSXk4QyxNQUFNLEdBQUcsS0FBS3Q1QixrQkFBa0IsQ0FBQ3BpQixHQUFELEVBQU1uRixZQUFVLENBQUMsS0FBRCxDQUFoQixDQUF2QixFQUFpRG1GLEdBQWpELENBQWI7QUFDQThQLElBQUFBLE9BQU8sQ0FBQ2IsUUFBRCxFQUFXalQsU0FBUyxDQUFDMC9DLE1BQU0sQ0FBQ3B6QixHQUFSLENBQXBCLEVBQWtDO0FBQUVuZ0IsTUFBQUEsSUFBSSxFQUFFdXpDO0FBQVIsS0FBbEMsQ0FBUDtBQUNBLFdBQU9BLE1BQVA7QUFDRDtBQU40RCxDQUE5RCxDQUFEOztBQ1ZBLElBQUlseEMsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJc2hCLFFBQU0sR0FBR3RoQixlQUFBLENBQXlDc2hCLE1BQXREOztBQUNBLElBQUl2aEIsT0FBSyxHQUFHQyxRQUFaOztBQUVBLElBQUkrTCxRQUFNLEdBQUdoTSxPQUFLLENBQUMsWUFBWTtBQUM3QixTQUFPLEtBQUswWCxFQUFMLENBQVEsQ0FBUixNQUFlLElBQXRCO0FBQ0QsQ0FGaUIsQ0FBbEI7QUFLQTs7QUFDQS9GLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFFBQVY7QUFBb0JvSyxFQUFBQSxLQUFLLEVBQUUsSUFBM0I7QUFBaUNoSixFQUFBQSxNQUFNLEVBQUVIO0FBQXpDLENBQUQsRUFBb0Q7QUFDbkQwTCxFQUFBQSxFQUFFLEVBQUUsU0FBU0EsRUFBVCxDQUFZb3ZCLEdBQVosRUFBaUI7QUFDbkIsV0FBT3ZsQixRQUFNLENBQUMsSUFBRCxFQUFPdWxCLEdBQVAsQ0FBYjtBQUNEO0FBSGtELENBQXBELENBQUQ7O0FDVkEsSUFBSW4xQixHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUkwYywyQkFBeUIsR0FBRzFjLDJCQUFoQzs7QUFDQSxJQUFJdUIsc0JBQXNCLEdBQUd2Qix3QkFBN0I7O0FBQ0EsSUFBSWdCLFFBQVEsR0FBR2hCLFVBQWY7O0FBQ0EsSUFBSXFJLHFCQUFtQixHQUFHckksYUFBMUI7O0FBQ0EsSUFBSXVqRCxxQkFBcUIsR0FBR3ZqRCxlQUE1Qjs7QUFFQSxJQUFJZ25DLFFBQU0sR0FBR3VjLHFCQUFxQixDQUFDdmMsTUFBbkM7QUFDQSxJQUFJMWxCLE1BQU0sR0FBR2lpQyxxQkFBcUIsQ0FBQ2ppQyxNQUFuQztBQUNBLElBQUkybUIsZUFBZSxHQUFHLGlCQUF0QjtBQUNBLElBQUk5MUIsa0JBQWdCLEdBQUc5SixxQkFBbUIsQ0FBQ25CLEdBQTNDO0FBQ0EsSUFBSXFCLGdCQUFnQixHQUFHRixxQkFBbUIsQ0FBQ2hCLFNBQXBCLENBQThCNGdDLGVBQTlCLENBQXZCOztBQUdBLElBQUl1YixlQUFlLEdBQUc5bUMsMkJBQXlCLENBQUMsU0FBUyttQyxjQUFULENBQXdCbDRDLE1BQXhCLEVBQWdDO0FBQzlFNEcsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssSUFBQUEsSUFBSSxFQUFFeWdDLGVBRGU7QUFFckIxOEIsSUFBQUEsTUFBTSxFQUFFQSxNQUZhO0FBR3JCaEMsSUFBQUEsS0FBSyxFQUFFO0FBSGMsR0FBUCxDQUFoQjtBQUtELENBTjhDLEVBTTVDLFFBTjRDLEVBTWxDLFNBQVNrTixJQUFULEdBQWdCO0FBQzNCLE1BQUlsUCxLQUFLLEdBQUdnQixnQkFBZ0IsQ0FBQyxJQUFELENBQTVCO0FBQ0EsTUFBSWdELE1BQU0sR0FBR2hFLEtBQUssQ0FBQ2dFLE1BQW5CO0FBQ0EsTUFBSWhDLEtBQUssR0FBR2hDLEtBQUssQ0FBQ2dDLEtBQWxCO0FBQ0EsTUFBSTIrQixLQUFKO0FBQ0EsTUFBSTMrQixLQUFLLElBQUlnQyxNQUFNLENBQUN6SixNQUFwQixFQUE0QixPQUFPO0FBQUVqQixJQUFBQSxLQUFLLEVBQUVPLFNBQVQ7QUFBb0IwVixJQUFBQSxJQUFJLEVBQUU7QUFBMUIsR0FBUDtBQUM1Qm94QixFQUFBQSxLQUFLLEdBQUc1bUIsTUFBTSxDQUFDL1YsTUFBRCxFQUFTaEMsS0FBVCxDQUFkO0FBQ0FoQyxFQUFBQSxLQUFLLENBQUNnQyxLQUFOLElBQWUyK0IsS0FBSyxDQUFDcG1DLE1BQXJCO0FBQ0EsU0FBTztBQUFFakIsSUFBQUEsS0FBSyxFQUFFO0FBQUU2aUQsTUFBQUEsU0FBUyxFQUFFMWMsUUFBTSxDQUFDa0IsS0FBRCxFQUFRLENBQVIsQ0FBbkI7QUFBK0JwQixNQUFBQSxRQUFRLEVBQUV2OUI7QUFBekMsS0FBVDtBQUEyRHVOLElBQUFBLElBQUksRUFBRTtBQUFqRSxHQUFQO0FBQ0QsQ0FmOEMsQ0FBL0M7QUFrQkE7O0FBQ0FwRixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxRQUFWO0FBQW9Cb0ssRUFBQUEsS0FBSyxFQUFFO0FBQTNCLENBQUQsRUFBb0M7QUFDbkN5dUMsRUFBQUEsVUFBVSxFQUFFLFNBQVNBLFVBQVQsR0FBc0I7QUFDaEMsV0FBTyxJQUFJSCxlQUFKLENBQW9CeGlELFFBQVEsQ0FBQ08sc0JBQXNCLENBQUMsSUFBRCxDQUF2QixDQUE1QixDQUFQO0FBQ0Q7QUFIa0MsQ0FBcEMsQ0FBRDs7QUNsQ0EsSUFBSXVRLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsY0FBRCxDQUFyQjs7QUNKQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLFNBQUQsQ0FBckI7O0FDSkEsSUFBSUEsdUJBQXFCLEdBQUc5Uix1QkFBNUI7QUFHQTs7O0FBQ0E4Uix1QkFBcUIsQ0FBQyxTQUFELENBQXJCOztBQ0pBLElBQUlBLHVCQUFxQixHQUFHOVIsdUJBQTVCO0FBR0E7OztBQUNBOFIsdUJBQXFCLENBQUMsVUFBRCxDQUFyQjs7QUNKQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLFlBQUQsQ0FBckI7O0FDSkE7QUFDQSxJQUFJQSx1QkFBcUIsR0FBRzlSLHVCQUE1QjtBQUdBOzs7QUFDQThSLHVCQUFxQixDQUFDLGNBQUQsQ0FBckI7O0FDTEE7QUFDQSxJQUFJQSxxQkFBcUIsR0FBRzlSLHVCQUE1Qjs7QUFFQThSLHFCQUFxQixDQUFDLFlBQUQsQ0FBckI7O0FDRkEsSUFBSS9QLFlBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUlrcEIsWUFBWSxHQUFHbHBCLGNBQW5COztBQUNBLElBQUk0akQsY0FBYyxHQUFHNWpELGdCQUFyQjs7QUFDQSxJQUFJZ3dDLDJDQUEyQyxHQUFHaHdDLHFDQUFsRDs7QUFDQSxJQUFJaXBCLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJc3hDLDJCQUEyQixHQUFHdHhDLDZCQUFsQzs7QUFFQSxJQUFJMm9CLHNCQUFzQixHQUFHTSxxQkFBbUIsQ0FBQ04sc0JBQWpEO0FBQ0EsSUFBSUssNEJBQTRCLEdBQUdDLHFCQUFtQixDQUFDRCw0QkFBdkQ7QUFHQTtBQUNBOztBQUNBQSw0QkFBNEIsQ0FBQyxXQUFELEVBQWMsU0FBU3dzQixTQUFULENBQW1CQztBQUFXO0FBQTlCLEVBQThFO0FBQ3RILE1BQUl0bEMsQ0FBQyxHQUFHLElBQVI7QUFDQSxNQUFJdUosZUFBZSxHQUFHN1gsU0FBUyxDQUFDQyxNQUFoQztBQUNBLE1BQUl1WixLQUFLLEdBQUczQixlQUFlLEdBQUcsQ0FBbEIsR0FBc0I3WCxTQUFTLENBQUMsQ0FBRCxDQUEvQixHQUFxQ1QsU0FBakQ7QUFDQSxNQUFJb1osT0FBTyxHQUFHZCxlQUFlLEdBQUcsQ0FBbEIsR0FBc0I3WCxTQUFTLENBQUMsQ0FBRCxDQUEvQixHQUFxQ1QsU0FBbkQ7QUFDQSxTQUFPLEtBQUtXLFlBQVUsQ0FBQyxTQUFELENBQWYsRUFBNEIsVUFBVWs2QixPQUFWLEVBQW1CO0FBQ3BEL1MsSUFBQUEsWUFBWSxDQUFDL1ksQ0FBRCxDQUFaO0FBQ0E4ckIsSUFBQUEsT0FBTyxDQUFDMm5CLGNBQWMsQ0FBQ25PLFVBQUQsRUFBYXA2QixLQUFiLEVBQW9CYixPQUFwQixDQUFmLENBQVA7QUFDRCxHQUhNLEVBR0praEIsSUFISSxDQUdDLFVBQVU1TyxJQUFWLEVBQWdCO0FBQ3RCLFdBQU93a0IsMkJBQTJCLENBQUMzb0Isc0JBQXNCLENBQUN4WSxDQUFELENBQXZCLEVBQTRCMmMsSUFBNUIsQ0FBbEM7QUFDRCxHQUxNLENBQVA7QUFNRCxDQVgyQixFQVd6QmtqQiwyQ0FYeUIsQ0FBNUI7O0FDWkEsSUFBSS9tQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSTQxQyxlQUFhLEdBQUc1MUMsY0FBQSxDQUF3Q3lSLFlBQTVEOztBQUNBLElBQUkrL0Isb0JBQWtCLEdBQUd4eEMsNEJBQXpCOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUdBOztBQUNBQSx3QkFBc0IsQ0FBQyxXQUFELEVBQWMsU0FBU2l0QixTQUFULENBQW1COWtDO0FBQVc7QUFBOUIsRUFBK0M7QUFDakYsTUFBSStiLElBQUksR0FBRzhvQixlQUFhLENBQUNsdEIsYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBdEUsQ0FBeEI7QUFDQSxTQUFPb3dDLG9CQUFrQixDQUFDLElBQUQsRUFBTzFrQixJQUFQLENBQXpCO0FBQ0QsQ0FIcUIsQ0FBdEI7O0FDVkEsSUFBSTdELHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJNDFDLGFBQWEsR0FBRzUxQyxjQUFBLENBQXdDeVIsWUFBNUQ7O0FBQ0EsSUFBSSsvQixvQkFBa0IsR0FBR3h4Qyw0QkFBekI7O0FBRUEsSUFBSTBvQixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLGNBQUQsRUFBaUIsU0FBU25YLFlBQVQsQ0FBc0JWO0FBQVc7QUFBakMsRUFBa0Q7QUFDdkYsTUFBSStiLElBQUksR0FBRzhvQixhQUFhLENBQUNsdEIsYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDbFAsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBdEUsQ0FBeEI7QUFDQSxTQUFPb3dDLG9CQUFrQixDQUFDLElBQUQsRUFBTzFrQixJQUFQLENBQXpCO0FBQ0QsQ0FIcUIsQ0FBdEI7O0FDVEEsSUFBSTdELHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJaTJDLFNBQVMsR0FBR2oyQyxzQkFBQSxDQUFrRCsxQyxRQUFsRTs7QUFFQSxJQUFJcnRCLGFBQVcsR0FBR08scUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsd0JBQXNCLEdBQUdLLHFCQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsd0JBQXNCLENBQUMsVUFBRCxFQUFhLFNBQVNtdEIsUUFBVCxDQUFrQnRFO0FBQVU7QUFBNUIsRUFBNkM7QUFDOUUsU0FBT3dFLFNBQVMsQ0FBQ3Z0QixhQUFXLENBQUMsSUFBRCxDQUFaLEVBQW9CK29CLFNBQXBCLEVBQStCNXZDLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXJFLENBQWhCO0FBQ0QsQ0FGcUIsQ0FBdEI7O0FDUkEsSUFBSTZuQixxQkFBbUIsR0FBR2pwQixtQkFBMUI7O0FBQ0EsSUFBSWsyQyxjQUFjLEdBQUdsMkMsc0JBQUEsQ0FBa0RnMkMsYUFBdkU7O0FBRUEsSUFBSXR0QixhQUFXLEdBQUdPLHFCQUFtQixDQUFDUCxXQUF0QztBQUNBLElBQUlFLHdCQUFzQixHQUFHSyxxQkFBbUIsQ0FBQ0wsc0JBQWpEO0FBR0E7O0FBQ0FBLHdCQUFzQixDQUFDLGVBQUQsRUFBa0IsU0FBU290QixhQUFULENBQXVCdkU7QUFBVTtBQUFqQyxFQUFrRDtBQUN4RixTQUFPeUUsY0FBYyxDQUFDeHRCLGFBQVcsQ0FBQyxJQUFELENBQVosRUFBb0Irb0IsU0FBcEIsRUFBK0I1dkMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBckUsQ0FBckI7QUFDRCxDQUZxQixDQUF0Qjs7QUNSQSxJQUFJNm5CLHFCQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJcTJDLFFBQVEsR0FBR3IyQyxZQUFmOztBQUNBLElBQUl1eEMsNEJBQTRCLEdBQUd2eEMsOEJBQW5DOztBQUVBLElBQUkwb0IsYUFBVyxHQUFHTyxxQkFBbUIsQ0FBQ1AsV0FBdEM7QUFDQSxJQUFJRSx3QkFBc0IsR0FBR0sscUJBQW1CLENBQUNMLHNCQUFqRDtBQUdBOztBQUNBQSx3QkFBc0IsQ0FBQyxTQUFELEVBQVksU0FBUzB0QixPQUFULENBQWlCdmxDO0FBQVc7QUFBNUIsRUFBNkM7QUFDN0UsTUFBSXlKLE9BQU8sR0FBRzNZLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQXBEO0FBQ0EsU0FBT2kxQyxRQUFRLENBQUMzdEIsYUFBVyxDQUFDLElBQUQsQ0FBWixFQUFvQjNYLFVBQXBCLEVBQWdDeUosT0FBaEMsRUFBeUMrMkIsNEJBQXpDLENBQWY7QUFDRCxDQUhxQixDQUF0Qjs7QUNUQSxJQUFJdG9CLG1CQUFtQixHQUFHanBCLG1CQUExQjs7QUFDQSxJQUFJNmpELGFBQWEsR0FBRzdqRCxlQUFwQjs7QUFDQSxJQUFJd3hDLGtCQUFrQixHQUFHeHhDLDRCQUF6Qjs7QUFFQSxJQUFJMG9CLFdBQVcsR0FBR08sbUJBQW1CLENBQUNQLFdBQXRDO0FBQ0EsSUFBSUUsc0JBQXNCLEdBQUdLLG1CQUFtQixDQUFDTCxzQkFBakQ7QUFHQTs7QUFDQUEsc0JBQXNCLENBQUMsVUFBRCxFQUFhLFNBQVMrdEIsUUFBVCxDQUFrQkMsUUFBbEIsRUFBNEI7QUFDN0QsU0FBT3BGLGtCQUFrQixDQUFDLElBQUQsRUFBT3FTLGFBQWEsQ0FBQ3JqRCxJQUFkLENBQW1Ca29CLFdBQVcsQ0FBQyxJQUFELENBQTlCLEVBQXNDa3VCLFFBQXRDLENBQVAsQ0FBekI7QUFDRCxDQUZxQixDQUF0Qjs7QUNUQSxJQUFJbGxDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJdzZDLHFCQUFtQixHQUFHeDZDLHFCQUExQjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBNUI7QUFBa0MrckIsRUFBQUEsSUFBSSxFQUFFLElBQXhDO0FBQThDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUF0RCxDQUFELEVBQWtFO0FBQ2pFb1IsRUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsR0FBc0M7QUFDL0MsV0FBT0QscUJBQW1CLENBQUNockMsS0FBcEIsQ0FBMEIsSUFBMUIsRUFBZ0MzTixTQUFoQyxDQUFQO0FBQ0Q7QUFIZ0UsQ0FBbEUsQ0FBRDs7QUNQQSxJQUFJNlAsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa1osTUFBSSxHQUFHbFosY0FBWDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQ29OLEVBQUFBLElBQUksRUFBRUE7QUFENkIsQ0FBcEMsQ0FBRDs7QUNMQSxJQUFJeEgsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeWUsSUFBRSxHQUFHemUsWUFBVDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQzJTLEVBQUFBLEVBQUUsRUFBRUE7QUFEK0IsQ0FBcEMsQ0FBRDs7QUNKQSxJQUFJL00sR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJcXBDLFNBQU8sR0FBR3JwQyxNQUFkOztBQUNBLElBQUk2NkMsUUFBUSxHQUFHNzZDLFVBQWY7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCb0ssRUFBQUEsS0FBSyxFQUFFLElBQTVCO0FBQWtDK3JCLEVBQUFBLElBQUksRUFBRSxJQUF4QztBQUE4Qy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBdEQsQ0FBRCxFQUFrRTtBQUNqRXFSLEVBQUFBLE9BQU8sRUFBRUc7QUFEd0QsQ0FBbEUsQ0FBRDs7QUNMQSxJQUFJbnBDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJODdDLE9BQU8sR0FBRzk3QyxTQUFkO0FBR0E7OztBQUNBMFIsR0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsU0FBVjtBQUFxQm9LLEVBQUFBLEtBQUssRUFBRSxJQUE1QjtBQUFrQytyQixFQUFBQSxJQUFJLEVBQUUsSUFBeEM7QUFBOEMvMEIsRUFBQUEsTUFBTSxFQUFFbTlCO0FBQXRELENBQUQsRUFBa0U7QUFDakVzUyxFQUFBQSxNQUFNLEVBQUVHO0FBRHlELENBQWxFLENBQUQ7O0FDUEEsSUFBSXBxQyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlxcEMsU0FBTyxHQUFHcnBDLE1BQWQ7O0FBQ0EsSUFBSXlpRCxnQkFBZ0IsR0FBR3ppRCxrQkFBdkI7QUFHQTs7O0FBQ0EwUixHQUFDLENBQUM7QUFBRTVHLEVBQUFBLE1BQU0sRUFBRSxTQUFWO0FBQXFCb0ssRUFBQUEsS0FBSyxFQUFFLElBQTVCO0FBQWtDK3JCLEVBQUFBLElBQUksRUFBRSxJQUF4QztBQUE4Qy8wQixFQUFBQSxNQUFNLEVBQUVtOUI7QUFBdEQsQ0FBRCxFQUFrRTtBQUNqRXFaLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULEdBQW1DO0FBQ3pDLFdBQU9ELGdCQUFnQixDQUFDanpDLEtBQWpCLENBQXVCLElBQXZCLEVBQTZCM04sU0FBN0IsQ0FBUDtBQUNEO0FBSGdFLENBQWxFLENBQUQ7O0FDTkEsSUFBSTZQLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSXFwQyxTQUFPLEdBQUdycEMsTUFBZDs7QUFDQSxJQUFJdzZDLG1CQUFtQixHQUFHeDZDLHFCQUExQjtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJvSyxFQUFBQSxLQUFLLEVBQUUsSUFBNUI7QUFBa0MrckIsRUFBQUEsSUFBSSxFQUFFLElBQXhDO0FBQThDLzBCLEVBQUFBLE1BQU0sRUFBRW05QjtBQUF0RCxDQUFELEVBQWtFO0FBQ2pFb1IsRUFBQUEsU0FBUyxFQUFFLFNBQVNBLFNBQVQsR0FBc0M7QUFDL0MsV0FBT0QsbUJBQW1CLENBQUNockMsS0FBcEIsQ0FBMEIsSUFBMUIsRUFBZ0MzTixTQUFoQyxDQUFQO0FBQ0Q7QUFIZ0UsQ0FBbEUsQ0FBRDs7QUNQQSxJQUFJNlAsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJa1osSUFBSSxHQUFHbFosY0FBWDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQ29OLEVBQUFBLElBQUksRUFBRUE7QUFENkIsQ0FBcEMsQ0FBRDs7QUNMQSxJQUFJeEgsR0FBQyxHQUFHMVIsT0FBUjs7QUFDQSxJQUFJeWUsRUFBRSxHQUFHemUsWUFBVDtBQUdBOzs7QUFDQTBSLEdBQUMsQ0FBQztBQUFFNUcsRUFBQUEsTUFBTSxFQUFFLFNBQVY7QUFBcUJnQixFQUFBQSxJQUFJLEVBQUU7QUFBM0IsQ0FBRCxFQUFvQztBQUNuQzJTLEVBQUFBLEVBQUUsRUFBRUE7QUFEK0IsQ0FBcEMsQ0FBRDs7QUNMQTtBQUNBO0lBQ0FsZixZQUFBLEdBQWlCO0FBQ2Z1a0QsRUFBQUEsV0FBVyxFQUFFLENBREU7QUFFZkMsRUFBQUEsbUJBQW1CLEVBQUUsQ0FGTjtBQUdmQyxFQUFBQSxZQUFZLEVBQUUsQ0FIQztBQUlmQyxFQUFBQSxjQUFjLEVBQUUsQ0FKRDtBQUtmQyxFQUFBQSxXQUFXLEVBQUUsQ0FMRTtBQU1mQyxFQUFBQSxhQUFhLEVBQUUsQ0FOQTtBQU9mQyxFQUFBQSxZQUFZLEVBQUUsQ0FQQztBQVFmQyxFQUFBQSxvQkFBb0IsRUFBRSxDQVJQO0FBU2ZDLEVBQUFBLFFBQVEsRUFBRSxDQVRLO0FBVWZDLEVBQUFBLGlCQUFpQixFQUFFLENBVko7QUFXZkMsRUFBQUEsY0FBYyxFQUFFLENBWEQ7QUFZZkMsRUFBQUEsZUFBZSxFQUFFLENBWkY7QUFhZkMsRUFBQUEsaUJBQWlCLEVBQUUsQ0FiSjtBQWNmQyxFQUFBQSxTQUFTLEVBQUUsQ0FkSTtBQWVmQyxFQUFBQSxhQUFhLEVBQUUsQ0FmQTtBQWdCZkMsRUFBQUEsWUFBWSxFQUFFLENBaEJDO0FBaUJmQyxFQUFBQSxRQUFRLEVBQUUsQ0FqQks7QUFrQmZDLEVBQUFBLGdCQUFnQixFQUFFLENBbEJIO0FBbUJmQyxFQUFBQSxNQUFNLEVBQUUsQ0FuQk87QUFvQmZDLEVBQUFBLFdBQVcsRUFBRSxDQXBCRTtBQXFCZkMsRUFBQUEsYUFBYSxFQUFFLENBckJBO0FBc0JmQyxFQUFBQSxhQUFhLEVBQUUsQ0F0QkE7QUF1QmZDLEVBQUFBLGNBQWMsRUFBRSxDQXZCRDtBQXdCZkMsRUFBQUEsWUFBWSxFQUFFLENBeEJDO0FBeUJmQyxFQUFBQSxhQUFhLEVBQUUsQ0F6QkE7QUEwQmZDLEVBQUFBLGdCQUFnQixFQUFFLENBMUJIO0FBMkJmQyxFQUFBQSxnQkFBZ0IsRUFBRSxDQTNCSDtBQTRCZkMsRUFBQUEsY0FBYyxFQUFFLENBNUJEO0FBNkJmQyxFQUFBQSxnQkFBZ0IsRUFBRSxDQTdCSDtBQThCZkMsRUFBQUEsYUFBYSxFQUFFLENBOUJBO0FBK0JmQyxFQUFBQSxTQUFTLEVBQUU7QUEvQkksQ0FBakI7O0FDRkE7QUFDQSxJQUFJNTRDLHFCQUFxQixHQUFHaE4sdUJBQTVCOztBQUVBLElBQUk2bEQsV0FBUyxHQUFHNzRDLHFCQUFxQixDQUFDLE1BQUQsQ0FBckIsQ0FBOEI2NEMsU0FBOUM7QUFDQSxJQUFJQyx1QkFBcUIsR0FBR0QsV0FBUyxJQUFJQSxXQUFTLENBQUN6MUMsV0FBdkIsSUFBc0N5MUMsV0FBUyxDQUFDejFDLFdBQVYsQ0FBc0JwSSxTQUF4RjtJQUVBekkscUJBQUEsR0FBaUJ1bUQsdUJBQXFCLEtBQUs3bEQsTUFBTSxDQUFDK0gsU0FBakMsR0FBNkM1RyxTQUE3QyxHQUF5RDBrRCx1QkFBMUU7O0FDTkEsSUFBSW5tRCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSStsRCxjQUFZLEdBQUcvbEQsWUFBbkI7O0FBQ0EsSUFBSThsRCx1QkFBcUIsR0FBRzlsRCxxQkFBNUI7O0FBQ0EsSUFBSWtSLE9BQU8sR0FBR2xSLFlBQWQ7O0FBQ0EsSUFBSThHLDZCQUEyQixHQUFHOUcsNkJBQWxDOztBQUVBLElBQUlnbUQsaUJBQWUsR0FBRyxVQUFVQyxtQkFBVixFQUErQjtBQUNuRDtBQUNBLE1BQUlBLG1CQUFtQixJQUFJQSxtQkFBbUIsQ0FBQy8wQyxPQUFwQixLQUFnQ0EsT0FBM0QsRUFBb0UsSUFBSTtBQUN0RXBLLElBQUFBLDZCQUEyQixDQUFDbS9DLG1CQUFELEVBQXNCLFNBQXRCLEVBQWlDLzBDLE9BQWpDLENBQTNCO0FBQ0QsR0FGbUUsQ0FFbEUsT0FBT3BSLEtBQVAsRUFBYztBQUNkbW1ELElBQUFBLG1CQUFtQixDQUFDLzBDLE9BQXBCLEdBQThCQSxPQUE5QjtBQUNEO0FBQ0YsQ0FQRDs7QUFTQSxLQUFLLElBQUlnMUMsaUJBQVQsSUFBNEJILGNBQTVCLEVBQTBDO0FBQ3hDLE1BQUlBLGNBQVksQ0FBQ0csaUJBQUQsQ0FBaEIsRUFBbUM7QUFDakNGLElBQUFBLGlCQUFlLENBQUNybUQsUUFBTSxDQUFDdW1ELGlCQUFELENBQU4sSUFBMkJ2bUQsUUFBTSxDQUFDdW1ELGlCQUFELENBQU4sQ0FBd0JsK0MsU0FBcEQsQ0FBZjtBQUNEO0FBQ0Y7O0FBRURnK0MsaUJBQWUsQ0FBQ0YsdUJBQUQsQ0FBZjs7QUNyQkEsSUFBSW5tRCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSStsRCxZQUFZLEdBQUcvbEQsWUFBbkI7O0FBQ0EsSUFBSThsRCxxQkFBcUIsR0FBRzlsRCxxQkFBNUI7O0FBQ0EsSUFBSW1tRCxvQkFBb0IsR0FBR25tRCxpQkFBM0I7O0FBQ0EsSUFBSThHLDJCQUEyQixHQUFHOUcsNkJBQWxDOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUVBLElBQUlzVixVQUFRLEdBQUdyUSxpQkFBZSxDQUFDLFVBQUQsQ0FBOUI7QUFDQSxJQUFJb0gsYUFBYSxHQUFHcEgsaUJBQWUsQ0FBQyxhQUFELENBQW5DO0FBQ0EsSUFBSW1oRCxXQUFXLEdBQUdELG9CQUFvQixDQUFDN29DLE1BQXZDOztBQUVBLElBQUkwb0MsZUFBZSxHQUFHLFVBQVVDLG1CQUFWLEVBQStCQyxlQUEvQixFQUFnRDtBQUNwRSxNQUFJRCxtQkFBSixFQUF5QjtBQUN2QjtBQUNBLFFBQUlBLG1CQUFtQixDQUFDM3dDLFVBQUQsQ0FBbkIsS0FBa0M4d0MsV0FBdEMsRUFBbUQsSUFBSTtBQUNyRHQvQyxNQUFBQSwyQkFBMkIsQ0FBQ20vQyxtQkFBRCxFQUFzQjN3QyxVQUF0QixFQUFnQzh3QyxXQUFoQyxDQUEzQjtBQUNELEtBRmtELENBRWpELE9BQU90bUQsS0FBUCxFQUFjO0FBQ2RtbUQsTUFBQUEsbUJBQW1CLENBQUMzd0MsVUFBRCxDQUFuQixHQUFnQzh3QyxXQUFoQztBQUNEOztBQUNELFFBQUksQ0FBQ0gsbUJBQW1CLENBQUM1NUMsYUFBRCxDQUF4QixFQUF5QztBQUN2Q3ZGLE1BQUFBLDJCQUEyQixDQUFDbS9DLG1CQUFELEVBQXNCNTVDLGFBQXRCLEVBQXFDNjVDLGVBQXJDLENBQTNCO0FBQ0Q7O0FBQ0QsUUFBSUgsWUFBWSxDQUFDRyxlQUFELENBQWhCLEVBQW1DLEtBQUssSUFBSXB1QyxXQUFULElBQXdCcXVDLG9CQUF4QixFQUE4QztBQUMvRTtBQUNBLFVBQUlGLG1CQUFtQixDQUFDbnVDLFdBQUQsQ0FBbkIsS0FBcUNxdUMsb0JBQW9CLENBQUNydUMsV0FBRCxDQUE3RCxFQUE0RSxJQUFJO0FBQzlFaFIsUUFBQUEsMkJBQTJCLENBQUNtL0MsbUJBQUQsRUFBc0JudUMsV0FBdEIsRUFBbUNxdUMsb0JBQW9CLENBQUNydUMsV0FBRCxDQUF2RCxDQUEzQjtBQUNELE9BRjJFLENBRTFFLE9BQU9oWSxLQUFQLEVBQWM7QUFDZG1tRCxRQUFBQSxtQkFBbUIsQ0FBQ251QyxXQUFELENBQW5CLEdBQW1DcXVDLG9CQUFvQixDQUFDcnVDLFdBQUQsQ0FBdkQ7QUFDRDtBQUNGO0FBQ0Y7QUFDRixDQXBCRDs7QUFzQkEsS0FBSyxJQUFJb3VDLGVBQVQsSUFBNEJILFlBQTVCLEVBQTBDO0FBQ3hDQyxFQUFBQSxlQUFlLENBQUNybUQsUUFBTSxDQUFDdW1ELGVBQUQsQ0FBTixJQUEyQnZtRCxRQUFNLENBQUN1bUQsZUFBRCxDQUFOLENBQXdCbCtDLFNBQXBELEVBQStEaytDLGVBQS9ELENBQWY7QUFDRDs7QUFFREYsZUFBZSxDQUFDRixxQkFBRCxFQUF3QixjQUF4QixDQUFmOztBQ3JDQSxJQUFJcDBDLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSUwsUUFBTSxHQUFHSyxRQUFiOztBQUNBLElBQUlrOEIsSUFBSSxHQUFHbDhCLE1BQVg7O0FBRUEsSUFBSStMLE1BQU0sR0FBRyxDQUFDcE0sUUFBTSxDQUFDczVCLFlBQVIsSUFBd0IsQ0FBQ3Q1QixRQUFNLENBQUN1NUIsY0FBN0M7O0FBR0F4bkIsR0FBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQjJRLEVBQUFBLElBQUksRUFBRSxJQUF0QjtBQUE0QjNQLEVBQUFBLFVBQVUsRUFBRSxJQUF4QztBQUE4Q3VMLEVBQUFBLE1BQU0sRUFBRUg7QUFBdEQsQ0FBRCxFQUFpRTtBQUNoRTtBQUNBO0FBQ0FrdEIsRUFBQUEsWUFBWSxFQUFFaUQsSUFBSSxDQUFDaDFCLEdBSDZDO0FBSWhFO0FBQ0E7QUFDQWd5QixFQUFBQSxjQUFjLEVBQUVnRCxJQUFJLENBQUNqTTtBQU4yQyxDQUFqRSxDQUFEOztBQ1BBLElBQUl2ZSxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJMjhCLFNBQVMsR0FBRzM4QixXQUFoQjs7QUFDQSxJQUFJZ2YsT0FBTyxHQUFHaGYsWUFBZDs7QUFFQSxJQUFJaUMsT0FBTyxHQUFHdEMsUUFBTSxDQUFDc0MsT0FBckI7QUFHQTs7QUFDQXlQLEdBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0JnQixFQUFBQSxVQUFVLEVBQUUsSUFBNUI7QUFBa0NrSSxFQUFBQSxXQUFXLEVBQUU7QUFBL0MsQ0FBRCxFQUF3RDtBQUN2RHN5QixFQUFBQSxjQUFjLEVBQUUsU0FBU0EsY0FBVCxDQUF3QjMzQixFQUF4QixFQUE0QjtBQUMxQyxRQUFJb0wsTUFBTSxHQUFHb1EsT0FBTyxJQUFJL2MsT0FBTyxDQUFDMk0sTUFBaEM7QUFDQSt0QixJQUFBQSxTQUFTLENBQUMvdEIsTUFBTSxHQUFHQSxNQUFNLENBQUMwQixJQUFQLENBQVk5TSxFQUFaLENBQUgsR0FBcUJBLEVBQTVCLENBQVQ7QUFDRDtBQUpzRCxDQUF4RCxDQUFEOztBQ1RBLElBQUlrTyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUlMLFFBQU0sR0FBR0ssUUFBYjs7QUFDQSxJQUFJeUIsWUFBVSxHQUFHekIsWUFBakI7O0FBQ0EsSUFBSWdDLFNBQVMsR0FBR2hDLGVBQWhCOztBQUVBLElBQUlpQixLQUFLLEdBQUcsR0FBR0EsS0FBZjtBQUNBLElBQUlvbEQsSUFBSSxHQUFHLFdBQVcxL0MsSUFBWCxDQUFnQjNFLFNBQWhCLENBQVg7O0FBRUEsSUFBSW1SLElBQUksR0FBRyxVQUFVbXpDLFNBQVYsRUFBcUI7QUFDOUIsU0FBTyxVQUFVbm5CLE9BQVYsRUFBbUJvbkI7QUFBUTtBQUEzQixJQUFpRDtBQUN0RCxRQUFJQyxTQUFTLEdBQUcza0QsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5DO0FBQ0EsUUFBSXFTLElBQUksR0FBR3F5QyxTQUFTLEdBQUd2bEQsS0FBSyxDQUFDVCxJQUFOLENBQVdxQixTQUFYLEVBQXNCLENBQXRCLENBQUgsR0FBOEJULFNBQWxEO0FBQ0EsV0FBT2tsRCxTQUFTLENBQUNFLFNBQVMsR0FBRyxZQUFZO0FBQ3ZDO0FBQ0EsT0FBQy9rRCxZQUFVLENBQUMwOUIsT0FBRCxDQUFWLEdBQXNCQSxPQUF0QixHQUFnQ3YvQixRQUFRLENBQUN1L0IsT0FBRCxDQUF6QyxFQUFvRDN2QixLQUFwRCxDQUEwRCxJQUExRCxFQUFnRTJFLElBQWhFO0FBQ0QsS0FIeUIsR0FHdEJnckIsT0FIWSxFQUdIb25CLE9BSEcsQ0FBaEI7QUFJRCxHQVBEO0FBUUQsQ0FURDtBQVlBOzs7QUFDQTcwQyxHQUFDLENBQUM7QUFBRS9SLEVBQUFBLE1BQU0sRUFBRSxJQUFWO0FBQWdCMlEsRUFBQUEsSUFBSSxFQUFFLElBQXRCO0FBQTRCcEUsRUFBQUEsTUFBTSxFQUFFbTZDO0FBQXBDLENBQUQsRUFBNkM7QUFDNUM7QUFDQTtBQUNBMXJCLEVBQUFBLFVBQVUsRUFBRXhuQixJQUFJLENBQUN4VCxRQUFNLENBQUNnN0IsVUFBUixDQUg0QjtBQUk1QztBQUNBO0FBQ0E4ckIsRUFBQUEsV0FBVyxFQUFFdHpDLElBQUksQ0FBQ3hULFFBQU0sQ0FBQzhtRCxXQUFSO0FBTjJCLENBQTdDLENBQUQ7O0FDckJBLElBQUkxbUQsS0FBSyxHQUFHQyxRQUFaOztBQUNBLElBQUlpRixpQkFBZSxHQUFHakYsaUJBQXRCOztBQUNBLElBQUlxcEMsT0FBTyxHQUFHcnBDLE1BQWQ7O0FBRUEsSUFBSXNWLFVBQVEsR0FBR3JRLGlCQUFlLENBQUMsVUFBRCxDQUE5QjtJQUVBMUYsU0FBQSxHQUFpQixDQUFDUSxLQUFLLENBQUMsWUFBWTtBQUNsQyxNQUFJMHZDLEdBQUcsR0FBRyxJQUFJaVgsR0FBSixDQUFRLGVBQVIsRUFBeUIsVUFBekIsQ0FBVjtBQUNBLE1BQUlDLFlBQVksR0FBR2xYLEdBQUcsQ0FBQ2tYLFlBQXZCO0FBQ0EsTUFBSXZoRCxNQUFNLEdBQUcsRUFBYjtBQUNBcXFDLEVBQUFBLEdBQUcsQ0FBQ21YLFFBQUosR0FBZSxPQUFmO0FBQ0FELEVBQUFBLFlBQVksQ0FBQ3oxQyxPQUFiLENBQXFCLFVBQVVyUSxLQUFWLEVBQWlCOEMsR0FBakIsRUFBc0I7QUFDekNnakQsSUFBQUEsWUFBWSxDQUFDLFFBQUQsQ0FBWixDQUF1QixHQUF2QjtBQUNBdmhELElBQUFBLE1BQU0sSUFBSXpCLEdBQUcsR0FBRzlDLEtBQWhCO0FBQ0QsR0FIRDtBQUlBLFNBQVF3b0MsT0FBTyxJQUFJLENBQUNvRyxHQUFHLENBQUN6akIsTUFBakIsSUFDRixDQUFDMjZCLFlBQVksQ0FBQzdsQyxJQURaLElBRUYydUIsR0FBRyxDQUFDb1gsSUFBSixLQUFhLHdCQUZYLElBR0ZGLFlBQVksQ0FBQ3htRCxHQUFiLENBQWlCLEdBQWpCLE1BQTBCLEdBSHhCLElBSUZ3QyxNQUFNLENBQUMsSUFBSW1rRCxlQUFKLENBQW9CLE1BQXBCLENBQUQsQ0FBTixLQUF3QyxLQUp0QyxJQUtGLENBQUNILFlBQVksQ0FBQ3J4QyxVQUFELENBTFg7QUFBQSxLQU9GLElBQUlveEMsR0FBSixDQUFRLGFBQVIsRUFBdUJLLFFBQXZCLEtBQW9DLEdBUGxDLElBUUYsSUFBSUQsZUFBSixDQUFvQixJQUFJQSxlQUFKLENBQW9CLEtBQXBCLENBQXBCLEVBQWdEM21ELEdBQWhELENBQW9ELEdBQXBELE1BQTZELEdBUjNEO0FBQUEsS0FVRixJQUFJdW1ELEdBQUosQ0FBUSxhQUFSLEVBQXVCdnNCLElBQXZCLEtBQWdDLFlBVjlCO0FBQUEsS0FZRixJQUFJdXNCLEdBQUosQ0FBUSxZQUFSLEVBQXNCTSxJQUF0QixLQUErQixTQVo3QjtBQUFBLEtBY0Y1aEQsTUFBTSxLQUFLLE1BZFQ7QUFBQSxLQWdCRixJQUFJc2hELEdBQUosQ0FBUSxVQUFSLEVBQW9CdGxELFNBQXBCLEVBQStCKzRCLElBQS9CLEtBQXdDLEdBaEI3QztBQWlCRCxDQTFCc0IsQ0FBdkI7O0FDSkEsSUFBSThzQixNQUFNLEdBQUcsVUFBYjs7QUFDQSxJQUFJQyxJQUFJLEdBQUcsRUFBWDtBQUNBLElBQUlDLElBQUksR0FBRyxDQUFYO0FBQ0EsSUFBSUMsSUFBSSxHQUFHLEVBQVg7QUFDQSxJQUFJQyxJQUFJLEdBQUcsRUFBWDtBQUNBLElBQUlDLElBQUksR0FBRyxHQUFYO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLEVBQWxCO0FBQ0EsSUFBSUMsUUFBUSxHQUFHLEdBQWY7O0FBQ0EsSUFBSUMsU0FBUyxHQUFHLEdBQWhCOztBQUNBLElBQUlDLGFBQWEsR0FBRyxjQUFwQjs7QUFDQSxJQUFJQyxlQUFlLEdBQUcsd0JBQXRCOztBQUNBLElBQUlDLGNBQWMsR0FBRyxpREFBckI7QUFDQSxJQUFJQyxhQUFhLEdBQUdYLElBQUksR0FBR0MsSUFBM0I7QUFDQSxJQUFJaitDLE9BQUssR0FBRzVKLElBQUksQ0FBQzRKLEtBQWpCO0FBQ0EsSUFBSTQrQyxrQkFBa0IsR0FBR25sRCxNQUFNLENBQUN5ZSxZQUFoQztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLElBQUkybUMsVUFBVSxHQUFHLFVBQVV4OEMsTUFBVixFQUFrQjtBQUNqQyxNQUFJNmhDLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSS9ULE9BQU8sR0FBRyxDQUFkO0FBQ0EsTUFBSXYzQixNQUFNLEdBQUd5SixNQUFNLENBQUN6SixNQUFwQjs7QUFDQSxTQUFPdTNCLE9BQU8sR0FBR3YzQixNQUFqQixFQUF5QjtBQUN2QixRQUFJakIsS0FBSyxHQUFHMEssTUFBTSxDQUFDbWhCLFVBQVAsQ0FBa0IyTSxPQUFPLEVBQXpCLENBQVo7O0FBQ0EsUUFBSXg0QixLQUFLLElBQUksTUFBVCxJQUFtQkEsS0FBSyxJQUFJLE1BQTVCLElBQXNDdzRCLE9BQU8sR0FBR3YzQixNQUFwRCxFQUE0RDtBQUMxRDtBQUNBLFVBQUlrbUQsS0FBSyxHQUFHejhDLE1BQU0sQ0FBQ21oQixVQUFQLENBQWtCMk0sT0FBTyxFQUF6QixDQUFaOztBQUNBLFVBQUksQ0FBQzJ1QixLQUFLLEdBQUcsTUFBVCxLQUFvQixNQUF4QixFQUFnQztBQUFFO0FBQ2hDNWEsUUFBQUEsTUFBTSxDQUFDcnBDLElBQVAsQ0FBWSxDQUFDLENBQUNsRCxLQUFLLEdBQUcsS0FBVCxLQUFtQixFQUFwQixLQUEyQm1uRCxLQUFLLEdBQUcsS0FBbkMsSUFBNEMsT0FBeEQ7QUFDRCxPQUZELE1BRU87QUFDTDtBQUNBO0FBQ0E1YSxRQUFBQSxNQUFNLENBQUNycEMsSUFBUCxDQUFZbEQsS0FBWjtBQUNBdzRCLFFBQUFBLE9BQU87QUFDUjtBQUNGLEtBWEQsTUFXTztBQUNMK1QsTUFBQUEsTUFBTSxDQUFDcnBDLElBQVAsQ0FBWWxELEtBQVo7QUFDRDtBQUNGOztBQUNELFNBQU91c0MsTUFBUDtBQUNELENBdEJEO0FBd0JBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBSTZhLFlBQVksR0FBRyxVQUFVQyxLQUFWLEVBQWlCO0FBQ2xDO0FBQ0E7QUFDQSxTQUFPQSxLQUFLLEdBQUcsRUFBUixHQUFhLE1BQU1BLEtBQUssR0FBRyxFQUFkLENBQXBCO0FBQ0QsQ0FKRDtBQU1BO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJQyxLQUFLLEdBQUcsVUFBVUMsS0FBVixFQUFpQkMsU0FBakIsRUFBNEJDLFNBQTVCLEVBQXVDO0FBQ2pELE1BQUkxd0MsQ0FBQyxHQUFHLENBQVI7QUFDQXd3QyxFQUFBQSxLQUFLLEdBQUdFLFNBQVMsR0FBR3AvQyxPQUFLLENBQUNrL0MsS0FBSyxHQUFHZCxJQUFULENBQVIsR0FBeUJjLEtBQUssSUFBSSxDQUFuRDtBQUNBQSxFQUFBQSxLQUFLLElBQUlsL0MsT0FBSyxDQUFDay9DLEtBQUssR0FBR0MsU0FBVCxDQUFkOztBQUNBLFNBQU9ELEtBQUssR0FBR1AsYUFBYSxHQUFHVCxJQUFoQixJQUF3QixDQUF2QyxFQUEwQ3h2QyxDQUFDLElBQUlzdkMsSUFBL0MsRUFBcUQ7QUFDbkRrQixJQUFBQSxLQUFLLEdBQUdsL0MsT0FBSyxDQUFDay9DLEtBQUssR0FBR1AsYUFBVCxDQUFiO0FBQ0Q7O0FBQ0QsU0FBTzMrQyxPQUFLLENBQUMwTyxDQUFDLEdBQUcsQ0FBQ2l3QyxhQUFhLEdBQUcsQ0FBakIsSUFBc0JPLEtBQXRCLElBQStCQSxLQUFLLEdBQUdmLElBQXZDLENBQUwsQ0FBWjtBQUNELENBUkQ7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJa0IsTUFBTSxHQUFHLFVBQVVqbEQsS0FBVixFQUFpQjtBQUM1QixNQUFJOHBDLE1BQU0sR0FBRyxFQUFiLENBRDRCOztBQUk1QjlwQyxFQUFBQSxLQUFLLEdBQUd5a0QsVUFBVSxDQUFDemtELEtBQUQsQ0FBbEIsQ0FKNEI7O0FBTzVCLE1BQUlrbEQsV0FBVyxHQUFHbGxELEtBQUssQ0FBQ3hCLE1BQXhCLENBUDRCOztBQVU1QixNQUFJK1csQ0FBQyxHQUFHMnVDLFFBQVI7QUFDQSxNQUFJWSxLQUFLLEdBQUcsQ0FBWjtBQUNBLE1BQUlLLElBQUksR0FBR2xCLFdBQVg7QUFDQSxNQUFJbDlDLENBQUosRUFBT3ErQyxZQUFQLENBYjRCOztBQWdCNUIsT0FBS3IrQyxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUcvRyxLQUFLLENBQUN4QixNQUF0QixFQUE4QnVJLENBQUMsRUFBL0IsRUFBbUM7QUFDakNxK0MsSUFBQUEsWUFBWSxHQUFHcGxELEtBQUssQ0FBQytHLENBQUQsQ0FBcEI7O0FBQ0EsUUFBSXErQyxZQUFZLEdBQUcsSUFBbkIsRUFBeUI7QUFDdkJ0YixNQUFBQSxNQUFNLENBQUNycEMsSUFBUCxDQUFZK2pELGtCQUFrQixDQUFDWSxZQUFELENBQTlCO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJQyxXQUFXLEdBQUd2YixNQUFNLENBQUN0ckMsTUFBekIsQ0F2QjRCOztBQXdCNUIsTUFBSThtRCxjQUFjLEdBQUdELFdBQXJCLENBeEI0QjtBQTBCNUI7O0FBQ0EsTUFBSUEsV0FBSixFQUFpQjtBQUNmdmIsSUFBQUEsTUFBTSxDQUFDcnBDLElBQVAsQ0FBWTBqRCxTQUFaO0FBQ0QsR0E3QjJCOzs7QUFnQzVCLFNBQU9tQixjQUFjLEdBQUdKLFdBQXhCLEVBQXFDO0FBQ25DO0FBQ0EsUUFBSTNkLENBQUMsR0FBR29jLE1BQVI7O0FBQ0EsU0FBSzU4QyxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUcvRyxLQUFLLENBQUN4QixNQUF0QixFQUE4QnVJLENBQUMsRUFBL0IsRUFBbUM7QUFDakNxK0MsTUFBQUEsWUFBWSxHQUFHcGxELEtBQUssQ0FBQytHLENBQUQsQ0FBcEI7O0FBQ0EsVUFBSXErQyxZQUFZLElBQUk3dkMsQ0FBaEIsSUFBcUI2dkMsWUFBWSxHQUFHN2QsQ0FBeEMsRUFBMkM7QUFDekNBLFFBQUFBLENBQUMsR0FBRzZkLFlBQUo7QUFDRDtBQUNGLEtBUmtDOzs7QUFXbkMsUUFBSUcscUJBQXFCLEdBQUdELGNBQWMsR0FBRyxDQUE3Qzs7QUFDQSxRQUFJL2QsQ0FBQyxHQUFHaHlCLENBQUosR0FBUTNQLE9BQUssQ0FBQyxDQUFDKzlDLE1BQU0sR0FBR21CLEtBQVYsSUFBbUJTLHFCQUFwQixDQUFqQixFQUE2RDtBQUMzRCxZQUFNdG1DLFVBQVUsQ0FBQ3FsQyxjQUFELENBQWhCO0FBQ0Q7O0FBRURRLElBQUFBLEtBQUssSUFBSSxDQUFDdmQsQ0FBQyxHQUFHaHlCLENBQUwsSUFBVWd3QyxxQkFBbkI7QUFDQWh3QyxJQUFBQSxDQUFDLEdBQUdneUIsQ0FBSjs7QUFFQSxTQUFLeGdDLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBRy9HLEtBQUssQ0FBQ3hCLE1BQXRCLEVBQThCdUksQ0FBQyxFQUEvQixFQUFtQztBQUNqQ3ErQyxNQUFBQSxZQUFZLEdBQUdwbEQsS0FBSyxDQUFDK0csQ0FBRCxDQUFwQjs7QUFDQSxVQUFJcStDLFlBQVksR0FBRzd2QyxDQUFmLElBQW9CLEVBQUV1dkMsS0FBRixHQUFVbkIsTUFBbEMsRUFBMEM7QUFDeEMsY0FBTTFrQyxVQUFVLENBQUNxbEMsY0FBRCxDQUFoQjtBQUNEOztBQUNELFVBQUljLFlBQVksSUFBSTd2QyxDQUFwQixFQUF1QjtBQUNyQjtBQUNBLFlBQUk2MEIsQ0FBQyxHQUFHMGEsS0FBUjs7QUFDQSxhQUFLLElBQUl4d0MsQ0FBQyxHQUFHc3ZDLElBQWIsR0FBdUN0dkMsQ0FBQyxJQUFJc3ZDLElBQTVDLEVBQWtEO0FBQ2hELGNBQUk5MEIsQ0FBQyxHQUFHeGEsQ0FBQyxJQUFJNndDLElBQUwsR0FBWXRCLElBQVosR0FBb0J2dkMsQ0FBQyxJQUFJNndDLElBQUksR0FBR3JCLElBQVosR0FBbUJBLElBQW5CLEdBQTBCeHZDLENBQUMsR0FBRzZ3QyxJQUExRDtBQUNBLGNBQUkvYSxDQUFDLEdBQUd0YixDQUFSLEVBQVc7QUFDWCxjQUFJMDJCLE9BQU8sR0FBR3BiLENBQUMsR0FBR3RiLENBQWxCO0FBQ0EsY0FBSTIyQixVQUFVLEdBQUc3QixJQUFJLEdBQUc5MEIsQ0FBeEI7QUFDQWdiLFVBQUFBLE1BQU0sQ0FBQ3JwQyxJQUFQLENBQVkrakQsa0JBQWtCLENBQUNHLFlBQVksQ0FBQzcxQixDQUFDLEdBQUcwMkIsT0FBTyxHQUFHQyxVQUFmLENBQWIsQ0FBOUI7QUFDQXJiLFVBQUFBLENBQUMsR0FBR3hrQyxPQUFLLENBQUM0L0MsT0FBTyxHQUFHQyxVQUFYLENBQVQ7QUFDRDs7QUFFRDNiLFFBQUFBLE1BQU0sQ0FBQ3JwQyxJQUFQLENBQVkrakQsa0JBQWtCLENBQUNHLFlBQVksQ0FBQ3ZhLENBQUQsQ0FBYixDQUE5QjtBQUNBK2EsUUFBQUEsSUFBSSxHQUFHTixLQUFLLENBQUNDLEtBQUQsRUFBUVMscUJBQVIsRUFBK0JELGNBQWMsSUFBSUQsV0FBakQsQ0FBWjtBQUNBUCxRQUFBQSxLQUFLLEdBQUcsQ0FBUjtBQUNBLFVBQUVRLGNBQUY7QUFDRDtBQUNGOztBQUVELE1BQUVSLEtBQUY7QUFDQSxNQUFFdnZDLENBQUY7QUFDRDs7QUFDRCxTQUFPdTBCLE1BQU0sQ0FBQ3BrQyxJQUFQLENBQVksRUFBWixDQUFQO0FBQ0QsQ0EvRUQ7O0lBaUZBekoscUJBQUEsR0FBaUIsVUFBVStELEtBQVYsRUFBaUI7QUFDaEMsTUFBSTBsRCxPQUFPLEdBQUcsRUFBZDtBQUNBLE1BQUlDLE1BQU0sR0FBRzNsRCxLQUFLLENBQUNrSSxXQUFOLEdBQW9CMUMsT0FBcEIsQ0FBNEI2K0MsZUFBNUIsRUFBNkMsUUFBN0MsRUFBdUR4bUQsS0FBdkQsQ0FBNkQsR0FBN0QsQ0FBYjtBQUNBLE1BQUlrSixDQUFKLEVBQU82K0MsS0FBUDs7QUFDQSxPQUFLNytDLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBRzQrQyxNQUFNLENBQUNubkQsTUFBdkIsRUFBK0J1SSxDQUFDLEVBQWhDLEVBQW9DO0FBQ2xDNitDLElBQUFBLEtBQUssR0FBR0QsTUFBTSxDQUFDNStDLENBQUQsQ0FBZDtBQUNBMitDLElBQUFBLE9BQU8sQ0FBQ2psRCxJQUFSLENBQWEyakQsYUFBYSxDQUFDL2dELElBQWQsQ0FBbUJ1aUQsS0FBbkIsSUFBNEIsU0FBU1gsTUFBTSxDQUFDVyxLQUFELENBQTNDLEdBQXFEQSxLQUFsRTtBQUNEOztBQUNELFNBQU9GLE9BQU8sQ0FBQ2hnRCxJQUFSLENBQWEsR0FBYixDQUFQO0FBQ0QsQ0FURDs7QUMzSkEsSUFBSTBJLEdBQUMsR0FBRzFSLE9BQVI7O0FBQ0EsSUFBSStCLFVBQVUsR0FBRy9CLFlBQWpCOztBQUNBLElBQUltcEQsZ0JBQWMsR0FBR25wRCxTQUFyQjs7QUFDQSxJQUFJeUwsVUFBUSxHQUFHekwsa0JBQWY7O0FBQ0EsSUFBSTRqQixXQUFXLEdBQUc1akIsYUFBbEI7O0FBQ0EsSUFBSStSLGdCQUFjLEdBQUcvUixnQkFBckI7O0FBQ0EsSUFBSTBjLHlCQUF5QixHQUFHMWMsMkJBQWhDOztBQUNBLElBQUlxSSxxQkFBbUIsR0FBR3JJLGFBQTFCOztBQUNBLElBQUk2akIsWUFBVSxHQUFHN2pCLFlBQWpCOztBQUNBLElBQUl5QixVQUFVLEdBQUd6QixZQUFqQjs7QUFDQSxJQUFJb0UsUUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSXNRLElBQUksR0FBR3RRLG1CQUFYOztBQUNBLElBQUlrQixPQUFPLEdBQUdsQixTQUFkOztBQUNBLElBQUltRyxRQUFRLEdBQUduRyxXQUFmOztBQUNBLElBQUlxRCxRQUFRLEdBQUdyRCxVQUFmOztBQUNBLElBQUkyUixXQUFTLEdBQUczUixVQUFoQjs7QUFDQSxJQUFJNk8sTUFBTSxHQUFHN08sY0FBYjs7QUFDQSxJQUFJNEYsd0JBQXdCLEdBQUc1RiwwQkFBL0I7O0FBQ0EsSUFBSStWLFdBQVcsR0FBRy9WLGFBQWxCOztBQUNBLElBQUl3VixpQkFBaUIsR0FBR3hWLG1CQUF4Qjs7QUFDQSxJQUFJaUYsZUFBZSxHQUFHakYsaUJBQXRCOztBQUVBLElBQUlvcEQsV0FBVyxHQUFHcm5ELFVBQVUsQ0FBQyxPQUFELENBQTVCO0FBQ0EsSUFBSXNuRCxhQUFhLEdBQUd0bkQsVUFBVSxDQUFDLFNBQUQsQ0FBOUI7QUFDQSxJQUFJdW5ELGdCQUFnQixHQUFHRCxhQUFhLElBQUlBLGFBQWEsQ0FBQ3JoRCxTQUF0RDtBQUNBLElBQUl1aEQsT0FBTyxHQUFHeG5ELFVBQVUsQ0FBQyxTQUFELENBQXhCO0FBQ0EsSUFBSXVULFFBQVEsR0FBR3JRLGVBQWUsQ0FBQyxVQUFELENBQTlCO0FBQ0EsSUFBSXVrRCxpQkFBaUIsR0FBRyxpQkFBeEI7QUFDQSxJQUFJQywwQkFBMEIsR0FBR0QsaUJBQWlCLEdBQUcsVUFBckQ7QUFDQSxJQUFJcjNDLGtCQUFnQixHQUFHOUoscUJBQW1CLENBQUNuQixHQUEzQztBQUNBLElBQUl3aUQsc0JBQXNCLEdBQUdyaEQscUJBQW1CLENBQUNoQixTQUFwQixDQUE4Qm1pRCxpQkFBOUIsQ0FBN0I7QUFDQSxJQUFJMzRCLHdCQUF3QixHQUFHeG9CLHFCQUFtQixDQUFDaEIsU0FBcEIsQ0FBOEJvaUQsMEJBQTlCLENBQS9CO0FBRUEsSUFBSUUsSUFBSSxHQUFHLEtBQVg7QUFDQSxJQUFJQyxTQUFTLEdBQUd6OUMsS0FBSyxDQUFDLENBQUQsQ0FBckI7O0FBRUEsSUFBSTA5QyxlQUFlLEdBQUcsVUFBVS9tQyxLQUFWLEVBQWlCO0FBQ3JDLFNBQU84bUMsU0FBUyxDQUFDOW1DLEtBQUssR0FBRyxDQUFULENBQVQsS0FBeUI4bUMsU0FBUyxDQUFDOW1DLEtBQUssR0FBRyxDQUFULENBQVQsR0FBdUJ3UixNQUFNLENBQUMsdUJBQXVCeFIsS0FBdkIsR0FBK0IsSUFBaEMsRUFBc0MsSUFBdEMsQ0FBdEQsQ0FBUDtBQUNELENBRkQ7O0FBSUEsSUFBSWduQyxhQUFhLEdBQUcsVUFBVUMsUUFBVixFQUFvQjtBQUN0QyxNQUFJO0FBQ0YsV0FBT0Msa0JBQWtCLENBQUNELFFBQUQsQ0FBekI7QUFDRCxHQUZELENBRUUsT0FBT2pxRCxLQUFQLEVBQWM7QUFDZCxXQUFPaXFELFFBQVA7QUFDRDtBQUNGLENBTkQ7O0FBUUEsSUFBSUUsV0FBVyxHQUFHLFVBQVU1cUQsRUFBVixFQUFjO0FBQzlCLE1BQUkrRixNQUFNLEdBQUcvRixFQUFFLENBQUN5SixPQUFILENBQVc2Z0QsSUFBWCxFQUFpQixHQUFqQixDQUFiO0FBQ0EsTUFBSTdtQyxLQUFLLEdBQUcsQ0FBWjs7QUFDQSxNQUFJO0FBQ0YsV0FBT2tuQyxrQkFBa0IsQ0FBQzVrRCxNQUFELENBQXpCO0FBQ0QsR0FGRCxDQUVFLE9BQU90RixLQUFQLEVBQWM7QUFDZCxXQUFPZ2pCLEtBQVAsRUFBYztBQUNaMWQsTUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUMwRCxPQUFQLENBQWUrZ0QsZUFBZSxDQUFDL21DLEtBQUssRUFBTixDQUE5QixFQUF5Q2duQyxhQUF6QyxDQUFUO0FBQ0Q7O0FBQ0QsV0FBTzFrRCxNQUFQO0FBQ0Q7QUFDRixDQVhEOztBQWFBLElBQUltTSxNQUFJLEdBQUcsY0FBWDtBQUVBLElBQUl6SSxPQUFPLEdBQUc7QUFDWixPQUFLLEtBRE87QUFFWixPQUFLLEtBRk87QUFHWixPQUFLLEtBSE87QUFJWixPQUFLLEtBSk87QUFLWixPQUFLLEtBTE87QUFNWixTQUFPO0FBTkssQ0FBZDs7QUFTQSxJQUFJbUwsUUFBUSxHQUFHLFVBQVUzUixLQUFWLEVBQWlCO0FBQzlCLFNBQU93RyxPQUFPLENBQUN4RyxLQUFELENBQWQ7QUFDRCxDQUZEOztBQUlBLElBQUk0bkQsU0FBUyxHQUFHLFVBQVU3cUQsRUFBVixFQUFjO0FBQzVCLFNBQU84cUQsa0JBQWtCLENBQUM5cUQsRUFBRCxDQUFsQixDQUF1QnlKLE9BQXZCLENBQStCeUksTUFBL0IsRUFBcUMwQyxRQUFyQyxDQUFQO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJbTJDLGlCQUFpQixHQUFHLFVBQVVobEQsTUFBVixFQUFrQmlsRCxLQUFsQixFQUF5QjtBQUMvQyxNQUFJQSxLQUFKLEVBQVc7QUFDVCxRQUFJcG9CLFVBQVUsR0FBR29vQixLQUFLLENBQUNscEQsS0FBTixDQUFZLEdBQVosQ0FBakI7QUFDQSxRQUFJb0ksS0FBSyxHQUFHLENBQVo7QUFDQSxRQUFJb2xDLFNBQUosRUFBZXBlLEtBQWY7O0FBQ0EsV0FBT2huQixLQUFLLEdBQUcwNEIsVUFBVSxDQUFDbmdDLE1BQTFCLEVBQWtDO0FBQ2hDNnNDLE1BQUFBLFNBQVMsR0FBRzFNLFVBQVUsQ0FBQzE0QixLQUFLLEVBQU4sQ0FBdEI7O0FBQ0EsVUFBSW9sQyxTQUFTLENBQUM3c0MsTUFBZCxFQUFzQjtBQUNwQnl1QixRQUFBQSxLQUFLLEdBQUdvZSxTQUFTLENBQUN4dEMsS0FBVixDQUFnQixHQUFoQixDQUFSO0FBQ0FpRSxRQUFBQSxNQUFNLENBQUNyQixJQUFQLENBQVk7QUFDVkosVUFBQUEsR0FBRyxFQUFFc21ELFdBQVcsQ0FBQzE1QixLQUFLLENBQUMrNUIsS0FBTixFQUFELENBRE47QUFFVnpwRCxVQUFBQSxLQUFLLEVBQUVvcEQsV0FBVyxDQUFDMTVCLEtBQUssQ0FBQ3ZuQixJQUFOLENBQVcsR0FBWCxDQUFEO0FBRlIsU0FBWjtBQUlEO0FBQ0Y7QUFDRjtBQUNGLENBaEJEOztBQWtCQSxJQUFJdWhELGtCQUFrQixHQUFHLFVBQVVGLEtBQVYsRUFBaUI7QUFDeEMsT0FBSzlzQyxPQUFMLENBQWF6YixNQUFiLEdBQXNCLENBQXRCO0FBQ0Fzb0QsRUFBQUEsaUJBQWlCLENBQUMsS0FBSzdzQyxPQUFOLEVBQWU4c0MsS0FBZixDQUFqQjtBQUNELENBSEQ7O0FBS0EsSUFBSUcsdUJBQXVCLEdBQUcsVUFBVUMsTUFBVixFQUFrQkMsUUFBbEIsRUFBNEI7QUFDeEQsTUFBSUQsTUFBTSxHQUFHQyxRQUFiLEVBQXVCLE1BQU1ycEQsU0FBUyxDQUFDLHNCQUFELENBQWY7QUFDeEIsQ0FGRDs7QUFJQSxJQUFJc3BELHVCQUF1QixHQUFHanVDLHlCQUF5QixDQUFDLFNBQVN1OUIsUUFBVCxDQUFrQjJRLE1BQWxCLEVBQTBCajFDLElBQTFCLEVBQWdDO0FBQ3RGeEQsRUFBQUEsa0JBQWdCLENBQUMsSUFBRCxFQUFPO0FBQ3JCM0ssSUFBQUEsSUFBSSxFQUFFaWlELDBCQURlO0FBRXJCM21ELElBQUFBLFFBQVEsRUFBRWlULFdBQVcsQ0FBQzJ6QyxzQkFBc0IsQ0FBQ2tCLE1BQUQsQ0FBdEIsQ0FBK0JydEMsT0FBaEMsQ0FGQTtBQUdyQjVILElBQUFBLElBQUksRUFBRUE7QUFIZSxHQUFQLENBQWhCO0FBS0QsQ0FOc0QsRUFNcEQsVUFOb0QsRUFNeEMsU0FBU2MsSUFBVCxHQUFnQjtBQUM3QixNQUFJbFAsS0FBSyxHQUFHc3BCLHdCQUF3QixDQUFDLElBQUQsQ0FBcEM7QUFDQSxNQUFJbGIsSUFBSSxHQUFHcE8sS0FBSyxDQUFDb08sSUFBakI7QUFDQSxNQUFJZSxJQUFJLEdBQUduUCxLQUFLLENBQUN6RSxRQUFOLENBQWUyVCxJQUFmLEVBQVg7QUFDQSxNQUFJOFosS0FBSyxHQUFHN1osSUFBSSxDQUFDN1YsS0FBakI7O0FBQ0EsTUFBSSxDQUFDNlYsSUFBSSxDQUFDSSxJQUFWLEVBQWdCO0FBQ2RKLElBQUFBLElBQUksQ0FBQzdWLEtBQUwsR0FBYThVLElBQUksS0FBSyxNQUFULEdBQWtCNGEsS0FBSyxDQUFDNXNCLEdBQXhCLEdBQThCZ1MsSUFBSSxLQUFLLFFBQVQsR0FBb0I0YSxLQUFLLENBQUMxdkIsS0FBMUIsR0FBa0MsQ0FBQzB2QixLQUFLLENBQUM1c0IsR0FBUCxFQUFZNHNCLEtBQUssQ0FBQzF2QixLQUFsQixDQUE3RTtBQUNEOztBQUFDLFNBQU82VixJQUFQO0FBQ0gsQ0Fkc0QsQ0FBdkQ7QUFpQkE7O0FBQ0EsSUFBSW0wQywwQkFBMEIsR0FBRyxTQUFTL0QsZUFBVCxHQUFxQztBQUNwRWpqQyxFQUFBQSxZQUFVLENBQUMsSUFBRCxFQUFPZ25DLDBCQUFQLEVBQW1DckIsaUJBQW5DLENBQVY7QUFDQSxNQUFJeDRCLElBQUksR0FBR252QixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJELFNBQVMsQ0FBQyxDQUFELENBQWhDLEdBQXNDVCxTQUFqRDtBQUNBLE1BQUlpTyxJQUFJLEdBQUcsSUFBWDtBQUNBLE1BQUlrTyxPQUFPLEdBQUcsRUFBZDtBQUNBLE1BQUk3SCxjQUFKLEVBQW9CNVMsUUFBcEIsRUFBOEIyVCxJQUE5QixFQUFvQ0MsSUFBcEMsRUFBMENvMEMsYUFBMUMsRUFBeURDLFNBQXpELEVBQW9FdGhDLEtBQXBFLEVBQTJFc2QsTUFBM0UsRUFBbUZwakMsR0FBbkY7QUFFQXdPLEVBQUFBLGtCQUFnQixDQUFDOUMsSUFBRCxFQUFPO0FBQ3JCN0gsSUFBQUEsSUFBSSxFQUFFZ2lELGlCQURlO0FBRXJCanNDLElBQUFBLE9BQU8sRUFBRUEsT0FGWTtBQUdyQnl0QyxJQUFBQSxTQUFTLEVBQUUsWUFBWTtBQUFFO0FBQWEsS0FIakI7QUFJckJULElBQUFBLGtCQUFrQixFQUFFQTtBQUpDLEdBQVAsQ0FBaEI7O0FBT0EsTUFBSXY1QixJQUFJLEtBQUs1dkIsU0FBYixFQUF3QjtBQUN0QixRQUFJaUMsUUFBUSxDQUFDMnRCLElBQUQsQ0FBWixFQUFvQjtBQUNsQnRiLE1BQUFBLGNBQWMsR0FBR0YsaUJBQWlCLENBQUN3YixJQUFELENBQWxDOztBQUNBLFVBQUl0YixjQUFKLEVBQW9CO0FBQ2xCNVMsUUFBQUEsUUFBUSxHQUFHaVQsV0FBVyxDQUFDaWIsSUFBRCxFQUFPdGIsY0FBUCxDQUF0QjtBQUNBZSxRQUFBQSxJQUFJLEdBQUczVCxRQUFRLENBQUMyVCxJQUFoQjs7QUFDQSxlQUFPLENBQUMsQ0FBQ0MsSUFBSSxHQUFHRCxJQUFJLENBQUNqVyxJQUFMLENBQVVzQyxRQUFWLENBQVIsRUFBNkJnVSxJQUFyQyxFQUEyQztBQUN6Q2cwQyxVQUFBQSxhQUFhLEdBQUcvMEMsV0FBVyxDQUFDNVAsUUFBUSxDQUFDdVEsSUFBSSxDQUFDN1YsS0FBTixDQUFULENBQTNCO0FBQ0FrcUQsVUFBQUEsU0FBUyxHQUFHRCxhQUFhLENBQUNyMEMsSUFBMUI7QUFDQSxjQUNFLENBQUNnVCxLQUFLLEdBQUdzaEMsU0FBUyxDQUFDdnFELElBQVYsQ0FBZXNxRCxhQUFmLENBQVQsRUFBd0NoMEMsSUFBeEMsSUFDQSxDQUFDaXdCLE1BQU0sR0FBR2drQixTQUFTLENBQUN2cUQsSUFBVixDQUFlc3FELGFBQWYsQ0FBVixFQUF5Q2gwQyxJQUR6QyxJQUVBLENBQUNpMEMsU0FBUyxDQUFDdnFELElBQVYsQ0FBZXNxRCxhQUFmLEVBQThCaDBDLElBSGpDLEVBSUUsTUFBTXpWLFNBQVMsQ0FBQyxpQ0FBRCxDQUFmO0FBQ0ZrYyxVQUFBQSxPQUFPLENBQUN4WixJQUFSLENBQWE7QUFBRUosWUFBQUEsR0FBRyxFQUFFZ08sV0FBUyxDQUFDOFgsS0FBSyxDQUFDNW9CLEtBQVAsQ0FBaEI7QUFBK0JBLFlBQUFBLEtBQUssRUFBRThRLFdBQVMsQ0FBQ28xQixNQUFNLENBQUNsbUMsS0FBUjtBQUEvQyxXQUFiO0FBQ0Q7QUFDRixPQWJELE1BYU8sS0FBSzhDLEdBQUwsSUFBWXF0QixJQUFaLEVBQWtCLElBQUk1c0IsUUFBTSxDQUFDNHNCLElBQUQsRUFBT3J0QixHQUFQLENBQVYsRUFBdUI0WixPQUFPLENBQUN4WixJQUFSLENBQWE7QUFBRUosUUFBQUEsR0FBRyxFQUFFQSxHQUFQO0FBQVk5QyxRQUFBQSxLQUFLLEVBQUU4USxXQUFTLENBQUNxZixJQUFJLENBQUNydEIsR0FBRCxDQUFMO0FBQTVCLE9BQWI7QUFDakQsS0FoQkQsTUFnQk87QUFDTHltRCxNQUFBQSxpQkFBaUIsQ0FDZjdzQyxPQURlLEVBRWYsT0FBT3lULElBQVAsS0FBZ0IsUUFBaEIsR0FBMkJBLElBQUksQ0FBQzFQLE1BQUwsQ0FBWSxDQUFaLE1BQW1CLEdBQW5CLEdBQXlCMFAsSUFBSSxDQUFDL3ZCLEtBQUwsQ0FBVyxDQUFYLENBQXpCLEdBQXlDK3ZCLElBQXBFLEdBQTJFcmYsV0FBUyxDQUFDcWYsSUFBRCxDQUZyRSxDQUFqQjtBQUlEO0FBQ0Y7QUFDRixDQXRDRDs7QUF3Q0EsSUFBSWk2Qix3QkFBd0IsR0FBR0osMEJBQTBCLENBQUM3aUQsU0FBMUQ7QUFFQTRiLFdBQVcsQ0FBQ3FuQyx3QkFBRCxFQUEyQjtBQUNwQztBQUNBO0FBQ0FDLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCcm1ELElBQWhCLEVBQXNCaEUsS0FBdEIsRUFBNkI7QUFDbkMycEQsSUFBQUEsdUJBQXVCLENBQUMzb0QsU0FBUyxDQUFDQyxNQUFYLEVBQW1CLENBQW5CLENBQXZCO0FBQ0EsUUFBSXlGLEtBQUssR0FBR21pRCxzQkFBc0IsQ0FBQyxJQUFELENBQWxDO0FBQ0FuaUQsSUFBQUEsS0FBSyxDQUFDZ1csT0FBTixDQUFjeFosSUFBZCxDQUFtQjtBQUFFSixNQUFBQSxHQUFHLEVBQUVnTyxXQUFTLENBQUM5TSxJQUFELENBQWhCO0FBQXdCaEUsTUFBQUEsS0FBSyxFQUFFOFEsV0FBUyxDQUFDOVEsS0FBRDtBQUF4QyxLQUFuQjtBQUNBMEcsSUFBQUEsS0FBSyxDQUFDeWpELFNBQU47QUFDRCxHQVJtQztBQVNwQztBQUNBO0FBQ0EsWUFBVSxVQUFVbm1ELElBQVYsRUFBZ0I7QUFDeEIybEQsSUFBQUEsdUJBQXVCLENBQUMzb0QsU0FBUyxDQUFDQyxNQUFYLEVBQW1CLENBQW5CLENBQXZCO0FBQ0EsUUFBSXlGLEtBQUssR0FBR21pRCxzQkFBc0IsQ0FBQyxJQUFELENBQWxDO0FBQ0EsUUFBSW5zQyxPQUFPLEdBQUdoVyxLQUFLLENBQUNnVyxPQUFwQjtBQUNBLFFBQUk1WixHQUFHLEdBQUdnTyxXQUFTLENBQUM5TSxJQUFELENBQW5CO0FBQ0EsUUFBSTBFLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9BLEtBQUssR0FBR2dVLE9BQU8sQ0FBQ3piLE1BQXZCLEVBQStCO0FBQzdCLFVBQUl5YixPQUFPLENBQUNoVSxLQUFELENBQVAsQ0FBZTVGLEdBQWYsS0FBdUJBLEdBQTNCLEVBQWdDNFosT0FBTyxDQUFDeUUsTUFBUixDQUFlelksS0FBZixFQUFzQixDQUF0QixFQUFoQyxLQUNLQSxLQUFLO0FBQ1g7O0FBQ0RoQyxJQUFBQSxLQUFLLENBQUN5akQsU0FBTjtBQUNELEdBdEJtQztBQXVCcEM7QUFDQTtBQUNBN3FELEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWEwRSxJQUFiLEVBQW1CO0FBQ3RCMmxELElBQUFBLHVCQUF1QixDQUFDM29ELFNBQVMsQ0FBQ0MsTUFBWCxFQUFtQixDQUFuQixDQUF2QjtBQUNBLFFBQUl5YixPQUFPLEdBQUdtc0Msc0JBQXNCLENBQUMsSUFBRCxDQUF0QixDQUE2Qm5zQyxPQUEzQztBQUNBLFFBQUk1WixHQUFHLEdBQUdnTyxXQUFTLENBQUM5TSxJQUFELENBQW5CO0FBQ0EsUUFBSTBFLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9BLEtBQUssR0FBR2dVLE9BQU8sQ0FBQ3piLE1BQXZCLEVBQStCeUgsS0FBSyxFQUFwQyxFQUF3QztBQUN0QyxVQUFJZ1UsT0FBTyxDQUFDaFUsS0FBRCxDQUFQLENBQWU1RixHQUFmLEtBQXVCQSxHQUEzQixFQUFnQyxPQUFPNFosT0FBTyxDQUFDaFUsS0FBRCxDQUFQLENBQWUxSSxLQUF0QjtBQUNqQzs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQWxDbUM7QUFtQ3BDO0FBQ0E7QUFDQXNxRCxFQUFBQSxNQUFNLEVBQUUsU0FBU0EsTUFBVCxDQUFnQnRtRCxJQUFoQixFQUFzQjtBQUM1QjJsRCxJQUFBQSx1QkFBdUIsQ0FBQzNvRCxTQUFTLENBQUNDLE1BQVgsRUFBbUIsQ0FBbkIsQ0FBdkI7QUFDQSxRQUFJeWIsT0FBTyxHQUFHbXNDLHNCQUFzQixDQUFDLElBQUQsQ0FBdEIsQ0FBNkJuc0MsT0FBM0M7QUFDQSxRQUFJNVosR0FBRyxHQUFHZ08sV0FBUyxDQUFDOU0sSUFBRCxDQUFuQjtBQUNBLFFBQUlPLE1BQU0sR0FBRyxFQUFiO0FBQ0EsUUFBSW1FLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9BLEtBQUssR0FBR2dVLE9BQU8sQ0FBQ3piLE1BQXZCLEVBQStCeUgsS0FBSyxFQUFwQyxFQUF3QztBQUN0QyxVQUFJZ1UsT0FBTyxDQUFDaFUsS0FBRCxDQUFQLENBQWU1RixHQUFmLEtBQXVCQSxHQUEzQixFQUFnQ3lCLE1BQU0sQ0FBQ3JCLElBQVAsQ0FBWXdaLE9BQU8sQ0FBQ2hVLEtBQUQsQ0FBUCxDQUFlMUksS0FBM0I7QUFDakM7O0FBQ0QsV0FBT3VFLE1BQVA7QUFDRCxHQS9DbUM7QUFnRHBDO0FBQ0E7QUFDQStCLEVBQUFBLEdBQUcsRUFBRSxTQUFTQSxHQUFULENBQWF0QyxJQUFiLEVBQW1CO0FBQ3RCMmxELElBQUFBLHVCQUF1QixDQUFDM29ELFNBQVMsQ0FBQ0MsTUFBWCxFQUFtQixDQUFuQixDQUF2QjtBQUNBLFFBQUl5YixPQUFPLEdBQUdtc0Msc0JBQXNCLENBQUMsSUFBRCxDQUF0QixDQUE2Qm5zQyxPQUEzQztBQUNBLFFBQUk1WixHQUFHLEdBQUdnTyxXQUFTLENBQUM5TSxJQUFELENBQW5CO0FBQ0EsUUFBSTBFLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9BLEtBQUssR0FBR2dVLE9BQU8sQ0FBQ3piLE1BQXZCLEVBQStCO0FBQzdCLFVBQUl5YixPQUFPLENBQUNoVSxLQUFLLEVBQU4sQ0FBUCxDQUFpQjVGLEdBQWpCLEtBQXlCQSxHQUE3QixFQUFrQyxPQUFPLElBQVA7QUFDbkM7O0FBQ0QsV0FBTyxLQUFQO0FBQ0QsR0EzRG1DO0FBNERwQztBQUNBO0FBQ0F1RCxFQUFBQSxHQUFHLEVBQUUsU0FBU0EsR0FBVCxDQUFhckMsSUFBYixFQUFtQmhFLEtBQW5CLEVBQTBCO0FBQzdCMnBELElBQUFBLHVCQUF1QixDQUFDM29ELFNBQVMsQ0FBQ0MsTUFBWCxFQUFtQixDQUFuQixDQUF2QjtBQUNBLFFBQUl5RixLQUFLLEdBQUdtaUQsc0JBQXNCLENBQUMsSUFBRCxDQUFsQztBQUNBLFFBQUluc0MsT0FBTyxHQUFHaFcsS0FBSyxDQUFDZ1csT0FBcEI7QUFDQSxRQUFJNnRDLEtBQUssR0FBRyxLQUFaO0FBQ0EsUUFBSXpuRCxHQUFHLEdBQUdnTyxXQUFTLENBQUM5TSxJQUFELENBQW5CO0FBQ0EsUUFBSXBCLEdBQUcsR0FBR2tPLFdBQVMsQ0FBQzlRLEtBQUQsQ0FBbkI7QUFDQSxRQUFJMEksS0FBSyxHQUFHLENBQVo7QUFDQSxRQUFJZ25CLEtBQUo7O0FBQ0EsV0FBT2huQixLQUFLLEdBQUdnVSxPQUFPLENBQUN6YixNQUF2QixFQUErQnlILEtBQUssRUFBcEMsRUFBd0M7QUFDdENnbkIsTUFBQUEsS0FBSyxHQUFHaFQsT0FBTyxDQUFDaFUsS0FBRCxDQUFmOztBQUNBLFVBQUlnbkIsS0FBSyxDQUFDNXNCLEdBQU4sS0FBY0EsR0FBbEIsRUFBdUI7QUFDckIsWUFBSXluRCxLQUFKLEVBQVc3dEMsT0FBTyxDQUFDeUUsTUFBUixDQUFlelksS0FBSyxFQUFwQixFQUF3QixDQUF4QixFQUFYLEtBQ0s7QUFDSDZoRCxVQUFBQSxLQUFLLEdBQUcsSUFBUjtBQUNBNzZCLFVBQUFBLEtBQUssQ0FBQzF2QixLQUFOLEdBQWM0QyxHQUFkO0FBQ0Q7QUFDRjtBQUNGOztBQUNELFFBQUksQ0FBQzJuRCxLQUFMLEVBQVk3dEMsT0FBTyxDQUFDeFosSUFBUixDQUFhO0FBQUVKLE1BQUFBLEdBQUcsRUFBRUEsR0FBUDtBQUFZOUMsTUFBQUEsS0FBSyxFQUFFNEM7QUFBbkIsS0FBYjtBQUNaOEQsSUFBQUEsS0FBSyxDQUFDeWpELFNBQU47QUFDRCxHQW5GbUM7QUFvRnBDO0FBQ0E7QUFDQWxxQyxFQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFBVCxHQUFnQjtBQUNwQixRQUFJdlosS0FBSyxHQUFHbWlELHNCQUFzQixDQUFDLElBQUQsQ0FBbEM7QUFDQSxRQUFJbnNDLE9BQU8sR0FBR2hXLEtBQUssQ0FBQ2dXLE9BQXBCLENBRm9COztBQUlwQixRQUFJdGMsS0FBSyxHQUFHc2MsT0FBTyxDQUFDdGMsS0FBUixFQUFaO0FBQ0EsUUFBSXN2QixLQUFKLEVBQVc4NkIsWUFBWCxFQUF5QkMsVUFBekI7QUFDQS90QyxJQUFBQSxPQUFPLENBQUN6YixNQUFSLEdBQWlCLENBQWpCOztBQUNBLFNBQUt3cEQsVUFBVSxHQUFHLENBQWxCLEVBQXFCQSxVQUFVLEdBQUdycUQsS0FBSyxDQUFDYSxNQUF4QyxFQUFnRHdwRCxVQUFVLEVBQTFELEVBQThEO0FBQzVELzZCLE1BQUFBLEtBQUssR0FBR3R2QixLQUFLLENBQUNxcUQsVUFBRCxDQUFiOztBQUNBLFdBQUtELFlBQVksR0FBRyxDQUFwQixFQUF1QkEsWUFBWSxHQUFHQyxVQUF0QyxFQUFrREQsWUFBWSxFQUE5RCxFQUFrRTtBQUNoRSxZQUFJOXRDLE9BQU8sQ0FBQzh0QyxZQUFELENBQVAsQ0FBc0IxbkQsR0FBdEIsR0FBNEI0c0IsS0FBSyxDQUFDNXNCLEdBQXRDLEVBQTJDO0FBQ3pDNFosVUFBQUEsT0FBTyxDQUFDeUUsTUFBUixDQUFlcXBDLFlBQWYsRUFBNkIsQ0FBN0IsRUFBZ0M5NkIsS0FBaEM7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsVUFBSTg2QixZQUFZLEtBQUtDLFVBQXJCLEVBQWlDL3RDLE9BQU8sQ0FBQ3haLElBQVIsQ0FBYXdzQixLQUFiO0FBQ2xDOztBQUNEaHBCLElBQUFBLEtBQUssQ0FBQ3lqRCxTQUFOO0FBQ0QsR0F4R21DO0FBeUdwQztBQUNBOTVDLEVBQUFBLE9BQU8sRUFBRSxTQUFTQSxPQUFULENBQWlCdXFDO0FBQVM7QUFBMUIsSUFBMkM7QUFDbEQsUUFBSWwrQixPQUFPLEdBQUdtc0Msc0JBQXNCLENBQUMsSUFBRCxDQUF0QixDQUE2Qm5zQyxPQUEzQztBQUNBLFFBQUl0TSxhQUFhLEdBQUdYLElBQUksQ0FBQ21yQyxRQUFELEVBQVc1NUMsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCRCxTQUFTLENBQUMsQ0FBRCxDQUFoQyxHQUFzQ1QsU0FBakQsRUFBNEQsQ0FBNUQsQ0FBeEI7QUFDQSxRQUFJbUksS0FBSyxHQUFHLENBQVo7QUFDQSxRQUFJZ25CLEtBQUo7O0FBQ0EsV0FBT2huQixLQUFLLEdBQUdnVSxPQUFPLENBQUN6YixNQUF2QixFQUErQjtBQUM3Qnl1QixNQUFBQSxLQUFLLEdBQUdoVCxPQUFPLENBQUNoVSxLQUFLLEVBQU4sQ0FBZjtBQUNBMEgsTUFBQUEsYUFBYSxDQUFDc2YsS0FBSyxDQUFDMXZCLEtBQVAsRUFBYzB2QixLQUFLLENBQUM1c0IsR0FBcEIsRUFBeUIsSUFBekIsQ0FBYjtBQUNEO0FBQ0YsR0FuSG1DO0FBb0hwQztBQUNBaUQsRUFBQUEsSUFBSSxFQUFFLFNBQVNBLElBQVQsR0FBZ0I7QUFDcEIsV0FBTyxJQUFJK2pELHVCQUFKLENBQTRCLElBQTVCLEVBQWtDLE1BQWxDLENBQVA7QUFDRCxHQXZIbUM7QUF3SHBDO0FBQ0FydEMsRUFBQUEsTUFBTSxFQUFFLFNBQVNBLE1BQVQsR0FBa0I7QUFDeEIsV0FBTyxJQUFJcXRDLHVCQUFKLENBQTRCLElBQTVCLEVBQWtDLFFBQWxDLENBQVA7QUFDRCxHQTNIbUM7QUE0SHBDO0FBQ0FwdEMsRUFBQUEsT0FBTyxFQUFFLFNBQVNBLE9BQVQsR0FBbUI7QUFDMUIsV0FBTyxJQUFJb3RDLHVCQUFKLENBQTRCLElBQTVCLEVBQWtDLFNBQWxDLENBQVA7QUFDRDtBQS9IbUMsQ0FBM0IsRUFnSVI7QUFBRWhxRCxFQUFBQSxVQUFVLEVBQUU7QUFBZCxDQWhJUSxDQUFYOztBQW1JQThLLFVBQVEsQ0FBQ3cvQyx3QkFBRCxFQUEyQjMxQyxRQUEzQixFQUFxQzIxQyx3QkFBd0IsQ0FBQzF0QyxPQUE5RCxFQUF1RTtBQUFFMVksRUFBQUEsSUFBSSxFQUFFO0FBQVIsQ0FBdkUsQ0FBUjtBQUdBOztBQUNBNEcsVUFBUSxDQUFDdy9DLHdCQUFELEVBQTJCLFVBQTNCLEVBQXVDLFNBQVNqcUQsUUFBVCxHQUFvQjtBQUNqRSxNQUFJdWMsT0FBTyxHQUFHbXNDLHNCQUFzQixDQUFDLElBQUQsQ0FBdEIsQ0FBNkJuc0MsT0FBM0M7QUFDQSxNQUFJblksTUFBTSxHQUFHLEVBQWI7QUFDQSxNQUFJbUUsS0FBSyxHQUFHLENBQVo7QUFDQSxNQUFJZ25CLEtBQUo7O0FBQ0EsU0FBT2huQixLQUFLLEdBQUdnVSxPQUFPLENBQUN6YixNQUF2QixFQUErQjtBQUM3Qnl1QixJQUFBQSxLQUFLLEdBQUdoVCxPQUFPLENBQUNoVSxLQUFLLEVBQU4sQ0FBZjtBQUNBbkUsSUFBQUEsTUFBTSxDQUFDckIsSUFBUCxDQUFZbW1ELFNBQVMsQ0FBQzM1QixLQUFLLENBQUM1c0IsR0FBUCxDQUFULEdBQXVCLEdBQXZCLEdBQTZCdW1ELFNBQVMsQ0FBQzM1QixLQUFLLENBQUMxdkIsS0FBUCxDQUFsRDtBQUNEOztBQUFDLFNBQU91RSxNQUFNLENBQUM0RCxJQUFQLENBQVksR0FBWixDQUFQO0FBQ0gsQ0FUTyxFQVNMO0FBQUVySSxFQUFBQSxVQUFVLEVBQUU7QUFBZCxDQVRLLENBQVI7QUFXQW9SLGdCQUFjLENBQUM4NEMsMEJBQUQsRUFBNkJyQixpQkFBN0IsQ0FBZDtBQUVBOTNDLEdBQUMsQ0FBQztBQUFFL1IsRUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0J1TSxFQUFBQSxNQUFNLEVBQUUsQ0FBQ2k5QztBQUF6QixDQUFELEVBQTRDO0FBQzNDckMsRUFBQUEsZUFBZSxFQUFFK0Q7QUFEMEIsQ0FBNUMsQ0FBRDs7QUFLQSxJQUFJLENBQUMxQixnQkFBRCxJQUFtQjFuRCxVQUFVLENBQUM4bkQsT0FBRCxDQUFqQyxFQUE0QztBQUMxQyxNQUFJZ0Msa0JBQWtCLEdBQUcsVUFBVXY2QixJQUFWLEVBQWdCO0FBQ3ZDLFFBQUkzdEIsUUFBUSxDQUFDMnRCLElBQUQsQ0FBWixFQUFvQjtBQUNsQixVQUFJdzZCLElBQUksR0FBR3g2QixJQUFJLENBQUN3NkIsSUFBaEI7QUFDQSxVQUFJQyxPQUFKOztBQUNBLFVBQUl2cUQsT0FBTyxDQUFDc3FELElBQUQsQ0FBUCxLQUFrQmhDLGlCQUF0QixFQUF5QztBQUN2Q2lDLFFBQUFBLE9BQU8sR0FBR3o2QixJQUFJLENBQUN5NkIsT0FBTCxHQUFlLElBQUlsQyxPQUFKLENBQVl2NEIsSUFBSSxDQUFDeTZCLE9BQWpCLENBQWYsR0FBMkMsSUFBSWxDLE9BQUosRUFBckQ7O0FBQ0EsWUFBSSxDQUFDa0MsT0FBTyxDQUFDdGtELEdBQVIsQ0FBWSxjQUFaLENBQUwsRUFBa0M7QUFDaENza0QsVUFBQUEsT0FBTyxDQUFDdmtELEdBQVIsQ0FBWSxjQUFaLEVBQTRCLGlEQUE1QjtBQUNEOztBQUNELGVBQU8ySCxNQUFNLENBQUNtaUIsSUFBRCxFQUFPO0FBQ2xCdzZCLFVBQUFBLElBQUksRUFBRTVsRCx3QkFBd0IsQ0FBQyxDQUFELEVBQUlqRCxNQUFNLENBQUM2b0QsSUFBRCxDQUFWLENBRFo7QUFFbEJDLFVBQUFBLE9BQU8sRUFBRTdsRCx3QkFBd0IsQ0FBQyxDQUFELEVBQUk2bEQsT0FBSjtBQUZmLFNBQVAsQ0FBYjtBQUlEO0FBQ0Y7O0FBQUMsV0FBT3o2QixJQUFQO0FBQ0gsR0FmRDs7QUFpQkEsTUFBSXZ2QixVQUFVLENBQUMybkQsV0FBRCxDQUFkLEVBQTZCO0FBQzNCMTNDLElBQUFBLEdBQUMsQ0FBQztBQUFFL1IsTUFBQUEsTUFBTSxFQUFFLElBQVY7QUFBZ0JnQixNQUFBQSxVQUFVLEVBQUUsSUFBNUI7QUFBa0N1TCxNQUFBQSxNQUFNLEVBQUU7QUFBMUMsS0FBRCxFQUFtRDtBQUNsRHcvQyxNQUFBQSxLQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlcG9EO0FBQU07QUFBckIsUUFBbUM7QUFDeEMsZUFBTzhsRCxXQUFXLENBQUM5bEQsS0FBRCxFQUFRekIsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQW5CLEdBQXVCeXBELGtCQUFrQixDQUFDMXBELFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBekMsR0FBMEQsRUFBbEUsQ0FBbEI7QUFDRDtBQUhpRCxLQUFuRCxDQUFEO0FBS0Q7O0FBRUQsTUFBSUosVUFBVSxDQUFDNG5ELGFBQUQsQ0FBZCxFQUErQjtBQUM3QixRQUFJc0Msa0JBQWtCLEdBQUcsU0FBU0MsT0FBVCxDQUFpQnRvRDtBQUFNO0FBQXZCLE1BQXFDO0FBQzVEdWdCLE1BQUFBLFlBQVUsQ0FBQyxJQUFELEVBQU84bkMsa0JBQVAsRUFBMkIsU0FBM0IsQ0FBVjtBQUNBLGFBQU8sSUFBSXRDLGFBQUosQ0FBa0IvbEQsS0FBbEIsRUFBeUJ6QixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUJ5cEQsa0JBQWtCLENBQUMxcEQsU0FBUyxDQUFDLENBQUQsQ0FBVixDQUF6QyxHQUEwRCxFQUFuRixDQUFQO0FBQ0QsS0FIRDs7QUFLQXluRCxJQUFBQSxnQkFBZ0IsQ0FBQ2w1QyxXQUFqQixHQUErQnU3QyxrQkFBL0I7QUFDQUEsSUFBQUEsa0JBQWtCLENBQUMzakQsU0FBbkIsR0FBK0JzaEQsZ0JBQS9CO0FBRUE1M0MsSUFBQUEsR0FBQyxDQUFDO0FBQUUvUixNQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLE1BQUFBLE1BQU0sRUFBRTtBQUF4QixLQUFELEVBQWlDO0FBQ2hDMC9DLE1BQUFBLE9BQU8sRUFBRUQ7QUFEdUIsS0FBakMsQ0FBRDtBQUdEO0FBQ0Y7O0lBRURwc0QsbUJBQUEsR0FBaUI7QUFDZnVuRCxFQUFBQSxlQUFlLEVBQUUrRCwwQkFERjtBQUVmZ0IsRUFBQUEsUUFBUSxFQUFFbkM7QUFGSyxDQUFqQjs7QUN6V0EsSUFBSWg0QyxHQUFDLEdBQUcxUixPQUFSOztBQUNBLElBQUl5RixXQUFXLEdBQUd6RixXQUFsQjs7QUFDQSxJQUFJbXBELGNBQWMsR0FBR25wRCxTQUFyQjs7QUFDQSxJQUFJTCxRQUFNLEdBQUdLLFFBQWI7O0FBQ0EsSUFBSTZNLGdCQUFnQixHQUFHN00sc0JBQXZCOztBQUNBLElBQUl5TCxRQUFRLEdBQUd6TCxrQkFBZjs7QUFDQSxJQUFJNmpCLFVBQVUsR0FBRzdqQixZQUFqQjs7QUFDQSxJQUFJb0UsTUFBTSxHQUFHcEUsZ0JBQWI7O0FBQ0EsSUFBSWszQixRQUFNLEdBQUdsM0IsY0FBYjs7QUFDQSxJQUFJOHJELFNBQVMsR0FBRzlyRCxXQUFoQjs7QUFDQSxJQUFJZ25DLE1BQU0sR0FBR2huQyxlQUFBLENBQXlDZ25DLE1BQXREOztBQUNBLElBQUkra0IsT0FBTyxHQUFHL3JELHFCQUFkOztBQUNBLElBQUkyUixTQUFTLEdBQUczUixVQUFoQjs7QUFDQSxJQUFJK1IsY0FBYyxHQUFHL1IsZ0JBQXJCOztBQUNBLElBQUlnc0QscUJBQXFCLEdBQUdoc0QsbUJBQTVCOztBQUNBLElBQUlxSSxtQkFBbUIsR0FBR3JJLGFBQTFCOztBQUVBLElBQUlpc0QsU0FBUyxHQUFHdHNELFFBQU0sQ0FBQyttRCxHQUF2QjtBQUNBLElBQUlJLGlCQUFlLEdBQUdrRixxQkFBcUIsQ0FBQ2xGLGVBQTVDO0FBQ0EsSUFBSW9GLDRCQUE0QixHQUFHRixxQkFBcUIsQ0FBQ0gsUUFBekQ7QUFDQSxJQUFJMTVDLGdCQUFnQixHQUFHOUosbUJBQW1CLENBQUNuQixHQUEzQztBQUNBLElBQUlpbEQsbUJBQW1CLEdBQUc5akQsbUJBQW1CLENBQUNoQixTQUFwQixDQUE4QixLQUE5QixDQUExQjtBQUNBLElBQUk2QixLQUFLLEdBQUc1SixJQUFJLENBQUM0SixLQUFqQjtBQUNBLElBQUl1WixHQUFHLEdBQUduakIsSUFBSSxDQUFDbWpCLEdBQWY7QUFFQSxJQUFJMnBDLGlCQUFpQixHQUFHLG1CQUF4QjtBQUNBLElBQUlDLGNBQWMsR0FBRyxnQkFBckI7QUFDQSxJQUFJQyxZQUFZLEdBQUcsY0FBbkI7QUFDQSxJQUFJQyxZQUFZLEdBQUcsY0FBbkI7QUFFQSxJQUFJQyxLQUFLLEdBQUcsUUFBWjs7QUFFQSxJQUFJQyxZQUFZLEdBQUcsYUFBbkI7QUFDQSxJQUFJQyxLQUFLLEdBQUcsSUFBWjtBQUNBLElBQUlDLFNBQVMsR0FBRyxNQUFoQjtBQUNBLElBQUlDLEdBQUcsR0FBRyxVQUFWO0FBQ0EsSUFBSUMsR0FBRyxHQUFHLE9BQVY7QUFDQSxJQUFJQyxHQUFHLEdBQUcsYUFBVjtBQUNBOztBQUNBLElBQUlDLHlCQUF5QixHQUFHLDRCQUFoQztBQUNBLElBQUlDLDJDQUEyQyxHQUFHLDJCQUFsRDtBQUNBLElBQUlDLHdDQUF3QyxHQUFHLHNDQUEvQztBQUNBLElBQUlDLGdCQUFnQixHQUFHLFdBQXZCO0FBQ0E7O0FBQ0EsSUFBSUMsR0FBSjs7QUFFQSxJQUFJQyxTQUFTLEdBQUcsVUFBVTNkLEdBQVYsRUFBZW5zQyxLQUFmLEVBQXNCO0FBQ3BDLE1BQUk4QixNQUFKLEVBQVl1K0MsVUFBWixFQUF3QnA2QyxLQUF4Qjs7QUFDQSxNQUFJakcsS0FBSyxDQUFDZ2UsTUFBTixDQUFhLENBQWIsS0FBbUIsR0FBdkIsRUFBNEI7QUFDMUIsUUFBSWhlLEtBQUssQ0FBQ2dlLE1BQU4sQ0FBYWhlLEtBQUssQ0FBQ3hCLE1BQU4sR0FBZSxDQUE1QixLQUFrQyxHQUF0QyxFQUEyQyxPQUFPd3FELFlBQVA7QUFDM0NsbkQsSUFBQUEsTUFBTSxHQUFHaW9ELFNBQVMsQ0FBQy9wRCxLQUFLLENBQUNyQyxLQUFOLENBQVksQ0FBWixFQUFlLENBQUMsQ0FBaEIsQ0FBRCxDQUFsQjtBQUNBLFFBQUksQ0FBQ21FLE1BQUwsRUFBYSxPQUFPa25ELFlBQVA7QUFDYjdjLElBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVy8wQixNQUFYLENBSjBCO0FBTTNCLEdBTkQsTUFNTyxJQUFJLENBQUNrb0QsU0FBUyxDQUFDN2QsR0FBRCxDQUFkLEVBQXFCO0FBQzFCLFFBQUl1ZCwyQ0FBMkMsQ0FBQ3JtRCxJQUE1QyxDQUFpRHJELEtBQWpELENBQUosRUFBNkQsT0FBT2dwRCxZQUFQO0FBQzdEbG5ELElBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0F1K0MsSUFBQUEsVUFBVSxHQUFHbUksU0FBUyxDQUFDeG9ELEtBQUQsQ0FBdEI7O0FBQ0EsU0FBS2lHLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUdvNkMsVUFBVSxDQUFDN2hELE1BQW5DLEVBQTJDeUgsS0FBSyxFQUFoRCxFQUFvRDtBQUNsRG5FLE1BQUFBLE1BQU0sSUFBSW1vRCxhQUFhLENBQUM1SixVQUFVLENBQUNwNkMsS0FBRCxDQUFYLEVBQW9CaWtELHlCQUFwQixDQUF2QjtBQUNEOztBQUNEL2QsSUFBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXLzBCLE1BQVg7QUFDRCxHQVJNLE1BUUE7QUFDTDlCLElBQUFBLEtBQUssR0FBR3lvRCxPQUFPLENBQUN6b0QsS0FBRCxDQUFmO0FBQ0EsUUFBSXlwRCx5QkFBeUIsQ0FBQ3BtRCxJQUExQixDQUErQnJELEtBQS9CLENBQUosRUFBMkMsT0FBT2dwRCxZQUFQO0FBQzNDbG5ELElBQUFBLE1BQU0sR0FBR3FvRCxTQUFTLENBQUNucUQsS0FBRCxDQUFsQjtBQUNBLFFBQUk4QixNQUFNLEtBQUssSUFBZixFQUFxQixPQUFPa25ELFlBQVA7QUFDckI3YyxJQUFBQSxHQUFHLENBQUN0VixJQUFKLEdBQVcvMEIsTUFBWDtBQUNEO0FBQ0YsQ0F2QkQ7O0FBeUJBLElBQUlxb0QsU0FBUyxHQUFHLFVBQVVucUQsS0FBVixFQUFpQjtBQUMvQixNQUFJb3FELEtBQUssR0FBR3BxRCxLQUFLLENBQUNuQyxLQUFOLENBQVksR0FBWixDQUFaO0FBQ0EsTUFBSXdzRCxXQUFKLEVBQWlCQyxPQUFqQixFQUEwQnJrRCxLQUExQixFQUFpQ3NrRCxJQUFqQyxFQUF1QzU0QixLQUF2QyxFQUE4QzlyQixNQUE5QyxFQUFzRDJrRCxJQUF0RDs7QUFDQSxNQUFJSixLQUFLLENBQUM1ckQsTUFBTixJQUFnQjRyRCxLQUFLLENBQUNBLEtBQUssQ0FBQzVyRCxNQUFOLEdBQWUsQ0FBaEIsQ0FBTCxJQUEyQixFQUEvQyxFQUFtRDtBQUNqRDRyRCxJQUFBQSxLQUFLLENBQUNLLEdBQU47QUFDRDs7QUFDREosRUFBQUEsV0FBVyxHQUFHRCxLQUFLLENBQUM1ckQsTUFBcEI7QUFDQSxNQUFJNnJELFdBQVcsR0FBRyxDQUFsQixFQUFxQixPQUFPcnFELEtBQVA7QUFDckJzcUQsRUFBQUEsT0FBTyxHQUFHLEVBQVY7O0FBQ0EsT0FBS3JrRCxLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHb2tELFdBQXhCLEVBQXFDcGtELEtBQUssRUFBMUMsRUFBOEM7QUFDNUNza0QsSUFBQUEsSUFBSSxHQUFHSCxLQUFLLENBQUNua0QsS0FBRCxDQUFaO0FBQ0EsUUFBSXNrRCxJQUFJLElBQUksRUFBWixFQUFnQixPQUFPdnFELEtBQVA7QUFDaEIyeEIsSUFBQUEsS0FBSyxHQUFHLEVBQVI7O0FBQ0EsUUFBSTQ0QixJQUFJLENBQUMvckQsTUFBTCxHQUFjLENBQWQsSUFBbUIrckQsSUFBSSxDQUFDdnNDLE1BQUwsQ0FBWSxDQUFaLEtBQWtCLEdBQXpDLEVBQThDO0FBQzVDMlQsTUFBQUEsS0FBSyxHQUFHMDNCLFNBQVMsQ0FBQ2htRCxJQUFWLENBQWVrbkQsSUFBZixJQUF1QixFQUF2QixHQUE0QixDQUFwQztBQUNBQSxNQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQzVzRCxLQUFMLENBQVdnMEIsS0FBSyxJQUFJLENBQVQsR0FBYSxDQUFiLEdBQWlCLENBQTVCLENBQVA7QUFDRDs7QUFDRCxRQUFJNDRCLElBQUksS0FBSyxFQUFiLEVBQWlCO0FBQ2Yxa0QsTUFBQUEsTUFBTSxHQUFHLENBQVQ7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLENBQUMsQ0FBQzhyQixLQUFLLElBQUksRUFBVCxHQUFjNDNCLEdBQWQsR0FBb0I1M0IsS0FBSyxJQUFJLENBQVQsR0FBYTIzQixHQUFiLEdBQW1CRSxHQUF4QyxFQUE2Q25tRCxJQUE3QyxDQUFrRGtuRCxJQUFsRCxDQUFMLEVBQThELE9BQU92cUQsS0FBUDtBQUM5RDZGLE1BQUFBLE1BQU0sR0FBR2lzQixRQUFRLENBQUN5NEIsSUFBRCxFQUFPNTRCLEtBQVAsQ0FBakI7QUFDRDs7QUFDRDI0QixJQUFBQSxPQUFPLENBQUM3cEQsSUFBUixDQUFhb0YsTUFBYjtBQUNEOztBQUNELE9BQUtJLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUdva0QsV0FBeEIsRUFBcUNwa0QsS0FBSyxFQUExQyxFQUE4QztBQUM1Q0osSUFBQUEsTUFBTSxHQUFHeWtELE9BQU8sQ0FBQ3JrRCxLQUFELENBQWhCOztBQUNBLFFBQUlBLEtBQUssSUFBSW9rRCxXQUFXLEdBQUcsQ0FBM0IsRUFBOEI7QUFDNUIsVUFBSXhrRCxNQUFNLElBQUlzWixHQUFHLENBQUMsR0FBRCxFQUFNLElBQUlrckMsV0FBVixDQUFqQixFQUF5QyxPQUFPLElBQVA7QUFDMUMsS0FGRCxNQUVPLElBQUl4a0QsTUFBTSxHQUFHLEdBQWIsRUFBa0IsT0FBTyxJQUFQO0FBQzFCOztBQUNEMmtELEVBQUFBLElBQUksR0FBR0YsT0FBTyxDQUFDRyxHQUFSLEVBQVA7O0FBQ0EsT0FBS3hrRCxLQUFLLEdBQUcsQ0FBYixFQUFnQkEsS0FBSyxHQUFHcWtELE9BQU8sQ0FBQzlyRCxNQUFoQyxFQUF3Q3lILEtBQUssRUFBN0MsRUFBaUQ7QUFDL0N1a0QsSUFBQUEsSUFBSSxJQUFJRixPQUFPLENBQUNya0QsS0FBRCxDQUFQLEdBQWlCa1osR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFJbFosS0FBVixDQUE1QjtBQUNEOztBQUNELFNBQU91a0QsSUFBUDtBQUNELENBcENEOzs7QUF1Q0EsSUFBSVQsU0FBUyxHQUFHLFVBQVUvcEQsS0FBVixFQUFpQjtBQUMvQixNQUFJMHFELE9BQU8sR0FBRyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsRUFBYSxDQUFiLEVBQWdCLENBQWhCLEVBQW1CLENBQW5CLEVBQXNCLENBQXRCLENBQWQ7QUFDQSxNQUFJQyxVQUFVLEdBQUcsQ0FBakI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsSUFBZjtBQUNBLE1BQUlDLE9BQU8sR0FBRyxDQUFkO0FBQ0EsTUFBSXR0RCxLQUFKLEVBQVdpQixNQUFYLEVBQW1Cc3NELFdBQW5CLEVBQWdDQyxTQUFoQyxFQUEyQ2xsRCxNQUEzQyxFQUFtRG1sRCxLQUFuRCxFQUEwREMsSUFBMUQ7O0FBRUEsTUFBSXB0QyxHQUFHLEdBQUcsWUFBWTtBQUNwQixXQUFPN2QsS0FBSyxDQUFDZ2UsTUFBTixDQUFhNnNDLE9BQWIsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsTUFBSWh0QyxHQUFHLE1BQU0sR0FBYixFQUFrQjtBQUNoQixRQUFJN2QsS0FBSyxDQUFDZ2UsTUFBTixDQUFhLENBQWIsS0FBbUIsR0FBdkIsRUFBNEI7QUFDNUI2c0MsSUFBQUEsT0FBTyxJQUFJLENBQVg7QUFDQUYsSUFBQUEsVUFBVTtBQUNWQyxJQUFBQSxRQUFRLEdBQUdELFVBQVg7QUFDRDs7QUFDRCxTQUFPOXNDLEdBQUcsRUFBVixFQUFjO0FBQ1osUUFBSThzQyxVQUFVLElBQUksQ0FBbEIsRUFBcUI7O0FBQ3JCLFFBQUk5c0MsR0FBRyxNQUFNLEdBQWIsRUFBa0I7QUFDaEIsVUFBSStzQyxRQUFRLEtBQUssSUFBakIsRUFBdUI7QUFDdkJDLE1BQUFBLE9BQU87QUFDUEYsTUFBQUEsVUFBVTtBQUNWQyxNQUFBQSxRQUFRLEdBQUdELFVBQVg7QUFDQTtBQUNEOztBQUNEcHRELElBQUFBLEtBQUssR0FBR2lCLE1BQU0sR0FBRyxDQUFqQjs7QUFDQSxXQUFPQSxNQUFNLEdBQUcsQ0FBVCxJQUFjZ3JELEdBQUcsQ0FBQ25tRCxJQUFKLENBQVN3YSxHQUFHLEVBQVosQ0FBckIsRUFBc0M7QUFDcEN0Z0IsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLEdBQUcsRUFBUixHQUFhdTBCLFFBQVEsQ0FBQ2pVLEdBQUcsRUFBSixFQUFRLEVBQVIsQ0FBN0I7QUFDQWd0QyxNQUFBQSxPQUFPO0FBQ1Byc0QsTUFBQUEsTUFBTTtBQUNQOztBQUNELFFBQUlxZixHQUFHLE1BQU0sR0FBYixFQUFrQjtBQUNoQixVQUFJcmYsTUFBTSxJQUFJLENBQWQsRUFBaUI7QUFDakJxc0QsTUFBQUEsT0FBTyxJQUFJcnNELE1BQVg7QUFDQSxVQUFJbXNELFVBQVUsR0FBRyxDQUFqQixFQUFvQjtBQUNwQkcsTUFBQUEsV0FBVyxHQUFHLENBQWQ7O0FBQ0EsYUFBT2p0QyxHQUFHLEVBQVYsRUFBYztBQUNaa3RDLFFBQUFBLFNBQVMsR0FBRyxJQUFaOztBQUNBLFlBQUlELFdBQVcsR0FBRyxDQUFsQixFQUFxQjtBQUNuQixjQUFJanRDLEdBQUcsTUFBTSxHQUFULElBQWdCaXRDLFdBQVcsR0FBRyxDQUFsQyxFQUFxQ0QsT0FBTyxHQUE1QyxLQUNLO0FBQ047O0FBQ0QsWUFBSSxDQUFDekIsS0FBSyxDQUFDL2xELElBQU4sQ0FBV3dhLEdBQUcsRUFBZCxDQUFMLEVBQXdCOztBQUN4QixlQUFPdXJDLEtBQUssQ0FBQy9sRCxJQUFOLENBQVd3YSxHQUFHLEVBQWQsQ0FBUCxFQUEwQjtBQUN4QmhZLFVBQUFBLE1BQU0sR0FBR2lzQixRQUFRLENBQUNqVSxHQUFHLEVBQUosRUFBUSxFQUFSLENBQWpCO0FBQ0EsY0FBSWt0QyxTQUFTLEtBQUssSUFBbEIsRUFBd0JBLFNBQVMsR0FBR2xsRCxNQUFaLENBQXhCLEtBQ0ssSUFBSWtsRCxTQUFTLElBQUksQ0FBakIsRUFBb0IsT0FBcEIsS0FDQUEsU0FBUyxHQUFHQSxTQUFTLEdBQUcsRUFBWixHQUFpQmxsRCxNQUE3QjtBQUNMLGNBQUlrbEQsU0FBUyxHQUFHLEdBQWhCLEVBQXFCO0FBQ3JCRixVQUFBQSxPQUFPO0FBQ1I7O0FBQ0RILFFBQUFBLE9BQU8sQ0FBQ0MsVUFBRCxDQUFQLEdBQXNCRCxPQUFPLENBQUNDLFVBQUQsQ0FBUCxHQUFzQixHQUF0QixHQUE0QkksU0FBbEQ7QUFDQUQsUUFBQUEsV0FBVztBQUNYLFlBQUlBLFdBQVcsSUFBSSxDQUFmLElBQW9CQSxXQUFXLElBQUksQ0FBdkMsRUFBMENILFVBQVU7QUFDckQ7O0FBQ0QsVUFBSUcsV0FBVyxJQUFJLENBQW5CLEVBQXNCO0FBQ3RCO0FBQ0QsS0ExQkQsTUEwQk8sSUFBSWp0QyxHQUFHLE1BQU0sR0FBYixFQUFrQjtBQUN2Qmd0QyxNQUFBQSxPQUFPO0FBQ1AsVUFBSSxDQUFDaHRDLEdBQUcsRUFBUixFQUFZO0FBQ2IsS0FITSxNQUdBLElBQUlBLEdBQUcsRUFBUCxFQUFXOztBQUNsQjZzQyxJQUFBQSxPQUFPLENBQUNDLFVBQVUsRUFBWCxDQUFQLEdBQXdCcHRELEtBQXhCO0FBQ0Q7O0FBQ0QsTUFBSXF0RCxRQUFRLEtBQUssSUFBakIsRUFBdUI7QUFDckJJLElBQUFBLEtBQUssR0FBR0wsVUFBVSxHQUFHQyxRQUFyQjtBQUNBRCxJQUFBQSxVQUFVLEdBQUcsQ0FBYjs7QUFDQSxXQUFPQSxVQUFVLElBQUksQ0FBZCxJQUFtQkssS0FBSyxHQUFHLENBQWxDLEVBQXFDO0FBQ25DQyxNQUFBQSxJQUFJLEdBQUdQLE9BQU8sQ0FBQ0MsVUFBRCxDQUFkO0FBQ0FELE1BQUFBLE9BQU8sQ0FBQ0MsVUFBVSxFQUFYLENBQVAsR0FBd0JELE9BQU8sQ0FBQ0UsUUFBUSxHQUFHSSxLQUFYLEdBQW1CLENBQXBCLENBQS9CO0FBQ0FOLE1BQUFBLE9BQU8sQ0FBQ0UsUUFBUSxHQUFHLEVBQUVJLEtBQWQsQ0FBUCxHQUE4QkMsSUFBOUI7QUFDRDtBQUNGLEdBUkQsTUFRTyxJQUFJTixVQUFVLElBQUksQ0FBbEIsRUFBcUI7O0FBQzVCLFNBQU9ELE9BQVA7QUFDRCxDQTFFRDs7QUE0RUEsSUFBSVEsdUJBQXVCLEdBQUcsVUFBVUMsSUFBVixFQUFnQjtBQUM1QyxNQUFJQyxRQUFRLEdBQUcsSUFBZjtBQUNBLE1BQUkvakMsU0FBUyxHQUFHLENBQWhCO0FBQ0EsTUFBSWdrQyxTQUFTLEdBQUcsSUFBaEI7QUFDQSxNQUFJQyxVQUFVLEdBQUcsQ0FBakI7QUFDQSxNQUFJcmxELEtBQUssR0FBRyxDQUFaOztBQUNBLFNBQU9BLEtBQUssR0FBRyxDQUFmLEVBQWtCQSxLQUFLLEVBQXZCLEVBQTJCO0FBQ3pCLFFBQUlrbEQsSUFBSSxDQUFDbGxELEtBQUQsQ0FBSixLQUFnQixDQUFwQixFQUF1QjtBQUNyQixVQUFJcWxELFVBQVUsR0FBR2prQyxTQUFqQixFQUE0QjtBQUMxQitqQyxRQUFBQSxRQUFRLEdBQUdDLFNBQVg7QUFDQWhrQyxRQUFBQSxTQUFTLEdBQUdpa0MsVUFBWjtBQUNEOztBQUNERCxNQUFBQSxTQUFTLEdBQUcsSUFBWjtBQUNBQyxNQUFBQSxVQUFVLEdBQUcsQ0FBYjtBQUNELEtBUEQsTUFPTztBQUNMLFVBQUlELFNBQVMsS0FBSyxJQUFsQixFQUF3QkEsU0FBUyxHQUFHcGxELEtBQVo7QUFDeEIsUUFBRXFsRCxVQUFGO0FBQ0Q7QUFDRjs7QUFDRCxNQUFJQSxVQUFVLEdBQUdqa0MsU0FBakIsRUFBNEI7QUFDMUIrakMsSUFBQUEsUUFBUSxHQUFHQyxTQUFYO0FBQ0Foa0MsSUFBQUEsU0FBUyxHQUFHaWtDLFVBQVo7QUFDRDs7QUFDRCxTQUFPRixRQUFQO0FBQ0QsQ0F4QkQ7O0FBMEJBLElBQUlHLGFBQWEsR0FBRyxVQUFVMTBCLElBQVYsRUFBZ0I7QUFDbEMsTUFBSS8wQixNQUFKLEVBQVltRSxLQUFaLEVBQW1CMmtELFFBQW5CLEVBQTZCWSxPQUE3QixDQURrQzs7QUFHbEMsTUFBSSxPQUFPMzBCLElBQVAsSUFBZSxRQUFuQixFQUE2QjtBQUMzQi8wQixJQUFBQSxNQUFNLEdBQUcsRUFBVDs7QUFDQSxTQUFLbUUsS0FBSyxHQUFHLENBQWIsRUFBZ0JBLEtBQUssR0FBRyxDQUF4QixFQUEyQkEsS0FBSyxFQUFoQyxFQUFvQztBQUNsQ25FLE1BQUFBLE1BQU0sQ0FBQzJwRCxPQUFQLENBQWU1MEIsSUFBSSxHQUFHLEdBQXRCO0FBQ0FBLE1BQUFBLElBQUksR0FBR2p4QixLQUFLLENBQUNpeEIsSUFBSSxHQUFHLEdBQVIsQ0FBWjtBQUNEOztBQUFDLFdBQU8vMEIsTUFBTSxDQUFDNEQsSUFBUCxDQUFZLEdBQVosQ0FBUCxDQUx5QjtBQU81QixHQVBELE1BT08sSUFBSSxPQUFPbXhCLElBQVAsSUFBZSxRQUFuQixFQUE2QjtBQUNsQy8wQixJQUFBQSxNQUFNLEdBQUcsRUFBVDtBQUNBOG9ELElBQUFBLFFBQVEsR0FBR00sdUJBQXVCLENBQUNyMEIsSUFBRCxDQUFsQzs7QUFDQSxTQUFLNXdCLEtBQUssR0FBRyxDQUFiLEVBQWdCQSxLQUFLLEdBQUcsQ0FBeEIsRUFBMkJBLEtBQUssRUFBaEMsRUFBb0M7QUFDbEMsVUFBSXVsRCxPQUFPLElBQUkzMEIsSUFBSSxDQUFDNXdCLEtBQUQsQ0FBSixLQUFnQixDQUEvQixFQUFrQztBQUNsQyxVQUFJdWxELE9BQUosRUFBYUEsT0FBTyxHQUFHLEtBQVY7O0FBQ2IsVUFBSVosUUFBUSxLQUFLM2tELEtBQWpCLEVBQXdCO0FBQ3RCbkUsUUFBQUEsTUFBTSxJQUFJbUUsS0FBSyxHQUFHLEdBQUgsR0FBUyxJQUF4QjtBQUNBdWxELFFBQUFBLE9BQU8sR0FBRyxJQUFWO0FBQ0QsT0FIRCxNQUdPO0FBQ0wxcEQsUUFBQUEsTUFBTSxJQUFJKzBCLElBQUksQ0FBQzV3QixLQUFELENBQUosQ0FBWXZJLFFBQVosQ0FBcUIsRUFBckIsQ0FBVjtBQUNBLFlBQUl1SSxLQUFLLEdBQUcsQ0FBWixFQUFlbkUsTUFBTSxJQUFJLEdBQVY7QUFDaEI7QUFDRjs7QUFDRCxXQUFPLE1BQU1BLE1BQU4sR0FBZSxHQUF0QjtBQUNEOztBQUFDLFNBQU8rMEIsSUFBUDtBQUNILENBMUJEOztBQTRCQSxJQUFJcXpCLHlCQUF5QixHQUFHLEVBQWhDO0FBQ0EsSUFBSXdCLHdCQUF3QixHQUFHOTNCLFFBQU0sQ0FBQyxFQUFELEVBQUtzMkIseUJBQUwsRUFBZ0M7QUFDbkUsT0FBSyxDQUQ4RDtBQUMzRCxPQUFLLENBRHNEO0FBQ25ELE9BQUssQ0FEOEM7QUFDM0MsT0FBSyxDQURzQztBQUNuQyxPQUFLO0FBRDhCLENBQWhDLENBQXJDO0FBR0EsSUFBSXlCLG9CQUFvQixHQUFHLzNCLFFBQU0sQ0FBQyxFQUFELEVBQUs4M0Isd0JBQUwsRUFBK0I7QUFDOUQsT0FBSyxDQUR5RDtBQUN0RCxPQUFLLENBRGlEO0FBQzlDLE9BQUssQ0FEeUM7QUFDdEMsT0FBSztBQURpQyxDQUEvQixDQUFqQztBQUdBLElBQUlFLHdCQUF3QixHQUFHaDRCLFFBQU0sQ0FBQyxFQUFELEVBQUsrM0Isb0JBQUwsRUFBMkI7QUFDOUQsT0FBSyxDQUR5RDtBQUN0RCxPQUFLLENBRGlEO0FBQzlDLE9BQUssQ0FEeUM7QUFDdEMsT0FBSyxDQURpQztBQUM5QixPQUFLLENBRHlCO0FBQ3RCLE9BQUssQ0FEaUI7QUFDZCxRQUFNLENBRFE7QUFDTCxPQUFLLENBREE7QUFDRyxPQUFLLENBRFI7QUFDVyxPQUFLO0FBRGhCLENBQTNCLENBQXJDOztBQUlBLElBQUkxQixhQUFhLEdBQUcsVUFBVXBzQyxHQUFWLEVBQWVqYSxHQUFmLEVBQW9CO0FBQ3RDLE1BQUlnYSxJQUFJLEdBQUc4bEIsTUFBTSxDQUFDN2xCLEdBQUQsRUFBTSxDQUFOLENBQWpCO0FBQ0EsU0FBT0QsSUFBSSxHQUFHLElBQVAsSUFBZUEsSUFBSSxHQUFHLElBQXRCLElBQThCLENBQUM5YyxNQUFNLENBQUM4QyxHQUFELEVBQU1pYSxHQUFOLENBQXJDLEdBQWtEQSxHQUFsRCxHQUF3RGdwQyxrQkFBa0IsQ0FBQ2hwQyxHQUFELENBQWpGO0FBQ0QsQ0FIRDs7QUFLQSxJQUFJZ3VDLGNBQWMsR0FBRztBQUNuQkMsRUFBQUEsR0FBRyxFQUFFLEVBRGM7QUFFbkJDLEVBQUFBLElBQUksRUFBRSxJQUZhO0FBR25CQyxFQUFBQSxJQUFJLEVBQUUsRUFIYTtBQUluQkMsRUFBQUEsS0FBSyxFQUFFLEdBSlk7QUFLbkJDLEVBQUFBLEVBQUUsRUFBRSxFQUxlO0FBTW5CQyxFQUFBQSxHQUFHLEVBQUU7QUFOYyxDQUFyQjs7QUFTQSxJQUFJbkMsU0FBUyxHQUFHLFVBQVU3ZCxHQUFWLEVBQWU7QUFDN0IsU0FBT3JyQyxNQUFNLENBQUMrcUQsY0FBRCxFQUFpQjFmLEdBQUcsQ0FBQ2lnQixNQUFyQixDQUFiO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJQyxtQkFBbUIsR0FBRyxVQUFVbGdCLEdBQVYsRUFBZTtBQUN2QyxTQUFPQSxHQUFHLENBQUNzWCxRQUFKLElBQWdCLEVBQWhCLElBQXNCdFgsR0FBRyxDQUFDbWdCLFFBQUosSUFBZ0IsRUFBN0M7QUFDRCxDQUZEOztBQUlBLElBQUlDLDhCQUE4QixHQUFHLFVBQVVwZ0IsR0FBVixFQUFlO0FBQ2xELFNBQU8sQ0FBQ0EsR0FBRyxDQUFDdFYsSUFBTCxJQUFhc1YsR0FBRyxDQUFDcWdCLGdCQUFqQixJQUFxQ3JnQixHQUFHLENBQUNpZ0IsTUFBSixJQUFjLE1BQTFEO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJSyxvQkFBb0IsR0FBRyxVQUFVeGtELE1BQVYsRUFBa0J5a0QsVUFBbEIsRUFBOEI7QUFDdkQsTUFBSWpwQixNQUFKO0FBQ0EsU0FBT3g3QixNQUFNLENBQUN6SixNQUFQLElBQWlCLENBQWpCLElBQXNCMHFELEtBQUssQ0FBQzdsRCxJQUFOLENBQVc0RSxNQUFNLENBQUMrVixNQUFQLENBQWMsQ0FBZCxDQUFYLENBQXRCLEtBQ0QsQ0FBQ3lsQixNQUFNLEdBQUd4N0IsTUFBTSxDQUFDK1YsTUFBUCxDQUFjLENBQWQsQ0FBVixLQUErQixHQUEvQixJQUF1QyxDQUFDMHVDLFVBQUQsSUFBZWpwQixNQUFNLElBQUksR0FEL0QsQ0FBUDtBQUVELENBSkQ7O0FBTUEsSUFBSWtwQiw0QkFBNEIsR0FBRyxVQUFVMWtELE1BQVYsRUFBa0I7QUFDbkQsTUFBSXlwQixLQUFKO0FBQ0EsU0FBT3pwQixNQUFNLENBQUN6SixNQUFQLEdBQWdCLENBQWhCLElBQXFCaXVELG9CQUFvQixDQUFDeGtELE1BQU0sQ0FBQ3RLLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLENBQWhCLENBQUQsQ0FBekMsS0FDTHNLLE1BQU0sQ0FBQ3pKLE1BQVAsSUFBaUIsQ0FBakIsSUFDQyxDQUFDa3pCLEtBQUssR0FBR3pwQixNQUFNLENBQUMrVixNQUFQLENBQWMsQ0FBZCxDQUFULE1BQStCLEdBQS9CLElBQXNDMFQsS0FBSyxLQUFLLElBQWhELElBQXdEQSxLQUFLLEtBQUssR0FBbEUsSUFBeUVBLEtBQUssS0FBSyxHQUYvRSxDQUFQO0FBSUQsQ0FORDs7QUFRQSxJQUFJazdCLGVBQWUsR0FBRyxVQUFVemdCLEdBQVYsRUFBZTtBQUNuQyxNQUFJeGdDLElBQUksR0FBR3dnQyxHQUFHLENBQUN4Z0MsSUFBZjtBQUNBLE1BQUlraEQsUUFBUSxHQUFHbGhELElBQUksQ0FBQ25OLE1BQXBCOztBQUNBLE1BQUlxdUQsUUFBUSxLQUFLMWdCLEdBQUcsQ0FBQ2lnQixNQUFKLElBQWMsTUFBZCxJQUF3QlMsUUFBUSxJQUFJLENBQXBDLElBQXlDLENBQUNKLG9CQUFvQixDQUFDOWdELElBQUksQ0FBQyxDQUFELENBQUwsRUFBVSxJQUFWLENBQW5FLENBQVosRUFBaUc7QUFDL0ZBLElBQUFBLElBQUksQ0FBQzgrQyxHQUFMO0FBQ0Q7QUFDRixDQU5EOztBQVFBLElBQUlxQyxXQUFXLEdBQUcsVUFBVUMsT0FBVixFQUFtQjtBQUNuQyxTQUFPQSxPQUFPLEtBQUssR0FBWixJQUFtQkEsT0FBTyxDQUFDN2tELFdBQVIsT0FBMEIsS0FBcEQ7QUFDRCxDQUZEOztBQUlBLElBQUk4a0QsV0FBVyxHQUFHLFVBQVVELE9BQVYsRUFBbUI7QUFDbkNBLEVBQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDN2tELFdBQVIsRUFBVjtBQUNBLFNBQU82a0QsT0FBTyxLQUFLLElBQVosSUFBb0JBLE9BQU8sS0FBSyxNQUFoQyxJQUEwQ0EsT0FBTyxLQUFLLE1BQXRELElBQWdFQSxPQUFPLEtBQUssUUFBbkY7QUFDRCxDQUhEOzs7QUFNQSxJQUFJRSxZQUFZLEdBQUcsRUFBbkI7QUFDQSxJQUFJQyxNQUFNLEdBQUcsRUFBYjtBQUNBLElBQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLElBQUlDLDZCQUE2QixHQUFHLEVBQXBDO0FBQ0EsSUFBSUMsaUJBQWlCLEdBQUcsRUFBeEI7QUFDQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLElBQUlDLGNBQWMsR0FBRyxFQUFyQjtBQUNBLElBQUlDLHlCQUF5QixHQUFHLEVBQWhDO0FBQ0EsSUFBSUMsZ0NBQWdDLEdBQUcsRUFBdkM7QUFDQSxJQUFJQyxTQUFTLEdBQUcsRUFBaEI7QUFDQSxJQUFJQyxJQUFJLEdBQUcsRUFBWDtBQUNBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQ0EsSUFBSUMsSUFBSSxHQUFHLEVBQVg7QUFDQSxJQUFJQyxJQUFJLEdBQUcsRUFBWDtBQUNBLElBQUlDLFVBQVUsR0FBRyxFQUFqQjtBQUNBLElBQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxFQUFqQjtBQUNBLElBQUlDLElBQUksR0FBRyxFQUFYO0FBQ0EsSUFBSUMseUJBQXlCLEdBQUcsRUFBaEM7QUFDQSxJQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLElBQUlDLFFBQVEsR0FBRyxFQUFmOztBQUdBLElBQUlDLFFBQVEsR0FBRyxVQUFVbmlCLEdBQVYsRUFBZW5zQyxLQUFmLEVBQXNCdXVELGFBQXRCLEVBQXFDM0ssSUFBckMsRUFBMkM7QUFDeEQsTUFBSTMvQyxLQUFLLEdBQUdzcUQsYUFBYSxJQUFJdEIsWUFBN0I7QUFDQSxNQUFJcEMsT0FBTyxHQUFHLENBQWQ7QUFDQSxNQUFJcHJDLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSSt1QyxNQUFNLEdBQUcsS0FBYjtBQUNBLE1BQUlDLFdBQVcsR0FBRyxLQUFsQjtBQUNBLE1BQUlDLGlCQUFpQixHQUFHLEtBQXhCO0FBQ0EsTUFBSXJPLFVBQUosRUFBZ0J4aUMsR0FBaEIsRUFBcUI4d0MsZ0JBQXJCLEVBQXVDQyxPQUF2Qzs7QUFFQSxNQUFJLENBQUNMLGFBQUwsRUFBb0I7QUFDbEJwaUIsSUFBQUEsR0FBRyxDQUFDaWdCLE1BQUosR0FBYSxFQUFiO0FBQ0FqZ0IsSUFBQUEsR0FBRyxDQUFDc1gsUUFBSixHQUFlLEVBQWY7QUFDQXRYLElBQUFBLEdBQUcsQ0FBQ21nQixRQUFKLEdBQWUsRUFBZjtBQUNBbmdCLElBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVyxJQUFYO0FBQ0FzVixJQUFBQSxHQUFHLENBQUM5VixJQUFKLEdBQVcsSUFBWDtBQUNBOFYsSUFBQUEsR0FBRyxDQUFDeGdDLElBQUosR0FBVyxFQUFYO0FBQ0F3Z0MsSUFBQUEsR0FBRyxDQUFDNGEsS0FBSixHQUFZLElBQVo7QUFDQTVhLElBQUFBLEdBQUcsQ0FBQzBpQixRQUFKLEdBQWUsSUFBZjtBQUNBMWlCLElBQUFBLEdBQUcsQ0FBQ3FnQixnQkFBSixHQUF1QixLQUF2QjtBQUNBeHNELElBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDd0YsT0FBTixDQUFjbWtELHdDQUFkLEVBQXdELEVBQXhELENBQVI7QUFDRDs7QUFFRDNwRCxFQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ3dGLE9BQU4sQ0FBY29rRCxnQkFBZCxFQUFnQyxFQUFoQyxDQUFSO0FBRUF2SixFQUFBQSxVQUFVLEdBQUdtSSxTQUFTLENBQUN4b0QsS0FBRCxDQUF0Qjs7QUFFQSxTQUFPNnFELE9BQU8sSUFBSXhLLFVBQVUsQ0FBQzdoRCxNQUE3QixFQUFxQztBQUNuQ3FmLElBQUFBLEdBQUcsR0FBR3dpQyxVQUFVLENBQUN3SyxPQUFELENBQWhCOztBQUNBLFlBQVE1bUQsS0FBUjtBQUNFLFdBQUtncEQsWUFBTDtBQUNFLFlBQUlwdkMsR0FBRyxJQUFJcXJDLEtBQUssQ0FBQzdsRCxJQUFOLENBQVd3YSxHQUFYLENBQVgsRUFBNEI7QUFDMUI0QixVQUFBQSxNQUFNLElBQUk1QixHQUFHLENBQUMzVixXQUFKLEVBQVY7QUFDQWpFLFVBQUFBLEtBQUssR0FBR2lwRCxNQUFSO0FBQ0QsU0FIRCxNQUdPLElBQUksQ0FBQ3FCLGFBQUwsRUFBb0I7QUFDekJ0cUQsVUFBQUEsS0FBSyxHQUFHa3BELFNBQVI7QUFDQTtBQUNELFNBSE0sTUFHQSxPQUFPcEUsY0FBUDs7QUFDUDs7QUFFRixXQUFLbUUsTUFBTDtBQUNFLFlBQUlydkMsR0FBRyxLQUFLc3JDLFlBQVksQ0FBQzlsRCxJQUFiLENBQWtCd2EsR0FBbEIsS0FBMEJBLEdBQUcsSUFBSSxHQUFqQyxJQUF3Q0EsR0FBRyxJQUFJLEdBQS9DLElBQXNEQSxHQUFHLElBQUksR0FBbEUsQ0FBUCxFQUErRTtBQUM3RTRCLFVBQUFBLE1BQU0sSUFBSTVCLEdBQUcsQ0FBQzNWLFdBQUosRUFBVjtBQUNELFNBRkQsTUFFTyxJQUFJMlYsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDckIsY0FBSTB3QyxhQUFhLEtBQ2R2RSxTQUFTLENBQUM3ZCxHQUFELENBQVQsSUFBa0JyckMsTUFBTSxDQUFDK3FELGNBQUQsRUFBaUJwc0MsTUFBakIsQ0FBekIsSUFDQ0EsTUFBTSxJQUFJLE1BQVYsS0FBcUI0c0MsbUJBQW1CLENBQUNsZ0IsR0FBRCxDQUFuQixJQUE0QkEsR0FBRyxDQUFDOVYsSUFBSixLQUFhLElBQTlELENBREQsSUFFQzhWLEdBQUcsQ0FBQ2lnQixNQUFKLElBQWMsTUFBZCxJQUF3QixDQUFDamdCLEdBQUcsQ0FBQ3RWLElBSGYsQ0FBakIsRUFJRztBQUNIc1YsVUFBQUEsR0FBRyxDQUFDaWdCLE1BQUosR0FBYTNzQyxNQUFiOztBQUNBLGNBQUk4dUMsYUFBSixFQUFtQjtBQUNqQixnQkFBSXZFLFNBQVMsQ0FBQzdkLEdBQUQsQ0FBVCxJQUFrQjBmLGNBQWMsQ0FBQzFmLEdBQUcsQ0FBQ2lnQixNQUFMLENBQWQsSUFBOEJqZ0IsR0FBRyxDQUFDOVYsSUFBeEQsRUFBOEQ4VixHQUFHLENBQUM5VixJQUFKLEdBQVcsSUFBWDtBQUM5RDtBQUNEOztBQUNENVcsVUFBQUEsTUFBTSxHQUFHLEVBQVQ7O0FBQ0EsY0FBSTBzQixHQUFHLENBQUNpZ0IsTUFBSixJQUFjLE1BQWxCLEVBQTBCO0FBQ3hCbm9ELFlBQUFBLEtBQUssR0FBRzZwRCxJQUFSO0FBQ0QsV0FGRCxNQUVPLElBQUk5RCxTQUFTLENBQUM3ZCxHQUFELENBQVQsSUFBa0J5WCxJQUFsQixJQUEwQkEsSUFBSSxDQUFDd0ksTUFBTCxJQUFlamdCLEdBQUcsQ0FBQ2lnQixNQUFqRCxFQUF5RDtBQUM5RG5vRCxZQUFBQSxLQUFLLEdBQUdtcEQsNkJBQVI7QUFDRCxXQUZNLE1BRUEsSUFBSXBELFNBQVMsQ0FBQzdkLEdBQUQsQ0FBYixFQUFvQjtBQUN6QmxvQyxZQUFBQSxLQUFLLEdBQUd1cEQseUJBQVI7QUFDRCxXQUZNLE1BRUEsSUFBSW5OLFVBQVUsQ0FBQ3dLLE9BQU8sR0FBRyxDQUFYLENBQVYsSUFBMkIsR0FBL0IsRUFBb0M7QUFDekM1bUQsWUFBQUEsS0FBSyxHQUFHb3BELGlCQUFSO0FBQ0F4QyxZQUFBQSxPQUFPO0FBQ1IsV0FITSxNQUdBO0FBQ0wxZSxZQUFBQSxHQUFHLENBQUNxZ0IsZ0JBQUosR0FBdUIsSUFBdkI7QUFDQXJnQixZQUFBQSxHQUFHLENBQUN4Z0MsSUFBSixDQUFTbEwsSUFBVCxDQUFjLEVBQWQ7QUFDQXdELFlBQUFBLEtBQUssR0FBR2txRCx5QkFBUjtBQUNEO0FBQ0YsU0ExQk0sTUEwQkEsSUFBSSxDQUFDSSxhQUFMLEVBQW9CO0FBQ3pCOXVDLFVBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0F4YixVQUFBQSxLQUFLLEdBQUdrcEQsU0FBUjtBQUNBdEMsVUFBQUEsT0FBTyxHQUFHLENBQVY7QUFDQTtBQUNELFNBTE0sTUFLQSxPQUFPOUIsY0FBUDs7QUFDUDs7QUFFRixXQUFLb0UsU0FBTDtBQUNFLFlBQUksQ0FBQ3ZKLElBQUQsSUFBVUEsSUFBSSxDQUFDNEksZ0JBQUwsSUFBeUIzdUMsR0FBRyxJQUFJLEdBQTlDLEVBQW9ELE9BQU9rckMsY0FBUDs7QUFDcEQsWUFBSW5GLElBQUksQ0FBQzRJLGdCQUFMLElBQXlCM3VDLEdBQUcsSUFBSSxHQUFwQyxFQUF5QztBQUN2Q3N1QixVQUFBQSxHQUFHLENBQUNpZ0IsTUFBSixHQUFheEksSUFBSSxDQUFDd0ksTUFBbEI7QUFDQWpnQixVQUFBQSxHQUFHLENBQUN4Z0MsSUFBSixHQUFXaTRDLElBQUksQ0FBQ2o0QyxJQUFMLENBQVVoTyxLQUFWLEVBQVg7QUFDQXd1QyxVQUFBQSxHQUFHLENBQUM0YSxLQUFKLEdBQVluRCxJQUFJLENBQUNtRCxLQUFqQjtBQUNBNWEsVUFBQUEsR0FBRyxDQUFDMGlCLFFBQUosR0FBZSxFQUFmO0FBQ0ExaUIsVUFBQUEsR0FBRyxDQUFDcWdCLGdCQUFKLEdBQXVCLElBQXZCO0FBQ0F2b0QsVUFBQUEsS0FBSyxHQUFHb3FELFFBQVI7QUFDQTtBQUNEOztBQUNEcHFELFFBQUFBLEtBQUssR0FBRzIvQyxJQUFJLENBQUN3SSxNQUFMLElBQWUsTUFBZixHQUF3QjBCLElBQXhCLEdBQStCUixRQUF2QztBQUNBOztBQUVGLFdBQUtGLDZCQUFMO0FBQ0UsWUFBSXZ2QyxHQUFHLElBQUksR0FBUCxJQUFjd2lDLFVBQVUsQ0FBQ3dLLE9BQU8sR0FBRyxDQUFYLENBQVYsSUFBMkIsR0FBN0MsRUFBa0Q7QUFDaEQ1bUQsVUFBQUEsS0FBSyxHQUFHd3BELGdDQUFSO0FBQ0E1QyxVQUFBQSxPQUFPO0FBQ1IsU0FIRCxNQUdPO0FBQ0w1bUQsVUFBQUEsS0FBSyxHQUFHcXBELFFBQVI7QUFDQTtBQUNEOztBQUFDOztBQUVKLFdBQUtELGlCQUFMO0FBQ0UsWUFBSXh2QyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNkNVosVUFBQUEsS0FBSyxHQUFHeXBELFNBQVI7QUFDQTtBQUNELFNBSEQsTUFHTztBQUNMenBELFVBQUFBLEtBQUssR0FBR2lxRCxJQUFSO0FBQ0E7QUFDRDs7QUFFSCxXQUFLWixRQUFMO0FBQ0VuaEIsUUFBQUEsR0FBRyxDQUFDaWdCLE1BQUosR0FBYXhJLElBQUksQ0FBQ3dJLE1BQWxCOztBQUNBLFlBQUl2dUMsR0FBRyxJQUFJZ3NDLEdBQVgsRUFBZ0I7QUFDZDFkLFVBQUFBLEdBQUcsQ0FBQ3NYLFFBQUosR0FBZUcsSUFBSSxDQUFDSCxRQUFwQjtBQUNBdFgsVUFBQUEsR0FBRyxDQUFDbWdCLFFBQUosR0FBZTFJLElBQUksQ0FBQzBJLFFBQXBCO0FBQ0FuZ0IsVUFBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNBc1YsVUFBQUEsR0FBRyxDQUFDOVYsSUFBSixHQUFXdXRCLElBQUksQ0FBQ3Z0QixJQUFoQjtBQUNBOFYsVUFBQUEsR0FBRyxDQUFDeGdDLElBQUosR0FBV2k0QyxJQUFJLENBQUNqNEMsSUFBTCxDQUFVaE8sS0FBVixFQUFYO0FBQ0F3dUMsVUFBQUEsR0FBRyxDQUFDNGEsS0FBSixHQUFZbkQsSUFBSSxDQUFDbUQsS0FBakI7QUFDRCxTQVBELE1BT08sSUFBSWxwQyxHQUFHLElBQUksR0FBUCxJQUFlQSxHQUFHLElBQUksSUFBUCxJQUFlbXNDLFNBQVMsQ0FBQzdkLEdBQUQsQ0FBM0MsRUFBbUQ7QUFDeERsb0MsVUFBQUEsS0FBSyxHQUFHc3BELGNBQVI7QUFDRCxTQUZNLE1BRUEsSUFBSTF2QyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNyQnN1QixVQUFBQSxHQUFHLENBQUNzWCxRQUFKLEdBQWVHLElBQUksQ0FBQ0gsUUFBcEI7QUFDQXRYLFVBQUFBLEdBQUcsQ0FBQ21nQixRQUFKLEdBQWUxSSxJQUFJLENBQUMwSSxRQUFwQjtBQUNBbmdCLFVBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVytzQixJQUFJLENBQUMvc0IsSUFBaEI7QUFDQXNWLFVBQUFBLEdBQUcsQ0FBQzlWLElBQUosR0FBV3V0QixJQUFJLENBQUN2dEIsSUFBaEI7QUFDQThWLFVBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLEdBQVdpNEMsSUFBSSxDQUFDajRDLElBQUwsQ0FBVWhPLEtBQVYsRUFBWDtBQUNBd3VDLFVBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWSxFQUFaO0FBQ0E5aUQsVUFBQUEsS0FBSyxHQUFHbXFELEtBQVI7QUFDRCxTQVJNLE1BUUEsSUFBSXZ3QyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNyQnN1QixVQUFBQSxHQUFHLENBQUNzWCxRQUFKLEdBQWVHLElBQUksQ0FBQ0gsUUFBcEI7QUFDQXRYLFVBQUFBLEdBQUcsQ0FBQ21nQixRQUFKLEdBQWUxSSxJQUFJLENBQUMwSSxRQUFwQjtBQUNBbmdCLFVBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVytzQixJQUFJLENBQUMvc0IsSUFBaEI7QUFDQXNWLFVBQUFBLEdBQUcsQ0FBQzlWLElBQUosR0FBV3V0QixJQUFJLENBQUN2dEIsSUFBaEI7QUFDQThWLFVBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLEdBQVdpNEMsSUFBSSxDQUFDajRDLElBQUwsQ0FBVWhPLEtBQVYsRUFBWDtBQUNBd3VDLFVBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWW5ELElBQUksQ0FBQ21ELEtBQWpCO0FBQ0E1YSxVQUFBQSxHQUFHLENBQUMwaUIsUUFBSixHQUFlLEVBQWY7QUFDQTVxRCxVQUFBQSxLQUFLLEdBQUdvcUQsUUFBUjtBQUNELFNBVE0sTUFTQTtBQUNMbGlCLFVBQUFBLEdBQUcsQ0FBQ3NYLFFBQUosR0FBZUcsSUFBSSxDQUFDSCxRQUFwQjtBQUNBdFgsVUFBQUEsR0FBRyxDQUFDbWdCLFFBQUosR0FBZTFJLElBQUksQ0FBQzBJLFFBQXBCO0FBQ0FuZ0IsVUFBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNBc1YsVUFBQUEsR0FBRyxDQUFDOVYsSUFBSixHQUFXdXRCLElBQUksQ0FBQ3Z0QixJQUFoQjtBQUNBOFYsVUFBQUEsR0FBRyxDQUFDeGdDLElBQUosR0FBV2k0QyxJQUFJLENBQUNqNEMsSUFBTCxDQUFVaE8sS0FBVixFQUFYO0FBQ0F3dUMsVUFBQUEsR0FBRyxDQUFDeGdDLElBQUosQ0FBUzgrQyxHQUFUO0FBQ0F4bUQsVUFBQUEsS0FBSyxHQUFHaXFELElBQVI7QUFDQTtBQUNEOztBQUFDOztBQUVKLFdBQUtYLGNBQUw7QUFDRSxZQUFJdkQsU0FBUyxDQUFDN2QsR0FBRCxDQUFULEtBQW1CdHVCLEdBQUcsSUFBSSxHQUFQLElBQWNBLEdBQUcsSUFBSSxJQUF4QyxDQUFKLEVBQW1EO0FBQ2pENVosVUFBQUEsS0FBSyxHQUFHd3BELGdDQUFSO0FBQ0QsU0FGRCxNQUVPLElBQUk1dkMsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDckI1WixVQUFBQSxLQUFLLEdBQUd5cEQsU0FBUjtBQUNELFNBRk0sTUFFQTtBQUNMdmhCLFVBQUFBLEdBQUcsQ0FBQ3NYLFFBQUosR0FBZUcsSUFBSSxDQUFDSCxRQUFwQjtBQUNBdFgsVUFBQUEsR0FBRyxDQUFDbWdCLFFBQUosR0FBZTFJLElBQUksQ0FBQzBJLFFBQXBCO0FBQ0FuZ0IsVUFBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNBc1YsVUFBQUEsR0FBRyxDQUFDOVYsSUFBSixHQUFXdXRCLElBQUksQ0FBQ3Z0QixJQUFoQjtBQUNBcHlCLFVBQUFBLEtBQUssR0FBR2lxRCxJQUFSO0FBQ0E7QUFDRDs7QUFBQzs7QUFFSixXQUFLVix5QkFBTDtBQUNFdnBELFFBQUFBLEtBQUssR0FBR3dwRCxnQ0FBUjtBQUNBLFlBQUk1dkMsR0FBRyxJQUFJLEdBQVAsSUFBYzRCLE1BQU0sQ0FBQ3pCLE1BQVAsQ0FBYzZzQyxPQUFPLEdBQUcsQ0FBeEIsS0FBOEIsR0FBaEQsRUFBcUQ7QUFDckRBLFFBQUFBLE9BQU87QUFDUDs7QUFFRixXQUFLNEMsZ0NBQUw7QUFDRSxZQUFJNXZDLEdBQUcsSUFBSSxHQUFQLElBQWNBLEdBQUcsSUFBSSxJQUF6QixFQUErQjtBQUM3QjVaLFVBQUFBLEtBQUssR0FBR3lwRCxTQUFSO0FBQ0E7QUFDRDs7QUFBQzs7QUFFSixXQUFLQSxTQUFMO0FBQ0UsWUFBSTd2QyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNkLGNBQUkyd0MsTUFBSixFQUFZL3VDLE1BQU0sR0FBRyxRQUFRQSxNQUFqQjtBQUNaK3VDLFVBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0FHLFVBQUFBLGdCQUFnQixHQUFHbkcsU0FBUyxDQUFDL29DLE1BQUQsQ0FBNUI7O0FBQ0EsZUFBSyxJQUFJMVksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzRuRCxnQkFBZ0IsQ0FBQ253RCxNQUFyQyxFQUE2Q3VJLENBQUMsRUFBOUMsRUFBa0Q7QUFDaEQsZ0JBQUlxNUMsU0FBUyxHQUFHdU8sZ0JBQWdCLENBQUM1bkQsQ0FBRCxDQUFoQzs7QUFDQSxnQkFBSXE1QyxTQUFTLElBQUksR0FBYixJQUFvQixDQUFDc08saUJBQXpCLEVBQTRDO0FBQzFDQSxjQUFBQSxpQkFBaUIsR0FBRyxJQUFwQjtBQUNBO0FBQ0Q7O0FBQ0QsZ0JBQUlJLGlCQUFpQixHQUFHN0UsYUFBYSxDQUFDN0osU0FBRCxFQUFZd0wsd0JBQVosQ0FBckM7QUFDQSxnQkFBSThDLGlCQUFKLEVBQXVCdmlCLEdBQUcsQ0FBQ21nQixRQUFKLElBQWdCd0MsaUJBQWhCLENBQXZCLEtBQ0szaUIsR0FBRyxDQUFDc1gsUUFBSixJQUFnQnFMLGlCQUFoQjtBQUNOOztBQUNEcnZDLFVBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0QsU0FmRCxNQWVPLElBQ0w1QixHQUFHLElBQUlnc0MsR0FBUCxJQUFjaHNDLEdBQUcsSUFBSSxHQUFyQixJQUE0QkEsR0FBRyxJQUFJLEdBQW5DLElBQTBDQSxHQUFHLElBQUksR0FBakQsSUFDQ0EsR0FBRyxJQUFJLElBQVAsSUFBZW1zQyxTQUFTLENBQUM3ZCxHQUFELENBRnBCLEVBR0w7QUFDQSxjQUFJcWlCLE1BQU0sSUFBSS91QyxNQUFNLElBQUksRUFBeEIsRUFBNEIsT0FBT3FwQyxpQkFBUDtBQUM1QitCLFVBQUFBLE9BQU8sSUFBSXJDLFNBQVMsQ0FBQy9vQyxNQUFELENBQVQsQ0FBa0JqaEIsTUFBbEIsR0FBMkIsQ0FBdEM7QUFDQWloQixVQUFBQSxNQUFNLEdBQUcsRUFBVDtBQUNBeGIsVUFBQUEsS0FBSyxHQUFHMHBELElBQVI7QUFDRCxTQVJNLE1BUUFsdUMsTUFBTSxJQUFJNUIsR0FBVjs7QUFDUDs7QUFFRixXQUFLOHZDLElBQUw7QUFDQSxXQUFLQyxRQUFMO0FBQ0UsWUFBSVcsYUFBYSxJQUFJcGlCLEdBQUcsQ0FBQ2lnQixNQUFKLElBQWMsTUFBbkMsRUFBMkM7QUFDekNub0QsVUFBQUEsS0FBSyxHQUFHK3BELFNBQVI7QUFDQTtBQUNELFNBSEQsTUFHTyxJQUFJbndDLEdBQUcsSUFBSSxHQUFQLElBQWMsQ0FBQzR3QyxXQUFuQixFQUFnQztBQUNyQyxjQUFJaHZDLE1BQU0sSUFBSSxFQUFkLEVBQWtCLE9BQU91cEMsWUFBUDtBQUNsQjRGLFVBQUFBLE9BQU8sR0FBRzlFLFNBQVMsQ0FBQzNkLEdBQUQsRUFBTTFzQixNQUFOLENBQW5CO0FBQ0EsY0FBSW12QyxPQUFKLEVBQWEsT0FBT0EsT0FBUDtBQUNibnZDLFVBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0F4YixVQUFBQSxLQUFLLEdBQUc0cEQsSUFBUjtBQUNBLGNBQUlVLGFBQWEsSUFBSVgsUUFBckIsRUFBK0I7QUFDaEMsU0FQTSxNQU9BLElBQ0wvdkMsR0FBRyxJQUFJZ3NDLEdBQVAsSUFBY2hzQyxHQUFHLElBQUksR0FBckIsSUFBNEJBLEdBQUcsSUFBSSxHQUFuQyxJQUEwQ0EsR0FBRyxJQUFJLEdBQWpELElBQ0NBLEdBQUcsSUFBSSxJQUFQLElBQWVtc0MsU0FBUyxDQUFDN2QsR0FBRCxDQUZwQixFQUdMO0FBQ0EsY0FBSTZkLFNBQVMsQ0FBQzdkLEdBQUQsQ0FBVCxJQUFrQjFzQixNQUFNLElBQUksRUFBaEMsRUFBb0MsT0FBT3VwQyxZQUFQO0FBQ3BDLGNBQUl1RixhQUFhLElBQUk5dUMsTUFBTSxJQUFJLEVBQTNCLEtBQWtDNHNDLG1CQUFtQixDQUFDbGdCLEdBQUQsQ0FBbkIsSUFBNEJBLEdBQUcsQ0FBQzlWLElBQUosS0FBYSxJQUEzRSxDQUFKLEVBQXNGO0FBQ3RGdTRCLFVBQUFBLE9BQU8sR0FBRzlFLFNBQVMsQ0FBQzNkLEdBQUQsRUFBTTFzQixNQUFOLENBQW5CO0FBQ0EsY0FBSW12QyxPQUFKLEVBQWEsT0FBT0EsT0FBUDtBQUNibnZDLFVBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0F4YixVQUFBQSxLQUFLLEdBQUdncUQsVUFBUjtBQUNBLGNBQUlNLGFBQUosRUFBbUI7QUFDbkI7QUFDRCxTQVpNLE1BWUE7QUFDTCxjQUFJMXdDLEdBQUcsSUFBSSxHQUFYLEVBQWdCNHdDLFdBQVcsR0FBRyxJQUFkLENBQWhCLEtBQ0ssSUFBSTV3QyxHQUFHLElBQUksR0FBWCxFQUFnQjR3QyxXQUFXLEdBQUcsS0FBZDtBQUNyQmh2QyxVQUFBQSxNQUFNLElBQUk1QixHQUFWO0FBQ0Q7O0FBQUM7O0FBRUosV0FBS2d3QyxJQUFMO0FBQ0UsWUFBSXpFLEtBQUssQ0FBQy9sRCxJQUFOLENBQVd3YSxHQUFYLENBQUosRUFBcUI7QUFDbkI0QixVQUFBQSxNQUFNLElBQUk1QixHQUFWO0FBQ0QsU0FGRCxNQUVPLElBQ0xBLEdBQUcsSUFBSWdzQyxHQUFQLElBQWNoc0MsR0FBRyxJQUFJLEdBQXJCLElBQTRCQSxHQUFHLElBQUksR0FBbkMsSUFBMENBLEdBQUcsSUFBSSxHQUFqRCxJQUNDQSxHQUFHLElBQUksSUFBUCxJQUFlbXNDLFNBQVMsQ0FBQzdkLEdBQUQsQ0FEekIsSUFFQW9pQixhQUhLLEVBSUw7QUFDQSxjQUFJOXVDLE1BQU0sSUFBSSxFQUFkLEVBQWtCO0FBQ2hCLGdCQUFJNFcsSUFBSSxHQUFHdkUsUUFBUSxDQUFDclMsTUFBRCxFQUFTLEVBQVQsQ0FBbkI7QUFDQSxnQkFBSTRXLElBQUksR0FBRyxNQUFYLEVBQW1CLE9BQU80eUIsWUFBUDtBQUNuQjljLFlBQUFBLEdBQUcsQ0FBQzlWLElBQUosR0FBWTJ6QixTQUFTLENBQUM3ZCxHQUFELENBQVQsSUFBa0I5VixJQUFJLEtBQUt3MUIsY0FBYyxDQUFDMWYsR0FBRyxDQUFDaWdCLE1BQUwsQ0FBMUMsR0FBMEQsSUFBMUQsR0FBaUUvMUIsSUFBNUU7QUFDQTVXLFlBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0Q7O0FBQ0QsY0FBSTh1QyxhQUFKLEVBQW1CO0FBQ25CdHFELFVBQUFBLEtBQUssR0FBR2dxRCxVQUFSO0FBQ0E7QUFDRCxTQWRNLE1BY0EsT0FBT2hGLFlBQVA7O0FBQ1A7O0FBRUYsV0FBSzZFLElBQUw7QUFDRTNoQixRQUFBQSxHQUFHLENBQUNpZ0IsTUFBSixHQUFhLE1BQWI7QUFDQSxZQUFJdnVDLEdBQUcsSUFBSSxHQUFQLElBQWNBLEdBQUcsSUFBSSxJQUF6QixFQUErQjVaLEtBQUssR0FBRzhwRCxVQUFSLENBQS9CLEtBQ0ssSUFBSW5LLElBQUksSUFBSUEsSUFBSSxDQUFDd0ksTUFBTCxJQUFlLE1BQTNCLEVBQW1DO0FBQ3RDLGNBQUl2dUMsR0FBRyxJQUFJZ3NDLEdBQVgsRUFBZ0I7QUFDZDFkLFlBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVytzQixJQUFJLENBQUMvc0IsSUFBaEI7QUFDQXNWLFlBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLEdBQVdpNEMsSUFBSSxDQUFDajRDLElBQUwsQ0FBVWhPLEtBQVYsRUFBWDtBQUNBd3VDLFlBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWW5ELElBQUksQ0FBQ21ELEtBQWpCO0FBQ0QsV0FKRCxNQUlPLElBQUlscEMsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDckJzdUIsWUFBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNBc1YsWUFBQUEsR0FBRyxDQUFDeGdDLElBQUosR0FBV2k0QyxJQUFJLENBQUNqNEMsSUFBTCxDQUFVaE8sS0FBVixFQUFYO0FBQ0F3dUMsWUFBQUEsR0FBRyxDQUFDNGEsS0FBSixHQUFZLEVBQVo7QUFDQTlpRCxZQUFBQSxLQUFLLEdBQUdtcUQsS0FBUjtBQUNELFdBTE0sTUFLQSxJQUFJdndDLEdBQUcsSUFBSSxHQUFYLEVBQWdCO0FBQ3JCc3VCLFlBQUFBLEdBQUcsQ0FBQ3RWLElBQUosR0FBVytzQixJQUFJLENBQUMvc0IsSUFBaEI7QUFDQXNWLFlBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLEdBQVdpNEMsSUFBSSxDQUFDajRDLElBQUwsQ0FBVWhPLEtBQVYsRUFBWDtBQUNBd3VDLFlBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWW5ELElBQUksQ0FBQ21ELEtBQWpCO0FBQ0E1YSxZQUFBQSxHQUFHLENBQUMwaUIsUUFBSixHQUFlLEVBQWY7QUFDQTVxRCxZQUFBQSxLQUFLLEdBQUdvcUQsUUFBUjtBQUNELFdBTk0sTUFNQTtBQUNMLGdCQUFJLENBQUMxQiw0QkFBNEIsQ0FBQ3RNLFVBQVUsQ0FBQzFpRCxLQUFYLENBQWlCa3RELE9BQWpCLEVBQTBCbmxELElBQTFCLENBQStCLEVBQS9CLENBQUQsQ0FBakMsRUFBdUU7QUFDckV5bUMsY0FBQUEsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNBc1YsY0FBQUEsR0FBRyxDQUFDeGdDLElBQUosR0FBV2k0QyxJQUFJLENBQUNqNEMsSUFBTCxDQUFVaE8sS0FBVixFQUFYO0FBQ0FpdkQsY0FBQUEsZUFBZSxDQUFDemdCLEdBQUQsQ0FBZjtBQUNEOztBQUNEbG9DLFlBQUFBLEtBQUssR0FBR2lxRCxJQUFSO0FBQ0E7QUFDRDtBQUNGLFNBekJJLE1BeUJFO0FBQ0xqcUQsVUFBQUEsS0FBSyxHQUFHaXFELElBQVI7QUFDQTtBQUNEO0FBQUM7O0FBRUosV0FBS0gsVUFBTDtBQUNFLFlBQUlsd0MsR0FBRyxJQUFJLEdBQVAsSUFBY0EsR0FBRyxJQUFJLElBQXpCLEVBQStCO0FBQzdCNVosVUFBQUEsS0FBSyxHQUFHK3BELFNBQVI7QUFDQTtBQUNEOztBQUNELFlBQUlwSyxJQUFJLElBQUlBLElBQUksQ0FBQ3dJLE1BQUwsSUFBZSxNQUF2QixJQUFpQyxDQUFDTyw0QkFBNEIsQ0FBQ3RNLFVBQVUsQ0FBQzFpRCxLQUFYLENBQWlCa3RELE9BQWpCLEVBQTBCbmxELElBQTFCLENBQStCLEVBQS9CLENBQUQsQ0FBbEUsRUFBd0c7QUFDdEcsY0FBSSttRCxvQkFBb0IsQ0FBQzdJLElBQUksQ0FBQ2o0QyxJQUFMLENBQVUsQ0FBVixDQUFELEVBQWUsSUFBZixDQUF4QixFQUE4Q3dnQyxHQUFHLENBQUN4Z0MsSUFBSixDQUFTbEwsSUFBVCxDQUFjbWpELElBQUksQ0FBQ2o0QyxJQUFMLENBQVUsQ0FBVixDQUFkLEVBQTlDLEtBQ0t3Z0MsR0FBRyxDQUFDdFYsSUFBSixHQUFXK3NCLElBQUksQ0FBQy9zQixJQUFoQjtBQUNOOztBQUNENXlCLFFBQUFBLEtBQUssR0FBR2lxRCxJQUFSO0FBQ0E7O0FBRUYsV0FBS0YsU0FBTDtBQUNFLFlBQUlud0MsR0FBRyxJQUFJZ3NDLEdBQVAsSUFBY2hzQyxHQUFHLElBQUksR0FBckIsSUFBNEJBLEdBQUcsSUFBSSxJQUFuQyxJQUEyQ0EsR0FBRyxJQUFJLEdBQWxELElBQXlEQSxHQUFHLElBQUksR0FBcEUsRUFBeUU7QUFDdkUsY0FBSSxDQUFDMHdDLGFBQUQsSUFBa0I5QixvQkFBb0IsQ0FBQ2h0QyxNQUFELENBQTFDLEVBQW9EO0FBQ2xEeGIsWUFBQUEsS0FBSyxHQUFHaXFELElBQVI7QUFDRCxXQUZELE1BRU8sSUFBSXp1QyxNQUFNLElBQUksRUFBZCxFQUFrQjtBQUN2QjBzQixZQUFBQSxHQUFHLENBQUN0VixJQUFKLEdBQVcsRUFBWDtBQUNBLGdCQUFJMDNCLGFBQUosRUFBbUI7QUFDbkJ0cUQsWUFBQUEsS0FBSyxHQUFHZ3FELFVBQVI7QUFDRCxXQUpNLE1BSUE7QUFDTFcsWUFBQUEsT0FBTyxHQUFHOUUsU0FBUyxDQUFDM2QsR0FBRCxFQUFNMXNCLE1BQU4sQ0FBbkI7QUFDQSxnQkFBSW12QyxPQUFKLEVBQWEsT0FBT0EsT0FBUDtBQUNiLGdCQUFJemlCLEdBQUcsQ0FBQ3RWLElBQUosSUFBWSxXQUFoQixFQUE2QnNWLEdBQUcsQ0FBQ3RWLElBQUosR0FBVyxFQUFYO0FBQzdCLGdCQUFJMDNCLGFBQUosRUFBbUI7QUFDbkI5dUMsWUFBQUEsTUFBTSxHQUFHLEVBQVQ7QUFDQXhiLFlBQUFBLEtBQUssR0FBR2dxRCxVQUFSO0FBQ0Q7O0FBQUM7QUFDSCxTQWZELE1BZU94dUMsTUFBTSxJQUFJNUIsR0FBVjs7QUFDUDs7QUFFRixXQUFLb3dDLFVBQUw7QUFDRSxZQUFJakUsU0FBUyxDQUFDN2QsR0FBRCxDQUFiLEVBQW9CO0FBQ2xCbG9DLFVBQUFBLEtBQUssR0FBR2lxRCxJQUFSO0FBQ0EsY0FBSXJ3QyxHQUFHLElBQUksR0FBUCxJQUFjQSxHQUFHLElBQUksSUFBekIsRUFBK0I7QUFDaEMsU0FIRCxNQUdPLElBQUksQ0FBQzB3QyxhQUFELElBQWtCMXdDLEdBQUcsSUFBSSxHQUE3QixFQUFrQztBQUN2Q3N1QixVQUFBQSxHQUFHLENBQUM0YSxLQUFKLEdBQVksRUFBWjtBQUNBOWlELFVBQUFBLEtBQUssR0FBR21xRCxLQUFSO0FBQ0QsU0FITSxNQUdBLElBQUksQ0FBQ0csYUFBRCxJQUFrQjF3QyxHQUFHLElBQUksR0FBN0IsRUFBa0M7QUFDdkNzdUIsVUFBQUEsR0FBRyxDQUFDMGlCLFFBQUosR0FBZSxFQUFmO0FBQ0E1cUQsVUFBQUEsS0FBSyxHQUFHb3FELFFBQVI7QUFDRCxTQUhNLE1BR0EsSUFBSXh3QyxHQUFHLElBQUlnc0MsR0FBWCxFQUFnQjtBQUNyQjVsRCxVQUFBQSxLQUFLLEdBQUdpcUQsSUFBUjtBQUNBLGNBQUlyd0MsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDakI7O0FBQUM7O0FBRUosV0FBS3F3QyxJQUFMO0FBQ0UsWUFDRXJ3QyxHQUFHLElBQUlnc0MsR0FBUCxJQUFjaHNDLEdBQUcsSUFBSSxHQUFyQixJQUNDQSxHQUFHLElBQUksSUFBUCxJQUFlbXNDLFNBQVMsQ0FBQzdkLEdBQUQsQ0FEekIsSUFFQyxDQUFDb2lCLGFBQUQsS0FBbUIxd0MsR0FBRyxJQUFJLEdBQVAsSUFBY0EsR0FBRyxJQUFJLEdBQXhDLENBSEgsRUFJRTtBQUNBLGNBQUltdkMsV0FBVyxDQUFDdnRDLE1BQUQsQ0FBZixFQUF5QjtBQUN2Qm10QyxZQUFBQSxlQUFlLENBQUN6Z0IsR0FBRCxDQUFmOztBQUNBLGdCQUFJdHVCLEdBQUcsSUFBSSxHQUFQLElBQWMsRUFBRUEsR0FBRyxJQUFJLElBQVAsSUFBZW1zQyxTQUFTLENBQUM3ZCxHQUFELENBQTFCLENBQWxCLEVBQW9EO0FBQ2xEQSxjQUFBQSxHQUFHLENBQUN4Z0MsSUFBSixDQUFTbEwsSUFBVCxDQUFjLEVBQWQ7QUFDRDtBQUNGLFdBTEQsTUFLTyxJQUFJcXNELFdBQVcsQ0FBQ3J0QyxNQUFELENBQWYsRUFBeUI7QUFDOUIsZ0JBQUk1QixHQUFHLElBQUksR0FBUCxJQUFjLEVBQUVBLEdBQUcsSUFBSSxJQUFQLElBQWVtc0MsU0FBUyxDQUFDN2QsR0FBRCxDQUExQixDQUFsQixFQUFvRDtBQUNsREEsY0FBQUEsR0FBRyxDQUFDeGdDLElBQUosQ0FBU2xMLElBQVQsQ0FBYyxFQUFkO0FBQ0Q7QUFDRixXQUpNLE1BSUE7QUFDTCxnQkFBSTByQyxHQUFHLENBQUNpZ0IsTUFBSixJQUFjLE1BQWQsSUFBd0IsQ0FBQ2pnQixHQUFHLENBQUN4Z0MsSUFBSixDQUFTbk4sTUFBbEMsSUFBNENpdUQsb0JBQW9CLENBQUNodEMsTUFBRCxDQUFwRSxFQUE4RTtBQUM1RSxrQkFBSTBzQixHQUFHLENBQUN0VixJQUFSLEVBQWNzVixHQUFHLENBQUN0VixJQUFKLEdBQVcsRUFBWDtBQUNkcFgsY0FBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUN6QixNQUFQLENBQWMsQ0FBZCxJQUFtQixHQUE1QixDQUY0RTtBQUc3RTs7QUFDRG11QixZQUFBQSxHQUFHLENBQUN4Z0MsSUFBSixDQUFTbEwsSUFBVCxDQUFjZ2YsTUFBZDtBQUNEOztBQUNEQSxVQUFBQSxNQUFNLEdBQUcsRUFBVDs7QUFDQSxjQUFJMHNCLEdBQUcsQ0FBQ2lnQixNQUFKLElBQWMsTUFBZCxLQUF5QnZ1QyxHQUFHLElBQUlnc0MsR0FBUCxJQUFjaHNDLEdBQUcsSUFBSSxHQUFyQixJQUE0QkEsR0FBRyxJQUFJLEdBQTVELENBQUosRUFBc0U7QUFDcEUsbUJBQU9zdUIsR0FBRyxDQUFDeGdDLElBQUosQ0FBU25OLE1BQVQsR0FBa0IsQ0FBbEIsSUFBdUIydEMsR0FBRyxDQUFDeGdDLElBQUosQ0FBUyxDQUFULE1BQWdCLEVBQTlDLEVBQWtEO0FBQ2hEd2dDLGNBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLENBQVNxN0MsS0FBVDtBQUNEO0FBQ0Y7O0FBQ0QsY0FBSW5wQyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNkc3VCLFlBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWSxFQUFaO0FBQ0E5aUQsWUFBQUEsS0FBSyxHQUFHbXFELEtBQVI7QUFDRCxXQUhELE1BR08sSUFBSXZ3QyxHQUFHLElBQUksR0FBWCxFQUFnQjtBQUNyQnN1QixZQUFBQSxHQUFHLENBQUMwaUIsUUFBSixHQUFlLEVBQWY7QUFDQTVxRCxZQUFBQSxLQUFLLEdBQUdvcUQsUUFBUjtBQUNEO0FBQ0YsU0FsQ0QsTUFrQ087QUFDTDV1QyxVQUFBQSxNQUFNLElBQUl3cUMsYUFBYSxDQUFDcHNDLEdBQUQsRUFBTTh0QyxvQkFBTixDQUF2QjtBQUNEOztBQUFDOztBQUVKLFdBQUt3Qyx5QkFBTDtBQUNFLFlBQUl0d0MsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDZHN1QixVQUFBQSxHQUFHLENBQUM0YSxLQUFKLEdBQVksRUFBWjtBQUNBOWlELFVBQUFBLEtBQUssR0FBR21xRCxLQUFSO0FBQ0QsU0FIRCxNQUdPLElBQUl2d0MsR0FBRyxJQUFJLEdBQVgsRUFBZ0I7QUFDckJzdUIsVUFBQUEsR0FBRyxDQUFDMGlCLFFBQUosR0FBZSxFQUFmO0FBQ0E1cUQsVUFBQUEsS0FBSyxHQUFHb3FELFFBQVI7QUFDRCxTQUhNLE1BR0EsSUFBSXh3QyxHQUFHLElBQUlnc0MsR0FBWCxFQUFnQjtBQUNyQjFkLFVBQUFBLEdBQUcsQ0FBQ3hnQyxJQUFKLENBQVMsQ0FBVCxLQUFlcytDLGFBQWEsQ0FBQ3BzQyxHQUFELEVBQU1xc0MseUJBQU4sQ0FBNUI7QUFDRDs7QUFBQzs7QUFFSixXQUFLa0UsS0FBTDtBQUNFLFlBQUksQ0FBQ0csYUFBRCxJQUFrQjF3QyxHQUFHLElBQUksR0FBN0IsRUFBa0M7QUFDaENzdUIsVUFBQUEsR0FBRyxDQUFDMGlCLFFBQUosR0FBZSxFQUFmO0FBQ0E1cUQsVUFBQUEsS0FBSyxHQUFHb3FELFFBQVI7QUFDRCxTQUhELE1BR08sSUFBSXh3QyxHQUFHLElBQUlnc0MsR0FBWCxFQUFnQjtBQUNyQixjQUFJaHNDLEdBQUcsSUFBSSxHQUFQLElBQWNtc0MsU0FBUyxDQUFDN2QsR0FBRCxDQUEzQixFQUFrQ0EsR0FBRyxDQUFDNGEsS0FBSixJQUFhLEtBQWIsQ0FBbEMsS0FDSyxJQUFJbHBDLEdBQUcsSUFBSSxHQUFYLEVBQWdCc3VCLEdBQUcsQ0FBQzRhLEtBQUosSUFBYSxLQUFiLENBQWhCLEtBQ0E1YSxHQUFHLENBQUM0YSxLQUFKLElBQWFrRCxhQUFhLENBQUNwc0MsR0FBRCxFQUFNcXNDLHlCQUFOLENBQTFCO0FBQ047O0FBQUM7O0FBRUosV0FBS21FLFFBQUw7QUFDRSxZQUFJeHdDLEdBQUcsSUFBSWdzQyxHQUFYLEVBQWdCMWQsR0FBRyxDQUFDMGlCLFFBQUosSUFBZ0I1RSxhQUFhLENBQUNwc0MsR0FBRCxFQUFNNnRDLHdCQUFOLENBQTdCO0FBQ2hCO0FBM1dKOztBQThXQWIsSUFBQUEsT0FBTztBQUNSO0FBQ0YsQ0E1WUQ7QUErWUE7OztBQUNBLElBQUlrRSxjQUFjLEdBQUcsU0FBUzNMLEdBQVQsQ0FBYWpYO0FBQUk7QUFBakIsRUFBK0I7QUFDbEQsTUFBSXBnQyxJQUFJLEdBQUd3VSxVQUFVLENBQUMsSUFBRCxFQUFPd3VDLGNBQVAsRUFBdUIsS0FBdkIsQ0FBckI7QUFDQSxNQUFJbkwsSUFBSSxHQUFHcmxELFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUF1QkQsU0FBUyxDQUFDLENBQUQsQ0FBaEMsR0FBc0NULFNBQWpEO0FBQ0EsTUFBSWt4RCxTQUFTLEdBQUczZ0QsU0FBUyxDQUFDODlCLEdBQUQsQ0FBekI7QUFDQSxNQUFJbG9DLEtBQUssR0FBRzRLLGdCQUFnQixDQUFDOUMsSUFBRCxFQUFPO0FBQUU3SCxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFQLENBQTVCO0FBQ0EsTUFBSStxRCxTQUFKLEVBQWVMLE9BQWY7O0FBQ0EsTUFBSWhMLElBQUksS0FBSzlsRCxTQUFiLEVBQXdCO0FBQ3RCLFFBQUk4bEQsSUFBSSxZQUFZbUwsY0FBcEIsRUFBb0NFLFNBQVMsR0FBR3BHLG1CQUFtQixDQUFDakYsSUFBRCxDQUEvQixDQUFwQyxLQUNLO0FBQ0hnTCxNQUFBQSxPQUFPLEdBQUdOLFFBQVEsQ0FBQ1csU0FBUyxHQUFHLEVBQWIsRUFBaUI1Z0QsU0FBUyxDQUFDdTFDLElBQUQsQ0FBMUIsQ0FBbEI7QUFDQSxVQUFJZ0wsT0FBSixFQUFhLE1BQU03d0QsU0FBUyxDQUFDNndELE9BQUQsQ0FBZjtBQUNkO0FBQ0Y7O0FBQ0RBLEVBQUFBLE9BQU8sR0FBR04sUUFBUSxDQUFDcnFELEtBQUQsRUFBUStxRCxTQUFSLEVBQW1CLElBQW5CLEVBQXlCQyxTQUF6QixDQUFsQjtBQUNBLE1BQUlMLE9BQUosRUFBYSxNQUFNN3dELFNBQVMsQ0FBQzZ3RCxPQUFELENBQWY7QUFDYixNQUFJdkwsWUFBWSxHQUFHcC9DLEtBQUssQ0FBQ28vQyxZQUFOLEdBQXFCLElBQUlHLGlCQUFKLEVBQXhDO0FBQ0EsTUFBSTBMLGlCQUFpQixHQUFHdEcsNEJBQTRCLENBQUN2RixZQUFELENBQXBEO0FBQ0E2TCxFQUFBQSxpQkFBaUIsQ0FBQ2pJLGtCQUFsQixDQUFxQ2hqRCxLQUFLLENBQUM4aUQsS0FBM0M7O0FBQ0FtSSxFQUFBQSxpQkFBaUIsQ0FBQ3hILFNBQWxCLEdBQThCLFlBQVk7QUFDeEN6akQsSUFBQUEsS0FBSyxDQUFDOGlELEtBQU4sR0FBYzFuRCxNQUFNLENBQUNna0QsWUFBRCxDQUFOLElBQXdCLElBQXRDO0FBQ0QsR0FGRDs7QUFHQSxNQUFJLENBQUNsaEQsV0FBTCxFQUFrQjtBQUNoQjRKLElBQUFBLElBQUksQ0FBQ3czQyxJQUFMLEdBQVk0TCxZQUFZLENBQUNqeUQsSUFBYixDQUFrQjZPLElBQWxCLENBQVo7QUFDQUEsSUFBQUEsSUFBSSxDQUFDcWpELE1BQUwsR0FBY0MsU0FBUyxDQUFDbnlELElBQVYsQ0FBZTZPLElBQWYsQ0FBZDtBQUNBQSxJQUFBQSxJQUFJLENBQUM2cUIsUUFBTCxHQUFnQjA0QixXQUFXLENBQUNweUQsSUFBWixDQUFpQjZPLElBQWpCLENBQWhCO0FBQ0FBLElBQUFBLElBQUksQ0FBQzAzQyxRQUFMLEdBQWdCOEwsV0FBVyxDQUFDcnlELElBQVosQ0FBaUI2TyxJQUFqQixDQUFoQjtBQUNBQSxJQUFBQSxJQUFJLENBQUN1Z0QsUUFBTCxHQUFnQmtELFdBQVcsQ0FBQ3R5RCxJQUFaLENBQWlCNk8sSUFBakIsQ0FBaEI7QUFDQUEsSUFBQUEsSUFBSSxDQUFDOHFCLElBQUwsR0FBWTQ0QixPQUFPLENBQUN2eUQsSUFBUixDQUFhNk8sSUFBYixDQUFaO0FBQ0FBLElBQUFBLElBQUksQ0FBQzJqRCxRQUFMLEdBQWdCQyxXQUFXLENBQUN6eUQsSUFBWixDQUFpQjZPLElBQWpCLENBQWhCO0FBQ0FBLElBQUFBLElBQUksQ0FBQ3NxQixJQUFMLEdBQVl1NUIsT0FBTyxDQUFDMXlELElBQVIsQ0FBYTZPLElBQWIsQ0FBWjtBQUNBQSxJQUFBQSxJQUFJLENBQUN1M0MsUUFBTCxHQUFnQnVNLFdBQVcsQ0FBQzN5RCxJQUFaLENBQWlCNk8sSUFBakIsQ0FBaEI7QUFDQUEsSUFBQUEsSUFBSSxDQUFDdTRCLE1BQUwsR0FBY3dyQixTQUFTLENBQUM1eUQsSUFBVixDQUFlNk8sSUFBZixDQUFkO0FBQ0FBLElBQUFBLElBQUksQ0FBQ3MzQyxZQUFMLEdBQW9CME0sZUFBZSxDQUFDN3lELElBQWhCLENBQXFCNk8sSUFBckIsQ0FBcEI7QUFDQUEsSUFBQUEsSUFBSSxDQUFDMjNDLElBQUwsR0FBWXNNLE9BQU8sQ0FBQzl5RCxJQUFSLENBQWE2TyxJQUFiLENBQVo7QUFDRDtBQUNGLENBbkNEOztBQXFDQSxJQUFJa2tELFlBQVksR0FBR2xCLGNBQWMsQ0FBQ3JxRCxTQUFsQzs7QUFFQSxJQUFJeXFELFlBQVksR0FBRyxZQUFZO0FBQzdCLE1BQUloakIsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBLE1BQUl1RCxNQUFNLEdBQUdqZ0IsR0FBRyxDQUFDaWdCLE1BQWpCO0FBQ0EsTUFBSTNJLFFBQVEsR0FBR3RYLEdBQUcsQ0FBQ3NYLFFBQW5CO0FBQ0EsTUFBSTZJLFFBQVEsR0FBR25nQixHQUFHLENBQUNtZ0IsUUFBbkI7QUFDQSxNQUFJejFCLElBQUksR0FBR3NWLEdBQUcsQ0FBQ3RWLElBQWY7QUFDQSxNQUFJUixJQUFJLEdBQUc4VixHQUFHLENBQUM5VixJQUFmO0FBQ0EsTUFBSTFxQixJQUFJLEdBQUd3Z0MsR0FBRyxDQUFDeGdDLElBQWY7QUFDQSxNQUFJbzdDLEtBQUssR0FBRzVhLEdBQUcsQ0FBQzRhLEtBQWhCO0FBQ0EsTUFBSThILFFBQVEsR0FBRzFpQixHQUFHLENBQUMwaUIsUUFBbkI7QUFDQSxNQUFJL2tCLE1BQU0sR0FBR3NpQixNQUFNLEdBQUcsR0FBdEI7O0FBQ0EsTUFBSXYxQixJQUFJLEtBQUssSUFBYixFQUFtQjtBQUNqQmlULElBQUFBLE1BQU0sSUFBSSxJQUFWOztBQUNBLFFBQUl1aUIsbUJBQW1CLENBQUNsZ0IsR0FBRCxDQUF2QixFQUE4QjtBQUM1QnJDLE1BQUFBLE1BQU0sSUFBSTJaLFFBQVEsSUFBSTZJLFFBQVEsR0FBRyxNQUFNQSxRQUFULEdBQW9CLEVBQWhDLENBQVIsR0FBOEMsR0FBeEQ7QUFDRDs7QUFDRHhpQixJQUFBQSxNQUFNLElBQUl5aEIsYUFBYSxDQUFDMTBCLElBQUQsQ0FBdkI7QUFDQSxRQUFJUixJQUFJLEtBQUssSUFBYixFQUFtQnlULE1BQU0sSUFBSSxNQUFNelQsSUFBaEI7QUFDcEIsR0FQRCxNQU9PLElBQUkrMUIsTUFBTSxJQUFJLE1BQWQsRUFBc0J0aUIsTUFBTSxJQUFJLElBQVY7O0FBQzdCQSxFQUFBQSxNQUFNLElBQUlxQyxHQUFHLENBQUNxZ0IsZ0JBQUosR0FBdUI3Z0QsSUFBSSxDQUFDLENBQUQsQ0FBM0IsR0FBaUNBLElBQUksQ0FBQ25OLE1BQUwsR0FBYyxNQUFNbU4sSUFBSSxDQUFDakcsSUFBTCxDQUFVLEdBQVYsQ0FBcEIsR0FBcUMsRUFBaEY7QUFDQSxNQUFJcWhELEtBQUssS0FBSyxJQUFkLEVBQW9CamQsTUFBTSxJQUFJLE1BQU1pZCxLQUFoQjtBQUNwQixNQUFJOEgsUUFBUSxLQUFLLElBQWpCLEVBQXVCL2tCLE1BQU0sSUFBSSxNQUFNK2tCLFFBQWhCO0FBQ3ZCLFNBQU8va0IsTUFBUDtBQUNELENBdkJEOztBQXlCQSxJQUFJdWxCLFNBQVMsR0FBRyxZQUFZO0FBQzFCLE1BQUlsakIsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBLE1BQUl1RCxNQUFNLEdBQUdqZ0IsR0FBRyxDQUFDaWdCLE1BQWpCO0FBQ0EsTUFBSS8xQixJQUFJLEdBQUc4VixHQUFHLENBQUM5VixJQUFmO0FBQ0EsTUFBSSsxQixNQUFNLElBQUksTUFBZCxFQUFzQixJQUFJO0FBQ3hCLFdBQU8sSUFBSTJDLGNBQUosQ0FBbUIzQyxNQUFNLENBQUN6Z0QsSUFBUCxDQUFZLENBQVosQ0FBbkIsRUFBbUN5akQsTUFBMUM7QUFDRCxHQUZxQixDQUVwQixPQUFPNXlELEtBQVAsRUFBYztBQUNkLFdBQU8sTUFBUDtBQUNEO0FBQ0QsTUFBSTR2RCxNQUFNLElBQUksTUFBVixJQUFvQixDQUFDcEMsU0FBUyxDQUFDN2QsR0FBRCxDQUFsQyxFQUF5QyxPQUFPLE1BQVA7QUFDekMsU0FBT2lnQixNQUFNLEdBQUcsS0FBVCxHQUFpQmIsYUFBYSxDQUFDcGYsR0FBRyxDQUFDdFYsSUFBTCxDQUE5QixJQUE0Q1IsSUFBSSxLQUFLLElBQVQsR0FBZ0IsTUFBTUEsSUFBdEIsR0FBNkIsRUFBekUsQ0FBUDtBQUNELENBWEQ7O0FBYUEsSUFBSWk1QixXQUFXLEdBQUcsWUFBWTtBQUM1QixTQUFPekcsbUJBQW1CLENBQUMsSUFBRCxDQUFuQixDQUEwQnVELE1BQTFCLEdBQW1DLEdBQTFDO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJbUQsV0FBVyxHQUFHLFlBQVk7QUFDNUIsU0FBTzFHLG1CQUFtQixDQUFDLElBQUQsQ0FBbkIsQ0FBMEJwRixRQUFqQztBQUNELENBRkQ7O0FBSUEsSUFBSStMLFdBQVcsR0FBRyxZQUFZO0FBQzVCLFNBQU8zRyxtQkFBbUIsQ0FBQyxJQUFELENBQW5CLENBQTBCeUQsUUFBakM7QUFDRCxDQUZEOztBQUlBLElBQUltRCxPQUFPLEdBQUcsWUFBWTtBQUN4QixNQUFJdGpCLEdBQUcsR0FBRzBjLG1CQUFtQixDQUFDLElBQUQsQ0FBN0I7QUFDQSxNQUFJaHlCLElBQUksR0FBR3NWLEdBQUcsQ0FBQ3RWLElBQWY7QUFDQSxNQUFJUixJQUFJLEdBQUc4VixHQUFHLENBQUM5VixJQUFmO0FBQ0EsU0FBT1EsSUFBSSxLQUFLLElBQVQsR0FBZ0IsRUFBaEIsR0FDSFIsSUFBSSxLQUFLLElBQVQsR0FBZ0JrMUIsYUFBYSxDQUFDMTBCLElBQUQsQ0FBN0IsR0FDQTAwQixhQUFhLENBQUMxMEIsSUFBRCxDQUFiLEdBQXNCLEdBQXRCLEdBQTRCUixJQUZoQztBQUdELENBUEQ7O0FBU0EsSUFBSXM1QixXQUFXLEdBQUcsWUFBWTtBQUM1QixNQUFJOTRCLElBQUksR0FBR2d5QixtQkFBbUIsQ0FBQyxJQUFELENBQW5CLENBQTBCaHlCLElBQXJDO0FBQ0EsU0FBT0EsSUFBSSxLQUFLLElBQVQsR0FBZ0IsRUFBaEIsR0FBcUIwMEIsYUFBYSxDQUFDMTBCLElBQUQsQ0FBekM7QUFDRCxDQUhEOztBQUtBLElBQUkrNEIsT0FBTyxHQUFHLFlBQVk7QUFDeEIsTUFBSXY1QixJQUFJLEdBQUd3eUIsbUJBQW1CLENBQUMsSUFBRCxDQUFuQixDQUEwQnh5QixJQUFyQztBQUNBLFNBQU9BLElBQUksS0FBSyxJQUFULEdBQWdCLEVBQWhCLEdBQXFCaDNCLE1BQU0sQ0FBQ2czQixJQUFELENBQWxDO0FBQ0QsQ0FIRDs7QUFLQSxJQUFJdzVCLFdBQVcsR0FBRyxZQUFZO0FBQzVCLE1BQUkxakIsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBLE1BQUlsOUMsSUFBSSxHQUFHd2dDLEdBQUcsQ0FBQ3hnQyxJQUFmO0FBQ0EsU0FBT3dnQyxHQUFHLENBQUNxZ0IsZ0JBQUosR0FBdUI3Z0QsSUFBSSxDQUFDLENBQUQsQ0FBM0IsR0FBaUNBLElBQUksQ0FBQ25OLE1BQUwsR0FBYyxNQUFNbU4sSUFBSSxDQUFDakcsSUFBTCxDQUFVLEdBQVYsQ0FBcEIsR0FBcUMsRUFBN0U7QUFDRCxDQUpEOztBQU1BLElBQUlvcUQsU0FBUyxHQUFHLFlBQVk7QUFDMUIsTUFBSS9JLEtBQUssR0FBRzhCLG1CQUFtQixDQUFDLElBQUQsQ0FBbkIsQ0FBMEI5QixLQUF0QztBQUNBLFNBQU9BLEtBQUssR0FBRyxNQUFNQSxLQUFULEdBQWlCLEVBQTdCO0FBQ0QsQ0FIRDs7QUFLQSxJQUFJZ0osZUFBZSxHQUFHLFlBQVk7QUFDaEMsU0FBT2xILG1CQUFtQixDQUFDLElBQUQsQ0FBbkIsQ0FBMEJ4RixZQUFqQztBQUNELENBRkQ7O0FBSUEsSUFBSTJNLE9BQU8sR0FBRyxZQUFZO0FBQ3hCLE1BQUluQixRQUFRLEdBQUdoRyxtQkFBbUIsQ0FBQyxJQUFELENBQW5CLENBQTBCZ0csUUFBekM7QUFDQSxTQUFPQSxRQUFRLEdBQUcsTUFBTUEsUUFBVCxHQUFvQixFQUFuQztBQUNELENBSEQ7O0FBS0EsSUFBSXFCLGtCQUFrQixHQUFHLFVBQVVoOEIsTUFBVixFQUFrQjlqQixNQUFsQixFQUEwQjtBQUNqRCxTQUFPO0FBQUV2VCxJQUFBQSxHQUFHLEVBQUVxM0IsTUFBUDtBQUFldHdCLElBQUFBLEdBQUcsRUFBRXdNLE1BQXBCO0FBQTRCNVMsSUFBQUEsWUFBWSxFQUFFLElBQTFDO0FBQWdESCxJQUFBQSxVQUFVLEVBQUU7QUFBNUQsR0FBUDtBQUNELENBRkQ7O0FBSUEsSUFBSThFLFdBQUosRUFBaUI7QUFDZm9ILEVBQUFBLGdCQUFnQixDQUFDMG1ELFlBQUQsRUFBZTtBQUM3QjtBQUNBO0FBQ0ExTSxJQUFBQSxJQUFJLEVBQUUyTSxrQkFBa0IsQ0FBQ2YsWUFBRCxFQUFlLFVBQVU1TCxJQUFWLEVBQWdCO0FBQ3JELFVBQUlwWCxHQUFHLEdBQUcwYyxtQkFBbUIsQ0FBQyxJQUFELENBQTdCO0FBQ0EsVUFBSW1HLFNBQVMsR0FBRzNnRCxTQUFTLENBQUNrMUMsSUFBRCxDQUF6QjtBQUNBLFVBQUlxTCxPQUFPLEdBQUdOLFFBQVEsQ0FBQ25pQixHQUFELEVBQU02aUIsU0FBTixDQUF0QjtBQUNBLFVBQUlKLE9BQUosRUFBYSxNQUFNN3dELFNBQVMsQ0FBQzZ3RCxPQUFELENBQWY7QUFDYmhHLE1BQUFBLDRCQUE0QixDQUFDemMsR0FBRyxDQUFDa1gsWUFBTCxDQUE1QixDQUErQzRELGtCQUEvQyxDQUFrRTlhLEdBQUcsQ0FBQzRhLEtBQXRFO0FBQ0QsS0FOdUIsQ0FISztBQVU3QjtBQUNBO0FBQ0FxSSxJQUFBQSxNQUFNLEVBQUVjLGtCQUFrQixDQUFDYixTQUFELENBWkc7QUFhN0I7QUFDQTtBQUNBejRCLElBQUFBLFFBQVEsRUFBRXM1QixrQkFBa0IsQ0FBQ1osV0FBRCxFQUFjLFVBQVUxNEIsUUFBVixFQUFvQjtBQUM1RCxVQUFJdVYsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBeUYsTUFBQUEsUUFBUSxDQUFDbmlCLEdBQUQsRUFBTTk5QixTQUFTLENBQUN1b0IsUUFBRCxDQUFULEdBQXNCLEdBQTVCLEVBQWlDcTJCLFlBQWpDLENBQVI7QUFDRCxLQUgyQixDQWZDO0FBbUI3QjtBQUNBO0FBQ0F4SixJQUFBQSxRQUFRLEVBQUV5TSxrQkFBa0IsQ0FBQ1gsV0FBRCxFQUFjLFVBQVU5TCxRQUFWLEVBQW9CO0FBQzVELFVBQUl0WCxHQUFHLEdBQUcwYyxtQkFBbUIsQ0FBQyxJQUFELENBQTdCO0FBQ0EsVUFBSXhJLFVBQVUsR0FBR21JLFNBQVMsQ0FBQ242QyxTQUFTLENBQUNvMUMsUUFBRCxDQUFWLENBQTFCO0FBQ0EsVUFBSThJLDhCQUE4QixDQUFDcGdCLEdBQUQsQ0FBbEMsRUFBeUM7QUFDekNBLE1BQUFBLEdBQUcsQ0FBQ3NYLFFBQUosR0FBZSxFQUFmOztBQUNBLFdBQUssSUFBSTE4QyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHczVDLFVBQVUsQ0FBQzdoRCxNQUEvQixFQUF1Q3VJLENBQUMsRUFBeEMsRUFBNEM7QUFDMUNvbEMsUUFBQUEsR0FBRyxDQUFDc1gsUUFBSixJQUFnQndHLGFBQWEsQ0FBQzVKLFVBQVUsQ0FBQ3Q1QyxDQUFELENBQVgsRUFBZ0I2a0Qsd0JBQWhCLENBQTdCO0FBQ0Q7QUFDRixLQVIyQixDQXJCQztBQThCN0I7QUFDQTtBQUNBVSxJQUFBQSxRQUFRLEVBQUU0RCxrQkFBa0IsQ0FBQ1YsV0FBRCxFQUFjLFVBQVVsRCxRQUFWLEVBQW9CO0FBQzVELFVBQUluZ0IsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBLFVBQUl4SSxVQUFVLEdBQUdtSSxTQUFTLENBQUNuNkMsU0FBUyxDQUFDaStDLFFBQUQsQ0FBVixDQUExQjtBQUNBLFVBQUlDLDhCQUE4QixDQUFDcGdCLEdBQUQsQ0FBbEMsRUFBeUM7QUFDekNBLE1BQUFBLEdBQUcsQ0FBQ21nQixRQUFKLEdBQWUsRUFBZjs7QUFDQSxXQUFLLElBQUl2bEQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3M1QyxVQUFVLENBQUM3aEQsTUFBL0IsRUFBdUN1SSxDQUFDLEVBQXhDLEVBQTRDO0FBQzFDb2xDLFFBQUFBLEdBQUcsQ0FBQ21nQixRQUFKLElBQWdCckMsYUFBYSxDQUFDNUosVUFBVSxDQUFDdDVDLENBQUQsQ0FBWCxFQUFnQjZrRCx3QkFBaEIsQ0FBN0I7QUFDRDtBQUNGLEtBUjJCLENBaENDO0FBeUM3QjtBQUNBO0FBQ0EvMEIsSUFBQUEsSUFBSSxFQUFFcTVCLGtCQUFrQixDQUFDVCxPQUFELEVBQVUsVUFBVTU0QixJQUFWLEVBQWdCO0FBQ2hELFVBQUlzVixHQUFHLEdBQUcwYyxtQkFBbUIsQ0FBQyxJQUFELENBQTdCO0FBQ0EsVUFBSTFjLEdBQUcsQ0FBQ3FnQixnQkFBUixFQUEwQjtBQUMxQjhCLE1BQUFBLFFBQVEsQ0FBQ25pQixHQUFELEVBQU05OUIsU0FBUyxDQUFDd29CLElBQUQsQ0FBZixFQUF1QjgyQixJQUF2QixDQUFSO0FBQ0QsS0FKdUIsQ0EzQ0s7QUFnRDdCO0FBQ0E7QUFDQStCLElBQUFBLFFBQVEsRUFBRVEsa0JBQWtCLENBQUNQLFdBQUQsRUFBYyxVQUFVRCxRQUFWLEVBQW9CO0FBQzVELFVBQUl2akIsR0FBRyxHQUFHMGMsbUJBQW1CLENBQUMsSUFBRCxDQUE3QjtBQUNBLFVBQUkxYyxHQUFHLENBQUNxZ0IsZ0JBQVIsRUFBMEI7QUFDMUI4QixNQUFBQSxRQUFRLENBQUNuaUIsR0FBRCxFQUFNOTlCLFNBQVMsQ0FBQ3FoRCxRQUFELENBQWYsRUFBMkI5QixRQUEzQixDQUFSO0FBQ0QsS0FKMkIsQ0FsREM7QUF1RDdCO0FBQ0E7QUFDQXYzQixJQUFBQSxJQUFJLEVBQUU2NUIsa0JBQWtCLENBQUNOLE9BQUQsRUFBVSxVQUFVdjVCLElBQVYsRUFBZ0I7QUFDaEQsVUFBSThWLEdBQUcsR0FBRzBjLG1CQUFtQixDQUFDLElBQUQsQ0FBN0I7QUFDQSxVQUFJMEQsOEJBQThCLENBQUNwZ0IsR0FBRCxDQUFsQyxFQUF5QztBQUN6QzlWLE1BQUFBLElBQUksR0FBR2hvQixTQUFTLENBQUNnb0IsSUFBRCxDQUFoQjtBQUNBLFVBQUlBLElBQUksSUFBSSxFQUFaLEVBQWdCOFYsR0FBRyxDQUFDOVYsSUFBSixHQUFXLElBQVgsQ0FBaEIsS0FDS2k0QixRQUFRLENBQUNuaUIsR0FBRCxFQUFNOVYsSUFBTixFQUFZdzNCLElBQVosQ0FBUjtBQUNOLEtBTnVCLENBekRLO0FBZ0U3QjtBQUNBO0FBQ0F2SyxJQUFBQSxRQUFRLEVBQUU0TSxrQkFBa0IsQ0FBQ0wsV0FBRCxFQUFjLFVBQVV2TSxRQUFWLEVBQW9CO0FBQzVELFVBQUluWCxHQUFHLEdBQUcwYyxtQkFBbUIsQ0FBQyxJQUFELENBQTdCO0FBQ0EsVUFBSTFjLEdBQUcsQ0FBQ3FnQixnQkFBUixFQUEwQjtBQUMxQnJnQixNQUFBQSxHQUFHLENBQUN4Z0MsSUFBSixHQUFXLEVBQVg7QUFDQTJpRCxNQUFBQSxRQUFRLENBQUNuaUIsR0FBRCxFQUFNOTlCLFNBQVMsQ0FBQ2kxQyxRQUFELENBQWYsRUFBMkIySyxVQUEzQixDQUFSO0FBQ0QsS0FMMkIsQ0FsRUM7QUF3RTdCO0FBQ0E7QUFDQTNwQixJQUFBQSxNQUFNLEVBQUU0ckIsa0JBQWtCLENBQUNKLFNBQUQsRUFBWSxVQUFVeHJCLE1BQVYsRUFBa0I7QUFDdEQsVUFBSTZILEdBQUcsR0FBRzBjLG1CQUFtQixDQUFDLElBQUQsQ0FBN0I7QUFDQXZrQixNQUFBQSxNQUFNLEdBQUdqMkIsU0FBUyxDQUFDaTJCLE1BQUQsQ0FBbEI7O0FBQ0EsVUFBSUEsTUFBTSxJQUFJLEVBQWQsRUFBa0I7QUFDaEI2SCxRQUFBQSxHQUFHLENBQUM0YSxLQUFKLEdBQVksSUFBWjtBQUNELE9BRkQsTUFFTztBQUNMLFlBQUksT0FBT3ppQixNQUFNLENBQUN0bUIsTUFBUCxDQUFjLENBQWQsQ0FBWCxFQUE2QnNtQixNQUFNLEdBQUdBLE1BQU0sQ0FBQzNtQyxLQUFQLENBQWEsQ0FBYixDQUFUO0FBQzdCd3VDLFFBQUFBLEdBQUcsQ0FBQzRhLEtBQUosR0FBWSxFQUFaO0FBQ0F1SCxRQUFBQSxRQUFRLENBQUNuaUIsR0FBRCxFQUFNN0gsTUFBTixFQUFjOHBCLEtBQWQsQ0FBUjtBQUNEOztBQUNEeEYsTUFBQUEsNEJBQTRCLENBQUN6YyxHQUFHLENBQUNrWCxZQUFMLENBQTVCLENBQStDNEQsa0JBQS9DLENBQWtFOWEsR0FBRyxDQUFDNGEsS0FBdEU7QUFDRCxLQVh5QixDQTFFRztBQXNGN0I7QUFDQTtBQUNBMUQsSUFBQUEsWUFBWSxFQUFFNk0sa0JBQWtCLENBQUNILGVBQUQsQ0F4Rkg7QUF5RjdCO0FBQ0E7QUFDQXJNLElBQUFBLElBQUksRUFBRXdNLGtCQUFrQixDQUFDRixPQUFELEVBQVUsVUFBVXRNLElBQVYsRUFBZ0I7QUFDaEQsVUFBSXZYLEdBQUcsR0FBRzBjLG1CQUFtQixDQUFDLElBQUQsQ0FBN0I7QUFDQW5GLE1BQUFBLElBQUksR0FBR3IxQyxTQUFTLENBQUNxMUMsSUFBRCxDQUFoQjs7QUFDQSxVQUFJQSxJQUFJLElBQUksRUFBWixFQUFnQjtBQUNkdlgsUUFBQUEsR0FBRyxDQUFDMGlCLFFBQUosR0FBZSxJQUFmO0FBQ0E7QUFDRDs7QUFDRCxVQUFJLE9BQU9uTCxJQUFJLENBQUMxbEMsTUFBTCxDQUFZLENBQVosQ0FBWCxFQUEyQjBsQyxJQUFJLEdBQUdBLElBQUksQ0FBQy9sRCxLQUFMLENBQVcsQ0FBWCxDQUFQO0FBQzNCd3VDLE1BQUFBLEdBQUcsQ0FBQzBpQixRQUFKLEdBQWUsRUFBZjtBQUNBUCxNQUFBQSxRQUFRLENBQUNuaUIsR0FBRCxFQUFNdVgsSUFBTixFQUFZMkssUUFBWixDQUFSO0FBQ0QsS0FWdUI7QUEzRkssR0FBZixDQUFoQjtBQXVHRDtBQUdEOzs7QUFDQWxtRCxRQUFRLENBQUM4bkQsWUFBRCxFQUFlLFFBQWYsRUFBeUIsU0FBU3ZuQyxNQUFULEdBQWtCO0FBQ2pELFNBQU95bUMsWUFBWSxDQUFDanlELElBQWIsQ0FBa0IsSUFBbEIsQ0FBUDtBQUNELENBRk8sRUFFTDtBQUFFRyxFQUFBQSxVQUFVLEVBQUU7QUFBZCxDQUZLLENBQVI7QUFLQTs7QUFDQThLLFFBQVEsQ0FBQzhuRCxZQUFELEVBQWUsVUFBZixFQUEyQixTQUFTdnlELFFBQVQsR0FBb0I7QUFDckQsU0FBT3l4RCxZQUFZLENBQUNqeUQsSUFBYixDQUFrQixJQUFsQixDQUFQO0FBQ0QsQ0FGTyxFQUVMO0FBQUVHLEVBQUFBLFVBQVUsRUFBRTtBQUFkLENBRkssQ0FBUjs7QUFJQSxJQUFJc3JELFNBQUosRUFBZTtBQUNiLE1BQUl3SCxxQkFBcUIsR0FBR3hILFNBQVMsQ0FBQ3lILGVBQXRDO0FBQ0EsTUFBSUMscUJBQXFCLEdBQUcxSCxTQUFTLENBQUMySCxlQUF0QyxDQUZhO0FBSWI7QUFDQTs7QUFDQSxNQUFJSCxxQkFBSixFQUEyQmhvRCxRQUFRLENBQUM0bUQsY0FBRCxFQUFpQixpQkFBakIsRUFBb0MsU0FBU3FCLGVBQVQsQ0FBeUJHLElBQXpCLEVBQStCO0FBQ3BHLFdBQU9KLHFCQUFxQixDQUFDamtELEtBQXRCLENBQTRCeThDLFNBQTVCLEVBQXVDcHFELFNBQXZDLENBQVA7QUFDRCxHQUZrQyxDQUFSLENBTmQ7QUFVYjtBQUNBOztBQUNBLE1BQUk4eEQscUJBQUosRUFBMkJsb0QsUUFBUSxDQUFDNG1ELGNBQUQsRUFBaUIsaUJBQWpCLEVBQW9DLFNBQVN1QixlQUFULENBQXlCbmtCLEdBQXpCLEVBQThCO0FBQ25HLFdBQU9ra0IscUJBQXFCLENBQUNua0QsS0FBdEIsQ0FBNEJ5OEMsU0FBNUIsRUFBdUNwcUQsU0FBdkMsQ0FBUDtBQUNELEdBRmtDLENBQVI7QUFHNUI7O0FBRURrUSxjQUFjLENBQUNzZ0QsY0FBRCxFQUFpQixLQUFqQixDQUFkO0FBRUEzZ0QsR0FBQyxDQUFDO0FBQUUvUixFQUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQnVNLEVBQUFBLE1BQU0sRUFBRSxDQUFDaTlDLGNBQXpCO0FBQXlDdm1ELEVBQUFBLElBQUksRUFBRSxDQUFDNkM7QUFBaEQsQ0FBRCxFQUFnRTtBQUMvRGloRCxFQUFBQSxHQUFHLEVBQUUyTDtBQUQwRCxDQUFoRSxDQUFEOztBQzMrQkEsSUFBSTNnRCxDQUFDLEdBQUcxUixPQUFSO0FBR0E7OztBQUNBMFIsQ0FBQyxDQUFDO0FBQUU1RyxFQUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFpQm9LLEVBQUFBLEtBQUssRUFBRSxJQUF4QjtBQUE4QnZVLEVBQUFBLFVBQVUsRUFBRTtBQUExQyxDQUFELEVBQW1EO0FBQ2xEcXJCLEVBQUFBLE1BQU0sRUFBRSxTQUFTQSxNQUFULEdBQWtCO0FBQ3hCLFdBQU8wNkIsR0FBRyxDQUFDMStDLFNBQUosQ0FBY2hILFFBQWQsQ0FBdUJSLElBQXZCLENBQTRCLElBQTVCLENBQVA7QUFDRDtBQUhpRCxDQUFuRCxDQUFEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1EyQztBQUN6QyxHQUFDLFlBQVc7QUFJZDs7QUFDQSxRQUFJc3pELFNBQVMsR0FBRyxPQUFPcHhELE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0NBLE1BQU0sQ0FBQ3F4RCxHQUF2RDtBQUNBLFFBQUlDLGtCQUFrQixHQUFHRixTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyxlQUFYLENBQUgsR0FBaUMsTUFBbkU7QUFDQSxRQUFJRSxpQkFBaUIsR0FBR0gsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsY0FBWCxDQUFILEdBQWdDLE1BQWpFO0FBQ0EsUUFBSUcsbUJBQW1CLEdBQUdKLFNBQVMsR0FBR3B4RCxNQUFNLENBQUNxeEQsR0FBUCxDQUFXLGdCQUFYLENBQUgsR0FBa0MsTUFBckU7QUFDQSxRQUFJSSxzQkFBc0IsR0FBR0wsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsbUJBQVgsQ0FBSCxHQUFxQyxNQUEzRTtBQUNBLFFBQUlLLG1CQUFtQixHQUFHTixTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyxnQkFBWCxDQUFILEdBQWtDLE1BQXJFO0FBQ0EsUUFBSU0sbUJBQW1CLEdBQUdQLFNBQVMsR0FBR3B4RCxNQUFNLENBQUNxeEQsR0FBUCxDQUFXLGdCQUFYLENBQUgsR0FBa0MsTUFBckU7QUFDQSxRQUFJTyxrQkFBa0IsR0FBR1IsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsZUFBWCxDQUFILEdBQWlDLE1BQW5FLENBWmM7QUFhZDs7QUFFQSxRQUFJUSxxQkFBcUIsR0FBR1QsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsa0JBQVgsQ0FBSCxHQUFvQyxNQUF6RTtBQUNBLFFBQUlTLDBCQUEwQixHQUFHVixTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyx1QkFBWCxDQUFILEdBQXlDLE1BQW5GO0FBQ0EsUUFBSVUsc0JBQXNCLEdBQUdYLFNBQVMsR0FBR3B4RCxNQUFNLENBQUNxeEQsR0FBUCxDQUFXLG1CQUFYLENBQUgsR0FBcUMsTUFBM0U7QUFDQSxRQUFJVyxtQkFBbUIsR0FBR1osU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsZ0JBQVgsQ0FBSCxHQUFrQyxNQUFyRTtBQUNBLFFBQUlZLHdCQUF3QixHQUFHYixTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyxxQkFBWCxDQUFILEdBQXVDLE1BQS9FO0FBQ0EsUUFBSWEsZUFBZSxHQUFHZCxTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyxZQUFYLENBQUgsR0FBOEIsTUFBN0Q7QUFDQSxRQUFJYyxlQUFlLEdBQUdmLFNBQVMsR0FBR3B4RCxNQUFNLENBQUNxeEQsR0FBUCxDQUFXLFlBQVgsQ0FBSCxHQUE4QixNQUE3RDtBQUNBLFFBQUllLGdCQUFnQixHQUFHaEIsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsYUFBWCxDQUFILEdBQStCLE1BQS9EO0FBQ0EsUUFBSWdCLHNCQUFzQixHQUFHakIsU0FBUyxHQUFHcHhELE1BQU0sQ0FBQ3F4RCxHQUFQLENBQVcsbUJBQVgsQ0FBSCxHQUFxQyxNQUEzRTtBQUNBLFFBQUlpQixvQkFBb0IsR0FBR2xCLFNBQVMsR0FBR3B4RCxNQUFNLENBQUNxeEQsR0FBUCxDQUFXLGlCQUFYLENBQUgsR0FBbUMsTUFBdkU7QUFDQSxRQUFJa0IsZ0JBQWdCLEdBQUduQixTQUFTLEdBQUdweEQsTUFBTSxDQUFDcXhELEdBQVAsQ0FBVyxhQUFYLENBQUgsR0FBK0IsTUFBL0Q7O0FBRUEsYUFBU21CLGtCQUFULENBQTRCMXRELElBQTVCLEVBQWtDO0FBQ2hDLGFBQU8sT0FBT0EsSUFBUCxLQUFnQixRQUFoQixJQUE0QixPQUFPQSxJQUFQLEtBQWdCLFVBQTVDO0FBQ1BBLE1BQUFBLElBQUksS0FBSzBzRCxtQkFERixJQUN5QjFzRCxJQUFJLEtBQUtndEQsMEJBRGxDLElBQ2dFaHRELElBQUksS0FBSzRzRCxtQkFEekUsSUFDZ0c1c0QsSUFBSSxLQUFLMnNELHNCQUR6RyxJQUNtSTNzRCxJQUFJLEtBQUtrdEQsbUJBRDVJLElBQ21LbHRELElBQUksS0FBS210RCx3QkFENUssSUFDd00sT0FBT250RCxJQUFQLEtBQWdCLFFBQWhCLElBQTRCQSxJQUFJLEtBQUssSUFBckMsS0FBOENBLElBQUksQ0FBQzJ0RCxRQUFMLEtBQWtCTixlQUFsQixJQUFxQ3J0RCxJQUFJLENBQUMydEQsUUFBTCxLQUFrQlAsZUFBdkQsSUFBMEVwdEQsSUFBSSxDQUFDMnRELFFBQUwsS0FBa0JkLG1CQUE1RixJQUFtSDdzRCxJQUFJLENBQUMydEQsUUFBTCxLQUFrQmIsa0JBQXJJLElBQTJKOXNELElBQUksQ0FBQzJ0RCxRQUFMLEtBQWtCVixzQkFBN0ssSUFBdU1qdEQsSUFBSSxDQUFDMnRELFFBQUwsS0FBa0JKLHNCQUF6TixJQUFtUHZ0RCxJQUFJLENBQUMydEQsUUFBTCxLQUFrQkgsb0JBQXJRLElBQTZSeHRELElBQUksQ0FBQzJ0RCxRQUFMLEtBQWtCRixnQkFBL1MsSUFBbVV6dEQsSUFBSSxDQUFDMnRELFFBQUwsS0FBa0JMLGdCQUFuWSxDQUQvTTtBQUVEOztBQUVELGFBQVNNLE1BQVQsQ0FBZ0I3dUQsTUFBaEIsRUFBd0I7QUFDdEIsVUFBSSxPQUFPQSxNQUFQLEtBQWtCLFFBQWxCLElBQThCQSxNQUFNLEtBQUssSUFBN0MsRUFBbUQ7QUFDakQsWUFBSTR1RCxRQUFRLEdBQUc1dUQsTUFBTSxDQUFDNHVELFFBQXRCOztBQUVBLGdCQUFRQSxRQUFSO0FBQ0UsZUFBS25CLGtCQUFMO0FBQ0UsZ0JBQUl4c0QsSUFBSSxHQUFHakIsTUFBTSxDQUFDaUIsSUFBbEI7O0FBRUEsb0JBQVFBLElBQVI7QUFDRSxtQkFBSytzRCxxQkFBTDtBQUNBLG1CQUFLQywwQkFBTDtBQUNBLG1CQUFLTixtQkFBTDtBQUNBLG1CQUFLRSxtQkFBTDtBQUNBLG1CQUFLRCxzQkFBTDtBQUNBLG1CQUFLTyxtQkFBTDtBQUNFLHVCQUFPbHRELElBQVA7O0FBRUY7QUFDRSxvQkFBSTZ0RCxZQUFZLEdBQUc3dEQsSUFBSSxJQUFJQSxJQUFJLENBQUMydEQsUUFBaEM7O0FBRUEsd0JBQVFFLFlBQVI7QUFDRSx1QkFBS2Ysa0JBQUw7QUFDQSx1QkFBS0csc0JBQUw7QUFDQSx1QkFBS0ksZUFBTDtBQUNBLHVCQUFLRCxlQUFMO0FBQ0EsdUJBQUtQLG1CQUFMO0FBQ0UsMkJBQU9nQixZQUFQOztBQUVGO0FBQ0UsMkJBQU9GLFFBQVA7QUFUSjs7QUFaSjs7QUEwQkYsZUFBS2xCLGlCQUFMO0FBQ0UsbUJBQU9rQixRQUFQO0FBL0JKO0FBaUNEOztBQUVELGFBQU8vekQsU0FBUDtBQUNELEtBeEVhOzs7QUEwRWQsUUFBSWswRCxTQUFTLEdBQUdmLHFCQUFoQjtBQUNBLFFBQUlnQixjQUFjLEdBQUdmLDBCQUFyQjtBQUNBLFFBQUlnQixlQUFlLEdBQUdsQixrQkFBdEI7QUFDQSxRQUFJbUIsZUFBZSxHQUFHcEIsbUJBQXRCO0FBQ0EsUUFBSXFCLE9BQU8sR0FBRzFCLGtCQUFkO0FBQ0EsUUFBSTJCLFVBQVUsR0FBR2xCLHNCQUFqQjtBQUNBLFFBQUltQixRQUFRLEdBQUcxQixtQkFBZjtBQUNBLFFBQUkyQixJQUFJLEdBQUdoQixlQUFYO0FBQ0EsUUFBSWlCLElBQUksR0FBR2xCLGVBQVg7QUFDQSxRQUFJbUIsTUFBTSxHQUFHOUIsaUJBQWI7QUFDQSxRQUFJK0IsUUFBUSxHQUFHNUIsbUJBQWY7QUFDQSxRQUFJNkIsVUFBVSxHQUFHOUIsc0JBQWpCO0FBQ0EsUUFBSStCLFFBQVEsR0FBR3hCLG1CQUFmO0FBQ0EsUUFBSXlCLG1DQUFtQyxHQUFHLEtBQTFDLENBdkZjOztBQXlGZCxhQUFTQyxXQUFULENBQXFCN3ZELE1BQXJCLEVBQTZCO0FBQzNCO0FBQ0UsWUFBSSxDQUFDNHZELG1DQUFMLEVBQTBDO0FBQ3hDQSxVQUFBQSxtQ0FBbUMsR0FBRyxJQUF0QyxDQUR3Qzs7QUFHeEMxNUIsVUFBQUEsT0FBTyxDQUFDLE1BQUQsQ0FBUCxDQUFnQiwwREFBMEQsNERBQTFELEdBQXlILGdFQUF6STtBQUNEO0FBQ0Y7QUFFRCxhQUFPNDVCLGdCQUFnQixDQUFDOXZELE1BQUQsQ0FBaEIsSUFBNEI2dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQmd1RCxxQkFBdEQ7QUFDRDs7QUFDRCxhQUFTOEIsZ0JBQVQsQ0FBMEI5dkQsTUFBMUIsRUFBa0M7QUFDaEMsYUFBTzZ1RCxNQUFNLENBQUM3dUQsTUFBRCxDQUFOLEtBQW1CaXVELDBCQUExQjtBQUNEOztBQUNELGFBQVM4QixpQkFBVCxDQUEyQi92RCxNQUEzQixFQUFtQztBQUNqQyxhQUFPNnVELE1BQU0sQ0FBQzd1RCxNQUFELENBQU4sS0FBbUIrdEQsa0JBQTFCO0FBQ0Q7O0FBQ0QsYUFBU2lDLGlCQUFULENBQTJCaHdELE1BQTNCLEVBQW1DO0FBQ2pDLGFBQU82dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQjh0RCxtQkFBMUI7QUFDRDs7QUFDRCxhQUFTbUMsU0FBVCxDQUFtQmp3RCxNQUFuQixFQUEyQjtBQUN6QixhQUFPLE9BQU9BLE1BQVAsS0FBa0IsUUFBbEIsSUFBOEJBLE1BQU0sS0FBSyxJQUF6QyxJQUFpREEsTUFBTSxDQUFDNHVELFFBQVAsS0FBb0JuQixrQkFBNUU7QUFDRDs7QUFDRCxhQUFTeUMsWUFBVCxDQUFzQmx3RCxNQUF0QixFQUE4QjtBQUM1QixhQUFPNnVELE1BQU0sQ0FBQzd1RCxNQUFELENBQU4sS0FBbUJrdUQsc0JBQTFCO0FBQ0Q7O0FBQ0QsYUFBU2lDLFVBQVQsQ0FBb0Jud0QsTUFBcEIsRUFBNEI7QUFDMUIsYUFBTzZ1RCxNQUFNLENBQUM3dUQsTUFBRCxDQUFOLEtBQW1CMnRELG1CQUExQjtBQUNEOztBQUNELGFBQVN5QyxNQUFULENBQWdCcHdELE1BQWhCLEVBQXdCO0FBQ3RCLGFBQU82dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQnN1RCxlQUExQjtBQUNEOztBQUNELGFBQVMrQixNQUFULENBQWdCcndELE1BQWhCLEVBQXdCO0FBQ3RCLGFBQU82dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQnF1RCxlQUExQjtBQUNEOztBQUNELGFBQVNpQyxRQUFULENBQWtCdHdELE1BQWxCLEVBQTBCO0FBQ3hCLGFBQU82dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQjB0RCxpQkFBMUI7QUFDRDs7QUFDRCxhQUFTNkMsVUFBVCxDQUFvQnZ3RCxNQUFwQixFQUE0QjtBQUMxQixhQUFPNnVELE1BQU0sQ0FBQzd1RCxNQUFELENBQU4sS0FBbUI2dEQsbUJBQTFCO0FBQ0Q7O0FBQ0QsYUFBUzJDLFlBQVQsQ0FBc0J4d0QsTUFBdEIsRUFBOEI7QUFDNUIsYUFBTzZ1RCxNQUFNLENBQUM3dUQsTUFBRCxDQUFOLEtBQW1CNHRELHNCQUExQjtBQUNEOztBQUNELGFBQVM2QyxVQUFULENBQW9CendELE1BQXBCLEVBQTRCO0FBQzFCLGFBQU82dUQsTUFBTSxDQUFDN3VELE1BQUQsQ0FBTixLQUFtQm11RCxtQkFBMUI7QUFDRDs7QUFFRHVDLGlDQUFBLEdBQW9CM0IsU0FBcEI7QUFDQTJCLHNDQUFBLEdBQXlCMUIsY0FBekI7QUFDQTBCLHVDQUFBLEdBQTBCekIsZUFBMUI7QUFDQXlCLHVDQUFBLEdBQTBCeEIsZUFBMUI7QUFDQXdCLCtCQUFBLEdBQWtCdkIsT0FBbEI7QUFDQXVCLGtDQUFBLEdBQXFCdEIsVUFBckI7QUFDQXNCLGdDQUFBLEdBQW1CckIsUUFBbkI7QUFDQXFCLDRCQUFBLEdBQWVwQixJQUFmO0FBQ0FvQiw0QkFBQSxHQUFlbkIsSUFBZjtBQUNBbUIsOEJBQUEsR0FBaUJsQixNQUFqQjtBQUNBa0IsZ0NBQUEsR0FBbUJqQixRQUFuQjtBQUNBaUIsa0NBQUEsR0FBcUJoQixVQUFyQjtBQUNBZ0IsZ0NBQUEsR0FBbUJmLFFBQW5CO0FBQ0FlLG1DQUFBLEdBQXNCYixXQUF0QjtBQUNBYSx3Q0FBQSxHQUEyQlosZ0JBQTNCO0FBQ0FZLHlDQUFBLEdBQTRCWCxpQkFBNUI7QUFDQVcseUNBQUEsR0FBNEJWLGlCQUE1QjtBQUNBVSxpQ0FBQSxHQUFvQlQsU0FBcEI7QUFDQVMsb0NBQUEsR0FBdUJSLFlBQXZCO0FBQ0FRLGtDQUFBLEdBQXFCUCxVQUFyQjtBQUNBTyw4QkFBQSxHQUFpQk4sTUFBakI7QUFDQU0sOEJBQUEsR0FBaUJMLE1BQWpCO0FBQ0FLLGdDQUFBLEdBQW1CSixRQUFuQjtBQUNBSSxrQ0FBQSxHQUFxQkgsVUFBckI7QUFDQUcsb0NBQUEsR0FBdUJGLFlBQXZCO0FBQ0FFLGtDQUFBLEdBQXFCRCxVQUFyQjtBQUNBQywwQ0FBQSxHQUE2Qi9CLGtCQUE3QjtBQUNBK0IsOEJBQUEsR0FBaUI3QixNQUFqQjtBQUNHLEdBcktEO0FBc0tEOztBQ2hMTTtBQUNMNzFELEVBQUFBLGlCQUFBLEdBQWlCUyxtQkFBakI7QUFDRDs7Ozs7OztBQ0NEOztBQUNBLElBQUl3Qyx1QkFBcUIsR0FBR3ZDLE1BQU0sQ0FBQ3VDLHFCQUFuQztBQUNBLElBQUkyQixjQUFjLEdBQUdsRSxNQUFNLENBQUMrSCxTQUFQLENBQWlCN0QsY0FBdEM7QUFDQSxJQUFJK3lELGdCQUFnQixHQUFHajNELE1BQU0sQ0FBQytILFNBQVAsQ0FBaUIzSCxvQkFBeEM7O0FBRUEsU0FBUzZELFFBQVQsQ0FBa0JULEdBQWxCLEVBQXVCO0FBQ3RCLE1BQUlBLEdBQUcsS0FBSyxJQUFSLElBQWdCQSxHQUFHLEtBQUtyQyxTQUE1QixFQUF1QztBQUN0QyxVQUFNLElBQUlDLFNBQUosQ0FBYyx1REFBZCxDQUFOO0FBQ0E7O0FBRUQsU0FBT3BCLE1BQU0sQ0FBQ3dELEdBQUQsQ0FBYjtBQUNBOztBQUVELFNBQVMwekQsZUFBVCxHQUEyQjtBQUMxQixNQUFJO0FBQ0gsUUFBSSxDQUFDbDNELE1BQU0sQ0FBQ2kzQixNQUFaLEVBQW9CO0FBQ25CLGFBQU8sS0FBUDtBQUNBLEtBSEU7QUFPSDs7O0FBQ0EsUUFBSWtnQyxLQUFLLEdBQUcsSUFBSXowRCxNQUFKLENBQVcsS0FBWCxDQUFaLENBUkc7O0FBU0h5MEQsSUFBQUEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLElBQVg7O0FBQ0EsUUFBSW4zRCxNQUFNLENBQUN3SyxtQkFBUCxDQUEyQjJzRCxLQUEzQixFQUFrQyxDQUFsQyxNQUF5QyxHQUE3QyxFQUFrRDtBQUNqRCxhQUFPLEtBQVA7QUFDQSxLQVpFOzs7QUFlSCxRQUFJQyxLQUFLLEdBQUcsRUFBWjs7QUFDQSxTQUFLLElBQUlodEQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxFQUFwQixFQUF3QkEsQ0FBQyxFQUF6QixFQUE2QjtBQUM1Qmd0RCxNQUFBQSxLQUFLLENBQUMsTUFBTTEwRCxNQUFNLENBQUN5ZSxZQUFQLENBQW9CL1csQ0FBcEIsQ0FBUCxDQUFMLEdBQXNDQSxDQUF0QztBQUNBOztBQUNELFFBQUlpdEQsTUFBTSxHQUFHcjNELE1BQU0sQ0FBQ3dLLG1CQUFQLENBQTJCNHNELEtBQTNCLEVBQWtDbG1ELEdBQWxDLENBQXNDLFVBQVUwSCxDQUFWLEVBQWE7QUFDL0QsYUFBT3crQyxLQUFLLENBQUN4K0MsQ0FBRCxDQUFaO0FBQ0EsS0FGWSxDQUFiOztBQUdBLFFBQUl5K0MsTUFBTSxDQUFDdHVELElBQVAsQ0FBWSxFQUFaLE1BQW9CLFlBQXhCLEVBQXNDO0FBQ3JDLGFBQU8sS0FBUDtBQUNBLEtBeEJFOzs7QUEyQkgsUUFBSXV1RCxLQUFLLEdBQUcsRUFBWjtBQUNBLDJCQUF1QnAyRCxLQUF2QixDQUE2QixFQUE3QixFQUFpQytQLE9BQWpDLENBQXlDLFVBQVVzbUQsTUFBVixFQUFrQjtBQUMxREQsTUFBQUEsS0FBSyxDQUFDQyxNQUFELENBQUwsR0FBZ0JBLE1BQWhCO0FBQ0EsS0FGRDs7QUFHQSxRQUFJdjNELE1BQU0sQ0FBQzJHLElBQVAsQ0FBWTNHLE1BQU0sQ0FBQ2kzQixNQUFQLENBQWMsRUFBZCxFQUFrQnFnQyxLQUFsQixDQUFaLEVBQXNDdnVELElBQXRDLENBQTJDLEVBQTNDLE1BQ0Ysc0JBREYsRUFDMEI7QUFDekIsYUFBTyxLQUFQO0FBQ0E7O0FBRUQsV0FBTyxJQUFQO0FBQ0EsR0FyQ0QsQ0FxQ0UsT0FBT3d1QyxHQUFQLEVBQVk7QUFDYjtBQUNBLFdBQU8sS0FBUDtBQUNBO0FBQ0Q7O0lBRURqNEMsWUFBQSxHQUFpQjQzRCxlQUFlLEtBQUtsM0QsTUFBTSxDQUFDaTNCLE1BQVosR0FBcUIsVUFBVXBzQixNQUFWLEVBQWtCL0IsTUFBbEIsRUFBMEI7QUFDOUUsTUFBSW1RLElBQUo7QUFDQSxNQUFJRCxFQUFFLEdBQUcvVSxRQUFRLENBQUM0RyxNQUFELENBQWpCO0FBQ0EsTUFBSWdnQyxPQUFKOztBQUVBLE9BQUssSUFBSXJVLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc1MEIsU0FBUyxDQUFDQyxNQUE5QixFQUFzQzIwQixDQUFDLEVBQXZDLEVBQTJDO0FBQzFDdmQsSUFBQUEsSUFBSSxHQUFHalosTUFBTSxDQUFDNEIsU0FBUyxDQUFDNDBCLENBQUQsQ0FBVixDQUFiOztBQUVBLFNBQUssSUFBSTl5QixHQUFULElBQWdCdVYsSUFBaEIsRUFBc0I7QUFDckIsVUFBSS9VLGNBQWMsQ0FBQzNELElBQWYsQ0FBb0IwWSxJQUFwQixFQUEwQnZWLEdBQTFCLENBQUosRUFBb0M7QUFDbkNzVixRQUFBQSxFQUFFLENBQUN0VixHQUFELENBQUYsR0FBVXVWLElBQUksQ0FBQ3ZWLEdBQUQsQ0FBZDtBQUNBO0FBQ0Q7O0FBRUQsUUFBSW5CLHVCQUFKLEVBQTJCO0FBQzFCc29DLE1BQUFBLE9BQU8sR0FBR3RvQyx1QkFBcUIsQ0FBQzBXLElBQUQsQ0FBL0I7O0FBQ0EsV0FBSyxJQUFJN08sQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3lnQyxPQUFPLENBQUNocEMsTUFBNUIsRUFBb0N1SSxDQUFDLEVBQXJDLEVBQXlDO0FBQ3hDLFlBQUk2c0QsZ0JBQWdCLENBQUMxMkQsSUFBakIsQ0FBc0IwWSxJQUF0QixFQUE0QjR4QixPQUFPLENBQUN6Z0MsQ0FBRCxDQUFuQyxDQUFKLEVBQTZDO0FBQzVDNE8sVUFBQUEsRUFBRSxDQUFDNnhCLE9BQU8sQ0FBQ3pnQyxDQUFELENBQVIsQ0FBRixHQUFpQjZPLElBQUksQ0FBQzR4QixPQUFPLENBQUN6Z0MsQ0FBRCxDQUFSLENBQXJCO0FBQ0E7QUFDRDtBQUNEO0FBQ0Q7O0FBRUQsU0FBTzRPLEVBQVA7QUFDQSxDQXpCRDs7Ozs7Ozs7O0FDdkRBLElBQUl3K0Msc0JBQW9CLEdBQUcsOENBQTNCO0lBRUFsNEQsc0JBQUEsR0FBaUJrNEQsc0JBQWpCOzs7Ozs7Ozs7QUNGQSxJQUFJQyxjQUFZLEdBQUcsWUFBVyxFQUE5Qjs7QUFFMkM7QUFDekMsTUFBSUQsc0JBQW9CLEdBQUd6M0Qsc0JBQTNCOztBQUNBLE1BQUkyM0Qsa0JBQWtCLEdBQUcsRUFBekI7QUFDQSxNQUFJeHdELEtBQUcsR0FBR3ZILFFBQVEsQ0FBQ1ksSUFBVCxDQUFjOFAsSUFBZCxDQUFtQnJRLE1BQU0sQ0FBQytILFNBQVAsQ0FBaUI3RCxjQUFwQyxDQUFWOztBQUVBdXpELEVBQUFBLGNBQVksR0FBRyxVQUFTRSxJQUFULEVBQWU7QUFDNUIsUUFBSXhnRCxPQUFPLEdBQUcsY0FBY3dnRCxJQUE1Qjs7QUFDQSxRQUFJLE9BQU9uN0IsT0FBUCxLQUFtQixXQUF2QixFQUFvQztBQUNsQ0EsTUFBQUEsT0FBTyxDQUFDMzhCLEtBQVIsQ0FBY3NYLE9BQWQ7QUFDRDs7QUFDRCxRQUFJO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsWUFBTSxJQUFJQyxLQUFKLENBQVVELE9BQVYsQ0FBTjtBQUNELEtBTEQsQ0FLRSxPQUFPb0ssQ0FBUCxFQUFVO0FBQ2IsR0FYRDtBQVlEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU3EyQyxnQkFBVCxDQUF3QkMsU0FBeEIsRUFBbUN4NkMsTUFBbkMsRUFBMkNrYyxRQUEzQyxFQUFxRHUrQixhQUFyRCxFQUFvRUMsUUFBcEUsRUFBOEU7QUFDNUUsRUFBMkM7QUFDekMsU0FBSyxJQUFJQyxZQUFULElBQXlCSCxTQUF6QixFQUFvQztBQUNsQyxVQUFJM3dELEtBQUcsQ0FBQzJ3RCxTQUFELEVBQVlHLFlBQVosQ0FBUCxFQUFrQztBQUNoQyxZQUFJbjRELEtBQUosQ0FEZ0M7QUFHaEM7QUFDQTs7QUFDQSxZQUFJO0FBQ0Y7QUFDQTtBQUNBLGNBQUksT0FBT2c0RCxTQUFTLENBQUNHLFlBQUQsQ0FBaEIsS0FBbUMsVUFBdkMsRUFBbUQ7QUFDakQsZ0JBQUl6Z0IsR0FBRyxHQUFHbmdDLEtBQUssQ0FDYixDQUFDMGdELGFBQWEsSUFBSSxhQUFsQixJQUFtQyxJQUFuQyxHQUEwQ3YrQixRQUExQyxHQUFxRCxTQUFyRCxHQUFpRXkrQixZQUFqRSxHQUFnRixnQkFBaEYsR0FDQSw4RUFEQSxHQUNpRixPQUFPSCxTQUFTLENBQUNHLFlBQUQsQ0FEakcsR0FDa0gsSUFGckcsQ0FBZjtBQUlBemdCLFlBQUFBLEdBQUcsQ0FBQzN5QyxJQUFKLEdBQVcscUJBQVg7QUFDQSxrQkFBTTJ5QyxHQUFOO0FBQ0Q7O0FBQ0QxM0MsVUFBQUEsS0FBSyxHQUFHZzRELFNBQVMsQ0FBQ0csWUFBRCxDQUFULENBQXdCMzZDLE1BQXhCLEVBQWdDMjZDLFlBQWhDLEVBQThDRixhQUE5QyxFQUE2RHYrQixRQUE3RCxFQUF1RSxJQUF2RSxFQUE2RWkrQixzQkFBN0UsQ0FBUjtBQUNELFNBWkQsQ0FZRSxPQUFPUyxFQUFQLEVBQVc7QUFDWHA0RCxVQUFBQSxLQUFLLEdBQUdvNEQsRUFBUjtBQUNEOztBQUNELFlBQUlwNEQsS0FBSyxJQUFJLEVBQUVBLEtBQUssWUFBWXVYLEtBQW5CLENBQWIsRUFBd0M7QUFDdENxZ0QsVUFBQUEsY0FBWSxDQUNWLENBQUNLLGFBQWEsSUFBSSxhQUFsQixJQUFtQywwQkFBbkMsR0FDQXYrQixRQURBLEdBQ1csSUFEWCxHQUNrQnkrQixZQURsQixHQUNpQyxpQ0FEakMsR0FFQSwyREFGQSxHQUU4RCxPQUFPbjRELEtBRnJFLEdBRTZFLElBRjdFLEdBR0EsaUVBSEEsR0FJQSxnRUFKQSxHQUtBLGlDQU5VLENBQVo7QUFRRDs7QUFDRCxZQUFJQSxLQUFLLFlBQVl1WCxLQUFqQixJQUEwQixFQUFFdlgsS0FBSyxDQUFDc1gsT0FBTixJQUFpQnVnRCxrQkFBbkIsQ0FBOUIsRUFBc0U7QUFDcEU7QUFDQTtBQUNBQSxVQUFBQSxrQkFBa0IsQ0FBQzczRCxLQUFLLENBQUNzWCxPQUFQLENBQWxCLEdBQW9DLElBQXBDO0FBRUEsY0FBSStnRCxLQUFLLEdBQUdILFFBQVEsR0FBR0EsUUFBUSxFQUFYLEdBQWdCLEVBQXBDO0FBRUFOLFVBQUFBLGNBQVksQ0FDVixZQUFZbCtCLFFBQVosR0FBdUIsU0FBdkIsR0FBbUMxNUIsS0FBSyxDQUFDc1gsT0FBekMsSUFBb0QrZ0QsS0FBSyxJQUFJLElBQVQsR0FBZ0JBLEtBQWhCLEdBQXdCLEVBQTVFLENBRFUsQ0FBWjtBQUdEO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Y7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQU4sZ0JBQWMsQ0FBQ08saUJBQWYsR0FBbUMsWUFBVztBQUM1QyxFQUEyQztBQUN6Q1QsSUFBQUEsa0JBQWtCLEdBQUcsRUFBckI7QUFDRDtBQUNGLENBSkQ7O0lBTUFwNEQsZ0JBQUEsR0FBaUJzNEQsZ0JBQWpCOzs7Ozs7Ozs7QUM1RkEsSUFBSVEsU0FBTyxHQUFHcjRELGlCQUFkOztBQUNBLElBQUlrM0IsUUFBTSxHQUFHbDNCLFlBQWI7O0FBRUEsSUFBSXkzRCxvQkFBb0IsR0FBR3ozRCxzQkFBM0I7O0FBQ0EsSUFBSTYzRCxjQUFjLEdBQUc3M0QsZ0JBQXJCOztBQUVBLElBQUltSCxHQUFHLEdBQUd2SCxRQUFRLENBQUNZLElBQVQsQ0FBYzhQLElBQWQsQ0FBbUJyUSxNQUFNLENBQUMrSCxTQUFQLENBQWlCN0QsY0FBcEMsQ0FBVjs7QUFDQSxJQUFJdXpELGNBQVksR0FBRyxZQUFXLEVBQTlCOztBQUUyQztBQUN6Q0EsRUFBQUEsY0FBWSxHQUFHLFVBQVNFLElBQVQsRUFBZTtBQUM1QixRQUFJeGdELE9BQU8sR0FBRyxjQUFjd2dELElBQTVCOztBQUNBLFFBQUksT0FBT243QixPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2xDQSxNQUFBQSxPQUFPLENBQUMzOEIsS0FBUixDQUFjc1gsT0FBZDtBQUNEOztBQUNELFFBQUk7QUFDRjtBQUNBO0FBQ0E7QUFDQSxZQUFNLElBQUlDLEtBQUosQ0FBVUQsT0FBVixDQUFOO0FBQ0QsS0FMRCxDQUtFLE9BQU9vSyxDQUFQLEVBQVU7QUFDYixHQVhEO0FBWUQ7O0FBRUQsU0FBUzgyQyw0QkFBVCxHQUF3QztBQUN0QyxTQUFPLElBQVA7QUFDRDs7SUFFRC80RCx1QkFBQSxHQUFpQixVQUFTZzVELGNBQVQsRUFBeUJDLG1CQUF6QixFQUE4QztBQUM3RDtBQUNBLE1BQUlDLGVBQWUsR0FBRyxPQUFPLzFELE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0NBLE1BQU0sQ0FBQ0ksUUFBN0Q7QUFDQSxNQUFJNDFELG9CQUFvQixHQUFHLFlBQTNCLENBSDZEOztBQUs3RDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLFdBQVNDLGFBQVQsQ0FBdUJDLGFBQXZCLEVBQXNDO0FBQ3BDLFFBQUlDLFVBQVUsR0FBR0QsYUFBYSxLQUFLSCxlQUFlLElBQUlHLGFBQWEsQ0FBQ0gsZUFBRCxDQUFoQyxJQUFxREcsYUFBYSxDQUFDRixvQkFBRCxDQUF2RSxDQUE5Qjs7QUFDQSxRQUFJLE9BQU9HLFVBQVAsS0FBc0IsVUFBMUIsRUFBc0M7QUFDcEMsYUFBT0EsVUFBUDtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUUsTUFBSUMsU0FBUyxHQUFHLGVBQWhCLENBekU2RDtBQTRFN0Q7O0FBQ0EsTUFBSUMsY0FBYyxHQUFHO0FBQ25CaGhELElBQUFBLEtBQUssRUFBRWloRCwwQkFBMEIsQ0FBQyxPQUFELENBRGQ7QUFFbkJDLElBQUFBLElBQUksRUFBRUQsMEJBQTBCLENBQUMsU0FBRCxDQUZiO0FBR25CNTFELElBQUFBLElBQUksRUFBRTQxRCwwQkFBMEIsQ0FBQyxVQUFELENBSGI7QUFJbkI3dkQsSUFBQUEsTUFBTSxFQUFFNnZELDBCQUEwQixDQUFDLFFBQUQsQ0FKZjtBQUtuQnp5RCxJQUFBQSxNQUFNLEVBQUV5eUQsMEJBQTBCLENBQUMsUUFBRCxDQUxmO0FBTW5CenRELElBQUFBLE1BQU0sRUFBRXl0RCwwQkFBMEIsQ0FBQyxRQUFELENBTmY7QUFPbkJ2MkQsSUFBQUEsTUFBTSxFQUFFdTJELDBCQUEwQixDQUFDLFFBQUQsQ0FQZjtBQVNuQm40QixJQUFBQSxHQUFHLEVBQUVxNEIsb0JBQW9CLEVBVE47QUFVbkJDLElBQUFBLE9BQU8sRUFBRUMsd0JBVlU7QUFXbkJ4K0MsSUFBQUEsT0FBTyxFQUFFeStDLHdCQUF3QixFQVhkO0FBWW5CQyxJQUFBQSxXQUFXLEVBQUVDLDRCQUE0QixFQVp0QjtBQWFuQkMsSUFBQUEsVUFBVSxFQUFFQyx5QkFiTztBQWNuQmorQixJQUFBQSxJQUFJLEVBQUVrK0IsaUJBQWlCLEVBZEo7QUFlbkJDLElBQUFBLFFBQVEsRUFBRUMseUJBZlM7QUFnQm5CQyxJQUFBQSxLQUFLLEVBQUVDLHFCQWhCWTtBQWlCbkJDLElBQUFBLFNBQVMsRUFBRUMsc0JBakJRO0FBa0JuQkMsSUFBQUEsS0FBSyxFQUFFQyxzQkFsQlk7QUFtQm5CQyxJQUFBQSxLQUFLLEVBQUVDO0FBbkJZLEdBQXJCO0FBc0JBO0FBQ0Y7QUFDQTtBQUNBOztBQUNFOztBQUNBLFdBQVNsaUMsRUFBVCxDQUFZMVcsQ0FBWixFQUFlQyxDQUFmLEVBQWtCO0FBQ2hCO0FBQ0EsUUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWDtBQUNBO0FBQ0EsYUFBT0QsQ0FBQyxLQUFLLENBQU4sSUFBVyxJQUFJQSxDQUFKLEtBQVUsSUFBSUMsQ0FBaEM7QUFDRCxLQUpELE1BSU87QUFDTDtBQUNBLGFBQU9ELENBQUMsS0FBS0EsQ0FBTixJQUFXQyxDQUFDLEtBQUtBLENBQXhCO0FBQ0Q7QUFDRjtBQUNEOztBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRSxXQUFTNDRDLGFBQVQsQ0FBdUJqakQsT0FBdkIsRUFBZ0M7QUFDOUIsU0FBS0EsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBSytnRCxLQUFMLEdBQWEsRUFBYjtBQUNELEdBL0g0RDs7O0FBaUk3RGtDLEVBQUFBLGFBQWEsQ0FBQ3J5RCxTQUFkLEdBQTBCcVAsS0FBSyxDQUFDclAsU0FBaEM7O0FBRUEsV0FBU3N5RCwwQkFBVCxDQUFvQ0MsUUFBcEMsRUFBOEM7QUFDNUMsSUFBMkM7QUFDekMsVUFBSUMsdUJBQXVCLEdBQUcsRUFBOUI7QUFDQSxVQUFJQywwQkFBMEIsR0FBRyxDQUFqQztBQUNEOztBQUNELGFBQVNDLFNBQVQsQ0FBbUJDLFVBQW5CLEVBQStCQyxLQUEvQixFQUFzQ0MsUUFBdEMsRUFBZ0Q5QyxhQUFoRCxFQUErRHYrQixRQUEvRCxFQUF5RXNoQyxZQUF6RSxFQUF1RkMsTUFBdkYsRUFBK0Y7QUFDN0ZoRCxNQUFBQSxhQUFhLEdBQUdBLGFBQWEsSUFBSWUsU0FBakM7QUFDQWdDLE1BQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJRCxRQUEvQjs7QUFFQSxVQUFJRSxNQUFNLEtBQUt0RCxvQkFBZixFQUFxQztBQUNuQyxZQUFJZSxtQkFBSixFQUF5QjtBQUN2QjtBQUNBLGNBQUloaEIsR0FBRyxHQUFHLElBQUluZ0MsS0FBSixDQUNSLHlGQUNBLGlEQURBLEdBRUEsZ0RBSFEsQ0FBVjtBQUtBbWdDLFVBQUFBLEdBQUcsQ0FBQzN5QyxJQUFKLEdBQVcscUJBQVg7QUFDQSxnQkFBTTJ5QyxHQUFOO0FBQ0QsU0FURCxNQVNPLElBQTZDLE9BQU8vYSxPQUFQLEtBQW1CLFdBQWhFLEVBQTZFO0FBQ2xGO0FBQ0EsY0FBSXUrQixRQUFRLEdBQUdqRCxhQUFhLEdBQUcsR0FBaEIsR0FBc0I4QyxRQUFyQzs7QUFDQSxjQUNFLENBQUNMLHVCQUF1QixDQUFDUSxRQUFELENBQXhCO0FBRUFQLFVBQUFBLDBCQUEwQixHQUFHLENBSC9CLEVBSUU7QUFDQS9DLFlBQUFBLGNBQVksQ0FDViwyREFDQSxvQkFEQSxHQUN1Qm9ELFlBRHZCLEdBQ3NDLGFBRHRDLEdBQ3NEL0MsYUFEdEQsR0FDdUUsd0JBRHZFLEdBRUEseURBRkEsR0FHQSxnRUFIQSxHQUlBLCtEQUpBLEdBSWtFLGNBTHhELENBQVo7QUFPQXlDLFlBQUFBLHVCQUF1QixDQUFDUSxRQUFELENBQXZCLEdBQW9DLElBQXBDO0FBQ0FQLFlBQUFBLDBCQUEwQjtBQUMzQjtBQUNGO0FBQ0Y7O0FBQ0QsVUFBSUcsS0FBSyxDQUFDQyxRQUFELENBQUwsSUFBbUIsSUFBdkIsRUFBNkI7QUFDM0IsWUFBSUYsVUFBSixFQUFnQjtBQUNkLGNBQUlDLEtBQUssQ0FBQ0MsUUFBRCxDQUFMLEtBQW9CLElBQXhCLEVBQThCO0FBQzVCLG1CQUFPLElBQUlSLGFBQUosQ0FBa0IsU0FBUzdnQyxRQUFULEdBQW9CLElBQXBCLEdBQTJCc2hDLFlBQTNCLEdBQTBDLDBCQUExQyxJQUF3RSxTQUFTL0MsYUFBVCxHQUF5Qiw2QkFBakcsQ0FBbEIsQ0FBUDtBQUNEOztBQUNELGlCQUFPLElBQUlzQyxhQUFKLENBQWtCLFNBQVM3Z0MsUUFBVCxHQUFvQixJQUFwQixHQUEyQnNoQyxZQUEzQixHQUEwQyw2QkFBMUMsSUFBMkUsTUFBTS9DLGFBQU4sR0FBc0Isa0NBQWpHLENBQWxCLENBQVA7QUFDRDs7QUFDRCxlQUFPLElBQVA7QUFDRCxPQVJELE1BUU87QUFDTCxlQUFPd0MsUUFBUSxDQUFDSyxLQUFELEVBQVFDLFFBQVIsRUFBa0I5QyxhQUFsQixFQUFpQ3YrQixRQUFqQyxFQUEyQ3NoQyxZQUEzQyxDQUFmO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJRyxnQkFBZ0IsR0FBR1AsU0FBUyxDQUFDcHFELElBQVYsQ0FBZSxJQUFmLEVBQXFCLEtBQXJCLENBQXZCO0FBQ0EycUQsSUFBQUEsZ0JBQWdCLENBQUNOLFVBQWpCLEdBQThCRCxTQUFTLENBQUNwcUQsSUFBVixDQUFlLElBQWYsRUFBcUIsSUFBckIsQ0FBOUI7QUFFQSxXQUFPMnFELGdCQUFQO0FBQ0Q7O0FBRUQsV0FBU2pDLDBCQUFULENBQW9Da0MsWUFBcEMsRUFBa0Q7QUFDaEQsYUFBU1gsUUFBVCxDQUFrQkssS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DOUMsYUFBbkMsRUFBa0R2K0IsUUFBbEQsRUFBNERzaEMsWUFBNUQsRUFBMEVDLE1BQTFFLEVBQWtGO0FBQ2hGLFVBQUlJLFNBQVMsR0FBR1AsS0FBSyxDQUFDQyxRQUFELENBQXJCO0FBQ0EsVUFBSU8sUUFBUSxHQUFHQyxXQUFXLENBQUNGLFNBQUQsQ0FBMUI7O0FBQ0EsVUFBSUMsUUFBUSxLQUFLRixZQUFqQixFQUErQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxZQUFJSSxXQUFXLEdBQUdDLGNBQWMsQ0FBQ0osU0FBRCxDQUFoQztBQUVBLGVBQU8sSUFBSWQsYUFBSixDQUFrQixhQUFhN2dDLFFBQWIsR0FBd0IsSUFBeEIsR0FBK0JzaEMsWUFBL0IsR0FBOEMsWUFBOUMsSUFBOEQsTUFBTVEsV0FBTixHQUFvQixpQkFBcEIsR0FBd0N2RCxhQUF4QyxHQUF3RCxjQUF0SCxLQUF5SSxNQUFNbUQsWUFBTixHQUFxQixJQUE5SixDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT1osMEJBQTBCLENBQUNDLFFBQUQsQ0FBakM7QUFDRDs7QUFFRCxXQUFTckIsb0JBQVQsR0FBZ0M7QUFDOUIsV0FBT29CLDBCQUEwQixDQUFDaEMsNEJBQUQsQ0FBakM7QUFDRDs7QUFFRCxXQUFTYyx3QkFBVCxDQUFrQ29DLFdBQWxDLEVBQStDO0FBQzdDLGFBQVNqQixRQUFULENBQWtCSyxLQUFsQixFQUF5QkMsUUFBekIsRUFBbUM5QyxhQUFuQyxFQUFrRHYrQixRQUFsRCxFQUE0RHNoQyxZQUE1RCxFQUEwRTtBQUN4RSxVQUFJLE9BQU9VLFdBQVAsS0FBdUIsVUFBM0IsRUFBdUM7QUFDckMsZUFBTyxJQUFJbkIsYUFBSixDQUFrQixlQUFlUyxZQUFmLEdBQThCLGtCQUE5QixHQUFtRC9DLGFBQW5ELEdBQW1FLGlEQUFyRixDQUFQO0FBQ0Q7O0FBQ0QsVUFBSW9ELFNBQVMsR0FBR1AsS0FBSyxDQUFDQyxRQUFELENBQXJCOztBQUNBLFVBQUksQ0FBQzF1RCxLQUFLLENBQUNDLE9BQU4sQ0FBYyt1RCxTQUFkLENBQUwsRUFBK0I7QUFDN0IsWUFBSUMsUUFBUSxHQUFHQyxXQUFXLENBQUNGLFNBQUQsQ0FBMUI7QUFDQSxlQUFPLElBQUlkLGFBQUosQ0FBa0IsYUFBYTdnQyxRQUFiLEdBQXdCLElBQXhCLEdBQStCc2hDLFlBQS9CLEdBQThDLFlBQTlDLElBQThELE1BQU1NLFFBQU4sR0FBaUIsaUJBQWpCLEdBQXFDckQsYUFBckMsR0FBcUQsdUJBQW5ILENBQWxCLENBQVA7QUFDRDs7QUFDRCxXQUFLLElBQUkxdEQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzh3RCxTQUFTLENBQUNyNUQsTUFBOUIsRUFBc0N1SSxDQUFDLEVBQXZDLEVBQTJDO0FBQ3pDLFlBQUl2SyxLQUFLLEdBQUcwN0QsV0FBVyxDQUFDTCxTQUFELEVBQVk5d0QsQ0FBWixFQUFlMHRELGFBQWYsRUFBOEJ2K0IsUUFBOUIsRUFBd0NzaEMsWUFBWSxHQUFHLEdBQWYsR0FBcUJ6d0QsQ0FBckIsR0FBeUIsR0FBakUsRUFBc0VvdEQsb0JBQXRFLENBQXZCOztBQUNBLFlBQUkzM0QsS0FBSyxZQUFZdVgsS0FBckIsRUFBNEI7QUFDMUIsaUJBQU92WCxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7QUFDRCxXQUFPdzZELDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU2xCLHdCQUFULEdBQW9DO0FBQ2xDLGFBQVNrQixRQUFULENBQWtCSyxLQUFsQixFQUF5QkMsUUFBekIsRUFBbUM5QyxhQUFuQyxFQUFrRHYrQixRQUFsRCxFQUE0RHNoQyxZQUE1RCxFQUEwRTtBQUN4RSxVQUFJSyxTQUFTLEdBQUdQLEtBQUssQ0FBQ0MsUUFBRCxDQUFyQjs7QUFDQSxVQUFJLENBQUN0QyxjQUFjLENBQUM0QyxTQUFELENBQW5CLEVBQWdDO0FBQzlCLFlBQUlDLFFBQVEsR0FBR0MsV0FBVyxDQUFDRixTQUFELENBQTFCO0FBQ0EsZUFBTyxJQUFJZCxhQUFKLENBQWtCLGFBQWE3Z0MsUUFBYixHQUF3QixJQUF4QixHQUErQnNoQyxZQUEvQixHQUE4QyxZQUE5QyxJQUE4RCxNQUFNTSxRQUFOLEdBQWlCLGlCQUFqQixHQUFxQ3JELGFBQXJDLEdBQXFELG9DQUFuSCxDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT3VDLDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU2hCLDRCQUFULEdBQXdDO0FBQ3RDLGFBQVNnQixRQUFULENBQWtCSyxLQUFsQixFQUF5QkMsUUFBekIsRUFBbUM5QyxhQUFuQyxFQUFrRHYrQixRQUFsRCxFQUE0RHNoQyxZQUE1RCxFQUEwRTtBQUN4RSxVQUFJSyxTQUFTLEdBQUdQLEtBQUssQ0FBQ0MsUUFBRCxDQUFyQjs7QUFDQSxVQUFJLENBQUN4QyxTQUFPLENBQUNuRCxrQkFBUixDQUEyQmlHLFNBQTNCLENBQUwsRUFBNEM7QUFDMUMsWUFBSUMsUUFBUSxHQUFHQyxXQUFXLENBQUNGLFNBQUQsQ0FBMUI7QUFDQSxlQUFPLElBQUlkLGFBQUosQ0FBa0IsYUFBYTdnQyxRQUFiLEdBQXdCLElBQXhCLEdBQStCc2hDLFlBQS9CLEdBQThDLFlBQTlDLElBQThELE1BQU1NLFFBQU4sR0FBaUIsaUJBQWpCLEdBQXFDckQsYUFBckMsR0FBcUQseUNBQW5ILENBQWxCLENBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7QUFDRCxXQUFPdUMsMEJBQTBCLENBQUNDLFFBQUQsQ0FBakM7QUFDRDs7QUFFRCxXQUFTZCx5QkFBVCxDQUFtQ2dDLGFBQW5DLEVBQWtEO0FBQ2hELGFBQVNsQixRQUFULENBQWtCSyxLQUFsQixFQUF5QkMsUUFBekIsRUFBbUM5QyxhQUFuQyxFQUFrRHYrQixRQUFsRCxFQUE0RHNoQyxZQUE1RCxFQUEwRTtBQUN4RSxVQUFJLEVBQUVGLEtBQUssQ0FBQ0MsUUFBRCxDQUFMLFlBQTJCWSxhQUE3QixDQUFKLEVBQWlEO0FBQy9DLFlBQUlDLGlCQUFpQixHQUFHRCxhQUFhLENBQUM1MkQsSUFBZCxJQUFzQmkwRCxTQUE5QztBQUNBLFlBQUk2QyxlQUFlLEdBQUdDLFlBQVksQ0FBQ2hCLEtBQUssQ0FBQ0MsUUFBRCxDQUFOLENBQWxDO0FBQ0EsZUFBTyxJQUFJUixhQUFKLENBQWtCLGFBQWE3Z0MsUUFBYixHQUF3QixJQUF4QixHQUErQnNoQyxZQUEvQixHQUE4QyxZQUE5QyxJQUE4RCxNQUFNYSxlQUFOLEdBQXdCLGlCQUF4QixHQUE0QzVELGFBQTVDLEdBQTRELGNBQTFILEtBQTZJLGtCQUFrQjJELGlCQUFsQixHQUFzQyxJQUFuTCxDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT3BCLDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU1QscUJBQVQsQ0FBK0IrQixjQUEvQixFQUErQztBQUM3QyxRQUFJLENBQUMxdkQsS0FBSyxDQUFDQyxPQUFOLENBQWN5dkQsY0FBZCxDQUFMLEVBQW9DO0FBQ2xDLE1BQTJDO0FBQ3pDLFlBQUloNkQsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQXZCLEVBQTBCO0FBQ3hCNDFELFVBQUFBLGNBQVksQ0FDVixpRUFBaUU3MUQsU0FBUyxDQUFDQyxNQUEzRSxHQUFvRixjQUFwRixHQUNBLDBFQUZVLENBQVo7QUFJRCxTQUxELE1BS087QUFDTDQxRCxVQUFBQSxjQUFZLENBQUMsd0RBQUQsQ0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsYUFBT1ksNEJBQVA7QUFDRDs7QUFFRCxhQUFTaUMsUUFBVCxDQUFrQkssS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DOUMsYUFBbkMsRUFBa0R2K0IsUUFBbEQsRUFBNERzaEMsWUFBNUQsRUFBMEU7QUFDeEUsVUFBSUssU0FBUyxHQUFHUCxLQUFLLENBQUNDLFFBQUQsQ0FBckI7O0FBQ0EsV0FBSyxJQUFJeHdELENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUd3eEQsY0FBYyxDQUFDLzVELE1BQW5DLEVBQTJDdUksQ0FBQyxFQUE1QyxFQUFnRDtBQUM5QyxZQUFJNnRCLEVBQUUsQ0FBQ2lqQyxTQUFELEVBQVlVLGNBQWMsQ0FBQ3h4RCxDQUFELENBQTFCLENBQU4sRUFBc0M7QUFDcEMsaUJBQU8sSUFBUDtBQUNEO0FBQ0Y7O0FBRUQsVUFBSXl4RCxZQUFZLEdBQUdwdUMsSUFBSSxDQUFDMVosU0FBTCxDQUFlNm5ELGNBQWYsRUFBK0IsU0FBUzVuRCxRQUFULENBQWtCdFEsR0FBbEIsRUFBdUI5QyxLQUF2QixFQUE4QjtBQUM5RSxZQUFJMkcsSUFBSSxHQUFHK3pELGNBQWMsQ0FBQzE2RCxLQUFELENBQXpCOztBQUNBLFlBQUkyRyxJQUFJLEtBQUssUUFBYixFQUF1QjtBQUNyQixpQkFBTzdFLE1BQU0sQ0FBQzlCLEtBQUQsQ0FBYjtBQUNEOztBQUNELGVBQU9BLEtBQVA7QUFDRCxPQU5rQixDQUFuQjtBQU9BLGFBQU8sSUFBSXc1RCxhQUFKLENBQWtCLGFBQWE3Z0MsUUFBYixHQUF3QixJQUF4QixHQUErQnNoQyxZQUEvQixHQUE4QyxjQUE5QyxHQUErRG40RCxNQUFNLENBQUN3NEQsU0FBRCxDQUFyRSxHQUFtRixJQUFuRixJQUEyRixrQkFBa0JwRCxhQUFsQixHQUFrQyxxQkFBbEMsR0FBMEQrRCxZQUExRCxHQUF5RSxHQUFwSyxDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsV0FBT3hCLDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU1gseUJBQVQsQ0FBbUM0QixXQUFuQyxFQUFnRDtBQUM5QyxhQUFTakIsUUFBVCxDQUFrQkssS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DOUMsYUFBbkMsRUFBa0R2K0IsUUFBbEQsRUFBNERzaEMsWUFBNUQsRUFBMEU7QUFDeEUsVUFBSSxPQUFPVSxXQUFQLEtBQXVCLFVBQTNCLEVBQXVDO0FBQ3JDLGVBQU8sSUFBSW5CLGFBQUosQ0FBa0IsZUFBZVMsWUFBZixHQUE4QixrQkFBOUIsR0FBbUQvQyxhQUFuRCxHQUFtRSxrREFBckYsQ0FBUDtBQUNEOztBQUNELFVBQUlvRCxTQUFTLEdBQUdQLEtBQUssQ0FBQ0MsUUFBRCxDQUFyQjtBQUNBLFVBQUlPLFFBQVEsR0FBR0MsV0FBVyxDQUFDRixTQUFELENBQTFCOztBQUNBLFVBQUlDLFFBQVEsS0FBSyxRQUFqQixFQUEyQjtBQUN6QixlQUFPLElBQUlmLGFBQUosQ0FBa0IsYUFBYTdnQyxRQUFiLEdBQXdCLElBQXhCLEdBQStCc2hDLFlBQS9CLEdBQThDLFlBQTlDLElBQThELE1BQU1NLFFBQU4sR0FBaUIsaUJBQWpCLEdBQXFDckQsYUFBckMsR0FBcUQsd0JBQW5ILENBQWxCLENBQVA7QUFDRDs7QUFDRCxXQUFLLElBQUlwMEQsR0FBVCxJQUFnQnczRCxTQUFoQixFQUEyQjtBQUN6QixZQUFJaDBELEdBQUcsQ0FBQ2cwRCxTQUFELEVBQVl4M0QsR0FBWixDQUFQLEVBQXlCO0FBQ3ZCLGNBQUk3RCxLQUFLLEdBQUcwN0QsV0FBVyxDQUFDTCxTQUFELEVBQVl4M0QsR0FBWixFQUFpQm8wRCxhQUFqQixFQUFnQ3YrQixRQUFoQyxFQUEwQ3NoQyxZQUFZLEdBQUcsR0FBZixHQUFxQm4zRCxHQUEvRCxFQUFvRTh6RCxvQkFBcEUsQ0FBdkI7O0FBQ0EsY0FBSTMzRCxLQUFLLFlBQVl1WCxLQUFyQixFQUE0QjtBQUMxQixtQkFBT3ZYLEtBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBT3c2RCwwQkFBMEIsQ0FBQ0MsUUFBRCxDQUFqQztBQUNEOztBQUVELFdBQVNQLHNCQUFULENBQWdDK0IsbUJBQWhDLEVBQXFEO0FBQ25ELFFBQUksQ0FBQzV2RCxLQUFLLENBQUNDLE9BQU4sQ0FBYzJ2RCxtQkFBZCxDQUFMLEVBQXlDO0FBQ3ZDOTVELE1BQXdDeTFELGNBQVksQ0FBQyx3RUFBRCxDQUFwRCxDQUFBO0FBQ0EsYUFBT1ksNEJBQVA7QUFDRDs7QUFFRCxTQUFLLElBQUlqdUQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzB4RCxtQkFBbUIsQ0FBQ2o2RCxNQUF4QyxFQUFnRHVJLENBQUMsRUFBakQsRUFBcUQ7QUFDbkQsVUFBSTJ4RCxPQUFPLEdBQUdELG1CQUFtQixDQUFDMXhELENBQUQsQ0FBakM7O0FBQ0EsVUFBSSxPQUFPMnhELE9BQVAsS0FBbUIsVUFBdkIsRUFBbUM7QUFDakN0RSxRQUFBQSxjQUFZLENBQ1YsdUZBQ0EsV0FEQSxHQUNjdUUsd0JBQXdCLENBQUNELE9BQUQsQ0FEdEMsR0FDa0QsWUFEbEQsR0FDaUUzeEQsQ0FEakUsR0FDcUUsR0FGM0QsQ0FBWjtBQUlBLGVBQU9pdUQsNEJBQVA7QUFDRDtBQUNGOztBQUVELGFBQVNpQyxRQUFULENBQWtCSyxLQUFsQixFQUF5QkMsUUFBekIsRUFBbUM5QyxhQUFuQyxFQUFrRHYrQixRQUFsRCxFQUE0RHNoQyxZQUE1RCxFQUEwRTtBQUN4RSxXQUFLLElBQUl6d0QsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzB4RCxtQkFBbUIsQ0FBQ2o2RCxNQUF4QyxFQUFnRHVJLENBQUMsRUFBakQsRUFBcUQ7QUFDbkQsWUFBSTJ4RCxPQUFPLEdBQUdELG1CQUFtQixDQUFDMXhELENBQUQsQ0FBakM7O0FBQ0EsWUFBSTJ4RCxPQUFPLENBQUNwQixLQUFELEVBQVFDLFFBQVIsRUFBa0I5QyxhQUFsQixFQUFpQ3YrQixRQUFqQyxFQUEyQ3NoQyxZQUEzQyxFQUF5RHJELG9CQUF6RCxDQUFQLElBQXlGLElBQTdGLEVBQW1HO0FBQ2pHLGlCQUFPLElBQVA7QUFDRDtBQUNGOztBQUVELGFBQU8sSUFBSTRDLGFBQUosQ0FBa0IsYUFBYTdnQyxRQUFiLEdBQXdCLElBQXhCLEdBQStCc2hDLFlBQS9CLEdBQThDLGdCQUE5QyxJQUFrRSxNQUFNL0MsYUFBTixHQUFzQixJQUF4RixDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsV0FBT3VDLDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU2IsaUJBQVQsR0FBNkI7QUFDM0IsYUFBU2EsUUFBVCxDQUFrQkssS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DOUMsYUFBbkMsRUFBa0R2K0IsUUFBbEQsRUFBNERzaEMsWUFBNUQsRUFBMEU7QUFDeEUsVUFBSSxDQUFDb0IsTUFBTSxDQUFDdEIsS0FBSyxDQUFDQyxRQUFELENBQU4sQ0FBWCxFQUE4QjtBQUM1QixlQUFPLElBQUlSLGFBQUosQ0FBa0IsYUFBYTdnQyxRQUFiLEdBQXdCLElBQXhCLEdBQStCc2hDLFlBQS9CLEdBQThDLGdCQUE5QyxJQUFrRSxNQUFNL0MsYUFBTixHQUFzQiwwQkFBeEYsQ0FBbEIsQ0FBUDtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOztBQUNELFdBQU91QywwQkFBMEIsQ0FBQ0MsUUFBRCxDQUFqQztBQUNEOztBQUVELFdBQVNMLHNCQUFULENBQWdDaUMsVUFBaEMsRUFBNEM7QUFDMUMsYUFBUzVCLFFBQVQsQ0FBa0JLLEtBQWxCLEVBQXlCQyxRQUF6QixFQUFtQzlDLGFBQW5DLEVBQWtEditCLFFBQWxELEVBQTREc2hDLFlBQTVELEVBQTBFO0FBQ3hFLFVBQUlLLFNBQVMsR0FBR1AsS0FBSyxDQUFDQyxRQUFELENBQXJCO0FBQ0EsVUFBSU8sUUFBUSxHQUFHQyxXQUFXLENBQUNGLFNBQUQsQ0FBMUI7O0FBQ0EsVUFBSUMsUUFBUSxLQUFLLFFBQWpCLEVBQTJCO0FBQ3pCLGVBQU8sSUFBSWYsYUFBSixDQUFrQixhQUFhN2dDLFFBQWIsR0FBd0IsSUFBeEIsR0FBK0JzaEMsWUFBL0IsR0FBOEMsYUFBOUMsR0FBOERNLFFBQTlELEdBQXlFLElBQXpFLElBQWlGLGtCQUFrQnJELGFBQWxCLEdBQWtDLHVCQUFuSCxDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsV0FBSyxJQUFJcDBELEdBQVQsSUFBZ0J3NEQsVUFBaEIsRUFBNEI7QUFDMUIsWUFBSUgsT0FBTyxHQUFHRyxVQUFVLENBQUN4NEQsR0FBRCxDQUF4Qjs7QUFDQSxZQUFJLENBQUNxNEQsT0FBTCxFQUFjO0FBQ1o7QUFDRDs7QUFDRCxZQUFJbDhELEtBQUssR0FBR2s4RCxPQUFPLENBQUNiLFNBQUQsRUFBWXgzRCxHQUFaLEVBQWlCbzBELGFBQWpCLEVBQWdDditCLFFBQWhDLEVBQTBDc2hDLFlBQVksR0FBRyxHQUFmLEdBQXFCbjNELEdBQS9ELEVBQW9FOHpELG9CQUFwRSxDQUFuQjs7QUFDQSxZQUFJMzNELEtBQUosRUFBVztBQUNULGlCQUFPQSxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7QUFDRCxXQUFPdzZELDBCQUEwQixDQUFDQyxRQUFELENBQWpDO0FBQ0Q7O0FBRUQsV0FBU0gsNEJBQVQsQ0FBc0MrQixVQUF0QyxFQUFrRDtBQUNoRCxhQUFTNUIsUUFBVCxDQUFrQkssS0FBbEIsRUFBeUJDLFFBQXpCLEVBQW1DOUMsYUFBbkMsRUFBa0R2K0IsUUFBbEQsRUFBNERzaEMsWUFBNUQsRUFBMEU7QUFDeEUsVUFBSUssU0FBUyxHQUFHUCxLQUFLLENBQUNDLFFBQUQsQ0FBckI7QUFDQSxVQUFJTyxRQUFRLEdBQUdDLFdBQVcsQ0FBQ0YsU0FBRCxDQUExQjs7QUFDQSxVQUFJQyxRQUFRLEtBQUssUUFBakIsRUFBMkI7QUFDekIsZUFBTyxJQUFJZixhQUFKLENBQWtCLGFBQWE3Z0MsUUFBYixHQUF3QixJQUF4QixHQUErQnNoQyxZQUEvQixHQUE4QyxhQUE5QyxHQUE4RE0sUUFBOUQsR0FBeUUsSUFBekUsSUFBaUYsa0JBQWtCckQsYUFBbEIsR0FBa0MsdUJBQW5ILENBQWxCLENBQVA7QUFDRCxPQUx1RTtBQU94RTs7O0FBQ0EsVUFBSXFFLE9BQU8sR0FBR2xsQyxRQUFNLENBQUMsRUFBRCxFQUFLMGpDLEtBQUssQ0FBQ0MsUUFBRCxDQUFWLEVBQXNCc0IsVUFBdEIsQ0FBcEI7O0FBQ0EsV0FBSyxJQUFJeDRELEdBQVQsSUFBZ0J5NEQsT0FBaEIsRUFBeUI7QUFDdkIsWUFBSUosT0FBTyxHQUFHRyxVQUFVLENBQUN4NEQsR0FBRCxDQUF4Qjs7QUFDQSxZQUFJLENBQUNxNEQsT0FBTCxFQUFjO0FBQ1osaUJBQU8sSUFBSTNCLGFBQUosQ0FDTCxhQUFhN2dDLFFBQWIsR0FBd0IsSUFBeEIsR0FBK0JzaEMsWUFBL0IsR0FBOEMsU0FBOUMsR0FBMERuM0QsR0FBMUQsR0FBZ0UsaUJBQWhFLEdBQW9GbzBELGFBQXBGLEdBQW9HLElBQXBHLEdBQ0EsZ0JBREEsR0FDbUJycUMsSUFBSSxDQUFDMVosU0FBTCxDQUFlNG1ELEtBQUssQ0FBQ0MsUUFBRCxDQUFwQixFQUFnQyxJQUFoQyxFQUFzQyxJQUF0QyxDQURuQixHQUVBLGdCQUZBLEdBRW9CbnRDLElBQUksQ0FBQzFaLFNBQUwsQ0FBZS9ULE1BQU0sQ0FBQzJHLElBQVAsQ0FBWXUxRCxVQUFaLENBQWYsRUFBd0MsSUFBeEMsRUFBOEMsSUFBOUMsQ0FIZixDQUFQO0FBS0Q7O0FBQ0QsWUFBSXI4RCxLQUFLLEdBQUdrOEQsT0FBTyxDQUFDYixTQUFELEVBQVl4M0QsR0FBWixFQUFpQm8wRCxhQUFqQixFQUFnQ3YrQixRQUFoQyxFQUEwQ3NoQyxZQUFZLEdBQUcsR0FBZixHQUFxQm4zRCxHQUEvRCxFQUFvRTh6RCxvQkFBcEUsQ0FBbkI7O0FBQ0EsWUFBSTMzRCxLQUFKLEVBQVc7QUFDVCxpQkFBT0EsS0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7O0FBRUQsV0FBT3c2RCwwQkFBMEIsQ0FBQ0MsUUFBRCxDQUFqQztBQUNEOztBQUVELFdBQVMyQixNQUFULENBQWdCZixTQUFoQixFQUEyQjtBQUN6QixZQUFRLE9BQU9BLFNBQWY7QUFDRSxXQUFLLFFBQUw7QUFDQSxXQUFLLFFBQUw7QUFDQSxXQUFLLFdBQUw7QUFDRSxlQUFPLElBQVA7O0FBQ0YsV0FBSyxTQUFMO0FBQ0UsZUFBTyxDQUFDQSxTQUFSOztBQUNGLFdBQUssUUFBTDtBQUNFLFlBQUlodkQsS0FBSyxDQUFDQyxPQUFOLENBQWMrdUQsU0FBZCxDQUFKLEVBQThCO0FBQzVCLGlCQUFPQSxTQUFTLENBQUM3cEQsS0FBVixDQUFnQjRxRCxNQUFoQixDQUFQO0FBQ0Q7O0FBQ0QsWUFBSWYsU0FBUyxLQUFLLElBQWQsSUFBc0I1QyxjQUFjLENBQUM0QyxTQUFELENBQXhDLEVBQXFEO0FBQ25ELGlCQUFPLElBQVA7QUFDRDs7QUFFRCxZQUFJdEMsVUFBVSxHQUFHRixhQUFhLENBQUN3QyxTQUFELENBQTlCOztBQUNBLFlBQUl0QyxVQUFKLEVBQWdCO0FBQ2QsY0FBSS8xRCxRQUFRLEdBQUcrMUQsVUFBVSxDQUFDcjRELElBQVgsQ0FBZ0IyNkQsU0FBaEIsQ0FBZjtBQUNBLGNBQUl6a0QsSUFBSjs7QUFDQSxjQUFJbWlELFVBQVUsS0FBS3NDLFNBQVMsQ0FBQzU5QyxPQUE3QixFQUFzQztBQUNwQyxtQkFBTyxDQUFDLENBQUM3RyxJQUFJLEdBQUc1VCxRQUFRLENBQUMyVCxJQUFULEVBQVIsRUFBeUJLLElBQWpDLEVBQXVDO0FBQ3JDLGtCQUFJLENBQUNvbEQsTUFBTSxDQUFDeGxELElBQUksQ0FBQzdWLEtBQU4sQ0FBWCxFQUF5QjtBQUN2Qix1QkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLFdBTkQsTUFNTztBQUNMO0FBQ0EsbUJBQU8sQ0FBQyxDQUFDNlYsSUFBSSxHQUFHNVQsUUFBUSxDQUFDMlQsSUFBVCxFQUFSLEVBQXlCSyxJQUFqQyxFQUF1QztBQUNyQyxrQkFBSXlaLEtBQUssR0FBRzdaLElBQUksQ0FBQzdWLEtBQWpCOztBQUNBLGtCQUFJMHZCLEtBQUosRUFBVztBQUNULG9CQUFJLENBQUMyckMsTUFBTSxDQUFDM3JDLEtBQUssQ0FBQyxDQUFELENBQU4sQ0FBWCxFQUF1QjtBQUNyQix5QkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRixTQXBCRCxNQW9CTztBQUNMLGlCQUFPLEtBQVA7QUFDRDs7QUFFRCxlQUFPLElBQVA7O0FBQ0Y7QUFDRSxlQUFPLEtBQVA7QUExQ0o7QUE0Q0Q7O0FBRUQsV0FBU3pyQixRQUFULENBQWtCczJELFFBQWxCLEVBQTRCRCxTQUE1QixFQUF1QztBQUNyQztBQUNBLFFBQUlDLFFBQVEsS0FBSyxRQUFqQixFQUEyQjtBQUN6QixhQUFPLElBQVA7QUFDRCxLQUpvQzs7O0FBT3JDLFFBQUksQ0FBQ0QsU0FBTCxFQUFnQjtBQUNkLGFBQU8sS0FBUDtBQUNELEtBVG9DOzs7QUFZckMsUUFBSUEsU0FBUyxDQUFDLGVBQUQsQ0FBVCxLQUErQixRQUFuQyxFQUE2QztBQUMzQyxhQUFPLElBQVA7QUFDRCxLQWRvQzs7O0FBaUJyQyxRQUFJLE9BQU96NEQsTUFBUCxLQUFrQixVQUFsQixJQUFnQ3k0RCxTQUFTLFlBQVl6NEQsTUFBekQsRUFBaUU7QUFDL0QsYUFBTyxJQUFQO0FBQ0Q7O0FBRUQsV0FBTyxLQUFQO0FBQ0QsR0F0ZTREOzs7QUF5ZTdELFdBQVMyNEQsV0FBVCxDQUFxQkYsU0FBckIsRUFBZ0M7QUFDOUIsUUFBSUMsUUFBUSxHQUFHLE9BQU9ELFNBQXRCOztBQUNBLFFBQUlodkQsS0FBSyxDQUFDQyxPQUFOLENBQWMrdUQsU0FBZCxDQUFKLEVBQThCO0FBQzVCLGFBQU8sT0FBUDtBQUNEOztBQUNELFFBQUlBLFNBQVMsWUFBWTdtQyxNQUF6QixFQUFpQztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxhQUFPLFFBQVA7QUFDRDs7QUFDRCxRQUFJeHZCLFFBQVEsQ0FBQ3MyRCxRQUFELEVBQVdELFNBQVgsQ0FBWixFQUFtQztBQUNqQyxhQUFPLFFBQVA7QUFDRDs7QUFDRCxXQUFPQyxRQUFQO0FBQ0QsR0F4ZjREO0FBMmY3RDs7O0FBQ0EsV0FBU0csY0FBVCxDQUF3QkosU0FBeEIsRUFBbUM7QUFDakMsUUFBSSxPQUFPQSxTQUFQLEtBQXFCLFdBQXJCLElBQW9DQSxTQUFTLEtBQUssSUFBdEQsRUFBNEQ7QUFDMUQsYUFBTyxLQUFLQSxTQUFaO0FBQ0Q7O0FBQ0QsUUFBSUMsUUFBUSxHQUFHQyxXQUFXLENBQUNGLFNBQUQsQ0FBMUI7O0FBQ0EsUUFBSUMsUUFBUSxLQUFLLFFBQWpCLEVBQTJCO0FBQ3pCLFVBQUlELFNBQVMsWUFBWXZ4QyxJQUF6QixFQUErQjtBQUM3QixlQUFPLE1BQVA7QUFDRCxPQUZELE1BRU8sSUFBSXV4QyxTQUFTLFlBQVk3bUMsTUFBekIsRUFBaUM7QUFDdEMsZUFBTyxRQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPOG1DLFFBQVA7QUFDRCxHQXpnQjREO0FBNGdCN0Q7OztBQUNBLFdBQVNhLHdCQUFULENBQWtDcDdELEtBQWxDLEVBQXlDO0FBQ3ZDLFFBQUkyRyxJQUFJLEdBQUcrekQsY0FBYyxDQUFDMTZELEtBQUQsQ0FBekI7O0FBQ0EsWUFBUTJHLElBQVI7QUFDRSxXQUFLLE9BQUw7QUFDQSxXQUFLLFFBQUw7QUFDRSxlQUFPLFFBQVFBLElBQWY7O0FBQ0YsV0FBSyxTQUFMO0FBQ0EsV0FBSyxNQUFMO0FBQ0EsV0FBSyxRQUFMO0FBQ0UsZUFBTyxPQUFPQSxJQUFkOztBQUNGO0FBQ0UsZUFBT0EsSUFBUDtBQVRKO0FBV0QsR0ExaEI0RDs7O0FBNmhCN0QsV0FBU28wRCxZQUFULENBQXNCVCxTQUF0QixFQUFpQztBQUMvQixRQUFJLENBQUNBLFNBQVMsQ0FBQy9xRCxXQUFYLElBQTBCLENBQUMrcUQsU0FBUyxDQUFDL3FELFdBQVYsQ0FBc0J2TCxJQUFyRCxFQUEyRDtBQUN6RCxhQUFPaTBELFNBQVA7QUFDRDs7QUFDRCxXQUFPcUMsU0FBUyxDQUFDL3FELFdBQVYsQ0FBc0J2TCxJQUE3QjtBQUNEOztBQUVEazBELEVBQUFBLGNBQWMsQ0FBQ2xCLGNBQWYsR0FBZ0NBLGNBQWhDO0FBQ0FrQixFQUFBQSxjQUFjLENBQUNYLGlCQUFmLEdBQW1DUCxjQUFjLENBQUNPLGlCQUFsRDtBQUNBVyxFQUFBQSxjQUFjLENBQUNzRCxTQUFmLEdBQTJCdEQsY0FBM0I7QUFFQSxTQUFPQSxjQUFQO0FBQ0QsQ0F6aUJEOzs7Ozs7Ozs7QUM5QjJDO0FBQ3pDLE1BQUlWLE9BQU8sR0FBR3I0RCxpQkFBZCxDQUR5QztBQUl6Qzs7O0FBQ0EsTUFBSXc0RCxtQkFBbUIsR0FBRyxJQUExQjtBQUNBajVELEVBQUFBLGlCQUFBLEdBQWlCUyx1QkFBQSxDQUFxQ3E0RCxPQUFPLENBQUM3QixTQUE3QyxFQUF3RGdDLG1CQUF4RCxDQUFqQjtBQUNEOzs7Ozs7OztBQ1hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUzhELEtBQVQsQ0FBZS92QyxHQUFmLEVBQW9CZ3dDLElBQXBCLEVBQTBCO0FBQ3hCQSxFQUFBQSxJQUFJLEdBQUdBLElBQUksSUFBSSxFQUFmO0FBRUEsTUFBSUMsZUFBZSxHQUFHRCxJQUFJLENBQUNDLGVBQTNCOztBQUNBLE1BQUlob0MsSUFBSSxHQUFHLFVBQVVpQyxDQUFWLEVBQWE7QUFDdEIsV0FBT0EsQ0FBQyxDQUFDakMsSUFBRixFQUFQO0FBQ0QsR0FGRDs7QUFHQSxNQUFJOXFCLEdBQUcsR0FBRyxFQUFWO0FBRUEreUQsRUFBQUEsaUJBQWlCLENBQUNsd0MsR0FBRCxDQUFqQixDQUF1QnBiLEdBQXZCLENBQTJCcWpCLElBQTNCLEVBQWlDcGpCLE1BQWpDLENBQXdDNkcsT0FBeEMsRUFBaUQvRyxPQUFqRCxDQUF5RCxVQUFVNGxDLElBQVYsRUFBZ0I7QUFDdkU7QUFDQSxRQUFJalEsR0FBRyxHQUFHaVEsSUFBSSxDQUFDM3NDLE9BQUwsQ0FBYSxHQUFiLENBQVY7QUFDQSxRQUFJeEcsR0FBRyxHQUFHbXpDLElBQUksQ0FBQ2pKLE1BQUwsQ0FBWSxDQUFaLEVBQWVoSCxHQUFmLEVBQW9CclMsSUFBcEIsRUFBVjtBQUNBLFFBQUkvd0IsR0FBRyxHQUFHcXpDLElBQUksQ0FBQ2pKLE1BQUwsQ0FBWWhILEdBQUcsR0FBRyxDQUFsQixFQUFxQnJTLElBQXJCLEVBQVY7O0FBQ0EsUUFBSWdvQyxlQUFlLElBQUlFLFNBQVMsQ0FBQ2o1RCxHQUFELENBQWhDLEVBQXVDO0FBQ3JDQSxNQUFBQSxHQUFHLEdBQUc2dEIsTUFBTSxDQUFDN3RCLEdBQUQsQ0FBWjtBQUNEOztBQUVEaUcsSUFBQUEsR0FBRyxDQUFDL0YsR0FBRCxDQUFILEdBQVdGLEdBQVg7QUFDRCxHQVZEO0FBWUEsU0FBT2lHLEdBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7O0FBRUEsU0FBU2d6RCxTQUFULENBQW1CN2pELENBQW5CLEVBQXNCO0FBQ3BCLFNBQU8sQ0FBQzZjLEtBQUssQ0FBQ0ksVUFBVSxDQUFDamQsQ0FBRCxDQUFYLENBQU4sSUFBeUJ5UyxRQUFRLENBQUN6UyxDQUFELENBQXhDO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOzs7QUFDQSxTQUFTNGpELGlCQUFULENBQTJCbHdDLEdBQTNCLEVBQWdDO0FBQzlCLE1BQUlvd0MsTUFBTSxHQUFHLEVBQWI7QUFDQSxNQUFJbDNDLE1BQU0sR0FBRyxDQUFiO0FBQ0EsTUFBSTI5QixHQUFHLEdBQUcsR0FBVjtBQUNBLE1BQUl3WixjQUFjLEdBQUcsY0FBckI7QUFDQSxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLFNBQUo7O0FBQ0EsU0FBT3IzQyxNQUFNLEdBQUc4RyxHQUFHLENBQUN6cUIsTUFBcEIsRUFBNEI7QUFDMUJnN0QsSUFBQUEsU0FBUyxHQUFHdndDLEdBQUcsQ0FBQ3BpQixPQUFKLENBQVlpNUMsR0FBWixFQUFpQjM5QixNQUFqQixDQUFaOztBQUNBLFFBQUlxM0MsU0FBUyxLQUFLLENBQUMsQ0FBbkIsRUFBc0I7QUFDcEJBLE1BQUFBLFNBQVMsR0FBR3Z3QyxHQUFHLENBQUN6cUIsTUFBaEI7QUFDRDs7QUFFRCs2RCxJQUFBQSxLQUFLLElBQUl0d0MsR0FBRyxDQUFDd3dDLFNBQUosQ0FBY3QzQyxNQUFkLEVBQXNCcTNDLFNBQXRCLENBQVQsQ0FOMEI7O0FBUzFCLFFBQUlGLGNBQWMsQ0FBQ2oyRCxJQUFmLENBQW9CazJELEtBQXBCLENBQUosRUFBZ0M7QUFDOUJBLE1BQUFBLEtBQUssSUFBSSxHQUFUO0FBQ0FwM0MsTUFBQUEsTUFBTSxHQUFHcTNDLFNBQVMsR0FBRyxDQUFyQjtBQUNBO0FBQ0Q7O0FBRURILElBQUFBLE1BQU0sQ0FBQzU0RCxJQUFQLENBQVk4NEQsS0FBWjtBQUNBQSxJQUFBQSxLQUFLLEdBQUcsRUFBUjtBQUNBcDNDLElBQUFBLE1BQU0sR0FBR3EzQyxTQUFTLEdBQUcsQ0FBckI7QUFDRDs7QUFFRCxTQUFPSCxNQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOzs7QUFDQSxTQUFTM29ELFNBQVQsQ0FBbUJ0SyxHQUFuQixFQUF3QjtBQUN0QixTQUFPekosTUFBTSxDQUFDMkcsSUFBUCxDQUFZOEMsR0FBWixFQUFpQnlILEdBQWpCLENBQXFCLFVBQVV4TixHQUFWLEVBQWU7QUFDekMsV0FBT0EsR0FBRyxHQUFHLEdBQU4sR0FBWStGLEdBQUcsQ0FBQy9GLEdBQUQsQ0FBdEI7QUFDRCxHQUZNLEVBRUpxRixJQUZJLENBRUMsR0FGRCxDQUFQO0FBR0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOzs7QUFDQSxTQUFTb0MsU0FBVCxDQUFtQnFmLEdBQW5CLEVBQXdCOHhDLElBQXhCLEVBQThCO0FBQzVCLFNBQU92b0QsU0FBUyxDQUFDc29ELEtBQUssQ0FBQzd4QyxHQUFELEVBQU04eEMsSUFBTixDQUFOLENBQWhCO0FBQ0Q7O1NBRUQsR0FBdUJEO2FBQ3ZCLEdBQTJCdG9EO2FBQzNCLEdBQTJCNUk7Ozs7Ozs7OztBQzdIM0IsSUFBSTR4RCxTQUFTLEdBQUcsNkhBQWhCO0FBQUEsSUFDRUMsV0FBVyxHQUFHLDRDQURoQjtBQUFBLElBRUVDLFdBQVcsR0FBRyxjQUZoQjtBQUFBLElBR0VDLGNBQWMsR0FBRyxPQUhuQjtBQUtBLElBQUlDLE9BQU8sR0FBRyxFQUFkO0FBQUEsSUFDRUMsT0FERjtBQUFBLElBRUVDLFNBQVMsR0FBRztBQUNWO0FBQ0FDLEVBQUFBLFFBQVEsRUFBRTtBQUNScDlELElBQUFBLEdBQUcsRUFBRSxVQUFVNkosRUFBVixFQUFjO0FBQ2pCO0FBQ0EsVUFBSXd6RCxhQUFhLEdBQUd4ekQsRUFBRSxDQUFDeXpELGdCQUFILENBQW9CLFVBQXBCLENBQXBCO0FBQ0EsYUFBT0QsYUFBYSxJQUFJQSxhQUFhLENBQUNFLFNBQS9CLEdBQ0x0b0MsUUFBUSxDQUFDb29DLGFBQWEsQ0FBQzM4RCxLQUFmLEVBQXNCLEVBQXRCLENBREgsR0FFTG84RCxXQUFXLENBQUN0MkQsSUFBWixDQUFpQnFELEVBQUUsQ0FBQzJ6RCxRQUFwQixLQUNBVCxXQUFXLENBQUN2MkQsSUFBWixDQUFpQnFELEVBQUUsQ0FBQzJ6RCxRQUFwQixLQUFpQzN6RCxFQUFFLENBQUM2OEMsSUFEcEMsR0FFRSxDQUZGLEdBR0V6bEQsU0FMSjtBQU1EO0FBVk87QUFGQSxDQUZkO0FBQUEsSUFpQkV3OEQsUUFBUSxHQUFHO0FBQ1R6OUQsRUFBQUEsR0FBRyxFQUFFLFVBQVUwOUQsSUFBVixFQUFnQmg1RCxJQUFoQixFQUFzQjtBQUN6QjtBQUNBLFdBQU9nNUQsSUFBSSxDQUFDUixPQUFPLENBQUN4NEQsSUFBRCxDQUFQLElBQWlCQSxJQUFsQixDQUFKO0FBRUxBLElBQUFBLElBQUksQ0FBQzJHLFdBQUwsRUFGSyxHQUdMcEssU0FIRjtBQUlEO0FBUFEsQ0FqQmI7QUFBQSxJQTBCRTA4RCxZQUFZLEdBQUcsRUExQmpCO0FBNEJBUixTQUFTLENBQUNudkQsS0FBVixHQUFrQjtBQUNoQmhPLEVBQUFBLEdBQUcsRUFBRSxVQUFVNkosRUFBVixFQUFjO0FBQ2pCLFdBQU9BLEVBQUUsQ0FBQ21FLEtBQUgsQ0FBUzR2RCxPQUFoQjtBQUNEO0FBSGUsQ0FBbEI7QUFNQVYsT0FBTyxHQUFHO0FBQ1JXLEVBQUFBLFNBQVMsRUFBRSxXQURIO0FBRVJULEVBQUFBLFFBQVEsRUFBRSxVQUZGO0FBR1JVLEVBQUFBLFFBQVEsRUFBRSxVQUhGO0FBSVIsU0FBTyxTQUpDO0FBS1IsV0FBUyxXQUxEO0FBTVJDLEVBQUFBLFNBQVMsRUFBRSxXQU5IO0FBT1JDLEVBQUFBLFdBQVcsRUFBRSxhQVBMO0FBUVJDLEVBQUFBLFdBQVcsRUFBRSxhQVJMO0FBU1JDLEVBQUFBLE9BQU8sRUFBRSxTQVREO0FBVVJDLEVBQUFBLE9BQU8sRUFBRSxTQVZEO0FBV1JDLEVBQUFBLE1BQU0sRUFBRSxRQVhBO0FBWVJDLEVBQUFBLFdBQVcsRUFBRSxhQVpMO0FBYVJDLEVBQUFBLGVBQWUsRUFBRTtBQWJULENBQVY7QUFnQkEsSUFBSUMsRUFBRSxHQUFHLE9BQU9DLFNBQVAsS0FBcUIsV0FBckIsR0FBbUNBLFNBQVMsQ0FBQzM4RCxTQUE3QyxHQUF5RCxFQUFsRTtBQUNBLElBQUk0OEQsR0FBRyxHQUFHLE9BQU90NUQsUUFBUCxLQUFvQixXQUFwQixHQUFrQ0EsUUFBbEMsR0FBNkMsRUFBdkQ7O0FBRUEsU0FBU3U1RCxTQUFULENBQW1CcG9DLENBQW5CLEVBQXNCO0FBQ3BCLE1BQUlsbkIsQ0FBQyxHQUFHLENBQVIsQ0FEb0I7O0FBR3BCLFNBQU91bUIsVUFBVSxDQUFDVyxDQUFDLENBQUMzdEIsT0FBRixDQUFVLEtBQVYsRUFBaUIsWUFBWTtBQUM3QyxXQUFReUcsQ0FBQyxPQUFPLENBQVQsR0FBYyxHQUFkLEdBQW9CLEVBQTNCO0FBQ0QsR0FGaUIsQ0FBRCxDQUFqQjtBQUdEOztBQUVELFNBQVN1dkQsU0FBVCxHQUFxQjtBQUNuQixNQUFJajBCLENBQUosRUFBT3hwQixDQUFQOztBQUNBLE1BQUksQ0FBQ3dwQixDQUFDLEdBQUc2ekIsRUFBRSxDQUFDcDhELEtBQUgsQ0FBUyw4Q0FBVCxDQUFMLE1BQ0QrZSxDQUFDLEdBQUl3cEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFRQSxDQUFDLENBQUMsQ0FBRCxDQURiLENBQUosRUFDd0I7QUFDdEIsV0FBTyt6QixHQUFHLENBQUNHLFlBQUosSUFBb0JGLFNBQVMsQ0FBQ3g5QyxDQUFELENBQXBDO0FBQ0Q7QUFDRjs7QUFFRCxTQUFTMjlDLEdBQVQsQ0FBYXZvQyxDQUFiLEVBQWdCckUsQ0FBaEIsRUFBbUI7QUFDakIsT0FBSyxJQUFJcVUsQ0FBVCxJQUFjclUsQ0FBZCxFQUFpQjtBQUNmcUUsSUFBQUEsQ0FBQyxDQUFDZ1EsQ0FBRCxDQUFELEdBQU9yVSxDQUFDLENBQUNxVSxDQUFELENBQVI7QUFDRDtBQUNGOztBQUVELFNBQVN3NEIsSUFBVCxDQUFjQyxHQUFkLEVBQW1CMTdELEVBQW5CLEVBQXVCO0FBQ3JCLE1BQUk2RyxDQUFDLEdBQUcsQ0FBUjtBQUFBLE1BQVc4MEQsQ0FBQyxHQUFHRCxHQUFHLENBQUNwOUQsTUFBbkI7O0FBQ0EsU0FBT3VJLENBQUMsR0FBRzgwRCxDQUFYLEVBQWM5MEQsQ0FBQyxFQUFmLEVBQW1CO0FBQ2pCLFFBQUk3RyxFQUFFLENBQUMwN0QsR0FBRyxDQUFDNzBELENBQUQsQ0FBSixFQUFTQSxDQUFULENBQUYsS0FBa0IsS0FBdEIsRUFBNkI7QUFDM0I7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsSUFBSSswRCxFQUFFLEdBQUdOLFNBQVMsRUFBbEI7O0FBRUEsSUFBSU0sRUFBRSxJQUFJQSxFQUFFLEdBQUcsQ0FBZixFQUFrQjtBQUNoQjlCLEVBQUFBLFNBQVMsQ0FBQ252RCxLQUFWLENBQWdCakgsR0FBaEIsR0FBc0IsVUFBVThDLEVBQVYsRUFBY3ZHLEdBQWQsRUFBbUI7QUFDdkN1RyxJQUFBQSxFQUFFLENBQUNtRSxLQUFILENBQVM0dkQsT0FBVCxHQUFtQnQ2RCxHQUFuQjtBQUNELEdBRkQsQ0FEZ0I7OztBQU1oQnU3RCxFQUFBQSxHQUFHLENBQUNsQixZQUFELEVBQWU7QUFDaEIzOUQsSUFBQUEsR0FBRyxFQUFFLFVBQVUwOUQsSUFBVixFQUFnQmg1RCxJQUFoQixFQUFzQjtBQUN6QixVQUFJdzZELEdBQUcsR0FBR3hCLElBQUksQ0FBQ0osZ0JBQUwsQ0FBc0I1NEQsSUFBdEIsQ0FBVixDQUR5Qjs7QUFHekIsYUFBT3c2RCxHQUFHO0FBRVZBLE1BQUFBLEdBQUcsQ0FBQzNCLFNBQUosSUFBaUIyQixHQUFHLENBQUNDLFNBRlgsQ0FBSCxHQUdMRCxHQUFHLENBQUNDLFNBSEMsR0FJTGwrRCxTQUpGO0FBS0Q7QUFUZSxHQUFmLENBQUgsQ0FOZ0I7O0FBbUJoQjQ5RCxFQUFBQSxHQUFHLENBQUM1QixPQUFELEVBQVVDLE9BQVYsQ0FBSCxDQW5CZ0I7O0FBc0JoQkMsRUFBQUEsU0FBUyxDQUFDaUMsUUFBVixHQUFxQmpDLFNBQVMsQ0FBQ0MsUUFBL0IsQ0F0QmdCO0FBeUJoQjs7QUFDQTBCLEVBQUFBLElBQUksQ0FBQyxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLE9BQWhCLEVBQXlCLFFBQXpCLEVBQW1DLFNBQW5DLEVBQThDLFNBQTlDLENBQUQsRUFBMkQsVUFBVXA2RCxJQUFWLEVBQWdCO0FBQzdFeTRELElBQUFBLFNBQVMsQ0FBQ3o0RCxJQUFELENBQVQsR0FBa0I7QUFDaEIxRSxNQUFBQSxHQUFHLEVBQUUsVUFBVTA5RCxJQUFWLEVBQWdCO0FBQ25CLFlBQUl3QixHQUFHLEdBQUd4QixJQUFJLENBQUMyQixZQUFMLENBQWtCMzZELElBQWxCLEVBQXdCLENBQXhCLENBQVY7QUFDQSxlQUFPdzZELEdBQUcsS0FBSyxJQUFSLEdBQWVqK0QsU0FBZixHQUEyQmkrRCxHQUFsQztBQUNEO0FBSmUsS0FBbEI7QUFNRCxHQVBHLENBQUo7QUFTQS9CLEVBQUFBLFNBQVMsQ0FBQ21DLFdBQVYsR0FBd0I7QUFDdEJ0L0QsSUFBQUEsR0FBRyxFQUFFLFVBQVUwOUQsSUFBVixFQUFnQmg1RCxJQUFoQixFQUFzQjtBQUN6QixhQUFPZzVELElBQUksQ0FBQ2g1RCxJQUFELENBQUosSUFBY2k1RCxZQUFZLENBQUMzOUQsR0FBYixDQUFpQjA5RCxJQUFqQixFQUF1Qmg1RCxJQUF2QixDQUFyQjtBQUNEO0FBSHFCLEdBQXhCO0FBS0Q7O0FBRUQsSUFBSXU2RCxFQUFKLEVBQVE7QUFDTixNQUFJTSxPQUFPLEdBQUdwQyxTQUFTLENBQUN6VyxJQUFWLEdBQWlCeVcsU0FBUyxDQUFDelcsSUFBVixJQUFrQixFQUFqRDs7QUFDQTZZLEVBQUFBLE9BQU8sQ0FBQ3g0RCxHQUFSLEdBQWMsVUFBVThDLEVBQVYsRUFBY3ZHLEdBQWQsRUFBbUJvQixJQUFuQixFQUF5QjtBQUNyQyxRQUFJODZELFVBQVUsR0FBRzMxRCxFQUFFLENBQUMyMUQsVUFBcEI7QUFBQSxRQUNFcndELENBREY7QUFBQSxRQUVFb0ksR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQUZuQjtBQUFBLFFBR0U4OUQsT0FBTyxHQUFHbG9ELEdBQUcsR0FBRyxDQUhsQjs7QUFJQSxTQUFLQSxHQUFHLEdBQUdBLEdBQUcsR0FBRyxDQUFqQixFQUFvQkEsR0FBRyxJQUFJLENBQTNCLEVBQThCQSxHQUFHLEVBQWpDLEVBQXFDO0FBQ25DLFVBQUlpb0QsVUFBVSxDQUFDam9ELEdBQUQsQ0FBVixDQUFnQm1vRCxRQUFoQixLQUE2QixDQUFqQyxFQUFvQztBQUNsQ0QsUUFBQUEsT0FBTyxHQUFHLENBQVY7QUFDRDtBQUNGOztBQUNELFFBQUlBLE9BQUosRUFBYTtBQUNYdHdELE1BQUFBLENBQUMsR0FBR3RGLEVBQUUsQ0FBQzgxRCxhQUFILENBQWlCdDZELGFBQWpCLENBQStCLEdBQS9CLENBQUo7QUFDQThKLE1BQUFBLENBQUMsQ0FBQ25CLEtBQUYsQ0FBUUMsT0FBUixHQUFrQixNQUFsQjtBQUNBcEUsTUFBQUEsRUFBRSxDQUFDcUUsV0FBSCxDQUFlaUIsQ0FBZjtBQUNEOztBQUNEdEYsSUFBQUEsRUFBRSxDQUFDKzFELFlBQUgsQ0FBZ0JsN0QsSUFBaEIsRUFBc0IsS0FBS3BCLEdBQTNCOztBQUNBLFFBQUk2TCxDQUFKLEVBQU87QUFDTHRGLE1BQUFBLEVBQUUsQ0FBQzB3QixXQUFILENBQWVwckIsQ0FBZjtBQUNEO0FBQ0YsR0FuQkQ7QUFvQkQ7O0FBRUQsSUFBSTB3RCxPQUFPLEdBQUcsd0JBQWQ7QUFBQSxJQUNFeHJDLElBQUksR0FBRzd4QixNQUFNLENBQUNxRixTQUFQLENBQWlCd3NCLElBRDFCO0FBRUEsSUFBSXlyQyxLQUFLLEdBQUcsR0FBWjtBQUVBLElBQUlDLG9CQUFKOztBQUNBQSxvQkFBb0IsR0FBRyxVQUFVcjdELElBQVYsRUFBZ0JzN0QsT0FBaEIsRUFBeUI7QUFDOUMsU0FBT0EsT0FBTyxDQUFDRCxvQkFBUixDQUE2QnI3RCxJQUE3QixDQUFQO0FBQ0QsQ0FGRDs7QUFJQSxJQUFJKzVELEdBQUcsQ0FBQ3A1RCxhQUFSLEVBQXVCO0FBQ3JCLE1BQUk2dEIsR0FBRyxHQUFHdXJDLEdBQUcsQ0FBQ3A1RCxhQUFKLENBQWtCLEtBQWxCLENBQVY7QUFDQTZ0QixFQUFBQSxHQUFHLENBQUNobEIsV0FBSixDQUFnQi9JLFFBQVEsQ0FBQzg2RCxhQUFULENBQXVCLEVBQXZCLENBQWhCOztBQUNBLE1BQUkvc0MsR0FBRyxDQUFDNnNDLG9CQUFKLENBQXlCLEdBQXpCLEVBQThCcCtELE1BQWxDLEVBQTBDO0FBQ3hDbytELElBQUFBLG9CQUFvQixHQUFHLFVBQVVyN0QsSUFBVixFQUFnQnM3RCxPQUFoQixFQUF5QjtBQUM5QyxVQUFJRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQ0Qsb0JBQVIsQ0FBNkJyN0QsSUFBN0IsQ0FBWjtBQUFBLFVBQ0V5N0QsV0FBVyxHQUFHejdELElBQUksS0FBSyxHQUR6QixDQUQ4Qzs7QUFJOUMsVUFBSXk3RCxXQUFXLElBQUksT0FBT0QsS0FBSyxDQUFDditELE1BQWIsS0FBd0IsUUFBM0MsRUFBcUQ7QUFDbkQsWUFBSXU5RCxHQUFHLEdBQUcsRUFBVjtBQUFBLFlBQ0VoMUQsQ0FBQyxHQUFHLENBRE47QUFBQSxZQUVFTCxFQUZGOztBQUdBLGVBQVFBLEVBQUUsR0FBR3EyRCxLQUFLLENBQUNoMkQsQ0FBQyxFQUFGLENBQWxCLEVBQTBCO0FBQ3hCLGNBQUksQ0FBQ2kyRCxXQUFELElBQWdCdDJELEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBQXBDLEVBQXVDO0FBQ3JDUixZQUFBQSxHQUFHLENBQUN0N0QsSUFBSixDQUFTaUcsRUFBVDtBQUNEO0FBQ0Y7O0FBQ0QsZUFBT3ExRCxHQUFQO0FBQ0QsT0FWRCxNQVVPO0FBQ0wsZUFBT2dCLEtBQVA7QUFDRDtBQUNGLEtBakJEO0FBa0JEO0FBQ0Y7O0FBRUQsSUFBSUUsZ0JBQWdCLEdBQUksa0JBQWtCM0IsR0FBRyxJQUFJQSxHQUFHLENBQUM0QixlQUFYLElBQThCLEVBQWhELENBQUQsR0FBd0QsVUFBVTk2RCxDQUFWLEVBQWE0SixDQUFiLEVBQWdCO0FBQzdGLFNBQU81SixDQUFDLENBQUNnVixXQUFGLEdBQWdCcEwsQ0FBQyxDQUFDb0wsV0FBekI7QUFDRCxDQUZzQixHQUVuQixVQUFVaFYsQ0FBVixFQUFhNEosQ0FBYixFQUFnQjtBQUNsQixNQUFJLENBQUM1SixDQUFDLENBQUMrNkQsdUJBQUgsSUFBOEIsQ0FBQ254RCxDQUFDLENBQUNteEQsdUJBQXJDLEVBQThEO0FBQzVELFdBQU8vNkQsQ0FBQyxDQUFDKzZELHVCQUFGLEdBQTRCLENBQUMsQ0FBN0IsR0FBaUMsQ0FBeEM7QUFDRDs7QUFDRCxNQUFJQyxHQUFHLEdBQUdoN0QsQ0FBQyxDQUFDKzZELHVCQUFGLENBQTBCbnhELENBQTFCLElBQStCLENBQXpDO0FBQ0EsU0FBT294RCxHQUFHLEdBQUcsQ0FBQyxDQUFKLEdBQVEsQ0FBbEI7QUFDRCxDQVJEO0FBVUEsSUFBSUMsTUFBSSxHQUFHcGhFLGNBQUEsR0FBaUI7QUFDMUI2L0QsRUFBQUEsRUFBRSxFQUFFQSxFQURzQjtBQUcxQndCLEVBQUFBLE1BQU0sRUFBRyxZQUFZO0FBQ25CLFFBQUlDLFlBQUo7QUFBQSxRQUNFQyxnQkFBZ0IsR0FBRyxJQURyQixDQURtQjtBQUtuQjtBQUNBO0FBQ0E7O0FBQ0EsS0FBQyxDQUFELEVBQUksQ0FBSixFQUFPaGdELElBQVAsQ0FBWSxZQUFZO0FBQ3RCZ2dELE1BQUFBLGdCQUFnQixHQUFHLEtBQW5CO0FBQ0EsYUFBTyxDQUFQO0FBQ0QsS0FIRDs7QUFLQSxhQUFTQyxTQUFULENBQW1CcjdELENBQW5CLEVBQXNCNEosQ0FBdEIsRUFBeUI7QUFDdkIsVUFBSTVKLENBQUMsS0FBSzRKLENBQVYsRUFBYTtBQUNYdXhELFFBQUFBLFlBQVksR0FBRyxJQUFmO0FBQ0EsZUFBTyxDQUFQO0FBQ0Q7O0FBRUQsYUFBT04sZ0JBQWdCLENBQUM3NkQsQ0FBRCxFQUFJNEosQ0FBSixDQUF2QjtBQUNELEtBcEJrQjs7O0FBdUJuQixXQUFPLFVBQVUwNEIsUUFBVixFQUFvQjtBQUN6QjY0QixNQUFBQSxZQUFZLEdBQUdDLGdCQUFmO0FBQ0E5NEIsTUFBQUEsUUFBUSxDQUFDbG5CLElBQVQsQ0FBY2lnRCxTQUFkOztBQUVBLFVBQUlGLFlBQUosRUFBa0I7QUFDaEIsWUFBSXgyRCxDQUFDLEdBQUcsQ0FBUjtBQUFBLFlBQVdxTixHQUFHLEdBQUdzd0IsUUFBUSxDQUFDbG1DLE1BQTFCOztBQUNBLGVBQU91SSxDQUFDLEdBQUdxTixHQUFYLEVBQWdCO0FBQ2QsY0FBSXN3QixRQUFRLENBQUMzOUIsQ0FBRCxDQUFSLEtBQWdCMjlCLFFBQVEsQ0FBQzM5QixDQUFDLEdBQUcsQ0FBTCxDQUE1QixFQUFxQztBQUNuQzI5QixZQUFBQSxRQUFRLENBQUNobUIsTUFBVCxDQUFnQjNYLENBQWhCLEVBQW1CLENBQW5CO0FBQ0EsY0FBRXFOLEdBQUY7QUFDRCxXQUhELE1BR087QUFDTHJOLFlBQUFBLENBQUM7QUFDRjtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTzI5QixRQUFQO0FBQ0QsS0FoQkQ7QUFpQkQsR0F4Q08sRUFIa0I7QUE2QzFCazRCLEVBQUFBLG9CQUFvQixFQUFFQSxvQkE3Q0k7QUErQzFCYyxFQUFBQSxhQUFhLEVBQUUsVUFBVWgzRCxFQUFWLEVBQWNuRixJQUFkLEVBQW9CO0FBQ2pDLFFBQUl3NkQsR0FBRyxHQUFHcjFELEVBQUUsSUFBSUEsRUFBRSxDQUFDeXpELGdCQUFILENBQW9CNTRELElBQXBCLENBQWhCOztBQUNBLFFBQUl3NkQsR0FBRyxJQUFJQSxHQUFHLENBQUMzQixTQUFmLEVBQTBCO0FBQ3hCLGFBQU8sV0FBVzJCLEdBQVgsR0FBaUJBLEdBQUcsQ0FBQ3grRCxLQUFyQixHQUE2QncrRCxHQUFHLENBQUNDLFNBQXhDO0FBQ0Q7O0FBQ0QsV0FBT2wrRCxTQUFQO0FBQ0QsR0FyRHlCO0FBdUQxQjYvRCxFQUFBQSxRQUFRLEVBQUU3QixFQUFFLEdBQUcsVUFBVTE1RCxDQUFWLEVBQWE0SixDQUFiLEVBQWdCO0FBQzdCLFFBQUk1SixDQUFDLENBQUNtNkQsUUFBRixLQUFlLENBQW5CLEVBQXNCO0FBQ3BCbjZELE1BQUFBLENBQUMsR0FBR0EsQ0FBQyxDQUFDODZELGVBQU47QUFDRCxLQUg0QjtBQUs3Qjs7O0FBQ0FseEQsSUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUM0eEQsVUFBTjs7QUFFQSxRQUFJeDdELENBQUMsS0FBSzRKLENBQVYsRUFBYTtBQUNYLGFBQU8sSUFBUDtBQUNELEtBVjRCOzs7QUFhN0IsUUFBSUEsQ0FBQyxJQUFJQSxDQUFDLENBQUN1d0QsUUFBRixLQUFlLENBQXhCLEVBQTJCO0FBQ3pCLGFBQU9uNkQsQ0FBQyxDQUFDdTdELFFBQUYsSUFBY3Y3RCxDQUFDLENBQUN1N0QsUUFBRixDQUFXM3hELENBQVgsQ0FBckI7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPLEtBQVA7QUFDRDtBQUNGLEdBbEJXLEdBa0JSLFVBQVU1SixDQUFWLEVBQWE0SixDQUFiLEVBQWdCO0FBQ2xCLFdBQU8sQ0FBQyxFQUFFNUosQ0FBQyxDQUFDKzZELHVCQUFGLENBQTBCbnhELENBQTFCLElBQStCLEVBQWpDLENBQVI7QUFDRCxHQTNFeUI7QUE2RTFCNnhELEVBQUFBLEtBQUssRUFBRSxVQUFVbjNELEVBQVYsRUFBY25KLEtBQWQsRUFBcUI7QUFDMUIsV0FBT0EsS0FBSyxLQUFLLEdBQVYsSUFBaUJtSixFQUFFLENBQUMyekQsUUFBSCxDQUFZbnlELFdBQVosT0FBOEIzSyxLQUFLLENBQUMySyxXQUFOLEVBQXREO0FBQ0QsR0EvRXlCO0FBaUYxQjQxRCxFQUFBQSxjQUFjLEVBQUUsVUFBVXAzRCxFQUFWLEVBQWNxM0QsR0FBZCxFQUFtQjtBQUNqQztBQUNBO0FBQ0EsUUFBSUMsU0FBUyxHQUFHdDNELEVBQUUsSUFBSTIyRCxNQUFJLENBQUNLLGFBQUwsQ0FBbUJoM0QsRUFBbkIsRUFBdUIsT0FBdkIsQ0FBdEI7QUFDQSxXQUFPczNELFNBQVMsS0FBS0EsU0FBUyxHQUFHQSxTQUFTLENBQUN4NEQsT0FBVixDQUFrQixXQUFsQixFQUErQm0zRCxLQUEvQixDQUFqQixDQUFULElBQ0wsQ0FBQ0EsS0FBSyxHQUFHcUIsU0FBUixHQUFvQnJCLEtBQXJCLEVBQTRCOTFELE9BQTVCLENBQW9DODFELEtBQUssR0FBR29CLEdBQVIsR0FBY3BCLEtBQWxELElBQTJELENBQUMsQ0FEOUQ7QUFFRCxHQXZGeUI7QUF5RjFCcnlCLEVBQUFBLFVBQVUsRUFBRSxVQUFVbmpCLEdBQVYsRUFBZTgyQyxNQUFmLEVBQXVCO0FBQ2pDLFdBQU85MkMsR0FBRyxDQUFDbk0sV0FBSixDQUFnQmlqRCxNQUFoQixFQUF3QixDQUF4QixNQUErQixDQUF0QztBQUNELEdBM0Z5QjtBQTZGMUJoNkIsRUFBQUEsUUFBUSxFQUFFLFVBQVU5YyxHQUFWLEVBQWUrMkMsTUFBZixFQUF1QjtBQUMvQixRQUFJQyxHQUFHLEdBQUdoM0MsR0FBRyxDQUFDM29CLE1BQUosR0FBYTAvRCxNQUFNLENBQUMxL0QsTUFBOUI7QUFDQSxXQUFPMi9ELEdBQUcsSUFBSSxDQUFQLElBQVloM0MsR0FBRyxDQUFDdGdCLE9BQUosQ0FBWXEzRCxNQUFaLEVBQW9CQyxHQUFwQixNQUE2QkEsR0FBaEQ7QUFDRCxHQWhHeUI7QUFrRzFCanRDLEVBQUFBLElBQUksRUFBRUEsSUFBSSxHQUNSLFVBQVUvSixHQUFWLEVBQWU7QUFDYixXQUFPQSxHQUFHLElBQUksSUFBUCxHQUFjLEVBQWQsR0FBbUIrSixJQUFJLENBQUNoMEIsSUFBTCxDQUFVaXFCLEdBQVYsQ0FBMUI7QUFDRCxHQUhPLEdBSVIsVUFBVUEsR0FBVixFQUFlO0FBQ2IsV0FBT0EsR0FBRyxJQUFJLElBQVAsR0FBYyxFQUFkLEdBQW1CLENBQUNBLEdBQUcsR0FBRyxFQUFQLEVBQVczaEIsT0FBWCxDQUFtQmszRCxPQUFuQixFQUE0QixFQUE1QixDQUExQjtBQUNELEdBeEd1QjtBQTBHMUIwQixFQUFBQSxJQUFJLEVBQUUsVUFBVTEzRCxFQUFWLEVBQWNuRixJQUFkLEVBQW9CO0FBQ3hCLFFBQUk4OEQsY0FBSixFQUFvQnRDLEdBQXBCLENBRHdCOztBQUd4Qng2RCxJQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQzJHLFdBQUwsRUFBUCxDQUh3Qjs7QUFLeEIzRyxJQUFBQSxJQUFJLEdBQUd1NEQsT0FBTyxDQUFDdjRELElBQUQsQ0FBUCxJQUFpQkEsSUFBeEI7O0FBQ0EsUUFBSW00RCxTQUFTLENBQUNyMkQsSUFBVixDQUFlOUIsSUFBZixDQUFKLEVBQTBCO0FBQ3hCODhELE1BQUFBLGNBQWMsR0FBRy9ELFFBQWpCO0FBQ0QsS0FGRCxNQUVPLElBQUlULGNBQWMsQ0FBQ3gyRCxJQUFmLENBQW9COUIsSUFBcEIsQ0FBSixFQUErQjtBQUNwQztBQUNBODhELE1BQUFBLGNBQWMsR0FBRzdELFlBQWpCO0FBQ0QsS0FITSxNQUdBO0FBQ0w2RCxNQUFBQSxjQUFjLEdBQUdyRSxTQUFTLENBQUN6NEQsSUFBRCxDQUExQjtBQUNEOztBQUNELFFBQUltRixFQUFFLElBQUlBLEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBQTFCLEVBQTZCO0FBQzNCO0FBQ0EsVUFBSTcxRCxFQUFFLENBQUMyekQsUUFBSCxDQUFZbnlELFdBQVosT0FBOEIsTUFBbEMsRUFBMEM7QUFDeENtMkQsUUFBQUEsY0FBYyxHQUFHN0QsWUFBakI7QUFDRDs7QUFDRCxVQUFJNkQsY0FBYyxJQUFJQSxjQUFjLENBQUN4aEUsR0FBckMsRUFBMEM7QUFDeEMsZUFBT3doRSxjQUFjLENBQUN4aEUsR0FBZixDQUFtQjZKLEVBQW5CLEVBQXVCbkYsSUFBdkIsQ0FBUDtBQUNEOztBQUNEdzZELE1BQUFBLEdBQUcsR0FBR3IxRCxFQUFFLENBQUN3MUQsWUFBSCxDQUFnQjM2RCxJQUFoQixDQUFOOztBQUNBLFVBQUl3NkQsR0FBRyxLQUFLLEVBQVosRUFBZ0I7QUFDZCxZQUFJdUMsUUFBUSxHQUFHNTNELEVBQUUsQ0FBQ3l6RCxnQkFBSCxDQUFvQjU0RCxJQUFwQixDQUFmOztBQUNBLFlBQUksQ0FBQys4RCxRQUFELElBQWEsQ0FBQ0EsUUFBUSxDQUFDbEUsU0FBM0IsRUFBc0M7QUFDcEMsaUJBQU90OEQsU0FBUDtBQUNEO0FBQ0YsT0FkMEI7QUFnQjNCO0FBQ0E7OztBQUNBLGFBQU9pK0QsR0FBRyxLQUFLLElBQVIsR0FBZWorRCxTQUFmLEdBQTJCaStELEdBQWxDO0FBQ0Q7QUFDRjtBQTVJeUIsQ0FBNUI7Ozs7Ozs7O0FDMU1BLElBQUl3QyxNQUFNLEdBQUksVUFBVXpnRSxXQUFWLEVBQXFCO0FBQy9COztBQUNBO0FBQ0EsTUFBSXlnRSxNQUFNLEdBQUcsRUFBYjtBQUFBLE1BQ0lDLFlBQVksR0FBRztBQUNYLGtCQUFjLENBREg7QUFFWCxtQkFBZSxDQUZKO0FBR1gsbUJBQWUsQ0FISjtBQUlYLGtCQUFjLENBSkg7QUFLWCx3QkFBb0IsQ0FMVDtBQU1YLGdCQUFZO0FBTkQsR0FEbkI7QUFTQTs7QUFDQSxXQUFTOUMsR0FBVCxDQUFhL2xELEVBQWIsRUFBaUJDLElBQWpCLEVBQXVCO0FBQ25CLFNBQUssSUFBSWhULENBQVQsSUFBY2dULElBQWQsRUFBb0I7QUFDaEJELE1BQUFBLEVBQUUsQ0FBQy9TLENBQUQsQ0FBRixHQUFRZ1QsSUFBSSxDQUFDaFQsQ0FBRCxDQUFaO0FBQ0g7QUFDSjs7QUFFRCxXQUFTa0csT0FBVCxDQUFpQjFDLEdBQWpCLEVBQXNCO0FBQ2xCLFdBQU8scUJBQXFCekosTUFBTSxDQUFDK0gsU0FBUCxDQUFpQmhILFFBQWpCLENBQTBCUixJQUExQixDQUErQmtKLEdBQS9CLENBQTVCO0FBQ0g7O0FBRUQsV0FBU3UxRCxJQUFULENBQWMxNEQsTUFBZCxFQUFzQi9DLEVBQXRCLEVBQTBCMjhELE9BQTFCLEVBQW1DO0FBQy9CLFFBQUk1NUQsTUFBSixFQUFZO0FBQ1IsVUFBSTVDLEdBQUo7QUFBQSxVQUNJRixHQURKO0FBQUEsVUFFSTNCLE1BRko7QUFBQSxVQUdJdUksQ0FBQyxHQUFHLENBSFI7QUFLQTgxRCxNQUFBQSxPQUFPLEdBQUdBLE9BQU8sSUFBSSxJQUFyQjs7QUFFQSxVQUFJLENBQUMvekQsT0FBTyxDQUFDN0YsTUFBRCxDQUFaLEVBQXNCO0FBQ2xCLGFBQUs1QyxHQUFMLElBQVk0QyxNQUFaLEVBQW9CO0FBQ2hCO0FBQ0EsY0FBSS9DLEVBQUUsQ0FBQ2hELElBQUgsQ0FBUTIvRCxPQUFSLEVBQWlCNTVELE1BQU0sQ0FBQzVDLEdBQUQsQ0FBdkIsRUFBOEJBLEdBQTlCLEVBQW1DNEMsTUFBbkMsTUFBK0MsS0FBbkQsRUFBMEQ7QUFDdEQ7QUFDSDtBQUNKO0FBQ0osT0FQRCxNQU9PO0FBQ0h6RSxRQUFBQSxNQUFNLEdBQUd5RSxNQUFNLENBQUN6RSxNQUFoQjs7QUFDQSxhQUFLMkIsR0FBRyxHQUFHOEMsTUFBTSxDQUFDLENBQUQsQ0FBakIsRUFBc0I4RCxDQUFDLEdBQUd2SSxNQUExQixFQUFrQzJCLEdBQUcsR0FBRzhDLE1BQU0sQ0FBQyxFQUFFOEQsQ0FBSCxDQUE5QyxFQUFxRDtBQUNqRCxjQUFJN0csRUFBRSxDQUFDaEQsSUFBSCxDQUFRMi9ELE9BQVIsRUFBaUIxOEQsR0FBakIsRUFBc0I0RyxDQUF0QixFQUF5QjlELE1BQXpCLE1BQXFDLEtBQXpDLEVBQWdEO0FBQzVDO0FBQ0g7QUFDSjtBQUNKO0FBQ0o7QUFDSjs7QUFFRCxXQUFTdzdELE9BQVQsQ0FBaUJqckIsSUFBakIsRUFBdUJvb0IsR0FBdkIsRUFBNEI7QUFDeEIsU0FBSyxJQUFJNzBELENBQUMsR0FBRyxDQUFSLEVBQVc4MEQsQ0FBQyxHQUFHRCxHQUFHLENBQUNwOUQsTUFBeEIsRUFBZ0N1SSxDQUFDLEdBQUc4MEQsQ0FBcEMsRUFBdUM5MEQsQ0FBQyxFQUF4QyxFQUE0QztBQUN4QyxVQUFJNjBELEdBQUcsQ0FBQzcwRCxDQUFELENBQUgsS0FBV3lzQyxJQUFmLEVBQXFCO0FBQ2pCLGVBQU8sSUFBUDtBQUNIO0FBQ0o7O0FBQ0QsV0FBTyxLQUFQO0FBQ0g7O0FBQ0QsTUFBSWtyQixLQUFLLEdBQUcsU0FBU0EsS0FBVCxDQUFlQyxHQUFmLEVBQW9CO0FBRTVCLFFBQUl2aUUsSUFBSSxHQUFHLElBQVg7QUFFQTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNRQSxJQUFBQSxJQUFJLENBQUN3aUUsS0FBTCxHQUFhLEVBQWI7QUFFQWxELElBQUFBLEdBQUcsQ0FBQ3QvRCxJQUFELEVBQU91aUUsR0FBUCxDQUFIO0FBRUE7QUFDUjtBQUNBO0FBQ0E7O0FBRVF2aUUsSUFBQUEsSUFBSSxDQUFDeWlFLFVBQUwsQ0FBZ0J6aUUsSUFBSSxDQUFDNEQsS0FBckI7QUFDSCxHQTVCRDs7QUE2QkEwK0QsRUFBQUEsS0FBSyxDQUFDaDZELFNBQU4sR0FBa0I7QUFDZCxrQkFBYyxVQUFVMUUsS0FBVixFQUFpQjtBQUMzQjA3RCxNQUFBQSxHQUFHLENBQUMsSUFBRCxFQUFPO0FBQ04xN0QsUUFBQUEsS0FBSyxFQUFFQSxLQUREO0FBRU5tbkMsUUFBQUEsT0FBTyxFQUFFLEVBRkg7QUFHTjIzQixRQUFBQSxVQUFVLEVBQUUsQ0FBQ0osS0FBSyxDQUFDbjJELE1BQU4sQ0FBYXcyRCxPQUFkLENBSE47QUFJTi8vRCxRQUFBQSxLQUFLLEVBQUUsRUFKRDtBQUtOczFELFFBQUFBLElBQUksRUFBRSxFQUxBO0FBTU4wSyxRQUFBQSxTQUFTLEVBQUUsQ0FOTDtBQU9OQyxRQUFBQSxVQUFVLEVBQUUsQ0FQTjtBQVFOQyxRQUFBQSxRQUFRLEVBQUUsQ0FSSjtBQVNOQyxRQUFBQSxXQUFXLEVBQUUsQ0FUUDtBQVVOQyxRQUFBQSxVQUFVLEVBQUU7QUFWTixPQUFQLENBQUg7QUFZSCxLQWRhO0FBZWQsdUJBQW1CLFlBQVk7QUFDM0IsVUFBSWhqRSxJQUFJLEdBQUcsSUFBWDtBQUFBLFVBQ0lpakUsWUFBWSxHQUFHampFLElBQUksQ0FBQzBpRSxVQUFMLENBQWdCMWlFLElBQUksQ0FBQzBpRSxVQUFMLENBQWdCdGdFLE1BQWhCLEdBQXlCLENBQXpDLENBRG5CO0FBQUEsVUFFSW9nRSxLQUFLLEdBQUcsRUFGWixDQUQyQjs7QUFLM0IsVUFBSXhpRSxJQUFJLENBQUNrakUsUUFBVCxFQUFtQjtBQUNmRCxRQUFBQSxZQUFZLEdBQUdqakUsSUFBSSxDQUFDa2pFLFFBQUwsQ0FBY0QsWUFBZCxDQUFmO0FBQ0g7O0FBQ0QxRCxNQUFBQSxJQUFJLENBQUN2L0QsSUFBSSxDQUFDd2lFLEtBQU4sRUFBYSxVQUFVOWhDLENBQVYsRUFBYTtBQUMxQixZQUFJNzRCLEtBQUssR0FBRzY0QixDQUFDLENBQUM3NEIsS0FBRixJQUFXNjRCLENBQUMsQ0FBQyxDQUFELENBQXhCOztBQUNBLFlBQUksQ0FBQzc0QixLQUFMLEVBQVk7QUFDUixjQUFJbzdELFlBQVksS0FBS1gsS0FBSyxDQUFDbjJELE1BQU4sQ0FBYXcyRCxPQUFsQyxFQUEyQztBQUN2Q0gsWUFBQUEsS0FBSyxDQUFDbitELElBQU4sQ0FBV3E4QixDQUFYO0FBQ0g7QUFDSixTQUpELE1BSU8sSUFBSTJoQyxPQUFPLENBQUNZLFlBQUQsRUFBZXA3RCxLQUFmLENBQVgsRUFBa0M7QUFDckMyNkQsVUFBQUEsS0FBSyxDQUFDbitELElBQU4sQ0FBV3E4QixDQUFYO0FBQ0g7QUFDSixPQVRHLENBQUo7QUFVQSxhQUFPOGhDLEtBQVA7QUFDSCxLQWxDYTtBQW1DZCxpQkFBYSxVQUFVMzZELEtBQVYsRUFBaUI7QUFDMUIsV0FBSzY2RCxVQUFMLENBQWdCcitELElBQWhCLENBQXFCd0QsS0FBckI7QUFDSCxLQXJDYTtBQXNDZCxnQkFBWSxVQUFVczdELEdBQVYsRUFBZTtBQUN2QkEsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLElBQUksQ0FBYjtBQUNBLFVBQUl4RCxHQUFKOztBQUNBLGFBQU93RCxHQUFHLEVBQVYsRUFBYztBQUNWeEQsUUFBQUEsR0FBRyxHQUFHLEtBQUsrQyxVQUFMLENBQWdCclUsR0FBaEIsRUFBTjtBQUNIOztBQUNELGFBQU9zUixHQUFQO0FBQ0gsS0E3Q2E7QUE4Q2QscUJBQWlCLFlBQVk7QUFDekIsVUFBSTMvRCxJQUFJLEdBQUcsSUFBWDtBQUFBLFVBQ0lvakUsbUJBQW1CLEdBQUdkLEtBQUssQ0FBQ24yRCxNQUFOLENBQWFpM0QsbUJBRHZDO0FBQUEsVUFFSXI0QixPQUFPLEdBQUcvcUMsSUFBSSxDQUFDK3FDLE9BRm5CO0FBQUEsVUFHSW5vQyxLQUFLLEdBQUc1QyxJQUFJLENBQUM0QyxLQUhqQjtBQUFBLFVBSUlnQixLQUFLLEdBQUc1RCxJQUFJLENBQUM0RCxLQUpqQjtBQUtBbW5DLE1BQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDeHBDLEtBQVIsQ0FBYyxDQUFkLEVBQWlCd3BDLE9BQU8sQ0FBQzNvQyxNQUFSLEdBQWlCUSxLQUFLLENBQUNSLE1BQXhDLENBQVYsQ0FOeUI7O0FBUXpCLFVBQUlpaEUsSUFBSSxHQUFHLENBQUN0NEIsT0FBTyxDQUFDM29DLE1BQVIsR0FBaUJnaEUsbUJBQWpCLEdBQXVDLEtBQXZDLEdBQStDLEVBQWhELElBQ1ByNEIsT0FBTyxDQUFDeHBDLEtBQVIsQ0FBYyxJQUFJNmhFLG1CQUFsQixFQUF1Q2g2RCxPQUF2QyxDQUErQyxJQUEvQyxFQUFxRCxHQUFyRCxDQURKO0FBQUEsVUFFSTJOLElBQUksR0FBR25VLEtBQUssR0FBR2dCLEtBRm5CLENBUnlCOztBQVl6Qm1ULE1BQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDeFYsS0FBTCxDQUFXLENBQVgsRUFBYzZoRSxtQkFBZCxLQUNGcnNELElBQUksQ0FBQzNVLE1BQUwsR0FBY2doRSxtQkFBZCxHQUFvQyxLQUFwQyxHQUE0QyxFQUQxQyxDQUFQO0FBRUEsYUFBT0MsSUFBSSxHQUFHdHNELElBQVAsR0FBYyxJQUFkLEdBQXFCLElBQUl0SyxLQUFKLENBQVU0MkQsSUFBSSxDQUFDamhFLE1BQUwsR0FBYyxDQUF4QixFQUEyQmtILElBQTNCLENBQWdDLEdBQWhDLENBQXJCLEdBQTRELEdBQW5FO0FBQ0gsS0E3RGE7QUE4RGQsaUJBQWEsU0FBU2c2RCxtQkFBVCxDQUE2QjV3QyxDQUE3QixFQUFnQztBQUN6QyxhQUFPLEtBQUs2d0MsU0FBTCxDQUFlN3dDLENBQWYsQ0FBUDtBQUNILEtBaEVhO0FBaUVkLHdCQUFvQixVQUFVOHdDLEVBQVYsRUFBYztBQUM5QixVQUFJeGpFLElBQUksR0FBRyxJQUFYO0FBQUEsVUFDSXVqRSxTQUFTLEdBQUd2akUsSUFBSSxDQUFDdWpFLFNBRHJCO0FBQUEsVUFFSTU0RCxDQUZKO0FBQUEsVUFHSTg0RCxnQkFBZ0IsR0FBR3pqRSxJQUFJLENBQUN5akUsZ0JBSDVCOztBQUlBLFVBQUksQ0FBQ0EsZ0JBQUQsSUFBcUJGLFNBQXpCLEVBQW9DO0FBQ2hDRSxRQUFBQSxnQkFBZ0IsR0FBR3pqRSxJQUFJLENBQUN5akUsZ0JBQUwsR0FBd0IsRUFBM0M7O0FBQ0EsYUFBSzk0RCxDQUFMLElBQVU0NEQsU0FBVixFQUFxQjtBQUNqQkUsVUFBQUEsZ0JBQWdCLENBQUNGLFNBQVMsQ0FBQzU0RCxDQUFELENBQVYsQ0FBaEIsR0FBaUNBLENBQWpDO0FBQ0g7QUFDSixPQVY2Qjs7O0FBWTlCLFVBQUk4NEQsZ0JBQUosRUFBc0I7QUFDbEIsZUFBT0EsZ0JBQWdCLENBQUNELEVBQUQsQ0FBdkI7QUFDSCxPQUZELE1BRU87QUFDSCxlQUFPQSxFQUFQO0FBQ0g7QUFDSixLQWxGYTtBQW1GZCxXQUFPLFlBQVk7QUFDZixVQUFJeGpFLElBQUksR0FBRyxJQUFYO0FBQUEsVUFDSTRELEtBQUssR0FBRzVELElBQUksQ0FBQzRELEtBRGpCO0FBQUEsVUFFSStHLENBRko7QUFBQSxVQUdJKzRELElBSEo7QUFBQSxVQUlJdjRCLENBSko7QUFBQSxVQUtJdzBCLEdBTEo7QUFBQSxVQU1JZ0UsS0FOSjtBQUFBLFVBT0luQixLQUFLLEdBQUd4aUUsSUFBSSxDQUFDNGpFLGVBQUwsRUFQWjtBQVNBNWpFLE1BQUFBLElBQUksQ0FBQzRDLEtBQUwsR0FBYTVDLElBQUksQ0FBQ2s0RCxJQUFMLEdBQVksRUFBekI7O0FBRUEsVUFBSSxDQUFDdDBELEtBQUwsRUFBWTtBQUNSLGVBQU81RCxJQUFJLENBQUM2akUsU0FBTCxDQUFldkIsS0FBSyxDQUFDbjJELE1BQU4sQ0FBYTIzRCxPQUE1QixDQUFQO0FBQ0g7O0FBRUQsV0FBS241RCxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUc2M0QsS0FBSyxDQUFDcGdFLE1BQXRCLEVBQThCdUksQ0FBQyxFQUEvQixFQUFtQztBQUMvQis0RCxRQUFBQSxJQUFJLEdBQUdsQixLQUFLLENBQUM3M0QsQ0FBRCxDQUFaLENBRCtCOztBQUcvQixZQUFJc0ssTUFBTSxHQUFHeXVELElBQUksQ0FBQ3p1RCxNQUFMLElBQWV5dUQsSUFBSSxDQUFDLENBQUQsQ0FBaEM7QUFBQSxZQUNJSyxLQUFLLEdBQUdMLElBQUksQ0FBQ0ssS0FBTCxJQUFjTCxJQUFJLENBQUMsQ0FBRCxDQUQ5QjtBQUFBLFlBRUlNLE1BQU0sR0FBR04sSUFBSSxDQUFDTSxNQUFMLElBQWVOLElBQUksQ0FBQyxDQUFELENBQW5CLElBQTBCaGlFLFdBRnZDLENBSCtCOztBQU8vQixZQUFLeXBDLENBQUMsR0FBR3ZuQyxLQUFLLENBQUNoQixLQUFOLENBQVlxUyxNQUFaLENBQVQsRUFBK0I7QUFDM0IwdUQsVUFBQUEsS0FBSyxHQUFHeDRCLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS3ZvQyxLQUFMLENBQVcsT0FBWCxDQUFSOztBQUNBLGNBQUkrZ0UsS0FBSixFQUFXO0FBQ1AzakUsWUFBQUEsSUFBSSxDQUFDNmlFLFVBQUwsSUFBbUJjLEtBQUssQ0FBQ3ZoRSxNQUF6QjtBQUNIOztBQUNEazlELFVBQUFBLEdBQUcsQ0FBQ3QvRCxJQUFELEVBQU87QUFDTjRpRSxZQUFBQSxTQUFTLEVBQUU1aUUsSUFBSSxDQUFDOGlFLFFBRFY7QUFFTkEsWUFBQUEsUUFBUSxFQUFFOWlFLElBQUksQ0FBQzZpRSxVQUFMLEdBQWtCLENBRnRCO0FBR05FLFlBQUFBLFdBQVcsRUFBRS9pRSxJQUFJLENBQUNnakUsVUFIWjtBQUlOQSxZQUFBQSxVQUFVLEVBQUVXLEtBQUssR0FDYkEsS0FBSyxDQUFDQSxLQUFLLENBQUN2aEUsTUFBTixHQUFlLENBQWhCLENBQUwsQ0FBd0JBLE1BQXhCLEdBQWlDLENBRHBCLEdBQ3dCcEMsSUFBSSxDQUFDZ2pFLFVBQUwsR0FBa0I3M0IsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFLL29DO0FBTDFELFdBQVAsQ0FBSDtBQU9BLGNBQUlRLEtBQUosQ0FaMkI7O0FBYzNCQSxVQUFBQSxLQUFLLEdBQUc1QyxJQUFJLENBQUM0QyxLQUFMLEdBQWF1b0MsQ0FBQyxDQUFDLENBQUQsQ0FBdEIsQ0FkMkI7O0FBaUIzQm5yQyxVQUFBQSxJQUFJLENBQUNpa0UsT0FBTCxHQUFlOTRCLENBQWYsQ0FqQjJCOztBQW1CM0JuckMsVUFBQUEsSUFBSSxDQUFDazRELElBQUwsR0FBWXQxRCxLQUFaLENBbkIyQjs7QUFxQjNCNUMsVUFBQUEsSUFBSSxDQUFDK3FDLE9BQUwsSUFBZ0Jub0MsS0FBaEI7QUFDQSs4RCxVQUFBQSxHQUFHLEdBQUdxRSxNQUFNLElBQUlBLE1BQU0sQ0FBQ2xqRSxJQUFQLENBQVlkLElBQVosQ0FBaEI7O0FBQ0EsY0FBSTIvRCxHQUFHLEtBQUtqK0QsV0FBWixFQUF1QjtBQUNuQmkrRCxZQUFBQSxHQUFHLEdBQUdvRSxLQUFOO0FBQ0gsV0FGRCxNQUVPO0FBQ0hwRSxZQUFBQSxHQUFHLEdBQUczL0QsSUFBSSxDQUFDNmpFLFNBQUwsQ0FBZWxFLEdBQWYsQ0FBTjtBQUNIOztBQUNELzdELFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDckMsS0FBTixDQUFZcUIsS0FBSyxDQUFDUixNQUFsQixDQUFSO0FBQ0FwQyxVQUFBQSxJQUFJLENBQUM0RCxLQUFMLEdBQWFBLEtBQWI7O0FBRUEsY0FBSSs3RCxHQUFKLEVBQVM7QUFDTCxtQkFBT0EsR0FBUDtBQUNILFdBRkQsTUFFTztBQUNIO0FBQ0EsbUJBQU8zL0QsSUFBSSxDQUFDa2tFLEdBQUwsRUFBUDtBQUNIO0FBQ0o7QUFDSjtBQUNKO0FBakphLEdBQWxCO0FBbUpBNUIsRUFBQUEsS0FBSyxDQUFDbjJELE1BQU4sR0FBZTtBQUNYLGVBQVcsR0FEQTtBQUVYLDJCQUF1QixFQUZaO0FBR1gsZUFBVztBQUhBLEdBQWY7QUFLQSxNQUFJZzRELEtBQUssR0FBRyxJQUFJN0IsS0FBSixDQUFVO0FBQ2xCLGFBQVMsQ0FDTCxDQUFDLEdBQUQsRUFBTSx3QkFBTixFQUNJLFlBQVk7QUFDUixXQUFLcEssSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0FESyxFQU1MLENBQUMsR0FBRCxFQUFNLHdCQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBTkssRUFXTCxDQUFDLEdBQUQsRUFBTSwyQ0FBTixFQUNJLFlBQVk7QUFDUixXQUFLQSxJQUFMLEdBQVksS0FBS2tNLEVBQUwsQ0FBUXR2QyxJQUFSLENBQWEsS0FBS29qQyxJQUFsQixDQUFaO0FBQ0gsS0FITCxDQVhLLEVBZ0JMLENBQUMsR0FBRCxFQUFNLDRDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBaEJLLEVBcUJMLENBQUMsR0FBRCxFQUFNLDRDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBckJLLEVBMEJMLENBQUMsR0FBRCxFQUFNLDRDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBMUJLLEVBK0JMLENBQUMsR0FBRCxFQUFNLDRDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBL0JLLEVBb0NMLENBQUMsR0FBRCxFQUFNLDJDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLENBQVo7QUFDSCxLQUhMLENBcENLLEVBeUNMLENBQUMsR0FBRCxFQUFNLG1HQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRdHZDLElBQVIsQ0FBYSxLQUFLb2pDLElBQWxCLEVBQXdCMzJELEtBQXhCLENBQThCLENBQTlCLEVBQWlDLENBQUMsQ0FBbEMsQ0FBWjtBQUNBLFdBQUs4aUUsU0FBTCxDQUFlLElBQWY7QUFDSCxLQUpMLENBekNLLEVBK0NMLENBQUMsR0FBRCxFQUFNLFNBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0MsUUFBTDtBQUNILEtBSEwsRUFJSSxDQUFDLElBQUQsQ0FKSixDQS9DSyxFQXFETCxDQUFDLEdBQUQsRUFBTSx3QkFBTixFQUNJLFlBQVk7QUFDUixXQUFLcE0sSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0FyREssRUEwREwsQ0FBQyxHQUFELEVBQU0sNkJBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0ExREssRUErREwsQ0FBQyxHQUFELEVBQU0saUdBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVFHLFFBQVIsQ0FBaUIsS0FBS3JNLElBQXRCLENBQVo7QUFDSCxLQUhMLENBL0RLLEVBb0VMLENBQUMsR0FBRCxFQUFNLGdCQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUtBLElBQUwsR0FBWSxLQUFLa00sRUFBTCxDQUFRSSxXQUFSLENBQW9CLEtBQUt0TSxJQUF6QixDQUFaO0FBQ0gsS0FITCxDQXBFSyxFQXlFTCxDQUFDLEdBQUQsRUFBTSxnQkFBTixFQUNJLFlBQVk7QUFDUixXQUFLQSxJQUFMLEdBQVksS0FBS2tNLEVBQUwsQ0FBUUksV0FBUixDQUFvQixLQUFLdE0sSUFBekIsQ0FBWjtBQUNILEtBSEwsQ0F6RUssRUE4RUwsQ0FBQyxHQUFELEVBQU0sdURBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVFHLFFBQVIsQ0FBaUIsS0FBS3JNLElBQUwsQ0FBVTMyRCxLQUFWLENBQWdCLENBQWhCLENBQWpCLENBQVo7QUFDSCxLQUhMLENBOUVLLEVBbUZMLENBQUMsR0FBRCxFQUFNLG1HQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUsyMkQsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVFHLFFBQVIsQ0FBaUIsS0FBS3JNLElBQUwsQ0FBVTMyRCxLQUFWLENBQWdCLENBQWhCLENBQWpCLENBQVo7QUFDSCxLQUhMLENBbkZLLEVBd0ZMLENBQUMsR0FBRCxFQUFNLDBDQUFOLEVBQ0ksWUFBWTtBQUNSLFdBQUsyMkQsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0F4RkssRUE2RkwsQ0FBQyxHQUFELEVBQU0sTUFBTixFQUFjLENBQWQsQ0E3RkssRUE4RkwsQ0FBQyxHQUFELEVBQU0sMkNBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0E5RkssRUFtR0wsQ0FBQyxHQUFELEVBQU0sMENBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0FuR0ssRUF3R0wsQ0FBQyxHQUFELEVBQU0sMENBQU4sRUFDSSxZQUFZO0FBQ1IsV0FBS0EsSUFBTCxHQUFZLEtBQUtrTSxFQUFMLENBQVF0dkMsSUFBUixDQUFhLEtBQUtvakMsSUFBbEIsQ0FBWjtBQUNILEtBSEwsQ0F4R0ssRUE2R0wsQ0FBQyxHQUFELEVBQU0sS0FBTixFQUFhLENBQWIsQ0E3R0ssRUE4R0wsQ0FBQyxHQUFELEVBQU0sc0JBQU4sRUFBOEIsQ0FBOUIsQ0E5R0ssRUErR0wsQ0FBQyxHQUFELEVBQU0sSUFBTixFQUFZLENBQVosQ0EvR0s7QUFEUyxHQUFWLENBQVo7QUFtSEFpSyxFQUFBQSxNQUFNLENBQUNnQyxLQUFQLEdBQWVBLEtBQWY7QUFDQUEsRUFBQUEsS0FBSyxDQUFDWixTQUFOLEdBQWtCO0FBQ2QsWUFBUSxHQURNO0FBRWQsb0JBQWdCLEdBRkY7QUFHZCxxQkFBaUIsR0FISDtBQUlkLGdCQUFZLEdBSkU7QUFLZCxrQkFBYyxHQUxBO0FBTWQsb0JBQWdCLEdBTkY7QUFPZCxvQkFBZ0IsR0FQRjtBQVFkLHVCQUFtQixHQVJMO0FBU2QsaUJBQWEsR0FUQztBQVVkLGdCQUFZLEdBVkU7QUFXZCxpQkFBYSxHQVhDO0FBWWQseUJBQXFCLEdBWlA7QUFhZCxXQUFPLEdBYk87QUFjZCxhQUFTLEdBZEs7QUFlZCxjQUFVLEdBZkk7QUFnQmQsWUFBUSxHQWhCTTtBQWlCZCxhQUFTLEdBakJLO0FBa0JkLGFBQVMsR0FsQks7QUFtQmQsYUFBUyxHQW5CSztBQW9CZCxZQUFRLEdBcEJNO0FBcUJkLGVBQVcsR0FyQkc7QUFzQmQsYUFBUyxHQXRCSztBQXVCZCxpQkFBYSxHQXZCQztBQXdCZCxTQUFLLEdBeEJTO0FBeUJkLGVBQVcsR0F6Qkc7QUEwQmQsY0FBVSxHQTFCSTtBQTJCZCx1QkFBbUIsSUEzQkw7QUE0QmQsZ0JBQVksSUE1QkU7QUE2QmQsZ0NBQTRCLElBN0JkO0FBOEJkLGtCQUFjLElBOUJBO0FBK0JkLHFCQUFpQixJQS9CSDtBQWdDZCxtQkFBZSxJQWhDRDtBQWlDZCxzQkFBa0IsSUFqQ0o7QUFrQ2Qsb0JBQWdCLElBbENGO0FBbUNkLGNBQVUsSUFuQ0k7QUFvQ2Qsa0JBQWMsSUFwQ0E7QUFxQ2QsY0FBVSxJQXJDSTtBQXNDZCxnQkFBWSxJQXRDRTtBQXVDZCxvQkFBZ0IsSUF2Q0Y7QUF3Q2QsdUJBQW1CLElBeENMO0FBeUNkLHdCQUFvQjtBQXpDTixHQUFsQjtBQTJDQXBCLEVBQUFBLE1BQU0sQ0FBQ3NDLFdBQVAsR0FBcUIsQ0FDakIsQ0FBQyxHQUFELEVBQU0sQ0FBQyxJQUFELENBQU4sQ0FEaUIsRUFFakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELENBQVAsRUFDSSxZQUFZO0FBQ1IsV0FBTyxDQUFDLEtBQUtDLEVBQU4sQ0FBUDtBQUNILEdBSEwsQ0FGaUIsRUFPakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELEVBQU8sR0FBUCxFQUFZLElBQVosQ0FBUCxFQUNJLFlBQVk7QUFDUixTQUFLQSxFQUFMLENBQVFyZ0UsSUFBUixDQUFhLEtBQUtzZ0UsRUFBbEI7QUFDSCxHQUhMLENBUGlCLEVBWWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLENBWmlCLEVBYWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxJQUFiLENBQVAsRUFDSSxZQUFZO0FBQ1I7QUFFQSxTQUFLRCxFQUFMLENBQVFFLGNBQVIsR0FBeUIsS0FBS0QsRUFBTCxDQUFRRSxjQUFSLEdBQXlCLEtBQUtDLEVBQXZEO0FBQ0EsUUFBSUMsS0FBSjtBQUNBQSxJQUFBQSxLQUFLLEdBQUcsS0FBS0wsRUFBTCxDQUFRSyxLQUFSLEdBQWdCLEtBQUtMLEVBQUwsQ0FBUUssS0FBUixJQUFpQixDQUF6QztBQUNBLFNBQUtKLEVBQUwsQ0FBUUksS0FBUixHQUFnQkEsS0FBSyxHQUFHLENBQXhCO0FBQ0EsU0FBS0osRUFBTCxDQUFRNTJDLElBQVIsR0FBZSxLQUFLMjJDLEVBQXBCO0FBQ0EsU0FBS0EsRUFBTCxDQUFRM3RELElBQVIsR0FBZSxLQUFLNHRELEVBQXBCO0FBQ0EsV0FBTyxLQUFLQSxFQUFaO0FBQ0gsR0FYTCxDQWJpQixFQTBCakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELENBQVAsQ0ExQmlCLEVBMkJqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsQ0FBUCxDQTNCaUIsRUE0QmpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLENBNUJpQixFQTZCakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELENBQVAsRUFDSSxZQUFZO0FBQ1IsV0FBTyxHQUFQO0FBQ0gsR0FITCxDQTdCaUIsRUFrQ2pCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU87QUFDSGp5QyxNQUFBQSxDQUFDLEVBQUUsS0FEQTtBQUVIdnhCLE1BQUFBLEtBQUssRUFBRSxLQUFLdWpFO0FBRlQsS0FBUDtBQUlILEdBTkwsQ0FsQ2lCLEVBMENqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsQ0FBUCxFQUNJLFlBQVk7QUFDUixXQUFPO0FBQ0hoeUMsTUFBQUEsQ0FBQyxFQUFFLEtBREE7QUFFSHZ4QixNQUFBQSxLQUFLLEVBQUUsS0FBS3VqRTtBQUZULEtBQVA7QUFJSCxHQU5MLENBMUNpQixFQWtEakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELENBQVAsRUFDSSxZQUFZO0FBQ1IsV0FBTztBQUNIaHlDLE1BQUFBLENBQUMsRUFBRSxJQURBO0FBRUh2eEIsTUFBQUEsS0FBSyxFQUFFLEtBQUt1akU7QUFGVCxLQUFQO0FBSUgsR0FOTCxDQWxEaUIsRUEwRGpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU87QUFDSGh5QyxNQUFBQSxDQUFDLEVBQUUsS0FEQTtBQUVIdnhCLE1BQUFBLEtBQUssRUFBRSxLQUFLdWpFO0FBRlQsS0FBUDtBQUlILEdBTkwsQ0ExRGlCLEVBa0VqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsQ0FBUCxDQWxFaUIsRUFtRWpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLENBbkVpQixFQW9FakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELENBQVAsQ0FwRWlCLEVBcUVqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsQ0FBUCxDQXJFaUIsRUFzRWpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLENBdEVpQixFQXVFakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELENBQVAsQ0F2RWlCLEVBd0VqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU87QUFDSGh5QyxNQUFBQSxDQUFDLEVBQUUsUUFEQTtBQUVIdnhCLE1BQUFBLEtBQUssRUFBRTtBQUNINmpFLFFBQUFBLEtBQUssRUFBRSxLQUFLRjtBQURUO0FBRkosS0FBUDtBQU1ILEdBUkwsQ0F4RWlCLEVBa0ZqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsQ0FBUCxDQWxGaUIsRUFtRmpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxDQUFQLENBbkZpQixFQW9GakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLElBQVgsRUFBaUIsSUFBakIsRUFBdUIsR0FBdkIsQ0FBUCxFQUNJLFlBQVk7QUFDUixXQUFPO0FBQ0hweUMsTUFBQUEsQ0FBQyxFQUFFLFFBREE7QUFFSHZ4QixNQUFBQSxLQUFLLEVBQUU7QUFDSDZqRSxRQUFBQSxLQUFLLEVBQUUsS0FBS0YsRUFEVDtBQUVIbGlFLFFBQUFBLEtBQUssRUFBRSxLQUFLK2hFLEVBRlQ7QUFHSHhqRSxRQUFBQSxLQUFLLEVBQUUsS0FBSzhqRTtBQUhUO0FBRkosS0FBUDtBQVFILEdBVkwsQ0FwRmlCLEVBZ0dqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixHQUFoQixDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU87QUFDSHZ5QyxNQUFBQSxDQUFDLEVBQUUsUUFEQTtBQUVIdnhCLE1BQUFBLEtBQUssRUFBRTtBQUNIMkMsUUFBQUEsRUFBRSxFQUFFLEtBQUtnaEUsRUFBTCxDQUFRaDVELFdBQVIsRUFERDtBQUVIbzVELFFBQUFBLEtBQUssRUFBRSxLQUFLUDtBQUZUO0FBRkosS0FBUDtBQU9ILEdBVEwsQ0FoR2lCLEVBMkdqQixDQUFDLElBQUQsRUFBTyxDQUFDLEdBQUQsRUFBTSxHQUFOLENBQVAsRUFDSSxZQUFZO0FBQ1IsV0FBTztBQUNIanlDLE1BQUFBLENBQUMsRUFBRSxRQURBO0FBRUh2eEIsTUFBQUEsS0FBSyxFQUFFO0FBQ0g2akUsUUFBQUEsS0FBSyxFQUFFLEtBQUtGLEVBQUwsQ0FBUWg1RCxXQUFSO0FBREo7QUFGSixLQUFQO0FBTUgsR0FSTCxDQTNHaUIsRUFxSGpCLENBQUMsSUFBRCxFQUFPLENBQUMsR0FBRCxFQUFNLElBQU4sRUFBWSxHQUFaLENBQVAsRUFDSSxZQUFZO0FBQ1IsV0FBTztBQUNING1CLE1BQUFBLENBQUMsRUFBRSxRQURBO0FBRUh2eEIsTUFBQUEsS0FBSyxFQUFFO0FBQ0gyQyxRQUFBQSxFQUFFLEVBQUUsS0FERDtBQUVIb2hFLFFBQUFBLEtBQUssRUFBRSxLQUFLSjtBQUZUO0FBRkosS0FBUDtBQU9ILEdBVEwsQ0FySGlCLEVBZ0lqQixDQUFDLElBQUQsRUFBTyxDQUFDLElBQUQsQ0FBUCxDQWhJaUIsRUFpSWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLENBaklpQixFQWtJakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELENBQVAsQ0FsSWlCLEVBbUlqQixDQUFDLElBQUQsRUFBTyxDQUFDLElBQUQsQ0FBUCxDQW5JaUIsRUFvSWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLENBcElpQixFQXFJakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELENBQVAsQ0FySWlCLEVBc0lqQixDQUFDLElBQUQsRUFBTyxDQUFDLElBQUQsQ0FBUCxDQXRJaUIsRUF1SWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLENBdklpQixFQXdJakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELENBQVAsQ0F4SWlCLEVBeUlqQixDQUFDLElBQUQsRUFBTyxDQUFDLElBQUQsQ0FBUCxDQXpJaUIsRUEwSWpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU8sQ0FBQyxLQUFLSixFQUFOLENBQVA7QUFDSCxHQUhMLENBMUlpQixFQStJakIsQ0FBQyxJQUFELEVBQU8sQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFNBQUtBLEVBQUwsQ0FBUXJnRSxJQUFSLENBQWEsS0FBS3lnRSxFQUFsQjtBQUNILEdBSEwsQ0EvSWlCLEVBb0pqQixDQUFDLElBQUQsRUFBTyxDQUFDLElBQUQsQ0FBUCxDQXBKaUIsRUFxSmpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxDQUFQLEVBQ0ksWUFBWTtBQUNSLFdBQU87QUFDSGhELE1BQUFBLE1BQU0sRUFBRSxLQUFLNEM7QUFEVixLQUFQO0FBR0gsR0FMTCxDQXJKaUIsRUE0SmpCLENBQUMsSUFBRCxFQUFPLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBUCxFQUNJLFlBQVk7QUFDUixXQUFPO0FBQ0hoeUMsTUFBQUEsQ0FBQyxFQUFFLEtBREE7QUFFSHZ4QixNQUFBQSxLQUFLLEVBQUUsS0FBS3VqRSxFQUFMLENBQVF2akUsS0FGWjtBQUdIMmdFLE1BQUFBLE1BQU0sRUFBRSxLQUFLZ0Q7QUFIVixLQUFQO0FBS0gsR0FQTCxDQTVKaUIsQ0FBckI7QUFzS0EzQyxFQUFBQSxNQUFNLENBQUNnRCxLQUFQLEdBQWU7QUFDWCxhQUFTO0FBQ0wsV0FBSztBQUNELGNBQU0sQ0FETDtBQUVELGNBQU0sQ0FGTDtBQUdELGNBQU0sRUFITDtBQUlELGNBQU0sRUFKTDtBQUtELGNBQU0sRUFMTDtBQU1ELGNBQU0sRUFOTDtBQU9ELGNBQU0sRUFQTDtBQVFELGNBQU0sRUFSTDtBQVNELGNBQU0sRUFUTDtBQVVELGNBQU0sRUFWTDtBQVdELGNBQU07QUFYTCxPQURBO0FBY0wsV0FBSztBQUNELGNBQU0sRUFETDtBQUVELGNBQU0sRUFGTDtBQUdELGNBQU0sRUFITDtBQUlELGNBQU0sRUFKTDtBQUtELGNBQU0sRUFMTDtBQU1ELGNBQU07QUFOTCxPQWRBO0FBc0JMLFdBQUs7QUFDRCxjQUFNO0FBREwsT0F0QkE7QUF5QkwsWUFBTTtBQUNGLGNBQU0sRUFESjtBQUVGLGNBQU0sRUFGSjtBQUdGLGNBQU0sRUFISjtBQUlGLGNBQU0sRUFKSjtBQUtGLGNBQU0sRUFMSjtBQU1GLGNBQU0sRUFOSjtBQU9GLGNBQU07QUFQSixPQXpCRDtBQWtDTCxZQUFNO0FBQ0YsY0FBTSxFQURKO0FBRUYsY0FBTSxFQUZKO0FBR0YsY0FBTSxFQUhKO0FBSUYsY0FBTSxFQUpKO0FBS0YsY0FBTSxFQUxKO0FBTUYsY0FBTTtBQU5KLE9BbENEO0FBMENMLFlBQU07QUFDRixjQUFNO0FBREosT0ExQ0Q7QUE2Q0wsWUFBTTtBQUNGLGNBQU0sRUFESjtBQUVGLGNBQU0sRUFGSjtBQUdGLGNBQU0sRUFISjtBQUlGLGNBQU0sRUFKSjtBQUtGLGNBQU0sRUFMSjtBQU1GLGNBQU0sRUFOSjtBQU9GLGNBQU0sRUFQSjtBQVFGLGNBQU0sRUFSSjtBQVNGLGNBQU0sRUFUSjtBQVVGLGNBQU07QUFWSixPQTdDRDtBQXlETCxZQUFNO0FBQ0YsY0FBTSxFQURKO0FBRUYsY0FBTSxFQUZKO0FBR0YsY0FBTSxFQUhKO0FBSUYsY0FBTSxFQUpKO0FBS0YsY0FBTSxFQUxKO0FBTUYsY0FBTSxFQU5KO0FBT0YsY0FBTSxFQVBKO0FBUUYsY0FBTSxFQVJKO0FBU0YsY0FBTTtBQVRKLE9BekREO0FBb0VMLFlBQU07QUFDRixjQUFNLEVBREo7QUFFRixjQUFNLEVBRko7QUFHRixjQUFNLEVBSEo7QUFJRixjQUFNLEVBSko7QUFLRixjQUFNLEVBTEo7QUFNRixjQUFNO0FBTkosT0FwRUQ7QUE0RUwsWUFBTTtBQUNGLGNBQU07QUFESixPQTVFRDtBQStFTCxZQUFNO0FBQ0YsY0FBTTtBQURKO0FBL0VELEtBREU7QUFvRlgsY0FBVTtBQUNOLFdBQUs7QUFDRCxhQUFLLENBQUMsQ0FBRCxFQUFJempFLFdBQUosRUFBZSxDQUFmLENBREo7QUFFRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUZKO0FBR0QsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FISjtBQUlELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBSko7QUFLRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUxKO0FBTUQsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FOSjtBQU9ELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmO0FBUEosT0FEQztBQVVOLFdBQUs7QUFDRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtBQURKLE9BVkM7QUFhTixXQUFLO0FBQ0QsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FESjtBQUVELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBRko7QUFHRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUhKO0FBSUQsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FKSjtBQUtELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBTEo7QUFNRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZjtBQU5KLE9BYkM7QUFxQk4sV0FBSztBQUNELGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURKO0FBRUQsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRko7QUFHRCxhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISjtBQUlELGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpKO0FBS0QsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEo7QUFNRCxhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FOSjtBQU9ELGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQVBKO0FBUUQsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBUko7QUFTRCxhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FUSjtBQVVELGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQVZKO0FBV0QsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBWEo7QUFZRCxhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7QUFaSixPQXJCQztBQW1DTixXQUFLO0FBQ0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREo7QUFFRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSjtBQUdELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhKO0FBSUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSko7QUFLRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSjtBQU1ELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5KO0FBT0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEo7QUFRRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSjtBQVNELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRKO0FBVUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVko7QUFXRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FYSjtBQVlELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQVpKLE9BbkNDO0FBaUROLFdBQUs7QUFDRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESjtBQUVELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZKO0FBR0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEo7QUFJRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSjtBQUtELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxKO0FBTUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTko7QUFPRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FQSjtBQVFELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVJKO0FBU0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVEo7QUFVRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FWSjtBQVdELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVhKO0FBWUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWkosT0FqREM7QUErRE4sV0FBSztBQUNELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBREo7QUFFRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtBQUZKLE9BL0RDO0FBbUVOLFdBQUs7QUFDRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESjtBQUVELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZKO0FBR0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEo7QUFJRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSjtBQUtELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxKO0FBTUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTko7QUFPRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FQSjtBQVFELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVJKO0FBU0QsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVEo7QUFVRCxhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FWSjtBQVdELGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVhKO0FBWUQsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWkosT0FuRUM7QUFpRk4sV0FBSztBQUNELGFBQUssQ0FBQyxDQUFELENBREo7QUFFRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtBQUZKLE9BakZDO0FBcUZOLFdBQUs7QUFDRCxhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESjtBQUVELGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZKO0FBR0QsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FISjtBQUlELGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBSko7QUFLRCxhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUxKO0FBTUQsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7QUFOSixPQXJGQztBQTZGTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FQSDtBQVFGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVRIO0FBVUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FWSDtBQVdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmO0FBWEgsT0E3RkE7QUEwR04sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0ExR0E7QUF1SE4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0F2SEE7QUFvSU4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0FwSUE7QUFpSk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0FqSkE7QUE4Sk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0E5SkE7QUEyS04sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0EzS0E7QUF3TE4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBUEg7QUFRRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVJIO0FBU0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBVkg7QUFXRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZjtBQVhILE9BeExBO0FBcU1OLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKO0FBTkgsT0FyTUE7QUE2TU4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmO0FBUEgsT0E3TUE7QUFzTk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQURILE9BdE5BO0FBeU5OLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFESCxPQXpOQTtBQTROTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBREgsT0E1TkE7QUErTk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQURILE9BL05BO0FBa09OLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFESCxPQWxPQTtBQXFPTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7QUFESCxPQXJPQTtBQXdPTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7QUFESCxPQXhPQTtBQTJPTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7QUFRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtBQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0FBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7QUFXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FYSDtBQVlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQVpILE9BM09BO0FBeVBOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBTkg7QUFPRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZjtBQVBILE9BelBBO0FBa1FOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTkg7QUFPRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7QUFQSCxPQWxRQTtBQTJRTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKO0FBUEgsT0EzUUE7QUFvUk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSjtBQVBILE9BcFJBO0FBNlJOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBTkg7QUFPRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUo7QUFQSCxPQTdSQTtBQXNTTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWY7QUFQSCxPQXRTQTtBQStTTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FQSDtBQVFGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsQ0FBZixDQVRIO0FBVUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLENBQWYsQ0FWSDtBQVdGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxDQUFmO0FBWEgsT0EvU0E7QUE0VE4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0E1VEE7QUF5VU4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBWEg7QUFZRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFaSCxPQXpVQTtBQXVWTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQXZWQTtBQTJWTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQTNWQTtBQStWTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQS9WQTtBQW1XTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQW5XQTtBQXVXTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQXZXQTtBQTJXTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFGSCxPQTNXQTtBQStXTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmO0FBRkgsT0EvV0E7QUFtWE4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FISDtBQUlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUpIO0FBS0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FOSDtBQU9GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVBIO0FBUUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUkg7QUFTRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FUSDtBQVVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVZIO0FBV0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWEgsT0FuWEE7QUFnWU4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmO0FBREgsT0FoWUE7QUFtWU4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQURIO0FBRUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBRkg7QUFHRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWYsQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUlBLFdBQUosRUFBZSxFQUFmLENBTEg7QUFNRixhQUFLLENBQUMsQ0FBRCxFQUFJQSxXQUFKLEVBQWUsRUFBZjtBQU5ILE9BbllBO0FBMllOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKO0FBTkgsT0EzWUE7QUFtWk4sWUFBTTtBQUNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQURILE9BblpBO0FBc1pOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUo7QUFESCxPQXRaQTtBQXlaTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSUEsV0FBSixFQUFlLEVBQWY7QUFESCxPQXpaQTtBQTRaTixZQUFNO0FBQ0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBREg7QUFFRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FGSDtBQUdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUhIO0FBSUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSkg7QUFLRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FMSDtBQU1GLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQU5IO0FBT0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBUEg7QUFRRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FSSDtBQVNGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVRIO0FBVUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVkg7QUFXRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FYSDtBQVlGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSjtBQVpILE9BNVpBO0FBMGFOLFlBQU07QUFDRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FESDtBQUVGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUZIO0FBR0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBSEg7QUFJRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FKSDtBQUtGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQUxIO0FBTUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBTkg7QUFPRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FQSDtBQVFGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVJIO0FBU0YsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKLENBVEg7QUFVRixhQUFLLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FWSDtBQVdGLGFBQUssQ0FBQyxDQUFELEVBQUksRUFBSixDQVhIO0FBWUYsYUFBSyxDQUFDLENBQUQsRUFBSSxFQUFKO0FBWkg7QUExYUE7QUFwRkMsR0FBZjs7QUE4Z0JBeWdFLEVBQUFBLE1BQU0sQ0FBQ3ZGLEtBQVAsR0FBZSxTQUFTQSxLQUFULENBQWVoNUQsS0FBZixFQUFzQndoRSxRQUF0QixFQUFnQztBQUMzQyxRQUFJcGxFLElBQUksR0FBRyxJQUFYO0FBQUEsUUFDSW1rRSxLQUFLLEdBQUdua0UsSUFBSSxDQUFDbWtFLEtBRGpCO0FBQUEsUUFFSXQ4RCxLQUZKO0FBQUEsUUFHSTlFLE1BSEo7QUFBQSxRQUlJaWhFLE1BSko7QUFBQSxRQUtJbUIsS0FBSyxHQUFHbmxFLElBQUksQ0FBQ21sRSxLQUxqQjtBQUFBLFFBTUlFLEtBQUssR0FBR0YsS0FBSyxDQUFDRSxLQU5sQjtBQUFBLFFBT0lDLFdBQVcsR0FBR0gsS0FBSyxDQUFDbkIsTUFQeEI7QUFBQSxRQVFJUyxXQUFXLEdBQUd6a0UsSUFBSSxDQUFDeWtFLFdBUnZCO0FBQUEsUUFTSWMsVUFBVSxHQUFHLENBQUMsSUFBRCxDQVRqQjtBQUFBO0FBV0kxRCxJQUFBQSxNQUFNLEdBQUd1RCxRQUFRLEdBQUksY0FBY0EsUUFBZCxHQUF5QixHQUE3QixHQUFvQyxFQVh6RDtBQUFBLFFBWUkzTSxLQUFLLEdBQUcsQ0FBQyxDQUFELENBWlo7QUFjQTBMLElBQUFBLEtBQUssQ0FBQzFCLFVBQU4sQ0FBaUI3K0QsS0FBakI7O0FBRUEsV0FBTyxDQUFQLEVBQVU7QUFDTjtBQUNBaUUsTUFBQUEsS0FBSyxHQUFHNHdELEtBQUssQ0FBQ0EsS0FBSyxDQUFDcjJELE1BQU4sR0FBZSxDQUFoQixDQUFiOztBQUVBLFVBQUksQ0FBQ1csTUFBTCxFQUFhO0FBQ1RBLFFBQUFBLE1BQU0sR0FBR29oRSxLQUFLLENBQUNELEdBQU4sRUFBVDtBQUNIOztBQUVELFVBQUluaEUsTUFBSixFQUFZO0FBQ1I7QUFDQWloRSxRQUFBQSxNQUFNLEdBQUdzQixXQUFXLENBQUN6OUQsS0FBRCxDQUFYLElBQXNCeTlELFdBQVcsQ0FBQ3o5RCxLQUFELENBQVgsQ0FBbUI5RSxNQUFuQixDQUEvQjtBQUNILE9BSEQsTUFHTztBQUNIaWhFLFFBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0g7O0FBRUQsVUFBSSxDQUFDQSxNQUFMLEVBQWE7QUFDVCxZQUFJdHhCLFFBQVEsR0FBRyxFQUFmO0FBQUEsWUFDSXR5QyxLQURKLENBRFM7O0FBSVQsWUFBSWtsRSxXQUFXLENBQUN6OUQsS0FBRCxDQUFmLEVBQXdCO0FBQ3BCLGVBQUssSUFBSTI5RCxjQUFULElBQTJCRixXQUFXLENBQUN6OUQsS0FBRCxDQUF0QyxFQUErQztBQUMzQzZxQyxZQUFBQSxRQUFRLENBQUNydUMsSUFBVCxDQUFjckUsSUFBSSxDQUFDbWtFLEtBQUwsQ0FBV3NCLGdCQUFYLENBQTRCRCxjQUE1QixDQUFkO0FBQ0g7QUFDSjs7QUFDRHBsRSxRQUFBQSxLQUFLLEdBQUd5aEUsTUFBTSxHQUFHLHVCQUFULEdBQW1Dc0MsS0FBSyxDQUFDdEIsVUFBekMsR0FDSixLQURJLEdBQ0lzQixLQUFLLENBQUN1QixhQUFOLEVBREosR0FFSixJQUZJLEdBRUcsU0FGSCxHQUVlaHpCLFFBQVEsQ0FBQ3BwQyxJQUFULENBQWMsSUFBZCxDQUZ2QjtBQUdBLGNBQU0sSUFBSXFPLEtBQUosQ0FBVXZYLEtBQVYsQ0FBTjtBQUNIOztBQUVELGNBQVE0akUsTUFBTSxDQUFDNUIsWUFBWSxDQUFDdUQsVUFBZCxDQUFkO0FBQ0EsYUFBS3ZELFlBQVksQ0FBQ3dELFVBQWxCO0FBQ0luTixVQUFBQSxLQUFLLENBQUNwMEQsSUFBTixDQUFXdEIsTUFBWDtBQUVBd2lFLFVBQUFBLFVBQVUsQ0FBQ2xoRSxJQUFYLENBQWdCOC9ELEtBQUssQ0FBQ2pNLElBQXRCLEVBSEo7O0FBTUlPLFVBQUFBLEtBQUssQ0FBQ3AwRCxJQUFOLENBQVcyL0QsTUFBTSxDQUFDNUIsWUFBWSxDQUFDeUQsUUFBZCxDQUFqQixFQU5KOztBQVNJOWlFLFVBQUFBLE1BQU0sR0FBRyxJQUFUO0FBRUE7O0FBRUosYUFBS3EvRCxZQUFZLENBQUMwRCxXQUFsQjtBQUNJLGNBQUlDLFVBQVUsR0FBR3RCLFdBQVcsQ0FBQ1QsTUFBTSxDQUFDNUIsWUFBWSxDQUFDNEQsZ0JBQWQsQ0FBUCxDQUE1QjtBQUFBLGNBQ0lDLGFBQWEsR0FBR0YsVUFBVSxDQUFDaGpFLE1BQVgsSUFBcUJnakUsVUFBVSxDQUFDLENBQUQsQ0FEbkQ7QUFBQSxjQUVJRyxhQUFhLEdBQUdILFVBQVUsQ0FBQy9CLE1BQVgsSUFBcUIrQixVQUFVLENBQUMsQ0FBRCxDQUZuRDtBQUFBLGNBR0lJLFVBQVUsR0FBR0osVUFBVSxDQUFDSyxHQUFYLElBQWtCTCxVQUFVLENBQUMsQ0FBRCxDQUg3QztBQUFBLGNBSUkvdEQsR0FBRyxHQUFHbXVELFVBQVUsQ0FBQy9qRSxNQUpyQjtBQUFBLGNBS0l1SSxDQUFDLEdBQUcsQ0FMUjtBQUFBLGNBTUlnMUQsR0FOSjtBQUFBLGNBT0kwRyxFQUFFLEdBQUdkLFVBQVUsQ0FBQ0EsVUFBVSxDQUFDbmpFLE1BQVgsR0FBb0I0VixHQUFyQixDQVBuQixDQURKOztBQVVJMm5ELFVBQUFBLEdBQUcsR0FBR2orRCxXQUFOO0FBRUExQixVQUFBQSxJQUFJLENBQUNxbUUsRUFBTCxHQUFVQSxFQUFWOztBQUVBLGlCQUFPMTdELENBQUMsR0FBR3FOLEdBQVgsRUFBZ0JyTixDQUFDLEVBQWpCLEVBQXFCO0FBQ2pCM0ssWUFBQUEsSUFBSSxDQUFDLE9BQU9nWSxHQUFHLEdBQUdyTixDQUFiLENBQUQsQ0FBSixHQUF3QjQ2RCxVQUFVLENBQUNBLFVBQVUsQ0FBQ25qRSxNQUFYLEdBQW9CLENBQXBCLEdBQXdCdUksQ0FBekIsQ0FBbEM7QUFDSDs7QUFFRCxjQUFJdTdELGFBQUosRUFBbUI7QUFDZnZHLFlBQUFBLEdBQUcsR0FBR3VHLGFBQWEsQ0FBQ3BsRSxJQUFkLENBQW1CZCxJQUFuQixDQUFOO0FBQ0g7O0FBRUQsY0FBSTIvRCxHQUFHLEtBQUtqK0QsV0FBWixFQUF1QjtBQUNuQjJrRSxZQUFBQSxFQUFFLEdBQUcxRyxHQUFMO0FBQ0gsV0FGRCxNQUVPO0FBQ0gwRyxZQUFBQSxFQUFFLEdBQUdybUUsSUFBSSxDQUFDcW1FLEVBQVY7QUFDSDs7QUFFRDVOLFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDbDNELEtBQU4sQ0FBWSxDQUFaLEVBQWUsQ0FBQyxDQUFELEdBQUt5VyxHQUFMLEdBQVcsQ0FBMUIsQ0FBUjtBQUNBdXRELFVBQUFBLFVBQVUsR0FBR0EsVUFBVSxDQUFDaGtFLEtBQVgsQ0FBaUIsQ0FBakIsRUFBb0IsQ0FBQyxDQUFELEdBQUt5VyxHQUF6QixDQUFiO0FBRUF5Z0QsVUFBQUEsS0FBSyxDQUFDcDBELElBQU4sQ0FBVzRoRSxhQUFYO0FBRUFWLFVBQUFBLFVBQVUsQ0FBQ2xoRSxJQUFYLENBQWdCZ2lFLEVBQWhCO0FBRUEsY0FBSUMsUUFBUSxHQUFHakIsS0FBSyxDQUFDNU0sS0FBSyxDQUFDQSxLQUFLLENBQUNyMkQsTUFBTixHQUFlLENBQWhCLENBQU4sQ0FBTCxDQUErQnEyRCxLQUFLLENBQUNBLEtBQUssQ0FBQ3IyRCxNQUFOLEdBQWUsQ0FBaEIsQ0FBcEMsQ0FBZjtBQUVBcTJELFVBQUFBLEtBQUssQ0FBQ3AwRCxJQUFOLENBQVdpaUUsUUFBWDtBQUVBOztBQUVKLGFBQUtsRSxZQUFZLENBQUNtRSxXQUFsQjtBQUNJLGlCQUFPRixFQUFQO0FBeERKO0FBMERIO0FBQ0osR0ExR0Q7O0FBMkdBLFNBQU9sRSxNQUFQO0FBQ0gsQ0E5cUNZLEVBQWI7O0FBK3FDbUM7QUFDL0J0aUUsRUFBQUEsaUJBQWlCc2lFLE1BQWpCO0FBQ0g7Ozs7Ozs7OztBQzdxQ0QsSUFBSWxCLElBQUksR0FBRzNnRSxjQUFYOztBQUNBLElBQUk2aEUsTUFBTSxHQUFHN2hFLGdCQUFiOztBQUVBLElBQUlrbUUsb0JBQW9CLEdBQUcsdUJBQTNCO0FBQUEsSUFDRUMsTUFBTSxHQUFHLEVBRFg7QUFBQSxJQUVFQyxZQUZGO0FBQUEsSUFHRUMsSUFBSSxHQUFHLENBSFQ7QUFBQSxJQUlFQyxlQUFlLEdBQUcsRUFKcEI7QUFBQSxJQUtFQyxPQUFPLEdBQUcsVUFBVXY4RCxFQUFWLEVBQWNuRixJQUFkLEVBQW9CO0FBQzVCLE1BQUl1aEUsWUFBSixFQUFrQjtBQUNoQixXQUFPekYsSUFBSSxDQUFDSyxhQUFMLENBQW1CaDNELEVBQW5CLEVBQXVCbkYsSUFBdkIsQ0FBUDtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU84N0QsSUFBSSxDQUFDZSxJQUFMLENBQVUxM0QsRUFBVixFQUFjbkYsSUFBZCxDQUFQO0FBQ0Q7QUFDRixDQVhIO0FBQUEsSUFZRXU4RCxjQUFjLEdBQUdULElBQUksQ0FBQ1MsY0FaeEI7QUFBQSxJQWFFRCxLQUFLLEdBQUdSLElBQUksQ0FBQ1EsS0FiZjtBQUFBLElBY0VxRixPQUFPLEdBQUcsbUNBZFo7OztBQWlCQSxJQUFJdHpCLFFBQVEsR0FBRyx1Q0FBZjtBQUFBLElBQ0V1ekIsVUFBVSxHQUFHLFVBQVVuN0IsQ0FBVixFQUFhbzdCLE9BQWIsRUFBc0I7QUFDakMsTUFBSUMsSUFBSSxHQUFHLE9BQU9ELE9BQVAsR0FBaUIsT0FBNUIsQ0FEaUM7O0FBR2pDLFNBQU9oeEMsS0FBSyxDQUFDaXhDLElBQUQsQ0FBTCxHQUNMRCxPQURLO0FBR0xDLEVBQUFBLElBQUksR0FBRyxDQUFQLEdBQ0Voa0UsTUFBTSxDQUFDeWUsWUFBUCxDQUFvQnVsRCxJQUFJLEdBQUcsT0FBM0IsQ0FERjtBQUdFaGtFLEVBQUFBLE1BQU0sQ0FBQ3llLFlBQVAsQ0FBb0J1bEQsSUFBSSxJQUFJLEVBQVIsR0FBYSxNQUFqQyxFQUF5Q0EsSUFBSSxHQUFHLEtBQVAsR0FBZSxNQUF4RCxDQU5KO0FBT0QsQ0FYSDs7QUFhQSxJQUFJQyxTQUFKO0FBRUEsSUFBSUMsWUFBWSxHQUFHO0FBQ2pCLGVBQWEsVUFBVTc4RCxFQUFWLEVBQWM0NkQsS0FBZCxFQUFxQjtBQUNoQyxRQUFJa0MsRUFBRSxHQUFHQyxLQUFLLENBQUNuQyxLQUFELENBQWQ7QUFBQSxRQUNFbC9ELENBQUMsR0FBR29oRSxFQUFFLENBQUNwaEUsQ0FEVDtBQUFBLFFBRUU0SixDQUFDLEdBQUd3M0QsRUFBRSxDQUFDeDNELENBRlQ7O0FBR0EsUUFBSTVKLENBQUMsS0FBSyxDQUFOLElBQVc0SixDQUFDLEtBQUssQ0FBckIsRUFBd0I7QUFDdEIsYUFBTyxDQUFQO0FBQ0Q7O0FBQ0QsUUFBSS9GLEtBQUssR0FBRyxDQUFaO0FBQUEsUUFDRW95QixNQUFNLEdBQUczeEIsRUFBRSxDQUFDazNELFVBRGQ7O0FBRUEsUUFBSXZsQyxNQUFKLEVBQVk7QUFDVixVQUFJZ2tDLFVBQVUsR0FBR2hrQyxNQUFNLENBQUNna0MsVUFBeEI7QUFBQSxVQUNFdm1ELEtBQUssR0FBRyxDQURWO0FBQUEsVUFFRTR0RCxLQUZGO0FBQUEsVUFHRTNILEdBSEY7QUFBQSxVQUlFM25ELEdBQUcsR0FBR2lvRCxVQUFVLENBQUM3OUQsTUFKbkI7O0FBS0EsYUFBT3NYLEtBQUssR0FBRzFCLEdBQWYsRUFBb0IwQixLQUFLLEVBQXpCLEVBQTZCO0FBQzNCNHRELFFBQUFBLEtBQUssR0FBR3JILFVBQVUsQ0FBQ3ZtRCxLQUFELENBQWxCOztBQUNBLFlBQUk0dEQsS0FBSyxDQUFDbkgsUUFBTixLQUFtQixDQUF2QixFQUEwQjtBQUN4QnQyRCxVQUFBQSxLQUFLO0FBQ0w4MUQsVUFBQUEsR0FBRyxHQUFHNEgsY0FBYyxDQUFDMTlELEtBQUQsRUFBUTdELENBQVIsRUFBVzRKLENBQVgsRUFBYzAzRCxLQUFLLEtBQUtoOUQsRUFBeEIsQ0FBcEI7O0FBQ0EsY0FBSXExRCxHQUFHLEtBQUtqK0QsU0FBWixFQUF1QjtBQUNyQixtQkFBT2krRCxHQUFQO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBQ0QsV0FBTyxDQUFQO0FBQ0QsR0E1QmdCO0FBNkJqQixvQkFBa0IsVUFBVXIxRCxFQUFWLEVBQWM0NkQsS0FBZCxFQUFxQjtBQUNyQyxRQUFJa0MsRUFBRSxHQUFHQyxLQUFLLENBQUNuQyxLQUFELENBQWQ7QUFBQSxRQUNFbC9ELENBQUMsR0FBR29oRSxFQUFFLENBQUNwaEUsQ0FEVDtBQUFBLFFBRUU0SixDQUFDLEdBQUd3M0QsRUFBRSxDQUFDeDNELENBRlQ7O0FBR0EsUUFBSTVKLENBQUMsS0FBSyxDQUFOLElBQVc0SixDQUFDLEtBQUssQ0FBckIsRUFBd0I7QUFDdEIsYUFBTyxDQUFQO0FBQ0Q7O0FBQ0QsUUFBSS9GLEtBQUssR0FBRyxDQUFaO0FBQUEsUUFDRW95QixNQUFNLEdBQUczeEIsRUFBRSxDQUFDazNELFVBRGQ7O0FBRUEsUUFBSXZsQyxNQUFKLEVBQVk7QUFDVixVQUFJZ2tDLFVBQVUsR0FBR2hrQyxNQUFNLENBQUNna0MsVUFBeEI7QUFBQSxVQUNFam9ELEdBQUcsR0FBR2lvRCxVQUFVLENBQUM3OUQsTUFEbkI7QUFBQSxVQUVFc1gsS0FBSyxHQUFHMUIsR0FBRyxHQUFHLENBRmhCO0FBQUEsVUFHRXN2RCxLQUhGO0FBQUEsVUFJRTNILEdBSkY7O0FBS0EsYUFBT2ptRCxLQUFLLElBQUksQ0FBaEIsRUFBbUJBLEtBQUssRUFBeEIsRUFBNEI7QUFDMUI0dEQsUUFBQUEsS0FBSyxHQUFHckgsVUFBVSxDQUFDdm1ELEtBQUQsQ0FBbEI7O0FBQ0EsWUFBSTR0RCxLQUFLLENBQUNuSCxRQUFOLEtBQW1CLENBQXZCLEVBQTBCO0FBQ3hCdDJELFVBQUFBLEtBQUs7QUFDTDgxRCxVQUFBQSxHQUFHLEdBQUc0SCxjQUFjLENBQUMxOUQsS0FBRCxFQUFRN0QsQ0FBUixFQUFXNEosQ0FBWCxFQUFjMDNELEtBQUssS0FBS2g5RCxFQUF4QixDQUFwQjs7QUFDQSxjQUFJcTFELEdBQUcsS0FBS2orRCxTQUFaLEVBQXVCO0FBQ3JCLG1CQUFPaStELEdBQVA7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7QUFDRCxXQUFPLENBQVA7QUFDRCxHQXhEZ0I7QUF5RGpCLGlCQUFlLFVBQVVyMUQsRUFBVixFQUFjNDZELEtBQWQsRUFBcUI7QUFDbEMsUUFBSWtDLEVBQUUsR0FBR0MsS0FBSyxDQUFDbkMsS0FBRCxDQUFkO0FBQUEsUUFDRWwvRCxDQUFDLEdBQUdvaEUsRUFBRSxDQUFDcGhFLENBRFQ7QUFBQSxRQUVFNEosQ0FBQyxHQUFHdzNELEVBQUUsQ0FBQ3gzRCxDQUZUOztBQUdBLFFBQUk1SixDQUFDLEtBQUssQ0FBTixJQUFXNEosQ0FBQyxLQUFLLENBQXJCLEVBQXdCO0FBQ3RCLGFBQU8sQ0FBUDtBQUNEOztBQUNELFFBQUkvRixLQUFLLEdBQUcsQ0FBWjtBQUFBLFFBQ0VveUIsTUFBTSxHQUFHM3hCLEVBQUUsQ0FBQ2szRCxVQURkOztBQUVBLFFBQUl2bEMsTUFBSixFQUFZO0FBQ1YsVUFBSWdrQyxVQUFVLEdBQUdoa0MsTUFBTSxDQUFDZ2tDLFVBQXhCO0FBQUEsVUFDRXVILE1BQU0sR0FBR2w5RCxFQUFFLENBQUNtOUQsT0FEZDtBQUFBLFVBRUUvdEQsS0FBSyxHQUFHLENBRlY7QUFBQSxVQUdFNHRELEtBSEY7QUFBQSxVQUlFM0gsR0FKRjtBQUFBLFVBS0UzbkQsR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQUxuQjs7QUFNQSxhQUFPc1gsS0FBSyxHQUFHMUIsR0FBZixFQUFvQjBCLEtBQUssRUFBekIsRUFBNkI7QUFDM0I0dEQsUUFBQUEsS0FBSyxHQUFHckgsVUFBVSxDQUFDdm1ELEtBQUQsQ0FBbEI7O0FBQ0EsWUFBSTR0RCxLQUFLLENBQUNHLE9BQU4sS0FBa0JELE1BQXRCLEVBQThCO0FBQzVCMzlELFVBQUFBLEtBQUs7QUFDTDgxRCxVQUFBQSxHQUFHLEdBQUc0SCxjQUFjLENBQUMxOUQsS0FBRCxFQUFRN0QsQ0FBUixFQUFXNEosQ0FBWCxFQUFjMDNELEtBQUssS0FBS2g5RCxFQUF4QixDQUFwQjs7QUFDQSxjQUFJcTFELEdBQUcsS0FBS2orRCxTQUFaLEVBQXVCO0FBQ3JCLG1CQUFPaStELEdBQVA7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7QUFDRCxXQUFPLENBQVA7QUFDRCxHQXJGZ0I7QUFzRmpCLHNCQUFvQixVQUFVcjFELEVBQVYsRUFBYzQ2RCxLQUFkLEVBQXFCO0FBQ3ZDLFFBQUlrQyxFQUFFLEdBQUdDLEtBQUssQ0FBQ25DLEtBQUQsQ0FBZDtBQUFBLFFBQ0VsL0QsQ0FBQyxHQUFHb2hFLEVBQUUsQ0FBQ3BoRSxDQURUO0FBQUEsUUFFRTRKLENBQUMsR0FBR3czRCxFQUFFLENBQUN4M0QsQ0FGVDs7QUFHQSxRQUFJNUosQ0FBQyxLQUFLLENBQU4sSUFBVzRKLENBQUMsS0FBSyxDQUFyQixFQUF3QjtBQUN0QixhQUFPLENBQVA7QUFDRDs7QUFDRCxRQUFJL0YsS0FBSyxHQUFHLENBQVo7QUFBQSxRQUNFb3lCLE1BQU0sR0FBRzN4QixFQUFFLENBQUNrM0QsVUFEZDs7QUFFQSxRQUFJdmxDLE1BQUosRUFBWTtBQUNWLFVBQUlna0MsVUFBVSxHQUFHaGtDLE1BQU0sQ0FBQ2drQyxVQUF4QjtBQUFBLFVBQ0Vqb0QsR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQURuQjtBQUFBLFVBRUVvbEUsTUFBTSxHQUFHbDlELEVBQUUsQ0FBQ205RCxPQUZkO0FBQUEsVUFHRS90RCxLQUFLLEdBQUcxQixHQUFHLEdBQUcsQ0FIaEI7QUFBQSxVQUlFc3ZELEtBSkY7QUFBQSxVQUtFM0gsR0FMRjs7QUFNQSxhQUFPam1ELEtBQUssSUFBSSxDQUFoQixFQUFtQkEsS0FBSyxFQUF4QixFQUE0QjtBQUMxQjR0RCxRQUFBQSxLQUFLLEdBQUdySCxVQUFVLENBQUN2bUQsS0FBRCxDQUFsQjs7QUFDQSxZQUFJNHRELEtBQUssQ0FBQ0csT0FBTixLQUFrQkQsTUFBdEIsRUFBOEI7QUFDNUIzOUQsVUFBQUEsS0FBSztBQUNMODFELFVBQUFBLEdBQUcsR0FBRzRILGNBQWMsQ0FBQzE5RCxLQUFELEVBQVE3RCxDQUFSLEVBQVc0SixDQUFYLEVBQWMwM0QsS0FBSyxLQUFLaDlELEVBQXhCLENBQXBCOztBQUNBLGNBQUlxMUQsR0FBRyxLQUFLaitELFNBQVosRUFBdUI7QUFDckIsbUJBQU9pK0QsR0FBUDtBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQUNELFdBQU8sQ0FBUDtBQUNELEdBbEhnQjtBQW1IakIrSCxFQUFBQSxJQUFJLEVBQUUsVUFBVXA5RCxFQUFWLEVBQWNvOUQsSUFBZCxFQUFvQjtBQUN4QixRQUFJQyxNQUFKO0FBQ0FELElBQUFBLElBQUksR0FBR25ELFFBQVEsQ0FBQ21ELElBQUksQ0FBQzU3RCxXQUFMLEVBQUQsQ0FBZjs7QUFDQSxPQUFHO0FBQ0QsVUFBSzY3RCxNQUFNLEdBQUlqQixZQUFZLEdBQ3pCcDhELEVBQUUsQ0FBQ3cxRCxZQUFILENBQWdCLFVBQWhCLEtBQStCeDFELEVBQUUsQ0FBQ3cxRCxZQUFILENBQWdCLE1BQWhCLENBRE4sR0FFdkJ4MUQsRUFBRSxDQUFDbzlELElBRlAsRUFFZTtBQUNiQyxRQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQzc3RCxXQUFQLEVBQVQ7QUFDQSxlQUFPNjdELE1BQU0sS0FBS0QsSUFBWCxJQUFtQkMsTUFBTSxDQUFDbDlELE9BQVAsQ0FBZWk5RCxJQUFJLEdBQUcsR0FBdEIsTUFBK0IsQ0FBekQ7QUFDRDtBQUNGLEtBUEQsUUFPUyxDQUFDcDlELEVBQUUsR0FBR0EsRUFBRSxDQUFDazNELFVBQVQsS0FBd0JsM0QsRUFBRSxDQUFDNjFELFFBQUgsS0FBZ0IsQ0FQakQ7O0FBUUEsV0FBTyxLQUFQO0FBQ0QsR0EvSGdCO0FBZ0lqQnlILEVBQUFBLEdBQUcsRUFBRSxVQUFVdDlELEVBQVYsRUFBY3U5RCxXQUFkLEVBQTJCO0FBQzlCLFdBQU8sQ0FBQ1gsU0FBUyxDQUFDVyxXQUFXLENBQUNuMUMsQ0FBYixDQUFULENBQXlCcG9CLEVBQXpCLEVBQTZCdTlELFdBQVcsQ0FBQzFtRSxLQUF6QyxDQUFSO0FBQ0Q7QUFsSWdCLENBQW5CO0FBcUlBLElBQUkybUUsZUFBZSxHQUFHO0FBQ3BCLzNELEVBQUFBLEtBQUssRUFBRSxVQUFVekYsRUFBVixFQUFjO0FBQ25CLFFBQUkyMUQsVUFBVSxHQUFHMzFELEVBQUUsQ0FBQzIxRCxVQUFwQjtBQUFBLFFBQ0VwMkQsS0FBSyxHQUFHLENBRFY7QUFBQSxRQUVFbU8sR0FBRyxHQUFHaW9ELFVBQVUsQ0FBQzc5RCxNQUFYLEdBQW9CLENBRjVCO0FBQUEsUUFHRWtsRSxLQUhGO0FBQUEsUUFJRW5ILFFBSkY7O0FBS0EsV0FBT3QyRCxLQUFLLEdBQUdtTyxHQUFmLEVBQW9Cbk8sS0FBSyxFQUF6QixFQUE2QjtBQUMzQnk5RCxNQUFBQSxLQUFLLEdBQUdySCxVQUFVLENBQUNwMkQsS0FBRCxDQUFsQjtBQUNBczJELE1BQUFBLFFBQVEsR0FBR21ILEtBQUssQ0FBQ25ILFFBQWpCLENBRjJCO0FBSTNCO0FBQ0E7O0FBQ0EsVUFBSUEsUUFBUSxLQUFLLENBQWIsSUFBa0JBLFFBQVEsS0FBSyxDQUEvQixJQUFvQ0EsUUFBUSxLQUFLLENBQWpELElBQXNEQSxRQUFRLEtBQUssQ0FBdkUsRUFBMEU7QUFDeEUsZUFBTyxDQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLENBQVA7QUFDRCxHQWxCbUI7QUFtQnBCbG1CLEVBQUFBLElBQUksRUFBRSxVQUFVM3ZDLEVBQVYsRUFBYztBQUNsQixRQUFJQSxFQUFFLENBQUM2MUQsUUFBSCxLQUFnQixDQUFwQixFQUF1QjtBQUNyQixhQUFPLElBQVA7QUFDRDs7QUFDRCxXQUFPNzFELEVBQUUsQ0FBQzgxRCxhQUFILElBQ0w5MUQsRUFBRSxLQUFLQSxFQUFFLENBQUM4MUQsYUFBSCxDQUFpQlUsZUFEMUI7QUFFRCxHQXpCbUI7QUEwQnBCLGlCQUFlLFVBQVV4MkQsRUFBVixFQUFjO0FBQzNCLFdBQU82OEQsWUFBWSxDQUFDLFdBQUQsQ0FBWixDQUEwQjc4RCxFQUExQixFQUE4QixDQUE5QixDQUFQO0FBQ0QsR0E1Qm1CO0FBNkJwQixnQkFBYyxVQUFVQSxFQUFWLEVBQWM7QUFDMUIsV0FBTzY4RCxZQUFZLENBQUMsZ0JBQUQsQ0FBWixDQUErQjc4RCxFQUEvQixFQUFtQyxDQUFuQyxDQUFQO0FBQ0QsR0EvQm1CO0FBZ0NwQixtQkFBaUIsVUFBVUEsRUFBVixFQUFjO0FBQzdCLFdBQU82OEQsWUFBWSxDQUFDLGFBQUQsQ0FBWixDQUE0Qjc4RCxFQUE1QixFQUFnQyxDQUFoQyxDQUFQO0FBQ0QsR0FsQ21CO0FBbUNwQixrQkFBZ0IsVUFBVUEsRUFBVixFQUFjO0FBQzVCLFdBQU82OEQsWUFBWSxDQUFDLGtCQUFELENBQVosQ0FBaUM3OEQsRUFBakMsRUFBcUMsQ0FBckMsQ0FBUDtBQUNELEdBckNtQjtBQXNDcEIsZ0JBQWMsVUFBVUEsRUFBVixFQUFjO0FBQzFCLFdBQU93OUQsZUFBZSxDQUFDLGFBQUQsQ0FBZixDQUErQng5RCxFQUEvQixLQUNMdzlELGVBQWUsQ0FBQyxZQUFELENBQWYsQ0FBOEJ4OUQsRUFBOUIsQ0FERjtBQUVELEdBekNtQjtBQTBDcEIsa0JBQWdCLFVBQVVBLEVBQVYsRUFBYztBQUM1QixXQUFPdzlELGVBQWUsQ0FBQyxlQUFELENBQWYsQ0FBaUN4OUQsRUFBakMsS0FDTHc5RCxlQUFlLENBQUMsY0FBRCxDQUFmLENBQWdDeDlELEVBQWhDLENBREY7QUFFRCxHQTdDbUI7QUE4Q3BCeTlELEVBQUFBLEtBQUssRUFBRSxVQUFVejlELEVBQVYsRUFBYztBQUNuQixRQUFJNDBELEdBQUcsR0FBRzUwRCxFQUFFLENBQUM4MUQsYUFBYjtBQUNBLFdBQU9sQixHQUFHLElBQUk1MEQsRUFBRSxLQUFLNDBELEdBQUcsQ0FBQzhJLGFBQWxCLEtBQ0osQ0FBQzlJLEdBQUcsQ0FBQytJLFFBQUwsSUFBaUIvSSxHQUFHLENBQUMrSSxRQUFKLEVBRGIsS0FDZ0MsQ0FBQyxFQUFFMzlELEVBQUUsQ0FBQ3hDLElBQUgsSUFBV3dDLEVBQUUsQ0FBQzY4QyxJQUFkLElBQXNCNzhDLEVBQUUsQ0FBQ3UxRCxRQUFILElBQWUsQ0FBdkMsQ0FEeEM7QUFFRCxHQWxEbUI7QUFtRHBCejBELEVBQUFBLE1BQU0sRUFBRSxVQUFVZCxFQUFWLEVBQWM7QUFDcEIsUUFBSWc5QyxJQUFJLEdBQUd4dEIsUUFBUSxDQUFDd3RCLElBQXBCO0FBQ0EsV0FBT0EsSUFBSSxJQUFJQSxJQUFJLENBQUMvbEQsS0FBTCxDQUFXLENBQVgsTUFBa0JzbEUsT0FBTyxDQUFDdjhELEVBQUQsRUFBSyxJQUFMLENBQXhDO0FBQ0QsR0F0RG1CO0FBdURwQjQ5RCxFQUFBQSxPQUFPLEVBQUUsVUFBVTU5RCxFQUFWLEVBQWM7QUFDckIsV0FBTyxDQUFDQSxFQUFFLENBQUM2OUQsUUFBWDtBQUNELEdBekRtQjtBQTBEcEJBLEVBQUFBLFFBQVEsRUFBRSxVQUFVNzlELEVBQVYsRUFBYztBQUN0QixXQUFPQSxFQUFFLENBQUM2OUQsUUFBVjtBQUNELEdBNURtQjtBQTZEcEJDLEVBQUFBLE9BQU8sRUFBRSxVQUFVOTlELEVBQVYsRUFBYztBQUNyQixRQUFJMnpELFFBQVEsR0FBRzN6RCxFQUFFLENBQUMyekQsUUFBSCxDQUFZbnlELFdBQVosRUFBZjtBQUNBLFdBQVFteUQsUUFBUSxLQUFLLE9BQWIsSUFBd0IzekQsRUFBRSxDQUFDODlELE9BQTVCLElBQ0puSyxRQUFRLEtBQUssUUFBYixJQUF5QjN6RCxFQUFFLENBQUMydEMsUUFEL0I7QUFFRDtBQWpFbUIsQ0FBdEI7QUFvRUEsSUFBSW93QixhQUFhLEdBQUc7QUFDbEIsUUFBTSxVQUFVQyxPQUFWLEVBQW1Cbm5FLEtBQW5CLEVBQTBCO0FBQzlCLFFBQUksQ0FBQ0EsS0FBRCxJQUFVQSxLQUFLLENBQUNzSixPQUFOLENBQWMsR0FBZCxJQUFxQixDQUFDLENBQXBDLEVBQXVDO0FBQ3JDLGFBQU8sQ0FBUDtBQUNEOztBQUNELFdBQU8sQ0FBQyxNQUFNNjlELE9BQU4sR0FBZ0IsR0FBakIsRUFBc0I3OUQsT0FBdEIsQ0FBOEIsTUFBTXRKLEtBQU4sR0FBYyxHQUE1QyxNQUFxRCxDQUFDLENBQTdEO0FBQ0QsR0FOaUI7QUFPbEIsUUFBTSxVQUFVbW5FLE9BQVYsRUFBbUJubkUsS0FBbkIsRUFBMEI7QUFDOUIsV0FBTyxDQUFDLE1BQU1tbkUsT0FBUCxFQUFnQjc5RCxPQUFoQixDQUF3QixNQUFNdEosS0FBTixHQUFjLEdBQXRDLE1BQStDLENBQUMsQ0FBdkQ7QUFDRCxHQVRpQjtBQVVsQixRQUFNLFVBQVVtbkUsT0FBVixFQUFtQm5uRSxLQUFuQixFQUEwQjtBQUM5QixXQUFPQSxLQUFLLElBQUk4L0QsSUFBSSxDQUFDL3lCLFVBQUwsQ0FBZ0JvNkIsT0FBaEIsRUFBeUJubkUsS0FBekIsQ0FBaEI7QUFDRCxHQVppQjtBQWFsQixRQUFNLFVBQVVtbkUsT0FBVixFQUFtQm5uRSxLQUFuQixFQUEwQjtBQUM5QixXQUFPQSxLQUFLLElBQUk4L0QsSUFBSSxDQUFDcDVCLFFBQUwsQ0FBY3lnQyxPQUFkLEVBQXVCbm5FLEtBQXZCLENBQWhCO0FBQ0QsR0FmaUI7QUFnQmxCLFFBQU0sVUFBVW1uRSxPQUFWLEVBQW1Cbm5FLEtBQW5CLEVBQTBCO0FBQzlCLFdBQU9BLEtBQUssSUFBSW1uRSxPQUFPLENBQUM3OUQsT0FBUixDQUFnQnRKLEtBQWhCLE1BQTJCLENBQUMsQ0FBNUM7QUFDRCxHQWxCaUI7QUFtQmxCLE9BQUssVUFBVW1uRSxPQUFWLEVBQW1Cbm5FLEtBQW5CLEVBQTBCO0FBQzdCLFdBQU9tbkUsT0FBTyxLQUFLbm5FLEtBQW5CO0FBQ0Q7QUFyQmlCLENBQXBCO0FBd0JBLElBQUlvbkUsWUFBWSxHQUFHO0FBQ2pCLE9BQUs7QUFDSEMsSUFBQUEsR0FBRyxFQUFFLFlBREY7QUFFSEMsSUFBQUEsU0FBUyxFQUFFO0FBRlIsR0FEWTtBQUtqQixPQUFLO0FBQ0hELElBQUFBLEdBQUcsRUFBRTtBQURGLEdBTFk7QUFRakIsT0FBSztBQUNIQSxJQUFBQSxHQUFHLEVBQUUsaUJBREY7QUFFSEMsSUFBQUEsU0FBUyxFQUFFO0FBRlIsR0FSWTtBQVlqQixPQUFLO0FBQ0hELElBQUFBLEdBQUcsRUFBRTtBQURGO0FBWlksQ0FBbkI7QUFpQkF0QixTQUFTLEdBQUc7QUFDVmw2RCxFQUFBQSxHQUFHLEVBQUV5MEQsS0FESztBQUVWRSxFQUFBQSxHQUFHLEVBQUVELGNBRks7QUFHVi84RCxFQUFBQSxFQUFFLEVBQUUsVUFBVTJGLEVBQVYsRUFBY25KLEtBQWQsRUFBcUI7QUFDdkIsV0FBTzBsRSxPQUFPLENBQUN2OEQsRUFBRCxFQUFLLElBQUwsQ0FBUCxLQUFzQm5KLEtBQTdCO0FBQ0QsR0FMUztBQU1WdW5FLEVBQUFBLE1BQU0sRUFBRSxVQUFVcCtELEVBQVYsRUFBY25KLEtBQWQsRUFBcUI7QUFDM0IsUUFBSWdFLElBQUksR0FBR2hFLEtBQUssQ0FBQzZqRSxLQUFqQjs7QUFDQSxRQUFJLENBQUMwQixZQUFMLEVBQW1CO0FBQ2pCdmhFLE1BQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDMkcsV0FBTCxFQUFQO0FBQ0Q7O0FBQ0QsUUFBSXc4RCxPQUFPLEdBQUd6QixPQUFPLENBQUN2OEQsRUFBRCxFQUFLbkYsSUFBTCxDQUFyQjtBQUNBLFFBQUl2QyxLQUFLLEdBQUd6QixLQUFLLENBQUN5QixLQUFsQjs7QUFDQSxRQUFJLENBQUNBLEtBQUQsSUFBVTBsRSxPQUFPLEtBQUs1bUUsU0FBMUIsRUFBcUM7QUFDbkMsYUFBTyxDQUFQO0FBQ0QsS0FGRCxNQUVPLElBQUlrQixLQUFKLEVBQVc7QUFDaEIsVUFBSTBsRSxPQUFPLEtBQUs1bUUsU0FBaEIsRUFBMkI7QUFDekIsZUFBTyxDQUFQO0FBQ0Q7O0FBQ0QsVUFBSWluRSxPQUFPLEdBQUdOLGFBQWEsQ0FBQ3psRSxLQUFELENBQTNCOztBQUNBLFVBQUkrbEUsT0FBSixFQUFhO0FBQ1gsZUFBT0EsT0FBTyxDQUFDTCxPQUFPLEdBQUcsRUFBWCxFQUFlbm5FLEtBQUssQ0FBQ0EsS0FBTixHQUFjLEVBQTdCLENBQWQ7QUFDRDtBQUNGOztBQUNELFdBQU8sQ0FBUDtBQUNELEdBekJTO0FBMEJWeW5FLEVBQUFBLE1BQU0sRUFBRSxVQUFVdCtELEVBQVYsRUFBY25KLEtBQWQsRUFBcUI7QUFDM0IsUUFBSTJDLEVBQUosRUFBUStrRSxLQUFSLEVBQWU3RCxLQUFmOztBQUNBLFFBQUs2RCxLQUFLLEdBQUcxbkUsS0FBSyxDQUFDMkMsRUFBbkIsRUFBd0I7QUFDdEIsVUFBSSxFQUFFQSxFQUFFLEdBQUdxakUsWUFBWSxDQUFDMEIsS0FBRCxDQUFuQixDQUFKLEVBQWlDO0FBQy9CLGNBQU0sSUFBSTdqQyxXQUFKLENBQWdCLHVDQUF1QzZqQyxLQUF2RCxDQUFOO0FBQ0Q7O0FBQ0QsYUFBTy9rRSxFQUFFLENBQUN3RyxFQUFELEVBQUtuSixLQUFLLENBQUMrakUsS0FBWCxDQUFUO0FBQ0Q7O0FBQ0QsUUFBS0YsS0FBSyxHQUFHN2pFLEtBQUssQ0FBQzZqRSxLQUFuQixFQUEyQjtBQUN6QixVQUFJLENBQUM4QyxlQUFlLENBQUM5QyxLQUFELENBQXBCLEVBQTZCO0FBQzNCLGNBQU0sSUFBSWhnQyxXQUFKLENBQWdCLHVDQUF1Q2dnQyxLQUF2RCxDQUFOO0FBQ0Q7O0FBQ0QsYUFBTzhDLGVBQWUsQ0FBQzlDLEtBQUQsQ0FBZixDQUF1QjE2RCxFQUF2QixDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxDQUFQO0FBQ0Q7QUF6Q1MsQ0FBWjs7QUE0Q0EsU0FBU2k2RCxRQUFULENBQWtCeDVDLEdBQWxCLEVBQXVCO0FBQ3JCLFNBQU9BLEdBQUcsQ0FBQzNoQixPQUFKLENBQVlvcUMsUUFBWixFQUFzQnV6QixVQUF0QixDQUFQO0FBQ0Q7O0FBRUQ1RSxNQUFNLENBQUNnQyxLQUFQLENBQWFDLEVBQWIsR0FBa0I7QUFDaEJ0dkMsRUFBQUEsSUFBSSxFQUFFbXNDLElBQUksQ0FBQ25zQyxJQURLO0FBRWhCeXZDLEVBQUFBLFFBQVEsRUFBRUEsUUFGTTtBQUdoQkMsRUFBQUEsV0FBVyxFQUFFLFVBQVV6NUMsR0FBVixFQUFlO0FBQzFCLFdBQU8sS0FBS3c1QyxRQUFMLENBQWN4NUMsR0FBRyxDQUFDeHBCLEtBQUosQ0FBVSxDQUFWLEVBQWEsQ0FBQyxDQUFkLENBQWQsQ0FBUDtBQUNEO0FBTGUsQ0FBbEI7O0FBUUEsU0FBU3VuRSxXQUFULEdBQXVCO0FBQ3JCbEMsRUFBQUEsZUFBZSxHQUFHLEVBQWxCO0FBQ0Q7O0FBRUQsU0FBUzRCLEdBQVQsQ0FBYWwrRCxFQUFiLEVBQWlCeStELFNBQWpCLEVBQTRCO0FBQzFCLEtBQUc7QUFDRHorRCxJQUFBQSxFQUFFLEdBQUdBLEVBQUUsQ0FBQ3krRCxTQUFELENBQVA7QUFDRCxHQUZELFFBRVN6K0QsRUFBRSxJQUFJQSxFQUFFLENBQUM2MUQsUUFBSCxLQUFnQixDQUYvQjs7QUFHQSxTQUFPNzFELEVBQVA7QUFDRDs7QUFFRCxTQUFTKzhELEtBQVQsQ0FBZW5DLEtBQWYsRUFBc0I7QUFDcEIsTUFBSWwvRCxDQUFDLEdBQUcsQ0FBUjtBQUFBLE1BQ0VwRCxLQURGO0FBQUEsTUFFRWdOLENBQUMsR0FBRyxDQUZOOztBQUdBLE1BQUksT0FBT3MxRCxLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQzdCdDFELElBQUFBLENBQUMsR0FBR3MxRCxLQUFKO0FBQ0QsR0FGRCxNQUVPLElBQUlBLEtBQUssS0FBSyxLQUFkLEVBQXFCO0FBQzFCbC9ELElBQUFBLENBQUMsR0FBRyxDQUFKO0FBQ0E0SixJQUFBQSxDQUFDLEdBQUcsQ0FBSjtBQUNELEdBSE0sTUFHQSxJQUFJczFELEtBQUssS0FBSyxNQUFkLEVBQXNCO0FBQzNCbC9ELElBQUFBLENBQUMsR0FBRyxDQUFKO0FBQ0E0SixJQUFBQSxDQUFDLEdBQUcsQ0FBSjtBQUNELEdBSE0sTUFHQSxJQUFLaE4sS0FBSyxHQUFHc2lFLEtBQUssQ0FBQzk3RCxPQUFOLENBQWMsS0FBZCxFQUFxQixFQUFyQixFQUF5QnhHLEtBQXpCLENBQStCa2tFLE9BQS9CLENBQWIsRUFBdUQ7QUFDNUQsUUFBSWxrRSxLQUFLLENBQUMsQ0FBRCxDQUFULEVBQWM7QUFDWm9ELE1BQUFBLENBQUMsR0FBRzB2QixRQUFRLENBQUM5eUIsS0FBSyxDQUFDLENBQUQsQ0FBTixFQUFXLEVBQVgsQ0FBWjs7QUFDQSxVQUFJb3pCLEtBQUssQ0FBQ2h3QixDQUFELENBQVQsRUFBYztBQUNaLFlBQUlwRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEtBQWEsR0FBakIsRUFBc0I7QUFDcEJvRCxVQUFBQSxDQUFDLEdBQUcsQ0FBQyxDQUFMO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLFVBQUFBLENBQUMsR0FBRyxDQUFKO0FBQ0Q7QUFDRjtBQUNGLEtBVEQsTUFTTztBQUNMQSxNQUFBQSxDQUFDLEdBQUcsQ0FBSjtBQUNEOztBQUNENEosSUFBQUEsQ0FBQyxHQUFHOGxCLFFBQVEsQ0FBQzl5QixLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVcsRUFBWCxDQUFSLElBQTBCLENBQTlCO0FBQ0Q7O0FBQ0QsU0FBTztBQUNMb0QsSUFBQUEsQ0FBQyxFQUFFQSxDQURFO0FBRUw0SixJQUFBQSxDQUFDLEVBQUVBO0FBRkUsR0FBUDtBQUlEOztBQUVELFNBQVMyM0QsY0FBVCxDQUF3QjE5RCxLQUF4QixFQUErQjdELENBQS9CLEVBQWtDNEosQ0FBbEMsRUFBcUNvNUQsRUFBckMsRUFBeUM7QUFDdkMsTUFBSWhqRSxDQUFDLEtBQUssQ0FBVixFQUFhO0FBQ1gsUUFBSTZELEtBQUssS0FBSytGLENBQWQsRUFBaUI7QUFDZixhQUFPbzVELEVBQVA7QUFDRDtBQUNGLEdBSkQsTUFJTztBQUNMLFFBQUksQ0FBQ24vRCxLQUFLLEdBQUcrRixDQUFULElBQWM1SixDQUFkLElBQW1CLENBQW5CLElBQXdCLENBQUM2RCxLQUFLLEdBQUcrRixDQUFULElBQWM1SixDQUFkLEtBQW9CLENBQTVDLElBQWlEZ2pFLEVBQXJELEVBQXlEO0FBQ3ZELGFBQU8sQ0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBT3RuRSxTQUFQO0FBQ0Q7O0FBRUQsU0FBU3VuRSxLQUFULENBQWU5SyxJQUFmLEVBQXFCO0FBQ25CLE1BQUkyQyxlQUFlLEdBQUczQyxJQUFJLElBQUksQ0FBQ0EsSUFBSSxDQUFDaUMsYUFBTCxJQUFzQmpDLElBQXZCLEVBQTZCMkMsZUFBM0Q7QUFDQSxTQUFPQSxlQUFlLEdBQUdBLGVBQWUsQ0FBQzdDLFFBQWhCLENBQXlCbnlELFdBQXpCLE9BQTJDLE1BQTlDLEdBQXVELEtBQTdFO0FBQ0Q7O0FBRUQsU0FBU200RCxPQUFULENBQWlCbDVDLEdBQWpCLEVBQXNCbStDLEtBQXRCLEVBQTZCO0FBQzNCLFNBQU9DLFFBQU0sQ0FBQ3ArQyxHQUFELEVBQU0sSUFBTixFQUFZbStDLEtBQVosQ0FBYjtBQUNEOztBQUVELFNBQVNFLFdBQVQsQ0FBcUI5K0QsRUFBckIsRUFBeUIxSCxLQUF6QixFQUFnQztBQUM5QixNQUFJLENBQUNBLEtBQUwsRUFBWTtBQUNWLFdBQU8sSUFBUDtBQUNEOztBQUNELE1BQUksQ0FBQzBILEVBQUwsRUFBUztBQUNQLFdBQU8sS0FBUDtBQUNEOztBQUVELE1BQUlBLEVBQUUsQ0FBQzYxRCxRQUFILEtBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLFdBQU8sS0FBUDtBQUNEOztBQUVELE1BQUlwMUIsT0FBTyxHQUFHLENBQWQ7QUFBQSxNQUNFcytCLFdBQVcsR0FBR3ptRSxLQUFLLENBQUNrL0QsTUFEdEI7QUFBQSxNQUVFd0gsY0FGRjtBQUFBLE1BR0VDLGdCQUhGOztBQUtBLE1BQUkzbUUsS0FBSyxDQUFDOHZCLENBQU4sS0FBWSxLQUFoQixFQUF1QjtBQUNyQnFZLElBQUFBLE9BQU8sSUFBSW04QixTQUFTLENBQUNsNkQsR0FBVixDQUFjMUMsRUFBZCxFQUFrQjFILEtBQUssQ0FBQ3pCLEtBQXhCLENBQVg7QUFDRDs7QUFFRCxNQUFJNHBDLE9BQU8sSUFBSXMrQixXQUFmLEVBQTRCO0FBQzFCQyxJQUFBQSxjQUFjLEdBQUdELFdBQVcsQ0FBQ2puRSxNQUE3QjtBQUNBbW5FLElBQUFBLGdCQUFnQixHQUFHLENBQW5COztBQUNBLFdBQU94K0IsT0FBTyxJQUFJdytCLGdCQUFnQixHQUFHRCxjQUFyQyxFQUFxREMsZ0JBQWdCLEVBQXJFLEVBQXlFO0FBQ3ZFLFVBQUlDLGlCQUFpQixHQUFHSCxXQUFXLENBQUNFLGdCQUFELENBQW5DO0FBQUEsVUFDRUUscUJBQXFCLEdBQUdELGlCQUFpQixDQUFDOTJDLENBRDVDOztBQUVBLFVBQUl3MEMsU0FBUyxDQUFDdUMscUJBQUQsQ0FBYixFQUFzQztBQUNwQzErQixRQUFBQSxPQUFPLElBQUltOEIsU0FBUyxDQUFDdUMscUJBQUQsQ0FBVCxDQUFpQ24vRCxFQUFqQyxFQUFxQ2svRCxpQkFBaUIsQ0FBQ3JvRSxLQUF2RCxDQUFYO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU80cEMsT0FBUDtBQUNEOzs7QUFHRCxTQUFTMitCLGNBQVQsQ0FBd0JwL0QsRUFBeEIsRUFBNEIxSCxLQUE1QixFQUFtQztBQUNqQyxNQUFJbW9DLE9BQU8sR0FBRyxDQUFkO0FBQUEsTUFDRTQrQixPQUFPLEdBQUdyL0QsRUFEWjtBQUFBLE1BRUVzL0QsVUFGRjtBQUFBLE1BR0VDLFVBQVUsR0FBR2puRSxLQUhmOztBQUtBLEtBQUc7QUFDRG1vQyxJQUFBQSxPQUFPLElBQUlxK0IsV0FBVyxDQUFDOStELEVBQUQsRUFBSzFILEtBQUwsQ0FBdEI7O0FBQ0EsUUFBSW1vQyxPQUFKLEVBQWE7QUFDWDtBQUNBbm9DLE1BQUFBLEtBQUssR0FBR0EsS0FBSyxJQUFJQSxLQUFLLENBQUNtckIsSUFBdkI7O0FBQ0EsVUFBSSxDQUFDbnJCLEtBQUwsRUFBWTtBQUNWLGVBQU8sSUFBUDtBQUNEOztBQUNEZ25FLE1BQUFBLFVBQVUsR0FBR3JCLFlBQVksQ0FBQzNsRSxLQUFLLENBQUNnaUUsY0FBUCxDQUF6QjtBQUNBdDZELE1BQUFBLEVBQUUsR0FBR2srRCxHQUFHLENBQUNsK0QsRUFBRCxFQUFLcy9ELFVBQVUsQ0FBQ3BCLEdBQWhCLENBQVI7O0FBQ0EsVUFBSSxDQUFDb0IsVUFBVSxDQUFDbkIsU0FBaEIsRUFBMkI7QUFDekIsZUFBTztBQUNMO0FBQ0FuK0QsVUFBQUEsRUFBRSxFQUFFQSxFQUZDO0FBR0wxSCxVQUFBQSxLQUFLLEVBQUVBO0FBSEYsU0FBUDtBQUtEO0FBQ0YsS0FmRCxNQWVPO0FBQ0xnbkUsTUFBQUEsVUFBVSxHQUFHckIsWUFBWSxDQUFDM2xFLEtBQUssQ0FBQ2dpRSxjQUFQLENBQXpCOztBQUNBLFVBQUlnRixVQUFVLENBQUNuQixTQUFmLEVBQTBCO0FBQ3hCO0FBQ0EsZUFBTztBQUNMbitELFVBQUFBLEVBQUUsRUFBRWsrRCxHQUFHLENBQUNtQixPQUFELEVBQVVwQixZQUFZLENBQUNzQixVQUFVLENBQUNqRixjQUFaLENBQVosQ0FBd0M0RCxHQUFsRCxDQURGO0FBRUw1bEUsVUFBQUEsS0FBSyxFQUFFaW5FO0FBRkYsU0FBUDtBQUlELE9BTkQsTUFNTztBQUNMO0FBQ0EsZUFBTztBQUNMdi9ELFVBQUFBLEVBQUUsRUFBRUEsRUFBRSxJQUFJaytELEdBQUcsQ0FBQ2wrRCxFQUFELEVBQUtzL0QsVUFBVSxDQUFDcEIsR0FBaEIsQ0FEUjtBQUVMNWxFLFVBQUFBLEtBQUssRUFBRUE7QUFGRixTQUFQO0FBSUQ7QUFDRjtBQUNGLEdBakNELFFBaUNTMEgsRUFqQ1QsRUFOaUM7OztBQTBDakMsU0FBTztBQUNMQSxJQUFBQSxFQUFFLEVBQUVrK0QsR0FBRyxDQUFDbUIsT0FBRCxFQUFVcEIsWUFBWSxDQUFDc0IsVUFBVSxDQUFDakYsY0FBWixDQUFaLENBQXdDNEQsR0FBbEQsQ0FERjtBQUVMNWxFLElBQUFBLEtBQUssRUFBRWluRTtBQUZGLEdBQVA7QUFJRDs7O0FBR0QsU0FBU0Msc0JBQVQsQ0FBZ0N4L0QsRUFBaEMsRUFBb0NxeEIsSUFBcEMsRUFBMEM7QUFDeEMsTUFBSWl1QyxVQUFKO0FBQUEsTUFDRUcsR0FBRyxHQUFHcHVDLElBRFI7O0FBR0EsS0FBRztBQUNELFFBQUksQ0FBQ3l0QyxXQUFXLENBQUM5K0QsRUFBRCxFQUFLeS9ELEdBQUwsQ0FBaEIsRUFBMkI7QUFDekIsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0RBLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDaDhDLElBQVY7O0FBQ0EsUUFBSSxDQUFDZzhDLEdBQUwsRUFBVTtBQUNSLGFBQU8sSUFBUDtBQUNEOztBQUNESCxJQUFBQSxVQUFVLEdBQUdyQixZQUFZLENBQUN3QixHQUFHLENBQUNuRixjQUFMLENBQXpCO0FBQ0F0NkQsSUFBQUEsRUFBRSxHQUFHaytELEdBQUcsQ0FBQ2wrRCxFQUFELEVBQUtzL0QsVUFBVSxDQUFDcEIsR0FBaEIsQ0FBUjtBQUNELEdBVkQsUUFVU2wrRCxFQUFFLElBQUlzL0QsVUFBVSxDQUFDbkIsU0FWMUI7O0FBV0EsTUFBSSxDQUFDbitELEVBQUwsRUFBUztBQUNQLFdBQU8sSUFBUDtBQUNEOztBQUNELFNBQU87QUFDTEEsSUFBQUEsRUFBRSxFQUFFQSxFQURDO0FBRUwxSCxJQUFBQSxLQUFLLEVBQUVtbkU7QUFGRixHQUFQO0FBSUQ7O0FBRUQsU0FBU0MsS0FBVCxDQUFlMS9ELEVBQWYsRUFBbUI7QUFDakIsTUFBSTIvRCxVQUFKOztBQUVBLE1BQUl2RCxZQUFKLEVBQWtCO0FBQ2hCLFFBQUksRUFBRXVELFVBQVUsR0FBRzMvRCxFQUFFLENBQUN3MUQsWUFBSCxDQUFnQjBHLG9CQUFoQixDQUFmLENBQUosRUFBMkQ7QUFDekRsOEQsTUFBQUEsRUFBRSxDQUFDKzFELFlBQUgsQ0FBZ0JtRyxvQkFBaEIsRUFBc0N5RCxVQUFVLEdBQUksQ0FBQyxJQUFJLy9DLElBQUosRUFBRCxHQUFjLEdBQWQsR0FBcUIsRUFBRXk4QyxJQUEzRTtBQUNEO0FBQ0YsR0FKRCxNQUlPO0FBQ0wsUUFBSSxFQUFFc0QsVUFBVSxHQUFHMy9ELEVBQUUsQ0FBQ2s4RCxvQkFBRCxDQUFqQixDQUFKLEVBQThDO0FBQzVDeUQsTUFBQUEsVUFBVSxHQUFHMy9ELEVBQUUsQ0FBQ2s4RCxvQkFBRCxDQUFGLEdBQTRCLENBQUMsSUFBSXQ4QyxJQUFKLEVBQUYsR0FBZ0IsR0FBaEIsR0FBdUIsRUFBRXk4QyxJQUFqRTtBQUNEO0FBQ0Y7O0FBRUQsU0FBT3NELFVBQVA7QUFDRDs7QUFFRCxTQUFTQyxRQUFULENBQWtCNS9ELEVBQWxCLEVBQXNCMUgsS0FBdEIsRUFBNkI7QUFDM0IsTUFBSXFuRSxVQUFVLEdBQUdELEtBQUssQ0FBQzEvRCxFQUFELENBQXRCO0FBQUEsTUFDRTYvRCxRQURGO0FBRUFBLEVBQUFBLFFBQVEsR0FBR0YsVUFBVSxHQUFHLEdBQWIsSUFBb0JybkUsS0FBSyxDQUFDbWlFLEtBQU4sSUFBZSxDQUFuQyxDQUFYOztBQUNBLE1BQUlvRixRQUFRLElBQUl2RCxlQUFoQixFQUFpQztBQUMvQixXQUFPQSxlQUFlLENBQUN1RCxRQUFELENBQXRCO0FBQ0Q7O0FBQ0R2RCxFQUFBQSxlQUFlLENBQUN1RCxRQUFELENBQWYsR0FBNEJDLGdCQUFnQixDQUFDOS9ELEVBQUQsRUFBSzFILEtBQUwsQ0FBNUM7QUFDQSxTQUFPZ2tFLGVBQWUsQ0FBQ3VELFFBQUQsQ0FBdEI7QUFDRDtBQUdEOzs7QUFDQSxTQUFTQyxnQkFBVCxDQUEwQjkvRCxFQUExQixFQUE4QjFILEtBQTlCLEVBQXFDO0FBQ25DLE1BQUl5bkUsaUJBQWlCLEdBQUdYLGNBQWMsQ0FBQ3AvRCxFQUFELEVBQUsxSCxLQUFMLENBQXRDOztBQUNBLE1BQUl5bkUsaUJBQWlCLEtBQUssSUFBMUIsRUFBZ0M7QUFDOUIsV0FBTyxJQUFQO0FBQ0QsR0FGRCxNQUVPO0FBQ0wvL0QsSUFBQUEsRUFBRSxHQUFHKy9ELGlCQUFpQixDQUFDLy9ELEVBQXZCO0FBQ0ExSCxJQUFBQSxLQUFLLEdBQUd5bkUsaUJBQWlCLENBQUN6bkUsS0FBMUI7O0FBQ0EsV0FBTzBILEVBQVAsRUFBVztBQUNULFVBQUk0L0QsUUFBUSxDQUFDNS9ELEVBQUQsRUFBSzFILEtBQUwsQ0FBWixFQUF5QjtBQUN2QixlQUFPLElBQVA7QUFDRDs7QUFDRDBILE1BQUFBLEVBQUUsR0FBR2srRCxHQUFHLENBQUNsK0QsRUFBRCxFQUFLaStELFlBQVksQ0FBQzNsRSxLQUFLLENBQUNnaUUsY0FBUCxDQUFaLENBQW1DNEQsR0FBeEMsQ0FBUjtBQUNEOztBQUNELFdBQU8sS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU1csUUFBVCxDQUFnQnArQyxHQUFoQixFQUFxQjAxQyxPQUFyQixFQUE4QnlJLEtBQTlCLEVBQXFDO0FBQ25DLE1BQUksQ0FBQ3pDLE1BQU0sQ0FBQzE3QyxHQUFELENBQVgsRUFBa0I7QUFDaEIwN0MsSUFBQUEsTUFBTSxDQUFDMTdDLEdBQUQsQ0FBTixHQUFjbzNDLE1BQU0sQ0FBQ3ZGLEtBQVAsQ0FBYTd4QyxHQUFiLENBQWQ7QUFDRDs7QUFFRCxNQUFJdS9DLFFBQVEsR0FBRzdELE1BQU0sQ0FBQzE3QyxHQUFELENBQXJCO0FBQUEsTUFDRXcvQyxVQUFVLEdBQUcsQ0FEZjtBQUFBLE1BRUVDLFFBQVEsR0FBR0YsUUFBUSxDQUFDbG9FLE1BRnRCO0FBQUEsTUFHRXFvRSxlQUhGO0FBQUEsTUFJRXRrQyxLQUpGO0FBQUEsTUFLRXc1QixHQUFHLEdBQUcsRUFMUjs7QUFPQSxNQUFJdUosS0FBSixFQUFXO0FBQ1R6SSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sSUFBSXlJLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUzlJLGFBQTlCO0FBQ0Q7O0FBRURxSyxFQUFBQSxlQUFlLEdBQUdoSyxPQUFPLElBQUlBLE9BQU8sQ0FBQ0wsYUFBbkIsSUFBb0MsT0FBT3g2RCxRQUFQLEtBQW9CLFdBQXBCLElBQW1DQSxRQUF6Rjs7QUFFQSxNQUFJNjZELE9BQU8sSUFBSUEsT0FBTyxDQUFDTixRQUFSLEtBQXFCLENBQWhDLElBQXFDLENBQUNzSyxlQUExQyxFQUEyRDtBQUN6REEsSUFBQUEsZUFBZSxHQUFHaEssT0FBbEI7QUFDRDs7QUFFREEsRUFBQUEsT0FBTyxHQUFHQSxPQUFPLElBQUlnSyxlQUFyQjtBQUVBL0QsRUFBQUEsWUFBWSxHQUFHdUMsS0FBSyxDQUFDeEksT0FBRCxDQUFwQjs7QUFFQSxTQUFPOEosVUFBVSxHQUFHQyxRQUFwQixFQUE4QkQsVUFBVSxFQUF4QyxFQUE0QztBQUMxQ3pCLElBQUFBLFdBQVc7QUFFWDNpQyxJQUFBQSxLQUFLLEdBQUdta0MsUUFBUSxDQUFDQyxVQUFELENBQWhCO0FBRUEsUUFBSXpJLE1BQU0sR0FBRzM3QixLQUFLLENBQUMyN0IsTUFBbkI7QUFBQSxRQUNFNEksV0FERjtBQUFBLFFBRUVDLFNBRkY7QUFBQSxRQUdFQyxVQUhGO0FBQUEsUUFJRUMsT0FBTyxHQUFHM0IsS0FKWjtBQUFBLFFBS0U0QixRQUxGO0FBQUEsUUFNRW5tRSxFQUFFLEdBQUcsSUFOUDs7QUFRQSxRQUFJLENBQUNrbUUsT0FBTCxFQUFjO0FBQ1osVUFBSS9JLE1BQU0sSUFBSSxDQUFDNEUsWUFBZixFQUE2QjtBQUMzQmdFLFFBQUFBLFdBQVcsR0FBRyxDQUFkO0FBQ0FDLFFBQUFBLFNBQVMsR0FBRzdJLE1BQU0sQ0FBQzEvRCxNQUFuQjs7QUFDQSxlQUFPc29FLFdBQVcsR0FBR0MsU0FBckIsRUFBZ0NELFdBQVcsRUFBM0MsRUFBK0M7QUFDN0MsY0FBSUssWUFBWSxHQUFHakosTUFBTSxDQUFDNEksV0FBRCxDQUF6Qjs7QUFDQSxjQUFJSyxZQUFZLENBQUNyNEMsQ0FBYixLQUFtQixJQUF2QixFQUE2QjtBQUMzQi90QixZQUFBQSxFQUFFLEdBQUdvbUUsWUFBWSxDQUFDNXBFLEtBQWxCO0FBQ0E7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsVUFBSXdELEVBQUosRUFBUTtBQUNOO0FBQ0EsWUFBSXFtRSxjQUFjLEdBQUcsQ0FBQ3ZLLE9BQU8sQ0FBQ3dLLGNBQTlCO0FBQUEsWUFDRUMsWUFBWSxHQUFHakssSUFBSSxDQUFDTSxRQUFMLENBQWNrSixlQUFkLEVBQStCaEssT0FBL0IsQ0FEakI7QUFBQSxZQUVFMEssR0FBRyxHQUFHSCxjQUFjLEdBQ2xCRSxZQUFZLEdBQ1ZULGVBQWUsQ0FBQ1EsY0FBaEIsQ0FBK0J0bUUsRUFBL0IsQ0FEVSxHQUVWLElBSGdCLEdBSWhCODdELE9BQU8sQ0FBQ3dLLGNBQVIsQ0FBdUJ0bUUsRUFBdkIsQ0FOTixDQUZNO0FBVU47O0FBQ0EsWUFBSSxDQUFDd21FLEdBQUQsSUFBUUgsY0FBUixJQUEwQkcsR0FBRyxJQUFJdEUsT0FBTyxDQUFDc0UsR0FBRCxFQUFNLElBQU4sQ0FBUCxLQUF1QnhtRSxFQUE1RCxFQUFnRTtBQUM5RCxjQUFJeW1FLElBQUksR0FBR25LLElBQUksQ0FBQ1Qsb0JBQUwsQ0FBMEIsR0FBMUIsRUFBK0JDLE9BQS9CLENBQVg7QUFBQSxjQUNFNEssTUFBTSxHQUFHRCxJQUFJLENBQUNocEUsTUFEaEI7QUFBQSxjQUVFa3BFLElBQUksR0FBRyxDQUZUOztBQUdBLGlCQUFPQSxJQUFJLEdBQUdELE1BQWQsRUFBc0JDLElBQUksRUFBMUIsRUFBOEI7QUFDNUJILFlBQUFBLEdBQUcsR0FBR0MsSUFBSSxDQUFDRSxJQUFELENBQVY7O0FBQ0EsZ0JBQUl6RSxPQUFPLENBQUNzRSxHQUFELEVBQU0sSUFBTixDQUFQLEtBQXVCeG1FLEVBQTNCLEVBQStCO0FBQzdCa21FLGNBQUFBLE9BQU8sR0FBRyxDQUFDTSxHQUFELENBQVY7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsY0FBSUcsSUFBSSxLQUFLRCxNQUFiLEVBQXFCO0FBQ25CUixZQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEO0FBQ0YsU0FkRCxNQWNPO0FBQ0wsY0FBSUssWUFBWSxJQUFJQyxHQUFoQixJQUF1QjFLLE9BQU8sS0FBS2dLLGVBQXZDLEVBQXdEO0FBQ3REVSxZQUFBQSxHQUFHLEdBQUdsSyxJQUFJLENBQUNNLFFBQUwsQ0FBY2QsT0FBZCxFQUF1QjBLLEdBQXZCLElBQThCQSxHQUE5QixHQUFvQyxJQUExQztBQUNEOztBQUNETixVQUFBQSxPQUFPLEdBQUdNLEdBQUcsR0FBRyxDQUFDQSxHQUFELENBQUgsR0FBVyxFQUF4QjtBQUNEO0FBQ0YsT0EvQkQsTUErQk87QUFDTE4sUUFBQUEsT0FBTyxHQUFHNUosSUFBSSxDQUFDVCxvQkFBTCxDQUEwQnI2QixLQUFLLENBQUNobEMsS0FBTixJQUFlLEdBQXpDLEVBQThDcy9ELE9BQTlDLENBQVY7QUFDRDtBQUNGOztBQUVEbUssSUFBQUEsVUFBVSxHQUFHLENBQWI7QUFDQUUsSUFBQUEsUUFBUSxHQUFHRCxPQUFPLENBQUN6b0UsTUFBbkI7O0FBRUEsUUFBSSxDQUFDMG9FLFFBQUwsRUFBZTtBQUNiO0FBQ0Q7O0FBRUQsV0FBT0YsVUFBVSxHQUFHRSxRQUFwQixFQUE4QkYsVUFBVSxFQUF4QyxFQUE0QztBQUMxQyxVQUFJbHNCLElBQUksR0FBR21zQixPQUFPLENBQUNELFVBQUQsQ0FBbEI7QUFDQSxVQUFJVyxTQUFTLEdBQUd6QixzQkFBc0IsQ0FBQ3ByQixJQUFELEVBQU92WSxLQUFQLENBQXRDOztBQUNBLFVBQUlvbEMsU0FBUyxLQUFLLElBQWxCLEVBQXdCO0FBQ3RCNUwsUUFBQUEsR0FBRyxDQUFDdDdELElBQUosQ0FBU3E2QyxJQUFUO0FBQ0QsT0FGRCxNQUVPLElBQUk2c0IsU0FBSixFQUFlO0FBQ3BCLFlBQUlyQixRQUFRLENBQUNxQixTQUFTLENBQUNqaEUsRUFBWCxFQUFlaWhFLFNBQVMsQ0FBQzNvRSxLQUF6QixDQUFaLEVBQTZDO0FBQzNDKzhELFVBQUFBLEdBQUcsQ0FBQ3Q3RCxJQUFKLENBQVNxNkMsSUFBVDtBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQUVELE1BQUk4ckIsUUFBUSxHQUFHLENBQWYsRUFBa0I7QUFDaEI3SyxJQUFBQSxHQUFHLEdBQUdzQixJQUFJLENBQUNDLE1BQUwsQ0FBWXZCLEdBQVosQ0FBTjtBQUNEOztBQUVELFNBQU9BLEdBQVA7QUFDRDs7SUFFRDkvRCxlQUFBLEdBQWlCc3BFLFFBQWpCOztBQUVBQSxRQUFNLENBQUN2TSxLQUFQLEdBQWUsVUFBVTd4QyxHQUFWLEVBQWU7QUFDNUIsU0FBT28zQyxNQUFNLENBQUN2RixLQUFQLENBQWE3eEMsR0FBYixDQUFQO0FBQ0QsQ0FGRDs7QUFJQW8rQyxRQUFNLENBQUNsRixPQUFQLEdBQWlCQSxPQUFqQjtBQUVBa0YsUUFBTSxDQUFDbEksSUFBUCxHQUFjQSxJQUFkO0FBRUFrSSxRQUFNLENBQUN6bUUsT0FBUCxHQUFpQixXQUFqQjs7SUM5cUJBN0MsYUFBQSxHQUFpQlMsZUFBakI7O0FDQUEsSUFBSWtyRSxnQkFBZ0IsR0FBRyxhQUF2Qjs7QUFFQSxTQUFTQyxtQkFBVCxDQUE4QjdvRSxLQUE5QixFQUFxQ2lOLENBQXJDLEVBQXdDa1csTUFBeEMsRUFBZ0Q7QUFDOUMsTUFBSUEsTUFBTSxLQUFLLENBQWYsRUFBa0I7QUFDaEIsV0FBT2xXLENBQUMsQ0FBQ29kLFdBQUYsRUFBUDtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9wZCxDQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFTNjdELFdBQVQsQ0FBb0IzZ0QsR0FBcEIsRUFBeUI7QUFDdkIsTUFBSTRnRCxVQUFVLEdBQUc1Z0QsR0FBRyxDQUFDM2hCLE9BQUosQ0FBWW9pRSxnQkFBWixFQUE4QkMsbUJBQTlCLENBQWpCO0FBQ0FELEVBQUFBLGdCQUFnQixDQUFDOW5DLFNBQWpCLEdBQTZCLENBQTdCO0FBQ0EsU0FBT2lvQyxVQUFQO0FBQ0Q7O0lBRUQ5ckUsV0FBQSxHQUFpQjZyRSxXQUFqQjs7QUNoQkEsU0FBU0UsVUFBVCxDQUFtQnpxRSxLQUFuQixFQUEwQjtBQUN4QixTQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBeEI7QUFDRDs7SUFFRHRCLFVBQUEsR0FBaUIrckUsVUFBakI7O0FDSkEsU0FBU0MsYUFBVCxDQUFzQjFxRSxLQUF0QixFQUE2QjtBQUMzQixTQUFPLE9BQU9BLEtBQVAsS0FBaUIsV0FBeEI7QUFDRDs7SUFFRHRCLGFBQUEsR0FBaUJnc0UsYUFBakI7O0FDSkEsU0FBU3IwQyxRQUFULENBQWlCczBDLElBQWpCLEVBQXVCO0FBQ3JCLE1BQUlyM0QsSUFBSSxHQUFHdFMsU0FBWDtBQUNBLE1BQUlrSCxNQUFKOztBQUVBLE9BQUssSUFBSXNCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc4SixJQUFJLENBQUNyUyxNQUF6QixFQUFpQ3VJLENBQUMsRUFBbEMsRUFBc0M7QUFDcEN0QixJQUFBQSxNQUFNLEdBQUdvTCxJQUFJLENBQUM5SixDQUFELENBQWI7O0FBRUEsU0FBSyxJQUFJMUcsR0FBVCxJQUFnQm9GLE1BQWhCLEVBQXdCO0FBQ3RCeWlFLE1BQUFBLElBQUksQ0FBQzduRSxHQUFELENBQUosR0FBWW9GLE1BQU0sQ0FBQ3BGLEdBQUQsQ0FBbEI7QUFDRDtBQUNGOztBQUVELFNBQU82bkUsSUFBUDtBQUNEOztJQUVEanNFLFFBQUEsR0FBaUIyM0IsUUFBakI7O0FDZkEsU0FBU3NrQixXQUFULENBQW9CenlDLE1BQXBCLEVBQTRCdkYsRUFBNUIsRUFBZ0M7QUFDOUIsTUFBSWlvRSxXQUFXLEdBQUcsRUFBbEI7O0FBRUEsT0FBSyxJQUFJOW5FLEdBQVQsSUFBZ0JvRixNQUFoQixFQUF3QjtBQUN0QixRQUFJQSxNQUFNLENBQUM1RSxjQUFQLENBQXNCUixHQUF0QixDQUFKLEVBQWdDO0FBQzlCOG5FLE1BQUFBLFdBQVcsQ0FBQzluRSxHQUFELENBQVgsR0FBbUJILEVBQUUsQ0FBQ3VGLE1BQU0sQ0FBQ3BGLEdBQUQsQ0FBUCxDQUFyQjtBQUNEO0FBQ0Y7O0FBRUQsU0FBTzhuRSxXQUFQO0FBQ0Q7O0lBRURsc0UsV0FBQSxHQUFpQmk4QyxXQUFqQjs7QUNaQSxJQUFJNHZCLFdBQVMsR0FBR3ByRSxXQUFoQjs7QUFFQSxTQUFTMHJFLGdCQUFULENBQXlCN21FLElBQXpCLEVBQStCO0FBQzdCLE1BQUk4bUUsS0FBSyxHQUFHUCxXQUFTLENBQUN2bUUsSUFBRCxDQUFyQixDQUQ2QjtBQUk3Qjs7QUFDQSxNQUFJOG1FLEtBQUssQ0FBQ3JxRCxNQUFOLENBQWEsQ0FBYixFQUFnQnFMLFdBQWhCLE9BQWtDOW5CLElBQUksQ0FBQ3ljLE1BQUwsQ0FBWSxDQUFaLENBQXRDLEVBQXNEO0FBQ3BELFdBQU96YyxJQUFJLENBQUN5YyxNQUFMLENBQVksQ0FBWixJQUFpQnFxRCxLQUFLLENBQUMxcUUsS0FBTixDQUFZLENBQVosQ0FBeEI7QUFDRDs7QUFFRCxNQUFJNEQsSUFBSSxDQUFDeWMsTUFBTCxDQUFZLENBQVosTUFBbUIsR0FBdkIsRUFBNEI7QUFDMUIsV0FBT3FxRCxLQUFLLENBQUN4aEUsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBeEIsR0FBNEJ3aEUsS0FBNUIsR0FDSEEsS0FBSyxDQUFDcnFELE1BQU4sQ0FBYSxDQUFiLEVBQWdCcUwsV0FBaEIsS0FBZ0NnL0MsS0FBSyxDQUFDMXFFLEtBQU4sQ0FBWSxDQUFaLENBRHBDO0FBRUQsR0FIRCxNQUdPO0FBQ0wsV0FBTzBxRSxLQUFQO0FBQ0Q7QUFDRjs7SUFFRHBzRSxnQkFBQSxHQUFpQm1zRSxnQkFBakI7O0FDbkJBLElBQUlFLE9BQUssR0FBRzVyRSxRQUFRLE9BQUQsQ0FBbkI7O0FBQ0EsSUFBSTZyRSxTQUFTLEdBQUc3ckUsR0FBaEI7O0FBQ0EsSUFBSThyRSxnQkFBZ0IsR0FBRzlyRSxhQUF2Qjs7QUFDQSxJQUFJb3JFLFNBQVMsR0FBR3ByRSxXQUFoQjs7QUFDQSxJQUFJc3JFLFFBQVEsR0FBR3RyRSxVQUFmOztBQUNBLElBQUl1ckUsV0FBVyxHQUFHdnJFLGFBQWxCOztBQUNBLElBQUlrM0IsTUFBTSxHQUFHbDNCLFFBQWI7O0FBQ0EsSUFBSXc3QyxXQUFTLEdBQUd4N0MsV0FBaEI7O0FBQ0EsSUFBSTByRSxjQUFjLEdBQUcxckUsZ0JBQXJCOztBQUVBLFNBQVM0YSxTQUFULEdBQW9CO0FBQ2xCLFdBQVM4NkMsT0FBVCxDQUFrQmlJLFFBQWxCLEVBQTRCdUQsVUFBNUIsRUFBd0M7QUFDdEMsU0FBS3ZELFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS3VELFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0EsU0FBS3ZCLFVBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLb00sY0FBTCxHQUFzQixFQUF0QjtBQUNBLFNBQUtuVSxJQUFMLEdBQVksRUFBWjtBQUNBLFFBQUlsNEQsSUFBSSxHQUFHLElBQVg7QUFDQSxRQUFJazdELEtBQUssR0FBRyxLQUFLQSxLQUFMLEdBQWE7QUFDdkJvUixNQUFBQSxHQUFHLEVBQUUsVUFBVUMsU0FBVixFQUFxQjtBQUN4QnZzRSxRQUFBQSxJQUFJLENBQUN1c0UsU0FBTCxHQUFpQkEsU0FBakI7QUFDRCxPQUhzQjtBQUl2Qjk5RCxNQUFBQSxLQUFLLEVBQUU7QUFDTCs5RCxRQUFBQSxXQUFXLEVBQUUsVUFBVXJuRSxJQUFWLEVBQWdCaEUsS0FBaEIsRUFBdUI7QUFDbEMrNUQsVUFBQUEsS0FBSyxDQUFDenNELEtBQU4sQ0FBWXU5RCxjQUFjLENBQUM3bUUsSUFBRCxDQUExQixJQUFvQ2hFLEtBQXBDO0FBQ0QsU0FISTtBQUlMc3JFLFFBQUFBLFdBQVcsRUFBRSxVQUFVdG5FLElBQVYsRUFBZ0I7QUFDM0IsaUJBQU8rMUQsS0FBSyxDQUFDenNELEtBQU4sQ0FBWXU5RCxjQUFjLENBQUM3bUUsSUFBRCxDQUExQixLQUFxQyxFQUE1QztBQUNELFNBTkk7QUFPTHVuRSxRQUFBQSxnQkFBZ0IsRUFBRSxVQUFVdm5FLElBQVYsRUFBZ0I7QUFDaEMsaUJBQU8rMUQsS0FBSyxDQUFDenNELEtBQU4sQ0FBWWcrRCxXQUFaLENBQXdCdG5FLElBQXhCLENBQVA7QUFDRCxTQVRJO0FBVUx3bkUsUUFBQUEsY0FBYyxFQUFFLFVBQVV4bkUsSUFBVixFQUFnQjtBQUM5QixpQkFBTysxRCxLQUFLLENBQUN6c0QsS0FBTixDQUFZdTlELGNBQWMsQ0FBQzdtRSxJQUFELENBQTFCLENBQVA7QUFDRDtBQVpJO0FBSmdCLEtBQXpCO0FBb0JBLFNBQUtzSixLQUFMLEdBQWF5c0QsS0FBSyxDQUFDenNELEtBQW5CO0FBQ0Q7O0FBRUR1bkQsRUFBQUEsT0FBTyxDQUFDNFcsWUFBUixHQUF1QixDQUF2QjtBQUNBNVcsRUFBQUEsT0FBTyxDQUFDNlcsOEJBQVIsR0FBeUMsQ0FBekM7QUFDQTdXLEVBQUFBLE9BQU8sQ0FBQzhXLDJCQUFSLEdBQXNDLENBQXRDO0FBQ0E5VyxFQUFBQSxPQUFPLENBQUMrVywyQkFBUixHQUFzQyxDQUF0QztBQUNBL1csRUFBQUEsT0FBTyxDQUFDZ1gsMEJBQVIsR0FBcUMsQ0FBckM7QUFDQWhYLEVBQUFBLE9BQU8sQ0FBQ2lYLDhCQUFSLEdBQXlDLEVBQXpDO0FBRUFqWCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjYzRCxRQUFsQixHQUE2QixDQUE3QixDQXRDa0I7QUF5Q2xCOztBQUNBbkssRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0I0a0UsaUJBQWxCLEdBQXNDO0FBQ3BDLFlBQVEsUUFENEI7QUFFcEMsY0FBVSxVQUYwQjtBQUdwQyxhQUFTLFNBSDJCO0FBSXBDLG1CQUFlLGVBSnFCO0FBS3BDLFlBQVEsUUFMNEI7QUFNcEMsV0FBTyxPQU42QjtBQU9wQyxtQkFBZSxlQVBxQjtBQVFwQyxZQUFRLFFBUjRCO0FBU3BDLGVBQVcsV0FUeUI7QUFVcEMsaUJBQWEsYUFWdUI7QUFXcEMsZ0JBQVksWUFYd0I7QUFZcEMsaUJBQWEsYUFadUI7QUFhcEMsZ0JBQVksWUFid0I7QUFjcEMsaUJBQWEsYUFkdUI7QUFlcEMsWUFBUSxRQWY0QjtBQWdCcEMsYUFBUyxTQWhCMkI7QUFpQnBDLGFBQVMsU0FqQjJCO0FBa0JwQyxhQUFTLFNBbEIyQjtBQW1CcEMsZUFBVyxXQW5CeUI7QUFvQnBDLGdCQUFZLFlBcEJ3QjtBQXFCcEMsYUFBUyxTQXJCMkI7QUFzQnBDLFlBQVEsUUF0QjRCO0FBdUJwQyxpQkFBYSxhQXZCdUI7QUF3QnBDLGtCQUFjLGNBeEJzQjtBQXlCcEMsa0JBQWMsY0F6QnNCO0FBMEJwQyxpQkFBYSxhQTFCdUI7QUEyQnBDLGdCQUFZLFlBM0J3QjtBQTRCcEMsaUJBQWEsYUE1QnVCO0FBNkJwQyxlQUFXLFdBN0J5QjtBQThCcEMsYUFBUyxTQTlCMkI7QUErQnBDLGNBQVUsVUEvQjBCO0FBZ0NwQyxjQUFVLFVBaEMwQjtBQWlDcEMsbUJBQWUsZUFqQ3FCO0FBa0NwQyxnQkFBWSxZQWxDd0I7QUFtQ3BDLGlCQUFhLGFBbkN1QjtBQW9DcEMsa0JBQWMsY0FwQ3NCO0FBcUNwQyxhQUFTO0FBckMyQixHQUF0QztBQXdDQWxYLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCNmtFLGlDQUFsQixHQUFzRCxDQUNwRCxRQURvRCxFQUVwRCxRQUZvRCxDQUF0RDtBQUtBblgsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0I4a0UscUJBQWxCLEdBQTBDO0FBQ3hDLGFBQVM7QUFEK0IsR0FBMUM7O0FBSUFwWCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQitrRSxtQkFBbEIsR0FBd0MsVUFBVWxvRSxJQUFWLEVBQWdCO0FBQ3RELFFBQUltb0Usb0JBQW9CLEdBQUcsS0FBS0gsaUNBQUwsQ0FBdUMxN0QsR0FBdkMsQ0FBMkMsVUFBVTg3RCxJQUFWLEVBQWdCO0FBQ3BGLGFBQU9BLElBQUksQ0FBQ3RtRSxJQUFMLENBQVU5QixJQUFWLENBQVA7QUFDRCxLQUYwQixDQUEzQjs7QUFJQSxRQUFJbW9FLG9CQUFvQixDQUFDMzdELElBQXJCLENBQTBCNEcsT0FBMUIsQ0FBSixFQUF3QztBQUN0QyxhQUFPcFQsSUFBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sS0FBS2lvRSxxQkFBTCxDQUEyQmpvRSxJQUEzQixLQUFvQ3VtRSxTQUFTLENBQUN2bUUsSUFBRCxDQUFwRDtBQUNEO0FBQ0YsR0FWRDs7QUFZQTZ3RCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQiszRCxZQUFsQixHQUFpQyxVQUFVbDdELElBQVYsRUFBZ0JoRSxLQUFoQixFQUF1QjtBQUN0RCxRQUFJZ0UsSUFBSSxLQUFLLE9BQVQsSUFBb0J5bUUsUUFBUSxDQUFDenFFLEtBQUQsQ0FBaEMsRUFBeUM7QUFDdkMsVUFBSXFzRSxNQUFNLEdBQUdyQixTQUFTLENBQUN2UCxLQUFWLENBQWdCejdELEtBQWhCLENBQWI7O0FBRUEsV0FBSyxJQUFJOEMsR0FBVCxJQUFnQnVwRSxNQUFoQixFQUF3QjtBQUN0QixhQUFLLytELEtBQUwsQ0FBVys5RCxXQUFYLENBQXVCdm9FLEdBQXZCLEVBQTRCdXBFLE1BQU0sQ0FBQ3ZwRSxHQUFELENBQWxDO0FBQ0Q7QUFDRixLQU5ELE1BTU87QUFDTCxXQUFLaTNELEtBQUwsQ0FBVyxLQUFLbVMsbUJBQUwsQ0FBeUJsb0UsSUFBekIsQ0FBWCxJQUE2Q2hFLEtBQTdDO0FBQ0Q7QUFDRixHQVZEOztBQVlBNjBELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCdzNELFlBQWxCLEdBQWlDLFVBQVUzNkQsSUFBVixFQUFnQjtBQUMvQyxXQUFPLEtBQUsrMUQsS0FBTCxDQUFXLEtBQUttUyxtQkFBTCxDQUF5QmxvRSxJQUF6QixDQUFYLENBQVA7QUFDRCxHQUZEOztBQUlBNndELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCeTFELGdCQUFsQixHQUFxQyxVQUFVNTRELElBQVYsRUFBZ0I7QUFDbkQsUUFBSWhFLEtBQUssR0FBRyxLQUFLMitELFlBQUwsQ0FBa0IzNkQsSUFBbEIsQ0FBWjs7QUFFQSxRQUFJLENBQUMwbUUsV0FBVyxDQUFDMXFFLEtBQUQsQ0FBaEIsRUFBeUI7QUFDdkIsYUFBTztBQUNMQSxRQUFBQSxLQUFLLEVBQUVBLEtBREY7QUFFTDY4RCxRQUFBQSxTQUFTLEVBQUU7QUFGTixPQUFQO0FBSUQ7QUFDRixHQVREOztBQVdBaEksRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JtbEUsZUFBbEIsR0FBb0MsVUFBVXRvRSxJQUFWLEVBQWdCO0FBQ2xELFdBQU8sS0FBSysxRCxLQUFMLENBQVcsS0FBS21TLG1CQUFMLENBQXlCbG9FLElBQXpCLENBQVgsQ0FBUDtBQUNELEdBRkQ7O0FBSUE2d0QsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JvbEUsZUFBbEIsR0FBb0MsVUFBVXZvRSxJQUFWLEVBQWdCO0FBQ2xELFdBQU8sS0FBSytuRSxpQkFBTCxDQUF1Qi9uRSxJQUF2QixLQUFnQ0EsSUFBdkM7QUFDRCxHQUZEOztBQUlBNndELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCd3lCLGdCQUFsQixHQUFxQyxVQUFVMzFCLElBQVYsRUFBZ0JyQixFQUFoQixFQUFvQjtBQUN2RCxRQUFJNnBFLElBQUksR0FBRyxLQUFLRCxlQUFMLENBQXFCdm9FLElBQXJCLENBQVg7QUFDQSxTQUFLa25FLGNBQUwsQ0FBb0JzQixJQUFwQixJQUE0QixLQUFLdEIsY0FBTCxDQUFvQnNCLElBQXBCLEtBQTZCLEVBQXpEO0FBQ0EsU0FBS3RCLGNBQUwsQ0FBb0JzQixJQUFwQixFQUEwQnRwRSxJQUExQixDQUErQlAsRUFBL0I7QUFDRCxHQUpEOztBQU1Ba3lELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCc2xFLG1CQUFsQixHQUF3QyxVQUFVem9FLElBQVYsRUFBZ0JyQixFQUFoQixFQUFvQjtBQUMxRCxRQUFJK3BFLFNBQVMsR0FBRyxLQUFLeEIsY0FBTCxDQUFvQixLQUFLcUIsZUFBTCxDQUFxQnZvRSxJQUFyQixDQUFwQixDQUFoQjs7QUFFQSxRQUFJMG9FLFNBQUosRUFBZTtBQUNiLFVBQUlqckUsS0FBSyxHQUFHaXJFLFNBQVMsQ0FBQ3BqRSxPQUFWLENBQWtCM0csRUFBbEIsQ0FBWjs7QUFFQSxVQUFJbEIsS0FBSyxLQUFLLENBQUMsQ0FBZixFQUFrQjtBQUNoQmlyRSxRQUFBQSxTQUFTLENBQUN2ckQsTUFBVixDQUFpQjFmLEtBQWpCLEVBQXdCLENBQXhCO0FBQ0Q7QUFDRjtBQUNGLEdBVkQ7O0FBWUFvekQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JxRyxXQUFsQixHQUFnQyxVQUFVckUsRUFBVixFQUFjO0FBQzVDLFFBQUlBLEVBQUUsWUFBWTByRCxPQUFsQixFQUEyQjtBQUN6QjFyRCxNQUFBQSxFQUFFLENBQUNrM0QsVUFBSCxHQUFnQixJQUFoQjtBQUNEOztBQUVELFNBQUt2QixVQUFMLENBQWdCNTdELElBQWhCLENBQXFCaUcsRUFBckI7QUFDQSxXQUFPQSxFQUFQO0FBQ0QsR0FQRDs7QUFTQTByRCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQndsRSxZQUFsQixHQUFpQyxVQUFVeGpFLEVBQVYsRUFBY3lqRSxNQUFkLEVBQXNCO0FBQ3JELFFBQUlsa0UsS0FBSyxHQUFHLEtBQUtvMkQsVUFBTCxDQUFnQngxRCxPQUFoQixDQUF3QnNqRSxNQUF4QixDQUFaO0FBQ0F6akUsSUFBQUEsRUFBRSxDQUFDazNELFVBQUgsR0FBZ0IsSUFBaEI7O0FBRUEsUUFBSTMzRCxLQUFLLEtBQUssQ0FBQyxDQUFmLEVBQWtCO0FBQ2hCLFdBQUtvMkQsVUFBTCxDQUFnQjM5QyxNQUFoQixDQUF1QnpZLEtBQXZCLEVBQThCLENBQTlCLEVBQWlDUyxFQUFqQztBQUNELEtBRkQsTUFFTztBQUNMLFdBQUsyMUQsVUFBTCxDQUFnQjU3RCxJQUFoQixDQUFxQmlHLEVBQXJCO0FBQ0Q7O0FBRUQsV0FBT0EsRUFBUDtBQUNELEdBWEQ7O0FBYUEwckQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0IweUIsV0FBbEIsR0FBZ0MsVUFBVXNzQyxLQUFWLEVBQWlCO0FBQy9DLFFBQUlsOEQsTUFBTSxHQUFHLEtBQUs2MEQsVUFBTCxDQUFnQngxRCxPQUFoQixDQUF3QjY4RCxLQUF4QixDQUFiO0FBQ0EsU0FBS3JILFVBQUwsQ0FBZ0IzOUMsTUFBaEIsQ0FBdUJsWCxNQUF2QixFQUErQixDQUEvQjtBQUNELEdBSEQ7O0FBS0E0cUQsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0IwbEUsYUFBbEIsR0FBa0MsWUFBWTtBQUM1QyxXQUFPLEtBQUs1QixnQkFBTCxDQUFzQnQ4RCxLQUF0QixDQUE0QixJQUE1QixFQUFrQzNOLFNBQWxDLEVBQTZDLENBQTdDLEtBQW1ELElBQTFEO0FBQ0QsR0FGRDs7QUFJQTZ6RCxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjhqRSxnQkFBbEIsR0FBcUMsVUFBVTlCLFFBQVYsRUFBb0I7QUFDdkQsUUFBSSxDQUFDQSxRQUFMLEVBQWU7QUFDYixZQUFNLElBQUkzeUQsS0FBSixDQUFVLHNCQUFWLENBQU47QUFDRDs7QUFFRCxXQUFPeTBELGdCQUFnQixDQUFDOUIsUUFBRCxFQUFXLElBQVgsQ0FBdkI7QUFDRCxHQU5EOztBQVFBdFUsRUFBQUEsT0FBTyxDQUFDMXRELFNBQVIsQ0FBa0JrNEQsb0JBQWxCLEdBQXlDLFVBQVV2QyxRQUFWLEVBQW9CO0FBQzNELFFBQUlnUSxRQUFRLEdBQUcsS0FBS0EsUUFBcEI7O0FBRUEsUUFBSUEsUUFBUSxDQUFDN3JFLE1BQVQsS0FBb0IsQ0FBeEIsRUFBMkI7QUFDekIsYUFBTyxFQUFQO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSTZoRSxPQUFKOztBQUVBLFVBQUloRyxRQUFRLEtBQUssR0FBakIsRUFBc0I7QUFDcEJnRyxRQUFBQSxPQUFPLEdBQUdnSyxRQUFRLENBQUN2OEQsTUFBVCxDQUFnQixVQUFVcEgsRUFBVixFQUFjO0FBQ3RDLGlCQUFPQSxFQUFFLENBQUMyekQsUUFBSCxLQUFnQkEsUUFBdkI7QUFDRCxTQUZTLENBQVY7QUFHRCxPQUpELE1BSU87QUFDTGdHLFFBQUFBLE9BQU8sR0FBR2dLLFFBQVY7QUFDRDs7QUFFRCxVQUFJQyxZQUFZLEdBQUdELFFBQVEsQ0FBQ3g4RCxHQUFULENBQWEsVUFBVW5ILEVBQVYsRUFBYztBQUM1QyxlQUFPQSxFQUFFLENBQUNrMkQsb0JBQUgsQ0FBd0J2QyxRQUF4QixDQUFQO0FBQ0QsT0FGa0IsQ0FBbkI7QUFJQSxhQUFPZ0csT0FBTyxDQUFDbjVELE1BQVIsQ0FBZWdGLEtBQWYsQ0FBcUJtMEQsT0FBckIsRUFBOEJpSyxZQUE5QixDQUFQO0FBQ0Q7QUFDRixHQXRCRDs7QUF3QkFsWSxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjJpRSxjQUFsQixHQUFtQyxVQUFVdG1FLEVBQVYsRUFBYztBQUMvQyxRQUFJc3BFLFFBQVEsR0FBRyxLQUFLQSxRQUFwQjs7QUFFQSxRQUFJQSxRQUFRLENBQUM3ckUsTUFBVCxLQUFvQixDQUF4QixFQUEyQjtBQUN6QixhQUFPLElBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJUSxLQUFLLEdBQUdxckUsUUFBUSxDQUFDdjhELE1BQVQsQ0FBZ0IsVUFBVXBILEVBQVYsRUFBYztBQUN4QyxlQUFPQSxFQUFFLENBQUN3MUQsWUFBSCxDQUFnQixJQUFoQixNQUEwQm43RCxFQUFqQztBQUNELE9BRlcsRUFFVCxDQUZTLENBQVo7O0FBSUEsVUFBSS9CLEtBQUosRUFBVztBQUNULGVBQU9BLEtBQVA7QUFDRCxPQUZELE1BRU87QUFDTCxZQUFJc3JFLFlBQVksR0FBR0QsUUFBUSxDQUFDeDhELEdBQVQsQ0FBYSxVQUFVbkgsRUFBVixFQUFjO0FBQzVDLGlCQUFPQSxFQUFFLENBQUMyZ0UsY0FBSCxDQUFrQnRtRSxFQUFsQixDQUFQO0FBQ0QsU0FGa0IsQ0FBbkI7QUFJQSxlQUFPdXBFLFlBQVksQ0FBQ3g4RCxNQUFiLENBQW9CLFVBQVU5TyxLQUFWLEVBQWlCO0FBQzFDLGlCQUFPQSxLQUFLLEtBQUssSUFBakI7QUFDRCxTQUZNLEVBRUosQ0FGSSxLQUVFLElBRlQ7QUFHRDtBQUNGO0FBQ0YsR0F0QkQ7O0FBd0JBb3pELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCNmxFLHFCQUFsQixHQUEwQyxZQUFZO0FBQ3BELFFBQUksQ0FBQyxLQUFLNUIsU0FBVixFQUFxQjtBQUNuQixhQUFPN3FFLFNBQVA7QUFDRDs7QUFFRCxXQUFPLEtBQUs2cUUsU0FBTCxDQUFlNEIscUJBQWYsRUFBUDtBQUNELEdBTkQ7O0FBUUFuWSxFQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQjhsRSxTQUFsQixHQUE4QixVQUFVQyxJQUFWLEVBQWdCO0FBQzVDO0FBQ0EsUUFBSUEsSUFBSSxLQUFLM3NFLFNBQWIsRUFBd0I7QUFDdEIyc0UsTUFBQUEsSUFBSSxHQUFHLElBQVA7QUFDRDs7QUFDRCxRQUFJL2pFLEVBQUUsR0FBRyxJQUFJMHJELE9BQUosQ0FBWSxLQUFLaUksUUFBakIsRUFBMkIsS0FBS3VELFVBQWhDLENBQVQsQ0FMNEM7O0FBTzVDLFFBQUksS0FBS3JCLFFBQVQsRUFBbUI7QUFDakI3MUQsTUFBQUEsRUFBRSxDQUFDNjFELFFBQUgsR0FBYyxLQUFLQSxRQUFuQjtBQUNEOztBQUVELFFBQUlqb0QsQ0FBSixDQVg0Qzs7QUFjNUMsU0FBS0EsQ0FBTCxJQUFVLEtBQUtnakQsS0FBZixFQUFzQjtBQUNwQixVQUFJLEtBQUtBLEtBQUwsQ0FBV3oyRCxjQUFYLENBQTBCeVQsQ0FBMUIsS0FBZ0NBLENBQUMsS0FBSyxLQUF0QyxJQUErQ0EsQ0FBQyxLQUFLLE9BQXpELEVBQWtFO0FBQ2hFNU4sUUFBQUEsRUFBRSxDQUFDNHdELEtBQUgsQ0FBU2hqRCxDQUFULElBQWMsS0FBS2dqRCxLQUFMLENBQVdoakQsQ0FBWCxDQUFkO0FBQ0Q7QUFDRixLQWxCMkM7OztBQW9CNUMsU0FBS0EsQ0FBTCxJQUFVLEtBQUt6SixLQUFmLEVBQXNCO0FBQ3BCLFVBQUksS0FBS0EsS0FBTCxDQUFXaEssY0FBWCxDQUEwQnlULENBQTFCLEtBQWdDLENBQ2xDLGFBRGtDLEVBRWxDLGFBRmtDLEVBR2xDLGtCQUhrQyxFQUlsQyxnQkFKa0MsRUFLbEN6TixPQUxrQyxDQUsxQnlOLENBTDBCLE1BS25CLENBQUMsQ0FMbEIsRUFLcUI7QUFDbkI1TixRQUFBQSxFQUFFLENBQUNtRSxLQUFILENBQVN5SixDQUFULElBQWMsS0FBS3pKLEtBQUwsQ0FBV3lKLENBQVgsQ0FBZDtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSW0yRCxJQUFKLEVBQVU7QUFDUi9qRSxNQUFBQSxFQUFFLENBQUMyMUQsVUFBSCxHQUFnQixLQUFLQSxVQUFMLENBQWdCeHVELEdBQWhCLENBQW9CLFVBQVU2OEQsT0FBVixFQUFtQjtBQUNyRCxZQUFJLENBQUNBLE9BQU8sQ0FBQ25PLFFBQWIsRUFBdUI7QUFDckI7QUFDQSxpQkFBTytMLE9BQUssQ0FBQ3FDLFlBQU4sQ0FBbUJELE9BQW5CLENBQVA7QUFDRCxTQUpvRDs7O0FBTXJEQSxRQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0YsU0FBUixDQUFrQixJQUFsQixDQUFWLENBTnFEOztBQVFyRCxZQUFJRSxPQUFPLFlBQVl0WSxPQUF2QixFQUFnQztBQUM5QnNZLFVBQUFBLE9BQU8sQ0FBQzlNLFVBQVIsR0FBcUJsM0QsRUFBckI7QUFDRDs7QUFDRCxlQUFPZ2tFLE9BQVA7QUFDRCxPQVplLENBQWhCO0FBYUQ7O0FBQ0QsV0FBT2hrRSxFQUFQO0FBQ0QsR0E5Q0Q7O0FBZ0RBMHJELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCa21FLE9BQWxCLEdBQTRCLFVBQVUza0UsS0FBVixFQUFpQjtBQUMzQ0EsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLElBQUksQ0FBakI7QUFDQSxRQUFJcXhELEtBQUssR0FBRzFqQyxNQUFNLENBQUMsRUFBRCxFQUFLLEtBQUswakMsS0FBVixDQUFsQjtBQUNBQSxJQUFBQSxLQUFLLENBQUN6c0QsS0FBTixHQUFjK29CLE1BQU0sQ0FBQyxFQUFELEVBQUswakMsS0FBSyxDQUFDenNELEtBQVgsQ0FBcEI7QUFFQSxRQUFJZ2dFLGVBQWUsR0FBRyxJQUF0Qjs7QUFFQSxhQUFTQyxTQUFULEdBQXNCO0FBQ3BCLGFBQU8sY0FBYzdrRSxLQUFyQjtBQUNEOztBQUVELFFBQUlnaUUsV0FBVyxDQUFDM1EsS0FBSyxDQUFDajNELEdBQVAsQ0FBZixFQUE0QjtBQUMxQmkzRCxNQUFBQSxLQUFLLENBQUNqM0QsR0FBTixHQUFZeXFFLFNBQVMsRUFBckI7QUFDRDs7QUFFRCxXQUFPeFQsS0FBSyxDQUFDenNELEtBQU4sQ0FBWSs5RCxXQUFuQjtBQUNBLFdBQU90UixLQUFLLENBQUN6c0QsS0FBTixDQUFZZytELFdBQW5CO0FBQ0EsV0FBT3ZSLEtBQUssQ0FBQ3pzRCxLQUFOLENBQVlpK0QsZ0JBQW5CO0FBQ0EsV0FBT3hSLEtBQUssQ0FBQ3pzRCxLQUFOLENBQVlrK0QsY0FBbkI7QUFFQW4xQyxJQUFBQSxNQUFNLENBQUMwakMsS0FBRCxFQUFRcGYsV0FBUyxDQUFDLEtBQUt1d0IsY0FBTixFQUFzQixVQUFVd0IsU0FBVixFQUFxQjtBQUNoRSxhQUFPLFVBQVVjLGNBQVYsRUFBMEI7QUFDL0IsWUFBSXQwQyxLQUFKOztBQUVBLFlBQUlzMEMsY0FBSixFQUFvQjtBQUNsQnQwQyxVQUFBQSxLQUFLLEdBQUdzMEMsY0FBYyxDQUFDQyxXQUF2QjtBQUNBdjBDLFVBQUFBLEtBQUssQ0FBQ3MwQyxjQUFOLEdBQXVCQSxjQUF2QjtBQUNEOztBQUVEN3lCLFFBQUFBLFdBQVMsQ0FBQyt4QixTQUFELEVBQVksVUFBVXp6QyxRQUFWLEVBQW9CO0FBQ3ZDQSxVQUFBQSxRQUFRLENBQUN0NUIsSUFBVCxDQUFjMnRFLGVBQWQsRUFBK0JwMEMsS0FBL0I7QUFDRCxTQUZRLENBQVQ7QUFHRCxPQVhEO0FBWUQsS0Fic0IsQ0FBakIsQ0FBTjtBQWVBLFdBQU82eEMsT0FBSyxDQUFDcG1FLGFBQU4sQ0FBb0IsS0FBS200RCxRQUF6QixFQUFtQy9DLEtBQW5DLEVBQTBDLEtBQUtoRCxJQUFMLElBQWEsS0FBSytWLFFBQUwsQ0FBY3g4RCxHQUFkLENBQWtCLFVBQVVuSCxFQUFWLEVBQWNLLENBQWQsRUFBaUI7QUFDL0YsVUFBSUwsRUFBRSxZQUFZMHJELE9BQWxCLEVBQTJCO0FBQ3pCLGVBQU8xckQsRUFBRSxDQUFDa2tFLE9BQUgsQ0FBVzdqRSxDQUFYLENBQVA7QUFDRCxPQUZELE1BRU87QUFDTCxlQUFPTCxFQUFQO0FBQ0Q7QUFDRixLQU42RCxDQUF2RCxDQUFQO0FBT0QsR0ExQ0Q7O0FBNENBMHJELEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCeTRELHVCQUFsQixHQUE0QyxVQUFVOE4sS0FBVixFQUFpQjtBQUMzRCxhQUFTQyxtQkFBVCxDQUE4Qm5PLEtBQTlCLEVBQXFDb08sT0FBckMsRUFBOENDLE9BQTlDLEVBQXVEO0FBQ3JELGFBQU9yTyxLQUFLLENBQUNuaEQsTUFBTixDQUFhLFVBQVU5WixNQUFWLEVBQWtCbzJCLElBQWxCLEVBQXdCO0FBQzFDLFlBQUlwMkIsTUFBTSxLQUFLLEtBQWYsRUFBc0I7QUFDcEIsaUJBQU9BLE1BQVA7QUFDRCxTQUZELE1BRU8sSUFBSW8yQixJQUFJLEtBQUtpekMsT0FBYixFQUFzQjtBQUMzQixpQkFBT0EsT0FBUDtBQUNELFNBRk0sTUFFQSxJQUFJanpDLElBQUksS0FBS2t6QyxPQUFiLEVBQXNCO0FBQzNCLGlCQUFPQSxPQUFQO0FBQ0QsU0FGTSxNQUVBLElBQUlsekMsSUFBSSxDQUFDbWtDLFVBQVQsRUFBcUI7QUFDMUIsaUJBQU82TyxtQkFBbUIsQ0FBQ2h6QyxJQUFJLENBQUNta0MsVUFBTixFQUFrQjhPLE9BQWxCLEVBQTJCQyxPQUEzQixDQUExQjtBQUNELFNBRk0sTUFFQTtBQUNMLGlCQUFPLEtBQVA7QUFDRDtBQUNGLE9BWk0sRUFZSixLQVpJLENBQVA7QUFhRDs7QUFFRCxhQUFTQyxVQUFULENBQXFCNWxFLE1BQXJCLEVBQTZCK0IsTUFBN0IsRUFBcUM7QUFDbkMsYUFBT0EsTUFBTSxDQUFDbzJELFVBQWQsRUFBMEI7QUFDeEJwMkQsUUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNvMkQsVUFBaEI7O0FBQ0EsWUFBSXAyRCxNQUFNLEtBQUsvQixNQUFmLEVBQXVCO0FBQ3JCLGlCQUFPLElBQVA7QUFDRDtBQUNGOztBQUNELGFBQU8sS0FBUDtBQUNEOztBQUVELGFBQVM2bEUsY0FBVCxDQUF5Qmh3RCxJQUF6QixFQUErQkMsS0FBL0IsRUFBc0M7QUFDcEMsYUFBTzh2RCxVQUFVLENBQUMvdkQsSUFBRCxFQUFPQyxLQUFQLENBQVYsR0FDSDYyQyxPQUFPLENBQUNpWCw4QkFBUixHQUF5Q2pYLE9BQU8sQ0FBQytXLDJCQUQ5QyxHQUVIa0MsVUFBVSxDQUFDOXZELEtBQUQsRUFBUUQsSUFBUixDQUFWLEdBQ0U4MkMsT0FBTyxDQUFDZ1gsMEJBQVIsR0FBcUNoWCxPQUFPLENBQUM4VywyQkFEL0MsR0FFRSxLQUpOO0FBS0Q7O0FBRUQsYUFBU3FDLFdBQVQsQ0FBc0JyekMsSUFBdEIsRUFBNEI7QUFDMUIsYUFBT0EsSUFBSSxDQUFDMGxDLFVBQVosRUFBd0I7QUFDdEIxbEMsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUMwbEMsVUFBWjtBQUNEOztBQUNELGFBQU8xbEMsSUFBUDtBQUNEOztBQUVELFFBQUksU0FBUyt5QyxLQUFiLEVBQW9CO0FBQ2xCLGFBQU8sQ0FBUDtBQUNEOztBQUVELFFBQUlPLGFBQWEsR0FBR0QsV0FBVyxDQUFDLElBQUQsQ0FBL0I7QUFDQSxRQUFJRSxTQUFTLEdBQUdGLFdBQVcsQ0FBQ04sS0FBRCxDQUEzQjs7QUFFQSxRQUFJTyxhQUFhLEtBQUtDLFNBQXRCLEVBQWlDO0FBQy9CLGFBQU9yWixPQUFPLENBQUM2Vyw4QkFBZjtBQUNEOztBQUVELFFBQUlubkUsTUFBTSxHQUFHd3BFLGNBQWMsQ0FBQyxJQUFELEVBQU9MLEtBQVAsQ0FBM0I7O0FBQ0EsUUFBSW5wRSxNQUFKLEVBQVk7QUFDVixhQUFPQSxNQUFQO0FBQ0Q7O0FBRUQsUUFBSXFrQixLQUFLLEdBQUcra0QsbUJBQW1CLENBQUMsQ0FBQ00sYUFBRCxDQUFELEVBQWtCLElBQWxCLEVBQXdCUCxLQUF4QixDQUEvQjtBQUNBLFdBQU85a0QsS0FBSyxLQUFLLElBQVYsR0FDSGlzQyxPQUFPLENBQUMrVywyQkFETCxHQUVIaGpELEtBQUssS0FBSzhrRCxLQUFWLEdBQ0U3WSxPQUFPLENBQUM4VywyQkFEVixHQUVFOVcsT0FBTyxDQUFDNlcsOEJBSmQ7QUFLRCxHQWhFRDs7QUFrRUF0c0UsRUFBQUEsTUFBTSxDQUFDNE0sZ0JBQVAsQ0FBd0I2b0QsT0FBTyxDQUFDMXRELFNBQWhDLEVBQTJDO0FBQ3pDZ25FLElBQUFBLFdBQVcsRUFBRTtBQUNYN3VFLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsWUFBSTh1RSxRQUFRLEdBQUcsS0FBSy9OLFVBQUwsQ0FBZ0J5TSxRQUEvQjtBQUNBLFlBQUl1QixFQUFFLEdBQUdELFFBQVEsQ0FBQzlrRSxPQUFULENBQWlCLElBQWpCLENBQVQ7QUFDQSxlQUFPOGtFLFFBQVEsQ0FBQ0MsRUFBRSxHQUFHLENBQU4sQ0FBZjtBQUNEO0FBTFUsS0FENEI7QUFRekNDLElBQUFBLGVBQWUsRUFBRTtBQUNmaHZFLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsWUFBSTh1RSxRQUFRLEdBQUcsS0FBSy9OLFVBQUwsQ0FBZ0J5TSxRQUEvQjtBQUNBLFlBQUl1QixFQUFFLEdBQUdELFFBQVEsQ0FBQzlrRSxPQUFULENBQWlCLElBQWpCLENBQVQ7QUFDQSxlQUFPOGtFLFFBQVEsQ0FBQ0MsRUFBRSxHQUFHLENBQU4sQ0FBZjtBQUNEO0FBTGMsS0FSd0I7QUFlekNFLElBQUFBLFNBQVMsRUFBRTtBQUNUanZFLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsZUFBTyxLQUFLeTNELElBQVo7QUFDRCxPQUhRO0FBSVQxd0QsTUFBQUEsR0FBRyxFQUFFLFVBQVUwd0QsSUFBVixFQUFnQjtBQUNuQixhQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDtBQU5RLEtBZjhCO0FBdUJ6Q3lYLElBQUFBLFdBQVcsRUFBRTtBQUNYbHZFLE1BQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2YsZUFBTyxLQUFLeTNELElBQVo7QUFDRCxPQUhVO0FBSVgxd0QsTUFBQUEsR0FBRyxFQUFFLFVBQVUwd0QsSUFBVixFQUFnQjtBQUNuQixhQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDtBQU5VLEtBdkI0QjtBQStCekMrVixJQUFBQSxRQUFRLEVBQUU7QUFDUnh0RSxNQUFBQSxHQUFHLEVBQUUsWUFBWTtBQUNmO0FBQ0E7QUFDQSxlQUFPLEtBQUt3L0QsVUFBTCxDQUFnQnZ1RCxNQUFoQixDQUF1QixVQUFVcEgsRUFBVixFQUFjO0FBQzFDLGNBQUksQ0FBQ0EsRUFBRSxDQUFDNjFELFFBQVIsRUFBa0I7QUFDaEI7QUFDQSxtQkFBTyxJQUFQO0FBQ0QsV0FKeUM7OztBQU8xQyxpQkFBTzcxRCxFQUFFLENBQUM2MUQsUUFBSCxLQUFnQixDQUF2QjtBQUNELFNBUk0sQ0FBUDtBQVNEO0FBYk87QUEvQitCLEdBQTNDLEVBelprQjtBQTBjbEI7O0FBQ0EsTUFBSXlQLGdCQUFnQixHQUFHLENBQ3JCLGNBRHFCLEVBRXJCLGNBRnFCLEVBR3JCLGtCQUhxQixFQUlyQixpQkFKcUIsRUFLckIsc0JBTHFCLEVBTXJCLGdCQU5xQixDQUF2QjtBQVNBQSxFQUFBQSxnQkFBZ0IsQ0FBQ3ArRCxPQUFqQixDQUF5QixVQUFVck0sSUFBVixFQUFnQjtBQUN2QyxRQUFJckIsRUFBRSxHQUFHa3lELE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCbkQsSUFBbEIsQ0FBVDs7QUFDQTZ3RCxJQUFBQSxPQUFPLENBQUMxdEQsU0FBUixDQUFrQm5ELElBQUksR0FBRyxJQUF6QixJQUFpQyxZQUFZO0FBQzNDLGFBQU9yQixFQUFFLENBQUNnTSxLQUFILENBQVMsSUFBVCxFQUFlckQsS0FBSyxDQUFDbkUsU0FBTixDQUFnQi9HLEtBQWhCLENBQXNCVCxJQUF0QixDQUEyQnFCLFNBQTNCLEVBQXNDLENBQXRDLENBQWYsQ0FBUDtBQUNELEtBRkQ7QUFHRCxHQUxEO0FBT0EsU0FBTzZ6RCxPQUFQO0FBQ0Q7O0lBRURuMkQsUUFBQSxHQUFpQnFiLFNBQWpCOztBQ3hlQSxTQUFTbmIsUUFBVCxHQUFtQjtBQUNqQixNQUFJOHZFLE1BQU0sR0FBRztBQUNYQyxJQUFBQSxnQkFBZ0IsRUFBRSxVQUFVaDBDLElBQVYsRUFBZ0I7QUFDaEMsYUFBTztBQUNMNHdDLFFBQUFBLGdCQUFnQixFQUFFNXdDLElBQUksQ0FBQ3J0QixLQUFMLENBQVdnK0Q7QUFEeEIsT0FBUDtBQUdEO0FBTFUsR0FBYjtBQVFBLFNBQU9vRCxNQUFQO0FBQ0Q7O0lBRURod0UsT0FBQSxHQUFpQkUsUUFBakI7Ozs7Ozs7Ozs7QUNGQSxJQUFJZ3dFLE9BQU8sR0FBR3p2RSxZQUFkOzs7QUFJQSxJQUFJMHZFLFdBQVcsR0FBRyxFQUFsQjs7QUFFMkM7QUFDekN6dkUsRUFBQUEsTUFBTSxDQUFDNDNCLE1BQVAsQ0FBYzYzQyxXQUFkO0FBQ0Q7O0FBRUQsSUFBSUMsY0FBYyxHQUFHLFNBQVNBLGNBQVQsQ0FBd0JDLE1BQXhCLEVBQWdDLEVBQXJEOztBQUUyQztBQUN6Q0QsRUFBQUEsY0FBYyxHQUFHLFNBQVNBLGNBQVQsQ0FBd0JDLE1BQXhCLEVBQWdDO0FBQy9DLFFBQUlBLE1BQU0sS0FBS3h1RSxTQUFmLEVBQTBCO0FBQ3hCLFlBQU0sSUFBSWlXLEtBQUosQ0FBVSw4Q0FBVixDQUFOO0FBQ0Q7QUFDRixHQUpEO0FBS0Q7O0FBRUQsU0FBU3c0RCxVQUFULENBQW9CajVELFNBQXBCLEVBQStCZzVELE1BQS9CLEVBQXVDbHFFLENBQXZDLEVBQTBDNEosQ0FBMUMsRUFBNkNDLENBQTdDLEVBQWdEdWdFLENBQWhELEVBQW1EbDVDLENBQW5ELEVBQXNEMXdCLENBQXRELEVBQXlEO0FBQ3ZEeXBFLEVBQUFBLGNBQWMsQ0FBQ0MsTUFBRCxDQUFkOztBQUVBLE1BQUksQ0FBQ2g1RCxTQUFMLEVBQWdCO0FBQ2QsUUFBSTlXLEtBQUo7O0FBQ0EsUUFBSTh2RSxNQUFNLEtBQUt4dUUsU0FBZixFQUEwQjtBQUN4QnRCLE1BQUFBLEtBQUssR0FBRyxJQUFJdVgsS0FBSixDQUFVLHVFQUF1RSw2REFBakYsQ0FBUjtBQUNELEtBRkQsTUFFTztBQUNMLFVBQUlsRCxJQUFJLEdBQUcsQ0FBQ3pPLENBQUQsRUFBSTRKLENBQUosRUFBT0MsQ0FBUCxFQUFVdWdFLENBQVYsRUFBYWw1QyxDQUFiLEVBQWdCMXdCLENBQWhCLENBQVg7QUFDQSxVQUFJNnBFLFFBQVEsR0FBRyxDQUFmO0FBQ0Fqd0UsTUFBQUEsS0FBSyxHQUFHLElBQUl1WCxLQUFKLENBQVV1NEQsTUFBTSxDQUFDOW1FLE9BQVAsQ0FBZSxLQUFmLEVBQXNCLFlBQVk7QUFDbEQsZUFBT3FMLElBQUksQ0FBQzQ3RCxRQUFRLEVBQVQsQ0FBWDtBQUNELE9BRmlCLENBQVYsQ0FBUjtBQUdBandFLE1BQUFBLEtBQUssQ0FBQytFLElBQU4sR0FBYSxxQkFBYjtBQUNEOztBQUVEL0UsSUFBQUEsS0FBSyxDQUFDa3dFLFdBQU4sR0FBb0IsQ0FBcEIsQ0FiYzs7QUFjZCxVQUFNbHdFLEtBQU47QUFDRDtBQUNGOztBQUVELElBQUltd0UsT0FBTyxHQUFHLFlBQVUsRUFBeEI7O0FBRTJDO0FBQ3pDLE1BQUl2WSxZQUFZLEdBQUcsU0FBU0EsWUFBVCxDQUFzQmtZLE1BQXRCLEVBQThCO0FBQy9DLFNBQUssSUFBSU0sSUFBSSxHQUFHcnVFLFNBQVMsQ0FBQ0MsTUFBckIsRUFBNkJxUyxJQUFJLEdBQUdoSSxLQUFLLENBQUMrakUsSUFBSSxHQUFHLENBQVAsR0FBV0EsSUFBSSxHQUFHLENBQWxCLEdBQXNCLENBQXZCLENBQXpDLEVBQW9FQyxJQUFJLEdBQUcsQ0FBaEYsRUFBbUZBLElBQUksR0FBR0QsSUFBMUYsRUFBZ0dDLElBQUksRUFBcEcsRUFBd0c7QUFDdEdoOEQsTUFBQUEsSUFBSSxDQUFDZzhELElBQUksR0FBRyxDQUFSLENBQUosR0FBaUJ0dUUsU0FBUyxDQUFDc3VFLElBQUQsQ0FBMUI7QUFDRDs7QUFFRCxRQUFJSixRQUFRLEdBQUcsQ0FBZjtBQUNBLFFBQUkzNEQsT0FBTyxHQUFHLGNBQWN3NEQsTUFBTSxDQUFDOW1FLE9BQVAsQ0FBZSxLQUFmLEVBQXNCLFlBQVk7QUFDNUQsYUFBT3FMLElBQUksQ0FBQzQ3RCxRQUFRLEVBQVQsQ0FBWDtBQUNELEtBRjJCLENBQTVCOztBQUdBLFFBQUksT0FBT3R6QyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2xDQSxNQUFBQSxPQUFPLENBQUMzOEIsS0FBUixDQUFjc1gsT0FBZDtBQUNEOztBQUNELFFBQUk7QUFDRjtBQUNBO0FBQ0E7QUFDQSxZQUFNLElBQUlDLEtBQUosQ0FBVUQsT0FBVixDQUFOO0FBQ0QsS0FMRCxDQUtFLE9BQU9vSyxDQUFQLEVBQVU7QUFDYixHQWxCRDs7QUFvQkF5dUQsRUFBQUEsT0FBTyxHQUFHLFNBQVNBLE9BQVQsQ0FBaUJyNUQsU0FBakIsRUFBNEJnNUQsTUFBNUIsRUFBb0M7QUFDNUMsUUFBSUEsTUFBTSxLQUFLeHVFLFNBQWYsRUFBMEI7QUFDeEIsWUFBTSxJQUFJaVcsS0FBSixDQUFVLDhEQUE4RCxrQkFBeEUsQ0FBTjtBQUNEOztBQUVELFFBQUl1NEQsTUFBTSxDQUFDemxFLE9BQVAsQ0FBZSw2QkFBZixNQUFrRCxDQUF0RCxFQUF5RDtBQUN2RCxhQUR1RDtBQUV4RDs7QUFFRCxRQUFJLENBQUN5TSxTQUFMLEVBQWdCO0FBQ2QsV0FBSyxJQUFJdzVELEtBQUssR0FBR3Z1RSxTQUFTLENBQUNDLE1BQXRCLEVBQThCcVMsSUFBSSxHQUFHaEksS0FBSyxDQUFDaWtFLEtBQUssR0FBRyxDQUFSLEdBQVlBLEtBQUssR0FBRyxDQUFwQixHQUF3QixDQUF6QixDQUExQyxFQUF1RUMsS0FBSyxHQUFHLENBQXBGLEVBQXVGQSxLQUFLLEdBQUdELEtBQS9GLEVBQXNHQyxLQUFLLEVBQTNHLEVBQStHO0FBQzdHbDhELFFBQUFBLElBQUksQ0FBQ2s4RCxLQUFLLEdBQUcsQ0FBVCxDQUFKLEdBQWtCeHVFLFNBQVMsQ0FBQ3d1RSxLQUFELENBQTNCO0FBQ0Q7O0FBRUQzWSxNQUFBQSxZQUFZLENBQUNsb0QsS0FBYixDQUFtQnBPLFNBQW5CLEVBQThCLENBQUN3dUUsTUFBRCxFQUFTcGxFLE1BQVQsQ0FBZ0IySixJQUFoQixDQUE5QjtBQUNEO0FBQ0YsR0FoQkQ7QUFpQkQ7OztBQUlELElBQUltOEQsVUFBVSxHQUFHLFFBQWpCO0FBR0E7O0FBQ0EsU0FBU0MsUUFBVCxDQUFrQi9zRSxFQUFsQixFQUFzQjtBQUNwQixTQUFPQSxFQUFQO0FBQ0Q7O0FBRUQsSUFBSWd0RSwwQkFBSjs7QUFDMkM7QUFDekNBLEVBQUFBLDBCQUEwQixHQUFHO0FBQzNCbkQsSUFBQUEsSUFBSSxFQUFFLE1BRHFCO0FBRTNCbE4sSUFBQUEsT0FBTyxFQUFFLFNBRmtCO0FBRzNCc1EsSUFBQUEsWUFBWSxFQUFFO0FBSGEsR0FBN0I7QUFLRDs7QUFJRCxTQUFTQyxTQUFULENBQWlCQyxjQUFqQixFQUFpQ3BZLGNBQWpDLEVBQWlEcVksb0JBQWpELEVBQXVFO0FBQ3JFO0FBQ0Y7QUFDQTtBQUVFLE1BQUlDLGNBQWMsR0FBRyxFQUFyQjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLE1BQUlDLG1CQUFtQixHQUFHO0FBQ3hCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxNQUFNLEVBQUUsYUFQZ0I7O0FBU3hCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLE9BQU8sRUFBRSxhQWhCZTs7QUFrQnhCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxTQUFTLEVBQUUsYUF4QmE7O0FBMEJ4QjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSUMsSUFBQUEsWUFBWSxFQUFFLGFBaENVOztBQWtDeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLGlCQUFpQixFQUFFLGFBeENLO0FBMEN4Qjs7QUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxlQUFlLEVBQUUsb0JBdERPOztBQXdEeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxlQUFlLEVBQUUsb0JBdEVPOztBQXdFeEI7QUFDSjtBQUNBO0FBQ0E7QUFDSUMsSUFBQUEsZUFBZSxFQUFFLG9CQTVFTzs7QUE4RXhCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxNQUFNLEVBQUUsYUE3RmdCO0FBK0Z4Qjs7QUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxrQkFBa0IsRUFBRSxhQXhHSTs7QUEwR3hCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLGlCQUFpQixFQUFFLGFBcEhLOztBQXNIeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSUMsSUFBQUEseUJBQXlCLEVBQUUsYUF6SUg7O0FBMkl4QjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLHFCQUFxQixFQUFFLGFBL0pDOztBQWlLeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLG1CQUFtQixFQUFFLGFBaExHOztBQWtMeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLGtCQUFrQixFQUFFLGFBOUxJOztBQWdNeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSxvQkFBb0IsRUFBRSxhQTNNRTs7QUE2TXhCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDSUMsSUFBQUEseUJBQXlCLEVBQUUsYUFsTkg7O0FBb054QjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0lDLElBQUFBLGdDQUFnQyxFQUFFLGFBek5WOztBQTJOeEI7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSwwQkFBMEIsRUFBRSxhQWhPSjtBQWtPeEI7O0FBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSUMsSUFBQUEsZUFBZSxFQUFFO0FBOU9PLEdBQTFCO0FBaVBBO0FBQ0Y7QUFDQTs7QUFDRSxNQUFJQyx5QkFBeUIsR0FBRztBQUM5QjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJQyxJQUFBQSx3QkFBd0IsRUFBRTtBQVhJLEdBQWhDO0FBY0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLE1BQUlDLGtCQUFrQixHQUFHO0FBQ3ZCQyxJQUFBQSxXQUFXLEVBQUUsVUFBUzd5RCxXQUFULEVBQXNCNnlELFdBQXRCLEVBQW1DO0FBQzlDN3lELE1BQUFBLFdBQVcsQ0FBQzZ5RCxXQUFaLEdBQTBCQSxXQUExQjtBQUNELEtBSHNCO0FBSXZCdkIsSUFBQUEsTUFBTSxFQUFFLFVBQVN0eEQsV0FBVCxFQUFzQnN4RCxNQUF0QixFQUE4QjtBQUNwQyxVQUFJQSxNQUFKLEVBQVk7QUFDVixhQUFLLElBQUkxbUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzBtRSxNQUFNLENBQUNqdkUsTUFBM0IsRUFBbUN1SSxDQUFDLEVBQXBDLEVBQXdDO0FBQ3RDa29FLFVBQUFBLG9CQUFvQixDQUFDOXlELFdBQUQsRUFBY3N4RCxNQUFNLENBQUMxbUUsQ0FBRCxDQUFwQixDQUFwQjtBQUNEO0FBQ0Y7QUFDRixLQVZzQjtBQVd2QjhtRSxJQUFBQSxpQkFBaUIsRUFBRSxVQUFTMXhELFdBQVQsRUFBc0IweEQsaUJBQXRCLEVBQXlDO0FBQzFELE1BQTJDO0FBQ3pDcUIsUUFBQUEsZUFBZSxDQUFDL3lELFdBQUQsRUFBYzB4RCxpQkFBZCxFQUFpQyxjQUFqQyxDQUFmO0FBQ0Q7O0FBQ0QxeEQsTUFBQUEsV0FBVyxDQUFDMHhELGlCQUFaLEdBQWdDMUIsT0FBTyxDQUNyQyxFQURxQyxFQUVyQ2h3RCxXQUFXLENBQUMweEQsaUJBRnlCLEVBR3JDQSxpQkFIcUMsQ0FBdkM7QUFLRCxLQXBCc0I7QUFxQnZCRCxJQUFBQSxZQUFZLEVBQUUsVUFBU3p4RCxXQUFULEVBQXNCeXhELFlBQXRCLEVBQW9DO0FBQ2hELE1BQTJDO0FBQ3pDc0IsUUFBQUEsZUFBZSxDQUFDL3lELFdBQUQsRUFBY3l4RCxZQUFkLEVBQTRCLFNBQTVCLENBQWY7QUFDRDs7QUFDRHp4RCxNQUFBQSxXQUFXLENBQUN5eEQsWUFBWixHQUEyQnpCLE9BQU8sQ0FDaEMsRUFEZ0MsRUFFaENod0QsV0FBVyxDQUFDeXhELFlBRm9CLEVBR2hDQSxZQUhnQyxDQUFsQztBQUtELEtBOUJzQjs7QUErQnZCO0FBQ0o7QUFDQTtBQUNBO0FBQ0lFLElBQUFBLGVBQWUsRUFBRSxVQUFTM3hELFdBQVQsRUFBc0IyeEQsZUFBdEIsRUFBdUM7QUFDdEQsVUFBSTN4RCxXQUFXLENBQUMyeEQsZUFBaEIsRUFBaUM7QUFDL0IzeEQsUUFBQUEsV0FBVyxDQUFDMnhELGVBQVosR0FBOEJxQiwwQkFBMEIsQ0FDdERoekQsV0FBVyxDQUFDMnhELGVBRDBDLEVBRXREQSxlQUZzRCxDQUF4RDtBQUlELE9BTEQsTUFLTztBQUNMM3hELFFBQUFBLFdBQVcsQ0FBQzJ4RCxlQUFaLEdBQThCQSxlQUE5QjtBQUNEO0FBQ0YsS0E1Q3NCO0FBNkN2QkgsSUFBQUEsU0FBUyxFQUFFLFVBQVN4eEQsV0FBVCxFQUFzQnd4RCxTQUF0QixFQUFpQztBQUMxQyxNQUEyQztBQUN6Q3VCLFFBQUFBLGVBQWUsQ0FBQy95RCxXQUFELEVBQWN3eEQsU0FBZCxFQUF5QixNQUF6QixDQUFmO0FBQ0Q7O0FBQ0R4eEQsTUFBQUEsV0FBVyxDQUFDd3hELFNBQVosR0FBd0J4QixPQUFPLENBQUMsRUFBRCxFQUFLaHdELFdBQVcsQ0FBQ3d4RCxTQUFqQixFQUE0QkEsU0FBNUIsQ0FBL0I7QUFDRCxLQWxEc0I7QUFtRHZCRCxJQUFBQSxPQUFPLEVBQUUsVUFBU3Z4RCxXQUFULEVBQXNCdXhELE9BQXRCLEVBQStCO0FBQ3RDMEIsTUFBQUEsMEJBQTBCLENBQUNqekQsV0FBRCxFQUFjdXhELE9BQWQsQ0FBMUI7QUFDRCxLQXJEc0I7QUFzRHZCMkIsSUFBQUEsUUFBUSxFQUFFLFlBQVc7QUF0REUsR0FBekI7O0FBeURBLFdBQVNILGVBQVQsQ0FBeUIveUQsV0FBekIsRUFBc0NtekQsT0FBdEMsRUFBK0NwNUMsUUFBL0MsRUFBeUQ7QUFDdkQsU0FBSyxJQUFJcWhDLFFBQVQsSUFBcUIrWCxPQUFyQixFQUE4QjtBQUM1QixVQUFJQSxPQUFPLENBQUN6dUUsY0FBUixDQUF1QjAyRCxRQUF2QixDQUFKLEVBQXNDO0FBQ3BDO0FBQ0E7QUFDQSxRQUEyQztBQUN6Q29WLFVBQUFBLE9BQU8sQ0FDTCxPQUFPMkMsT0FBTyxDQUFDL1gsUUFBRCxDQUFkLEtBQTZCLFVBRHhCLEVBRUwsc0VBQ0Usa0JBSEcsRUFJTHA3QyxXQUFXLENBQUM2eUQsV0FBWixJQUEyQixZQUp0QixFQUtMOUIsMEJBQTBCLENBQUNoM0MsUUFBRCxDQUxyQixFQU1McWhDLFFBTkssQ0FBUDtBQVFEO0FBQ0Y7QUFDRjtBQUNGOztBQUVELFdBQVNnWSxzQkFBVCxDQUFnQ0MsZ0JBQWhDLEVBQWtEanVFLElBQWxELEVBQXdEO0FBQ3RELFFBQUlrdUUsVUFBVSxHQUFHakMsbUJBQW1CLENBQUMzc0UsY0FBcEIsQ0FBbUNVLElBQW5DLElBQ2Jpc0UsbUJBQW1CLENBQUNqc0UsSUFBRCxDQUROLEdBRWIsSUFGSixDQURzRDs7QUFNdEQsUUFBSW11RSxlQUFlLENBQUM3dUUsY0FBaEIsQ0FBK0JVLElBQS9CLENBQUosRUFBMEM7QUFDeENnckUsTUFBQUEsVUFBVSxDQUNSa0QsVUFBVSxLQUFLLGVBRFAsRUFFUix5REFDRSxvRUFERixHQUVFLG9DQUpNLEVBS1JsdUUsSUFMUSxDQUFWO0FBT0QsS0FkcUQ7OztBQWlCdEQsUUFBSWl1RSxnQkFBSixFQUFzQjtBQUNwQmpELE1BQUFBLFVBQVUsQ0FDUmtELFVBQVUsS0FBSyxhQUFmLElBQWdDQSxVQUFVLEtBQUssb0JBRHZDLEVBRVIsdURBQ0Usa0VBREYsR0FFRSxhQUpNLEVBS1JsdUUsSUFMUSxDQUFWO0FBT0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBOzs7QUFDRSxXQUFTMHRFLG9CQUFULENBQThCOXlELFdBQTlCLEVBQTJDd3pELElBQTNDLEVBQWlEO0FBQy9DLFFBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1QsTUFBMkM7QUFDekMsWUFBSUMsVUFBVSxHQUFHLE9BQU9ELElBQXhCO0FBQ0EsWUFBSUUsWUFBWSxHQUFHRCxVQUFVLEtBQUssUUFBZixJQUEyQkQsSUFBSSxLQUFLLElBQXZEOztBQUVBLFFBQTJDO0FBQ3pDaEQsVUFBQUEsT0FBTyxDQUNMa0QsWUFESyxFQUVMLGtFQUNFLGdFQURGLEdBRUUsaURBRkYsR0FHRSw2QkFMRyxFQU1MMXpELFdBQVcsQ0FBQzZ5RCxXQUFaLElBQTJCLFlBTnRCLEVBT0xXLElBQUksS0FBSyxJQUFULEdBQWdCLElBQWhCLEdBQXVCQyxVQVBsQixDQUFQO0FBU0Q7QUFDRjs7QUFFRDtBQUNEOztBQUVEckQsSUFBQUEsVUFBVSxDQUNSLE9BQU9vRCxJQUFQLEtBQWdCLFVBRFIsRUFFUixzQ0FDRSxvRUFERixHQUVFLGlCQUpNLENBQVY7O0FBTUFwRCxJQUFBQSxVQUFVLENBQ1IsQ0FBQ3RYLGNBQWMsQ0FBQzBhLElBQUQsQ0FEUCxFQUVSLHNDQUNFLGlFQUhNLENBQVY7O0FBTUEsUUFBSS85RCxLQUFLLEdBQUd1SyxXQUFXLENBQUN6WCxTQUF4QjtBQUNBLFFBQUlvckUsYUFBYSxHQUFHbCtELEtBQUssQ0FBQ20rRCxvQkFBMUIsQ0FuQytDO0FBc0MvQztBQUNBOztBQUNBLFFBQUlKLElBQUksQ0FBQzl1RSxjQUFMLENBQW9CbXNFLFVBQXBCLENBQUosRUFBcUM7QUFDbkMrQixNQUFBQSxrQkFBa0IsQ0FBQ3RCLE1BQW5CLENBQTBCdHhELFdBQTFCLEVBQXVDd3pELElBQUksQ0FBQ2xDLE1BQTVDO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJbHNFLElBQVQsSUFBaUJvdUUsSUFBakIsRUFBdUI7QUFDckIsVUFBSSxDQUFDQSxJQUFJLENBQUM5dUUsY0FBTCxDQUFvQlUsSUFBcEIsQ0FBTCxFQUFnQztBQUM5QjtBQUNEOztBQUVELFVBQUlBLElBQUksS0FBS3lyRSxVQUFiLEVBQXlCO0FBQ3ZCO0FBQ0E7QUFDRDs7QUFFRCxVQUFJem5ELFFBQVEsR0FBR29xRCxJQUFJLENBQUNwdUUsSUFBRCxDQUFuQjtBQUNBLFVBQUlpdUUsZ0JBQWdCLEdBQUc1OUQsS0FBSyxDQUFDL1EsY0FBTixDQUFxQlUsSUFBckIsQ0FBdkI7QUFDQWd1RSxNQUFBQSxzQkFBc0IsQ0FBQ0MsZ0JBQUQsRUFBbUJqdUUsSUFBbkIsQ0FBdEI7O0FBRUEsVUFBSXd0RSxrQkFBa0IsQ0FBQ2x1RSxjQUFuQixDQUFrQ1UsSUFBbEMsQ0FBSixFQUE2QztBQUMzQ3d0RSxRQUFBQSxrQkFBa0IsQ0FBQ3h0RSxJQUFELENBQWxCLENBQXlCNGEsV0FBekIsRUFBc0NvSixRQUF0QztBQUNELE9BRkQsTUFFTztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBSXlxRCxrQkFBa0IsR0FBR3hDLG1CQUFtQixDQUFDM3NFLGNBQXBCLENBQW1DVSxJQUFuQyxDQUF6QjtBQUNBLFlBQUlzOEIsVUFBVSxHQUFHLE9BQU90WSxRQUFQLEtBQW9CLFVBQXJDO0FBQ0EsWUFBSTBxRCxjQUFjLEdBQ2hCcHlDLFVBQVUsSUFDVixDQUFDbXlDLGtCQURELElBRUEsQ0FBQ1IsZ0JBRkQsSUFHQUcsSUFBSSxDQUFDTixRQUFMLEtBQWtCLEtBSnBCOztBQU1BLFlBQUlZLGNBQUosRUFBb0I7QUFDbEJILFVBQUFBLGFBQWEsQ0FBQ3J2RSxJQUFkLENBQW1CYyxJQUFuQixFQUF5QmdrQixRQUF6QjtBQUNBM1QsVUFBQUEsS0FBSyxDQUFDclEsSUFBRCxDQUFMLEdBQWNna0IsUUFBZDtBQUNELFNBSEQsTUFHTztBQUNMLGNBQUlpcUQsZ0JBQUosRUFBc0I7QUFDcEIsZ0JBQUlDLFVBQVUsR0FBR2pDLG1CQUFtQixDQUFDanNFLElBQUQsQ0FBcEMsQ0FEb0I7O0FBSXBCZ3JFLFlBQUFBLFVBQVUsQ0FDUnlELGtCQUFrQixLQUNmUCxVQUFVLEtBQUssb0JBQWYsSUFDQ0EsVUFBVSxLQUFLLGFBRkQsQ0FEVixFQUlSLHNEQUNFLGlDQUxNLEVBTVJBLFVBTlEsRUFPUmx1RSxJQVBRLENBQVYsQ0FKb0I7QUFlcEI7OztBQUNBLGdCQUFJa3VFLFVBQVUsS0FBSyxvQkFBbkIsRUFBeUM7QUFDdkM3OUQsY0FBQUEsS0FBSyxDQUFDclEsSUFBRCxDQUFMLEdBQWM0dEUsMEJBQTBCLENBQUN2OUQsS0FBSyxDQUFDclEsSUFBRCxDQUFOLEVBQWNna0IsUUFBZCxDQUF4QztBQUNELGFBRkQsTUFFTyxJQUFJa3FELFVBQVUsS0FBSyxhQUFuQixFQUFrQztBQUN2Qzc5RCxjQUFBQSxLQUFLLENBQUNyUSxJQUFELENBQUwsR0FBYzJ1RSxxQkFBcUIsQ0FBQ3QrRCxLQUFLLENBQUNyUSxJQUFELENBQU4sRUFBY2drQixRQUFkLENBQW5DO0FBQ0Q7QUFDRixXQXJCRCxNQXFCTztBQUNMM1QsWUFBQUEsS0FBSyxDQUFDclEsSUFBRCxDQUFMLEdBQWNna0IsUUFBZDs7QUFDQSxZQUEyQztBQUN6QztBQUNBO0FBQ0Esa0JBQUksT0FBT0EsUUFBUCxLQUFvQixVQUFwQixJQUFrQ29xRCxJQUFJLENBQUNYLFdBQTNDLEVBQXdEO0FBQ3REcDlELGdCQUFBQSxLQUFLLENBQUNyUSxJQUFELENBQUwsQ0FBWXl0RSxXQUFaLEdBQTBCVyxJQUFJLENBQUNYLFdBQUwsR0FBbUIsR0FBbkIsR0FBeUJ6dEUsSUFBbkQ7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxXQUFTNnRFLDBCQUFULENBQW9DanpELFdBQXBDLEVBQWlEdXhELE9BQWpELEVBQTBEO0FBQ3hELFFBQUksQ0FBQ0EsT0FBTCxFQUFjO0FBQ1o7QUFDRDs7QUFFRCxTQUFLLElBQUluc0UsSUFBVCxJQUFpQm1zRSxPQUFqQixFQUEwQjtBQUN4QixVQUFJbm9ELFFBQVEsR0FBR21vRCxPQUFPLENBQUNuc0UsSUFBRCxDQUF0Qjs7QUFDQSxVQUFJLENBQUNtc0UsT0FBTyxDQUFDN3NFLGNBQVIsQ0FBdUJVLElBQXZCLENBQUwsRUFBbUM7QUFDakM7QUFDRDs7QUFFRCxVQUFJNHVFLFVBQVUsSUFBRzV1RSxJQUFJLElBQUl3dEUsa0JBQVgsQ0FBZDs7QUFDQXhDLE1BQUFBLFVBQVUsQ0FDUixDQUFDNEQsVUFETyxFQUVSLHlEQUNFLHFFQURGLEdBRUUsc0VBRkYsR0FHRSxjQUxNLEVBTVI1dUUsSUFOUSxDQUFWOztBQVNBLFVBQUlpdUUsZ0JBQWdCLElBQUdqdUUsSUFBSSxJQUFJNGEsV0FBWCxDQUFwQjs7QUFDQSxVQUFJcXpELGdCQUFKLEVBQXNCO0FBQ3BCLFlBQUlDLFVBQVUsR0FBR1oseUJBQXlCLENBQUNodUUsY0FBMUIsQ0FBeUNVLElBQXpDLElBQ2JzdEUseUJBQXlCLENBQUN0dEUsSUFBRCxDQURaLEdBRWIsSUFGSjs7QUFJQWdyRSxRQUFBQSxVQUFVLENBQ1JrRCxVQUFVLEtBQUssb0JBRFAsRUFFUiw4Q0FDRSw4REFERixHQUVFLGlCQUpNLEVBS1JsdUUsSUFMUSxDQUFWOztBQVFBNGEsUUFBQUEsV0FBVyxDQUFDNWEsSUFBRCxDQUFYLEdBQW9CNHRFLDBCQUEwQixDQUFDaHpELFdBQVcsQ0FBQzVhLElBQUQsQ0FBWixFQUFvQmdrQixRQUFwQixDQUE5QztBQUVBO0FBQ0Q7O0FBRURwSixNQUFBQSxXQUFXLENBQUM1YSxJQUFELENBQVgsR0FBb0Jna0IsUUFBcEI7QUFDRDtBQUNGO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVM2cUQsNEJBQVQsQ0FBc0M5NkIsR0FBdEMsRUFBMkMrNkIsR0FBM0MsRUFBZ0Q7QUFDOUM5RCxJQUFBQSxVQUFVLENBQ1JqM0IsR0FBRyxJQUFJKzZCLEdBQVAsSUFBYyxPQUFPLzZCLEdBQVAsS0FBZSxRQUE3QixJQUF5QyxPQUFPKzZCLEdBQVAsS0FBZSxRQURoRCxFQUVSLDJEQUZRLENBQVY7O0FBS0EsU0FBSyxJQUFJaHdFLEdBQVQsSUFBZ0Jnd0UsR0FBaEIsRUFBcUI7QUFDbkIsVUFBSUEsR0FBRyxDQUFDeHZFLGNBQUosQ0FBbUJSLEdBQW5CLENBQUosRUFBNkI7QUFDM0Jrc0UsUUFBQUEsVUFBVSxDQUNSajNCLEdBQUcsQ0FBQ2oxQyxHQUFELENBQUgsS0FBYXZDLFNBREwsRUFFUixxQ0FDRSxvRUFERixHQUVFLGtFQUZGLEdBR0UsbUVBSEYsR0FJRSxxQkFOTSxFQU9SdUMsR0FQUSxDQUFWOztBQVNBaTFDLFFBQUFBLEdBQUcsQ0FBQ2oxQyxHQUFELENBQUgsR0FBV2d3RSxHQUFHLENBQUNod0UsR0FBRCxDQUFkO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPaTFDLEdBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVM2NUIsMEJBQVQsQ0FBb0M3NUIsR0FBcEMsRUFBeUMrNkIsR0FBekMsRUFBOEM7QUFDNUMsV0FBTyxTQUFTQyxZQUFULEdBQXdCO0FBQzdCLFVBQUlsdUUsQ0FBQyxHQUFHa3pDLEdBQUcsQ0FBQ3BwQyxLQUFKLENBQVUsSUFBVixFQUFnQjNOLFNBQWhCLENBQVI7QUFDQSxVQUFJeU4sQ0FBQyxHQUFHcWtFLEdBQUcsQ0FBQ25rRSxLQUFKLENBQVUsSUFBVixFQUFnQjNOLFNBQWhCLENBQVI7O0FBQ0EsVUFBSTZELENBQUMsSUFBSSxJQUFULEVBQWU7QUFDYixlQUFPNEosQ0FBUDtBQUNELE9BRkQsTUFFTyxJQUFJQSxDQUFDLElBQUksSUFBVCxFQUFlO0FBQ3BCLGVBQU81SixDQUFQO0FBQ0Q7O0FBQ0QsVUFBSTZKLENBQUMsR0FBRyxFQUFSO0FBQ0Fta0UsTUFBQUEsNEJBQTRCLENBQUNua0UsQ0FBRCxFQUFJN0osQ0FBSixDQUE1QjtBQUNBZ3VFLE1BQUFBLDRCQUE0QixDQUFDbmtFLENBQUQsRUFBSUQsQ0FBSixDQUE1QjtBQUNBLGFBQU9DLENBQVA7QUFDRCxLQVpEO0FBYUQ7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRSxXQUFTaWtFLHFCQUFULENBQStCNTZCLEdBQS9CLEVBQW9DKzZCLEdBQXBDLEVBQXlDO0FBQ3ZDLFdBQU8sU0FBU0UsZUFBVCxHQUEyQjtBQUNoQ2o3QixNQUFBQSxHQUFHLENBQUNwcEMsS0FBSixDQUFVLElBQVYsRUFBZ0IzTixTQUFoQjtBQUNBOHhFLE1BQUFBLEdBQUcsQ0FBQ25rRSxLQUFKLENBQVUsSUFBVixFQUFnQjNOLFNBQWhCO0FBQ0QsS0FIRDtBQUlEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVNpeUUsa0JBQVQsQ0FBNEI3SCxTQUE1QixFQUF1Q3JxRSxNQUF2QyxFQUErQztBQUM3QyxRQUFJbXlFLFdBQVcsR0FBR255RSxNQUFNLENBQUMwTyxJQUFQLENBQVkyN0QsU0FBWixDQUFsQjs7QUFDQSxJQUEyQztBQUN6QzhILE1BQUFBLFdBQVcsQ0FBQ0MsbUJBQVosR0FBa0MvSCxTQUFsQztBQUNBOEgsTUFBQUEsV0FBVyxDQUFDRSxrQkFBWixHQUFpQ3J5RSxNQUFqQztBQUNBbXlFLE1BQUFBLFdBQVcsQ0FBQ0cscUJBQVosR0FBb0MsSUFBcEM7QUFDQSxVQUFJbmMsYUFBYSxHQUFHa1UsU0FBUyxDQUFDNzdELFdBQVYsQ0FBc0JraUUsV0FBMUM7QUFDQSxVQUFJNkIsS0FBSyxHQUFHSixXQUFXLENBQUN6akUsSUFBeEI7O0FBQ0F5akUsTUFBQUEsV0FBVyxDQUFDempFLElBQVosR0FBbUIsVUFBUzhqRSxPQUFULEVBQWtCO0FBQ25DLGFBQ0UsSUFBSWxFLElBQUksR0FBR3J1RSxTQUFTLENBQUNDLE1BQXJCLEVBQ0VxUyxJQUFJLEdBQUdoSSxLQUFLLENBQUMrakUsSUFBSSxHQUFHLENBQVAsR0FBV0EsSUFBSSxHQUFHLENBQWxCLEdBQXNCLENBQXZCLENBRGQsRUFFRUMsSUFBSSxHQUFHLENBSFgsRUFJRUEsSUFBSSxHQUFHRCxJQUpULEVBS0VDLElBQUksRUFMTixFQU1FO0FBQ0FoOEQsVUFBQUEsSUFBSSxDQUFDZzhELElBQUksR0FBRyxDQUFSLENBQUosR0FBaUJ0dUUsU0FBUyxDQUFDc3VFLElBQUQsQ0FBMUI7QUFDRCxTQVRrQztBQVluQztBQUNBOzs7QUFDQSxZQUFJaUUsT0FBTyxLQUFLbkksU0FBWixJQUF5Qm1JLE9BQU8sS0FBSyxJQUF6QyxFQUErQztBQUM3QyxVQUEyQztBQUN6Q25FLFlBQUFBLE9BQU8sQ0FDTCxLQURLLEVBRUwsOERBQ0UsNEJBSEcsRUFJTGxZLGFBSkssQ0FBUDtBQU1EO0FBQ0YsU0FURCxNQVNPLElBQUksQ0FBQzVqRCxJQUFJLENBQUNyUyxNQUFWLEVBQWtCO0FBQ3ZCLFVBQTJDO0FBQ3pDbXVFLFlBQUFBLE9BQU8sQ0FDTCxLQURLLEVBRUwsa0VBQ0UsOERBREYsR0FFRSxpREFKRyxFQUtMbFksYUFMSyxDQUFQO0FBT0Q7O0FBQ0QsaUJBQU9nYyxXQUFQO0FBQ0Q7O0FBQ0QsWUFBSU0sYUFBYSxHQUFHRixLQUFLLENBQUMza0UsS0FBTixDQUFZdWtFLFdBQVosRUFBeUJseUUsU0FBekIsQ0FBcEI7O0FBQ0F3eUUsUUFBQUEsYUFBYSxDQUFDTCxtQkFBZCxHQUFvQy9ILFNBQXBDO0FBQ0FvSSxRQUFBQSxhQUFhLENBQUNKLGtCQUFkLEdBQW1DcnlFLE1BQW5DO0FBQ0F5eUUsUUFBQUEsYUFBYSxDQUFDSCxxQkFBZCxHQUFzQy8vRCxJQUF0QztBQUNBLGVBQU9rZ0UsYUFBUDtBQUNELE9BeENEO0FBeUNEOztBQUNELFdBQU9OLFdBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVNPLG1CQUFULENBQTZCckksU0FBN0IsRUFBd0M7QUFDdEMsUUFBSXNJLEtBQUssR0FBR3RJLFNBQVMsQ0FBQ29ILG9CQUF0Qjs7QUFDQSxTQUFLLElBQUlocEUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2txRSxLQUFLLENBQUN6eUUsTUFBMUIsRUFBa0N1SSxDQUFDLElBQUksQ0FBdkMsRUFBMEM7QUFDeEMsVUFBSW1xRSxXQUFXLEdBQUdELEtBQUssQ0FBQ2xxRSxDQUFELENBQXZCO0FBQ0EsVUFBSXpJLE1BQU0sR0FBRzJ5RSxLQUFLLENBQUNscUUsQ0FBQyxHQUFHLENBQUwsQ0FBbEI7QUFDQTRoRSxNQUFBQSxTQUFTLENBQUN1SSxXQUFELENBQVQsR0FBeUJWLGtCQUFrQixDQUFDN0gsU0FBRCxFQUFZcnFFLE1BQVosQ0FBM0M7QUFDRDtBQUNGOztBQUVELE1BQUk2eUUsaUJBQWlCLEdBQUc7QUFDdEJoRCxJQUFBQSxpQkFBaUIsRUFBRSxZQUFXO0FBQzVCLFdBQUtpRCxXQUFMLEdBQW1CLElBQW5CO0FBQ0Q7QUFIcUIsR0FBeEI7QUFNQSxNQUFJQyxrQkFBa0IsR0FBRztBQUN2QjdDLElBQUFBLG9CQUFvQixFQUFFLFlBQVc7QUFDL0IsV0FBSzRDLFdBQUwsR0FBbUIsS0FBbkI7QUFDRDtBQUhzQixHQUF6QjtBQU1BO0FBQ0Y7QUFDQTtBQUNBOztBQUNFLE1BQUkxQixlQUFlLEdBQUc7QUFDcEI7QUFDSjtBQUNBO0FBQ0E7QUFDSTRCLElBQUFBLFlBQVksRUFBRSxVQUFTNU8sUUFBVCxFQUFtQnZxQixRQUFuQixFQUE2QjtBQUN6QyxXQUFLbzVCLE9BQUwsQ0FBYUMsbUJBQWIsQ0FBaUMsSUFBakMsRUFBdUM5TyxRQUF2QyxFQUFpRHZxQixRQUFqRDtBQUNELEtBUG1COztBQVNwQjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSXM1QixJQUFBQSxTQUFTLEVBQUUsWUFBVztBQUNwQixNQUEyQztBQUN6QzlFLFFBQUFBLE9BQU8sQ0FDTCxLQUFLK0Usa0JBREEsRUFFTCxpRUFDRSxnRUFERixHQUVFLHVCQUpHLEVBS0osS0FBSzVrRSxXQUFMLElBQW9CLEtBQUtBLFdBQUwsQ0FBaUJraUUsV0FBdEMsSUFDRSxLQUFLenRFLElBRFAsSUFFRSxXQVBHLENBQVA7QUFTQSxhQUFLbXdFLGtCQUFMLEdBQTBCLElBQTFCO0FBQ0Q7O0FBQ0QsYUFBTyxDQUFDLENBQUMsS0FBS04sV0FBZDtBQUNEO0FBN0JtQixHQUF0Qjs7QUFnQ0EsTUFBSU8sbUJBQW1CLEdBQUcsWUFBVyxFQUFyQzs7QUFDQXhGLEVBQUFBLE9BQU8sQ0FDTHdGLG1CQUFtQixDQUFDanRFLFNBRGYsRUFFTDJvRSxjQUFjLENBQUMzb0UsU0FGVixFQUdMZ3JFLGVBSEssQ0FBUDtBQU1BO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVNrQyxXQUFULENBQXFCakMsSUFBckIsRUFBMkI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsUUFBSXh6RCxXQUFXLEdBQUc4d0QsUUFBUSxDQUFDLFVBQVMzVixLQUFULEVBQWdCdUYsT0FBaEIsRUFBeUIwVSxPQUF6QixFQUFrQztBQUMzRDtBQUNBO0FBRUEsTUFBMkM7QUFDekM1RSxRQUFBQSxPQUFPLENBQ0wsZ0JBQWdCeHdELFdBRFgsRUFFTCx1RUFDRSxxREFIRyxDQUFQO0FBS0QsT0FWMEQ7OztBQWEzRCxVQUFJLEtBQUs0ekQsb0JBQUwsQ0FBMEJ2eEUsTUFBOUIsRUFBc0M7QUFDcEN3eUUsUUFBQUEsbUJBQW1CLENBQUMsSUFBRCxDQUFuQjtBQUNEOztBQUVELFdBQUsxWixLQUFMLEdBQWFBLEtBQWI7QUFDQSxXQUFLdUYsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsV0FBS2dWLElBQUwsR0FBWXpGLFdBQVo7QUFDQSxXQUFLbUYsT0FBTCxHQUFlQSxPQUFPLElBQUlqRSxvQkFBMUI7QUFFQSxXQUFLcnBFLEtBQUwsR0FBYSxJQUFiLENBdEIyRDtBQXlCM0Q7O0FBRUEsVUFBSTZ0RSxZQUFZLEdBQUcsS0FBSy9ELGVBQUwsR0FBdUIsS0FBS0EsZUFBTCxFQUF2QixHQUFnRCxJQUFuRTs7QUFDQSxNQUEyQztBQUN6QztBQUNBLFlBQ0UrRCxZQUFZLEtBQUtoMEUsU0FBakIsSUFDQSxLQUFLaXdFLGVBQUwsQ0FBcUJnRSxlQUZ2QixFQUdFO0FBQ0E7QUFDQTtBQUNBRCxVQUFBQSxZQUFZLEdBQUcsSUFBZjtBQUNEO0FBQ0Y7O0FBQ0R2RixNQUFBQSxVQUFVLENBQ1IsT0FBT3VGLFlBQVAsS0FBd0IsUUFBeEIsSUFBb0MsQ0FBQ2pwRSxLQUFLLENBQUNDLE9BQU4sQ0FBY2dwRSxZQUFkLENBRDdCLEVBRVIscURBRlEsRUFHUjMxRCxXQUFXLENBQUM2eUQsV0FBWixJQUEyQix5QkFIbkIsQ0FBVjs7QUFNQSxXQUFLL3FFLEtBQUwsR0FBYTZ0RSxZQUFiO0FBQ0QsS0E5Q3lCLENBQTFCO0FBK0NBMzFELElBQUFBLFdBQVcsQ0FBQ3pYLFNBQVosR0FBd0IsSUFBSWl0RSxtQkFBSixFQUF4QjtBQUNBeDFELElBQUFBLFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0JvSSxXQUF0QixHQUFvQ3FQLFdBQXBDO0FBQ0FBLElBQUFBLFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0JxckUsb0JBQXRCLEdBQTZDLEVBQTdDO0FBRUF4QyxJQUFBQSxjQUFjLENBQUMzL0QsT0FBZixDQUF1QnFoRSxvQkFBb0IsQ0FBQ2ppRSxJQUFyQixDQUEwQixJQUExQixFQUFnQ21QLFdBQWhDLENBQXZCO0FBRUE4eUQsSUFBQUEsb0JBQW9CLENBQUM5eUQsV0FBRCxFQUFjZzFELGlCQUFkLENBQXBCO0FBQ0FsQyxJQUFBQSxvQkFBb0IsQ0FBQzl5RCxXQUFELEVBQWN3ekQsSUFBZCxDQUFwQjtBQUNBVixJQUFBQSxvQkFBb0IsQ0FBQzl5RCxXQUFELEVBQWNrMUQsa0JBQWQsQ0FBcEIsQ0EzRHlCOztBQThEekIsUUFBSWwxRCxXQUFXLENBQUMyeEQsZUFBaEIsRUFBaUM7QUFDL0IzeEQsTUFBQUEsV0FBVyxDQUFDNjFELFlBQVosR0FBMkI3MUQsV0FBVyxDQUFDMnhELGVBQVosRUFBM0I7QUFDRDs7QUFFRCxJQUEyQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQUkzeEQsV0FBVyxDQUFDMnhELGVBQWhCLEVBQWlDO0FBQy9CM3hELFFBQUFBLFdBQVcsQ0FBQzJ4RCxlQUFaLENBQTRCbUUsb0JBQTVCLEdBQW1ELEVBQW5EO0FBQ0Q7O0FBQ0QsVUFBSTkxRCxXQUFXLENBQUN6WCxTQUFaLENBQXNCcXBFLGVBQTFCLEVBQTJDO0FBQ3pDNXhELFFBQUFBLFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0JxcEUsZUFBdEIsQ0FBc0NrRSxvQkFBdEMsR0FBNkQsRUFBN0Q7QUFDRDtBQUNGOztBQUVEMUYsSUFBQUEsVUFBVSxDQUNScHdELFdBQVcsQ0FBQ3pYLFNBQVosQ0FBc0J1cEUsTUFEZCxFQUVSLHlFQUZRLENBQVY7O0FBS0EsSUFBMkM7QUFDekN0QixNQUFBQSxPQUFPLENBQ0wsQ0FBQ3h3RCxXQUFXLENBQUN6WCxTQUFaLENBQXNCd3RFLHFCQURsQixFQUVMLDRCQUNFLGlFQURGLEdBRUUsNERBRkYsR0FHRSw2QkFMRyxFQU1MdkMsSUFBSSxDQUFDWCxXQUFMLElBQW9CLGFBTmYsQ0FBUDtBQVFBckMsTUFBQUEsT0FBTyxDQUNMLENBQUN4d0QsV0FBVyxDQUFDelgsU0FBWixDQUFzQnl0RSx5QkFEbEIsRUFFTCw0QkFDRSx3RUFIRyxFQUlMeEMsSUFBSSxDQUFDWCxXQUFMLElBQW9CLGFBSmYsQ0FBUDtBQU1BckMsTUFBQUEsT0FBTyxDQUNMLENBQUN4d0QsV0FBVyxDQUFDelgsU0FBWixDQUFzQjB0RSxnQ0FEbEIsRUFFTCxnRUFDRSxrREFIRyxFQUlMekMsSUFBSSxDQUFDWCxXQUFMLElBQW9CLGFBSmYsQ0FBUDtBQU1ELEtBekd3Qjs7O0FBNEd6QixTQUFLLElBQUlxRCxVQUFULElBQXVCN0UsbUJBQXZCLEVBQTRDO0FBQzFDLFVBQUksQ0FBQ3J4RCxXQUFXLENBQUN6WCxTQUFaLENBQXNCMnRFLFVBQXRCLENBQUwsRUFBd0M7QUFDdENsMkQsUUFBQUEsV0FBVyxDQUFDelgsU0FBWixDQUFzQjJ0RSxVQUF0QixJQUFvQyxJQUFwQztBQUNEO0FBQ0Y7O0FBRUQsV0FBT2wyRCxXQUFQO0FBQ0Q7O0FBRUQsU0FBT3kxRCxXQUFQO0FBQ0Q7O0lBRUQzMUUsV0FBQSxHQUFpQm14RSxTQUFqQjs7Ozs7Ozs7OztBQy85QkEsSUFBSTlFLE9BQUssR0FBRzVyRSxRQUFRLE9BQUQsQ0FBbkI7O0FBQ0EsSUFBSTB3RSxTQUFPLEdBQUcxd0UsV0FBZDs7QUFFQSxJQUFJLE9BQU80ckUsT0FBUCxLQUFpQixXQUFyQixFQUFrQztBQUNoQyxRQUFNdjBELEtBQUssQ0FDVCx1RkFDRSxpRUFGTyxDQUFYO0FBSUQ7OztBQUdELElBQUl1NUQsb0JBQW9CLEdBQUcsSUFBSWhGLE9BQUssQ0FBQ2dLLFNBQVYsR0FBc0JmLE9BQWpEO0lBRUF0MUUsa0JBQUEsR0FBaUJteEUsU0FBTyxDQUN0QjlFLE9BQUssQ0FBQ2dLLFNBRGdCLEVBRXRCaEssT0FBSyxDQUFDclQsY0FGZ0IsRUFHdEJxWSxvQkFIc0IsQ0FBeEI7O0FDckJBLElBQUlpRixPQUFPLEdBQUc3MUUsaUJBQWQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBSTgxRSxhQUFhLEdBQUc7QUFDbEIzRSxFQUFBQSxpQkFBaUIsRUFBRSxJQUREO0FBRWxCNEUsRUFBQUEsV0FBVyxFQUFFLElBRks7QUFHbEI3RSxFQUFBQSxZQUFZLEVBQUUsSUFISTtBQUlsQm9FLEVBQUFBLFlBQVksRUFBRSxJQUpJO0FBS2xCaEQsRUFBQUEsV0FBVyxFQUFFLElBTEs7QUFNbEJsQixFQUFBQSxlQUFlLEVBQUUsSUFOQztBQU9sQjRFLEVBQUFBLHdCQUF3QixFQUFFLElBUFI7QUFRbEI1RCxFQUFBQSx3QkFBd0IsRUFBRSxJQVJSO0FBU2xCckIsRUFBQUEsTUFBTSxFQUFFLElBVFU7QUFVbEJFLEVBQUFBLFNBQVMsRUFBRSxJQVZPO0FBV2xCenBFLEVBQUFBLElBQUksRUFBRTtBQVhZLENBQXBCO0FBYUEsSUFBSXl1RSxhQUFhLEdBQUc7QUFDbEJweEUsRUFBQUEsSUFBSSxFQUFFLElBRFk7QUFFbEIvQyxFQUFBQSxNQUFNLEVBQUUsSUFGVTtBQUdsQmtHLEVBQUFBLFNBQVMsRUFBRSxJQUhPO0FBSWxCa3VFLEVBQUFBLE1BQU0sRUFBRSxJQUpVO0FBS2xCdnBFLEVBQUFBLE1BQU0sRUFBRSxJQUxVO0FBTWxCOUssRUFBQUEsU0FBUyxFQUFFLElBTk87QUFPbEJzMEUsRUFBQUEsS0FBSyxFQUFFO0FBUFcsQ0FBcEI7QUFTQSxJQUFJQyxtQkFBbUIsR0FBRztBQUN4QixjQUFZLElBRFk7QUFFeEI3RSxFQUFBQSxNQUFNLEVBQUUsSUFGZ0I7QUFHeEIrRCxFQUFBQSxZQUFZLEVBQUUsSUFIVTtBQUl4QmhELEVBQUFBLFdBQVcsRUFBRSxJQUpXO0FBS3hCckIsRUFBQUEsU0FBUyxFQUFFO0FBTGEsQ0FBMUI7QUFPQSxJQUFJb0YsWUFBWSxHQUFHO0FBQ2pCLGNBQVksSUFESztBQUVqQkMsRUFBQUEsT0FBTyxFQUFFLElBRlE7QUFHakJoQixFQUFBQSxZQUFZLEVBQUUsSUFIRztBQUlqQmhELEVBQUFBLFdBQVcsRUFBRSxJQUpJO0FBS2pCckIsRUFBQUEsU0FBUyxFQUFFLElBTE07QUFNakJ6cEUsRUFBQUEsSUFBSSxFQUFFO0FBTlcsQ0FBbkI7QUFRQSxJQUFJK3VFLFlBQVksR0FBRyxFQUFuQjtBQUNBQSxZQUFZLENBQUNWLE9BQU8sQ0FBQ2xnQixVQUFULENBQVosR0FBbUN5Z0IsbUJBQW5DO0FBQ0FHLFlBQVksQ0FBQ1YsT0FBTyxDQUFDL2YsSUFBVCxDQUFaLEdBQTZCdWdCLFlBQTdCOztBQUVBLFNBQVNHLFVBQVQsQ0FBb0J2SyxTQUFwQixFQUErQjtBQUM3QjtBQUNBLE1BQUk0SixPQUFPLENBQUNqZixNQUFSLENBQWVxVixTQUFmLENBQUosRUFBK0I7QUFDN0IsV0FBT29LLFlBQVA7QUFDRCxHQUo0Qjs7O0FBTzdCLFNBQU9FLFlBQVksQ0FBQ3RLLFNBQVMsQ0FBQyxVQUFELENBQVYsQ0FBWixJQUF1QzZKLGFBQTlDO0FBQ0Q7O0FBRUQsSUFBSTUxRSxjQUFjLEdBQUdELE1BQU0sQ0FBQ0MsY0FBNUI7QUFDQSxJQUFJdUssbUJBQW1CLEdBQUd4SyxNQUFNLENBQUN3SyxtQkFBakM7QUFDQSxJQUFJakkscUJBQXFCLEdBQUd2QyxNQUFNLENBQUN1QyxxQkFBbkM7QUFDQSxJQUFJbEMsd0JBQXdCLEdBQUdMLE1BQU0sQ0FBQ0ssd0JBQXRDO0FBQ0EsSUFBSXVVLGNBQWMsR0FBRzVVLE1BQU0sQ0FBQzRVLGNBQTVCO0FBQ0EsSUFBSTRoRSxlQUFlLEdBQUd4MkUsTUFBTSxDQUFDK0gsU0FBN0I7O0FBQ0EsU0FBUzB1RSxzQkFBVCxDQUE4QkMsZUFBOUIsRUFBK0NDLGVBQS9DLEVBQWdFQyxTQUFoRSxFQUEyRTtBQUN6RSxNQUFJLE9BQU9ELGVBQVAsS0FBMkIsUUFBL0IsRUFBeUM7QUFDdkM7QUFDQSxRQUFJSCxlQUFKLEVBQXFCO0FBQ25CLFVBQUlLLGtCQUFrQixHQUFHamlFLGNBQWMsQ0FBQytoRSxlQUFELENBQXZDOztBQUVBLFVBQUlFLGtCQUFrQixJQUFJQSxrQkFBa0IsS0FBS0wsZUFBakQsRUFBa0U7QUFDaEVDLFFBQUFBLHNCQUFvQixDQUFDQyxlQUFELEVBQWtCRyxrQkFBbEIsRUFBc0NELFNBQXRDLENBQXBCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJandFLElBQUksR0FBRzZELG1CQUFtQixDQUFDbXNFLGVBQUQsQ0FBOUI7O0FBRUEsUUFBSXAwRSxxQkFBSixFQUEyQjtBQUN6Qm9FLE1BQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDNEQsTUFBTCxDQUFZaEkscUJBQXFCLENBQUNvMEUsZUFBRCxDQUFqQyxDQUFQO0FBQ0Q7O0FBRUQsUUFBSUcsYUFBYSxHQUFHUCxVQUFVLENBQUNHLGVBQUQsQ0FBOUI7QUFDQSxRQUFJSyxhQUFhLEdBQUdSLFVBQVUsQ0FBQ0ksZUFBRCxDQUE5Qjs7QUFFQSxTQUFLLElBQUl2c0UsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3pELElBQUksQ0FBQzlFLE1BQXpCLEVBQWlDLEVBQUV1SSxDQUFuQyxFQUFzQztBQUNwQyxVQUFJMUcsR0FBRyxHQUFHaUQsSUFBSSxDQUFDeUQsQ0FBRCxDQUFkOztBQUVBLFVBQUksQ0FBQzRyRSxhQUFhLENBQUN0eUUsR0FBRCxDQUFkLElBQXVCLEVBQUVrekUsU0FBUyxJQUFJQSxTQUFTLENBQUNsekUsR0FBRCxDQUF4QixDQUF2QixJQUF5RCxFQUFFcXpFLGFBQWEsSUFBSUEsYUFBYSxDQUFDcnpFLEdBQUQsQ0FBaEMsQ0FBekQsSUFBbUcsRUFBRW96RSxhQUFhLElBQUlBLGFBQWEsQ0FBQ3B6RSxHQUFELENBQWhDLENBQXZHLEVBQStJO0FBQzdJLFlBQUlqRCxVQUFVLEdBQUdKLHdCQUF3QixDQUFDczJFLGVBQUQsRUFBa0JqekUsR0FBbEIsQ0FBekM7O0FBRUEsWUFBSTtBQUNGO0FBQ0F6RCxVQUFBQSxjQUFjLENBQUN5MkUsZUFBRCxFQUFrQmh6RSxHQUFsQixFQUF1QmpELFVBQXZCLENBQWQ7QUFDRCxTQUhELENBR0UsT0FBT2syQixDQUFQLEVBQVU7QUFDYjtBQUNGO0FBQ0Y7O0FBRUQsU0FBTysvQyxlQUFQO0FBQ0Q7O0lBRURwM0Usd0JBQUEsR0FBaUJtM0Usc0JBQWpCOztBQ3RHQSxJQUFJOUssS0FBSyxHQUFHNXJFLFFBQVEsT0FBRCxDQUFuQjs7QUFDQSxJQUFJaTNFLGdCQUFnQixHQUFHajNFLGtCQUF2Qjs7QUFDQSxJQUFJdzdDLFNBQVMsR0FBR3g3QyxXQUFoQjs7QUFDQSxJQUFJMDJFLG9CQUFvQixHQUFHMTJFLHdCQUEzQjs7QUFFQSxTQUFTazNFLGtCQUFULENBQTZCeGhCLE9BQTdCLEVBQXNDO0FBQ3BDLFdBQVN5aEIsV0FBVCxDQUFzQkMsZ0JBQXRCLEVBQXdDO0FBQ3RDLFFBQUlDLFdBQVcsR0FBR0osZ0JBQWdCLENBQUM7QUFDakN6RixNQUFBQSxrQkFBa0IsRUFBRSxZQUFZO0FBQzlCLGFBQUs4RixnQkFBTCxHQUF3QixFQUF4QjtBQUNBLGFBQUtDLG1CQUFMLEdBQTJCLENBQTNCO0FBQ0QsT0FKZ0M7QUFLakN6RixNQUFBQSxvQkFBb0IsRUFBRSxZQUFZO0FBQ2hDLGFBQUswRixvQkFBTDtBQUNBLGFBQUtDLGVBQUw7QUFDRCxPQVJnQztBQVNqQ0MsTUFBQUEsY0FBYyxFQUFFLFVBQVVsOEMsSUFBVixFQUFnQjMyQixJQUFoQixFQUFzQjh5RSxXQUF0QixFQUFtQztBQUNqRCxZQUFJLENBQUMsS0FBS0wsZ0JBQUwsQ0FBc0J6eUUsSUFBdEIsQ0FBRCxJQUFnQzh5RSxXQUFwQyxFQUFpRDtBQUMvQyxlQUFLTCxnQkFBTCxDQUFzQnp5RSxJQUF0QixJQUE4QixPQUFPMjJCLElBQVAsS0FBZ0IsUUFBaEIsR0FBMkJBLElBQTNCLEdBQWtDLElBQUlrNkIsT0FBSixDQUFZbDZCLElBQVosQ0FBaEU7QUFDQSxlQUFLbzhDLGtCQUFMLEdBQTBCajlDLFVBQVUsQ0FBQyxLQUFLazlDLFdBQU4sQ0FBcEM7QUFDRDs7QUFDRCxlQUFPLEtBQUtQLGdCQUFMLENBQXNCenlFLElBQXRCLENBQVA7QUFDRCxPQWZnQztBQWdCakNnekUsTUFBQUEsV0FBVyxFQUFFLFlBQVk7QUFDdkIsWUFBSUMsVUFBVSxHQUFHdDhCLFNBQVMsQ0FBQyxLQUFLODdCLGdCQUFOLEVBQXdCLFVBQVV6K0QsQ0FBVixFQUFhO0FBQzdELGlCQUFPQSxDQUFDLENBQUNxMUQsT0FBRixFQUFQO0FBQ0QsU0FGeUIsQ0FBMUI7QUFHQSxhQUFLNkosUUFBTCxDQUFjRCxVQUFkO0FBQ0QsT0FyQmdDO0FBc0JqQ0UsTUFBQUEsY0FBYyxFQUFFLFVBQVVDLFFBQVYsRUFBb0I7QUFDbEMsYUFBS1YsbUJBQUwsR0FBMkJqNEUsSUFBSSxDQUFDK0osR0FBTCxDQUFTdWdCLElBQUksQ0FBQ0csR0FBTCxLQUFha3VELFFBQXRCLEVBQWdDLEtBQUtWLG1CQUFyQyxDQUEzQjs7QUFDQSxZQUFJLENBQUMsS0FBS1csd0JBQVYsRUFBb0M7QUFDbEMsZUFBS0Esd0JBQUwsR0FBZ0N6eEIsV0FBVyxDQUFDLFlBQVk7QUFDdEQsZ0JBQUk3OEIsSUFBSSxDQUFDRyxHQUFMLEtBQWEsS0FBS3d0RCxtQkFBdEIsRUFBMkM7QUFDekMsbUJBQUtNLFdBQUw7QUFDRCxhQUZELE1BRU87QUFDTCxtQkFBS0wsb0JBQUw7QUFDRDtBQUNGLFdBTjJDLENBTTFDbG5FLElBTjBDLENBTXJDLElBTnFDLENBQUQsRUFNN0IsRUFONkIsQ0FBM0M7QUFPRDtBQUNGLE9BakNnQztBQWtDakNrbkUsTUFBQUEsb0JBQW9CLEVBQUUsWUFBWTtBQUNoQyxhQUFLVSx3QkFBTCxHQUFnQ0MsYUFBYSxDQUFDLEtBQUtELHdCQUFOLENBQTdDO0FBQ0EsYUFBS1gsbUJBQUwsR0FBMkIsQ0FBM0I7QUFDRCxPQXJDZ0M7QUFzQ2pDRSxNQUFBQSxlQUFlLEVBQUUsWUFBWTtBQUMzQixhQUFLRyxrQkFBTCxHQUEwQlEsWUFBWSxDQUFDLEtBQUtSLGtCQUFOLENBQXRDO0FBQ0QsT0F4Q2dDO0FBeUNqQ1MsTUFBQUEsa0JBQWtCLEVBQUUsWUFBWTtBQUM5QixlQUFPLENBQUMsQ0FBQyxLQUFLSCx3QkFBZDtBQUNELE9BM0NnQztBQTRDakMzRyxNQUFBQSxNQUFNLEVBQUUsWUFBWTtBQUNsQixZQUFJM1csS0FBSyxHQUFHMzZELE1BQU0sQ0FBQ2kzQixNQUFQLENBQWMsRUFBZCxFQUFrQixLQUFLMGpDLEtBQXZCLEVBQThCLEtBQUtyekQsS0FBbkMsRUFBMEM7QUFDcERtd0UsVUFBQUEsY0FBYyxFQUFFLEtBQUtBLGNBRCtCO0FBRXBERyxVQUFBQSxXQUFXLEVBQUUsS0FBS0EsV0FGa0M7QUFHcERHLFVBQUFBLGNBQWMsRUFBRSxLQUFLQSxjQUgrQjtBQUlwRFIsVUFBQUEsb0JBQW9CLEVBQUUsS0FBS0Esb0JBSnlCO0FBS3BEYSxVQUFBQSxrQkFBa0IsRUFBRSxLQUFLQTtBQUwyQixTQUExQyxDQUFaO0FBT0EsZUFBT3pNLEtBQUssQ0FBQ3BtRSxhQUFOLENBQW9CNHhFLGdCQUFwQixFQUFzQ3hjLEtBQXRDLENBQVA7QUFDRDtBQXJEZ0MsS0FBRCxDQUFsQztBQXVEQXljLElBQUFBLFdBQVcsQ0FBQy9FLFdBQVosR0FBMEIsaUJBQWlCZ0csY0FBYyxDQUFDbEIsZ0JBQUQsQ0FBL0IsR0FBb0QsR0FBOUU7QUFDQVYsSUFBQUEsb0JBQW9CLENBQUNXLFdBQUQsRUFBY0QsZ0JBQWQsQ0FBcEI7QUFDQSxXQUFPQyxXQUFQO0FBQ0Q7O0FBRUQsU0FBT0YsV0FBUDtBQUNEOztBQUVELFNBQVNtQixjQUFULENBQXlCbEIsZ0JBQXpCLEVBQTJDO0FBQ3pDLFNBQU9BLGdCQUFnQixDQUFDOUUsV0FBakIsSUFBZ0M4RSxnQkFBZ0IsQ0FBQ3Z5RSxJQUFqRCxJQUF5RCxXQUFoRTtBQUNEOztJQUVEdEYsWUFBQSxHQUFpQjIzRSxrQkFBakI7O0FDMUVBLElBQUl0OEQsT0FBTyxHQUFHNWEsUUFBZDs7QUFDQSxJQUFJUCxRQUFNLEdBQUdPLE9BQWI7O0FBQ0EsSUFBSW0zRSxXQUFXLEdBQUduM0UsWUFBbEI7O0FBRUEsU0FBUzB3RSxTQUFULEdBQW9CO0FBQ2xCLE1BQUloYixPQUFPLEdBQUc5NkMsT0FBTyxFQUFyQjtBQUNBLE1BQUkyMEQsTUFBTSxHQUFHOXZFLFFBQU0sRUFBbkI7QUFDQSxNQUFJODRFLFlBQVksR0FBRztBQUNqQjdpQixJQUFBQSxPQUFPLEVBQUVBLE9BRFE7QUFFakI4aUIsSUFBQUEsV0FBVyxFQUFFakosTUFGSTtBQUdqQjRILElBQUFBLFdBQVcsRUFBRUEsV0FBVyxDQUFDemhCLE9BQUQsQ0FIUDtBQUlqQmx3RCxJQUFBQSxhQUFhLEVBQUUsVUFBVW00RCxRQUFWLEVBQW9CO0FBQ2pDLGFBQU8sSUFBSWpJLE9BQUosQ0FBWWlJLFFBQVosQ0FBUDtBQUNELEtBTmdCO0FBT2pCOGEsSUFBQUEsZUFBZSxFQUFFLFVBQVU5MkUsU0FBVixFQUFxQmc4RCxRQUFyQixFQUErQjtBQUM5QyxhQUFPLEtBQUtuNEQsYUFBTCxDQUFtQm00RCxRQUFuQixDQUFQO0FBQ0QsS0FUZ0I7QUFVakI4QyxJQUFBQSx1QkFBdUIsRUFBRSxZQUFZO0FBQ25DO0FBQ0E7QUFDQSxhQUFPLENBQVA7QUFDRDtBQWRnQixHQUFuQjtBQWlCQS9LLEVBQUFBLE9BQU8sQ0FBQzF0RCxTQUFSLENBQWtCODNELGFBQWxCLEdBQWtDeVksWUFBbEM7QUFDQSxTQUFPQSxZQUFQO0FBQ0Q7O0lBRURoNUUsU0FBQSxHQUFpQm14RSxTQUFqQjs7QUM1QkEsSUFBSUEsT0FBTyxHQUFHMXdFLFNBQWQ7O0lBQ0FULFlBQUEsR0FBaUJteEUsT0FBTyxFQUF4Qjs7QUNEQSxJQUFJZ0ksSUFBSSxHQUFHO0FBQUM3M0UsRUFBQUEsS0FBSyxFQUFFLFlBQVc7QUFBbkIsQ0FBWDs7QUFFQSxTQUFTODNFLFVBQVQsR0FBb0I7QUFDbEIsT0FBSyxJQUFJdHVFLENBQUMsR0FBRyxDQUFSLEVBQVd3TyxDQUFDLEdBQUdoWCxTQUFTLENBQUNDLE1BQXpCLEVBQWlDd3BDLENBQUMsR0FBRyxFQUFyQyxFQUF5Q2xaLENBQTlDLEVBQWlEL25CLENBQUMsR0FBR3dPLENBQXJELEVBQXdELEVBQUV4TyxDQUExRCxFQUE2RDtBQUMzRCxRQUFJLEVBQUUrbkIsQ0FBQyxHQUFHdndCLFNBQVMsQ0FBQ3dJLENBQUQsQ0FBVCxHQUFlLEVBQXJCLEtBQTZCK25CLENBQUMsSUFBSWtaLENBQWxDLElBQXdDLFFBQVEza0MsSUFBUixDQUFheXJCLENBQWIsQ0FBNUMsRUFBNkQsTUFBTSxJQUFJL2EsS0FBSixDQUFVLG1CQUFtQithLENBQTdCLENBQU47QUFDN0RrWixJQUFBQSxDQUFDLENBQUNsWixDQUFELENBQUQsR0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJZ0gsUUFBSixDQUFha1MsQ0FBYixDQUFQO0FBQ0Q7O0FBRUQsU0FBU2xTLFFBQVQsQ0FBa0JrUyxDQUFsQixFQUFxQjtBQUNuQixPQUFLQSxDQUFMLEdBQVNBLENBQVQ7QUFDRDs7QUFFRCxTQUFTc3RDLGdCQUFULENBQXdCQyxTQUF4QixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDeEMsU0FBT0QsU0FBUyxDQUFDcmtELElBQVYsR0FBaUJyekIsS0FBakIsQ0FBdUIsT0FBdkIsRUFBZ0NnUSxHQUFoQyxDQUFvQyxVQUFTaWhCLENBQVQsRUFBWTtBQUNyRCxRQUFJdnRCLElBQUksR0FBRyxFQUFYO0FBQUEsUUFBZXdGLENBQUMsR0FBRytuQixDQUFDLENBQUNqb0IsT0FBRixDQUFVLEdBQVYsQ0FBbkI7QUFDQSxRQUFJRSxDQUFDLElBQUksQ0FBVCxFQUFZeEYsSUFBSSxHQUFHdXRCLENBQUMsQ0FBQ254QixLQUFGLENBQVFvSixDQUFDLEdBQUcsQ0FBWixDQUFQLEVBQXVCK25CLENBQUMsR0FBR0EsQ0FBQyxDQUFDbnhCLEtBQUYsQ0FBUSxDQUFSLEVBQVdvSixDQUFYLENBQTNCO0FBQ1osUUFBSStuQixDQUFDLElBQUksQ0FBQzBtRCxLQUFLLENBQUMzMEUsY0FBTixDQUFxQml1QixDQUFyQixDQUFWLEVBQW1DLE1BQU0sSUFBSS9hLEtBQUosQ0FBVSxtQkFBbUIrYSxDQUE3QixDQUFOO0FBQ25DLFdBQU87QUFBQzVxQixNQUFBQSxJQUFJLEVBQUU0cUIsQ0FBUDtBQUFVdnRCLE1BQUFBLElBQUksRUFBRUE7QUFBaEIsS0FBUDtBQUNELEdBTE0sQ0FBUDtBQU1EOztBQUVEdTBCLFFBQVEsQ0FBQ3B4QixTQUFULEdBQXFCMndFLFVBQVEsQ0FBQzN3RSxTQUFULEdBQXFCO0FBQ3hDb0ksRUFBQUEsV0FBVyxFQUFFZ3BCLFFBRDJCO0FBRXhDMi9DLEVBQUFBLEVBQUUsRUFBRSxVQUFTQyxRQUFULEVBQW1CdjlCLFFBQW5CLEVBQTZCO0FBQy9CLFFBQUluUSxDQUFDLEdBQUcsS0FBS0EsQ0FBYjtBQUFBLFFBQ0lqVSxDQUFDLEdBQUd1aEQsZ0JBQWMsQ0FBQ0ksUUFBUSxHQUFHLEVBQVosRUFBZ0IxdEMsQ0FBaEIsQ0FEdEI7QUFBQSxRQUVJbFosQ0FGSjtBQUFBLFFBR0kvbkIsQ0FBQyxHQUFHLENBQUMsQ0FIVDtBQUFBLFFBSUl3TyxDQUFDLEdBQUd3ZSxDQUFDLENBQUN2MUIsTUFKVixDQUQrQjs7QUFRL0IsUUFBSUQsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQXZCLEVBQTBCO0FBQ3hCLGFBQU8sRUFBRXVJLENBQUYsR0FBTXdPLENBQWIsRUFBZ0IsSUFBSSxDQUFDdVosQ0FBQyxHQUFHLENBQUM0bUQsUUFBUSxHQUFHM2hELENBQUMsQ0FBQ2h0QixDQUFELENBQWIsRUFBa0I3QyxJQUF2QixNQUFpQzRxQixDQUFDLEdBQUdqeUIsR0FBRyxDQUFDbXJDLENBQUMsQ0FBQ2xaLENBQUQsQ0FBRixFQUFPNG1ELFFBQVEsQ0FBQ24wRSxJQUFoQixDQUF4QyxDQUFKLEVBQW9FLE9BQU91dEIsQ0FBUDs7QUFDcEY7QUFDRCxLQVg4QjtBQWMvQjs7O0FBQ0EsUUFBSXFwQixRQUFRLElBQUksSUFBWixJQUFvQixPQUFPQSxRQUFQLEtBQW9CLFVBQTVDLEVBQXdELE1BQU0sSUFBSXBrQyxLQUFKLENBQVUsdUJBQXVCb2tDLFFBQWpDLENBQU47O0FBQ3hELFdBQU8sRUFBRXB4QyxDQUFGLEdBQU13TyxDQUFiLEVBQWdCO0FBQ2QsVUFBSXVaLENBQUMsR0FBRyxDQUFDNG1ELFFBQVEsR0FBRzNoRCxDQUFDLENBQUNodEIsQ0FBRCxDQUFiLEVBQWtCN0MsSUFBMUIsRUFBZ0M4akMsQ0FBQyxDQUFDbFosQ0FBRCxDQUFELEdBQU9sckIsR0FBRyxDQUFDb2tDLENBQUMsQ0FBQ2xaLENBQUQsQ0FBRixFQUFPNG1ELFFBQVEsQ0FBQ24wRSxJQUFoQixFQUFzQjQyQyxRQUF0QixDQUFWLENBQWhDLEtBQ0ssSUFBSUEsUUFBUSxJQUFJLElBQWhCLEVBQXNCLEtBQUtycEIsQ0FBTCxJQUFVa1osQ0FBVixFQUFhQSxDQUFDLENBQUNsWixDQUFELENBQUQsR0FBT2xyQixHQUFHLENBQUNva0MsQ0FBQyxDQUFDbFosQ0FBRCxDQUFGLEVBQU80bUQsUUFBUSxDQUFDbjBFLElBQWhCLEVBQXNCLElBQXRCLENBQVY7QUFDekM7O0FBRUQsV0FBTyxJQUFQO0FBQ0QsR0F4QnVDO0FBeUJ4Q28wRSxFQUFBQSxJQUFJLEVBQUUsWUFBVztBQUNmLFFBQUlBLElBQUksR0FBRyxFQUFYO0FBQUEsUUFBZTN0QyxDQUFDLEdBQUcsS0FBS0EsQ0FBeEI7O0FBQ0EsU0FBSyxJQUFJbFosQ0FBVCxJQUFja1osQ0FBZCxFQUFpQjJ0QyxJQUFJLENBQUM3bUQsQ0FBRCxDQUFKLEdBQVVrWixDQUFDLENBQUNsWixDQUFELENBQUQsQ0FBS254QixLQUFMLEVBQVY7O0FBQ2pCLFdBQU8sSUFBSW00QixRQUFKLENBQWE2L0MsSUFBYixDQUFQO0FBQ0QsR0E3QnVDO0FBOEJ4Q3o0RSxFQUFBQSxJQUFJLEVBQUUsVUFBU2dILElBQVQsRUFBZTZILElBQWYsRUFBcUI7QUFDekIsUUFBSSxDQUFDd0osQ0FBQyxHQUFHaFgsU0FBUyxDQUFDQyxNQUFWLEdBQW1CLENBQXhCLElBQTZCLENBQWpDLEVBQW9DLEtBQUssSUFBSXFTLElBQUksR0FBRyxJQUFJaEksS0FBSixDQUFVME0sQ0FBVixDQUFYLEVBQXlCeE8sQ0FBQyxHQUFHLENBQTdCLEVBQWdDd08sQ0FBaEMsRUFBbUN1WixDQUF4QyxFQUEyQy9uQixDQUFDLEdBQUd3TyxDQUEvQyxFQUFrRCxFQUFFeE8sQ0FBcEQsRUFBdUQ4SixJQUFJLENBQUM5SixDQUFELENBQUosR0FBVXhJLFNBQVMsQ0FBQ3dJLENBQUMsR0FBRyxDQUFMLENBQW5CO0FBQzNGLFFBQUksQ0FBQyxLQUFLaWhDLENBQUwsQ0FBT25uQyxjQUFQLENBQXNCcUQsSUFBdEIsQ0FBTCxFQUFrQyxNQUFNLElBQUk2UCxLQUFKLENBQVUsbUJBQW1CN1AsSUFBN0IsQ0FBTjs7QUFDbEMsU0FBSzRxQixDQUFDLEdBQUcsS0FBS2taLENBQUwsQ0FBTzlqQyxJQUFQLENBQUosRUFBa0I2QyxDQUFDLEdBQUcsQ0FBdEIsRUFBeUJ3TyxDQUFDLEdBQUd1WixDQUFDLENBQUN0d0IsTUFBcEMsRUFBNEN1SSxDQUFDLEdBQUd3TyxDQUFoRCxFQUFtRCxFQUFFeE8sQ0FBckQsRUFBd0QrbkIsQ0FBQyxDQUFDL25CLENBQUQsQ0FBRCxDQUFLeEosS0FBTCxDQUFXMk8sS0FBWCxDQUFpQkgsSUFBakIsRUFBdUI4RSxJQUF2QjtBQUN6RCxHQWxDdUM7QUFtQ3hDM0UsRUFBQUEsS0FBSyxFQUFFLFVBQVNoSSxJQUFULEVBQWU2SCxJQUFmLEVBQXFCOEUsSUFBckIsRUFBMkI7QUFDaEMsUUFBSSxDQUFDLEtBQUttM0IsQ0FBTCxDQUFPbm5DLGNBQVAsQ0FBc0JxRCxJQUF0QixDQUFMLEVBQWtDLE1BQU0sSUFBSTZQLEtBQUosQ0FBVSxtQkFBbUI3UCxJQUE3QixDQUFOOztBQUNsQyxTQUFLLElBQUk0cUIsQ0FBQyxHQUFHLEtBQUtrWixDQUFMLENBQU85akMsSUFBUCxDQUFSLEVBQXNCNkMsQ0FBQyxHQUFHLENBQTFCLEVBQTZCd08sQ0FBQyxHQUFHdVosQ0FBQyxDQUFDdHdCLE1BQXhDLEVBQWdEdUksQ0FBQyxHQUFHd08sQ0FBcEQsRUFBdUQsRUFBRXhPLENBQXpELEVBQTREK25CLENBQUMsQ0FBQy9uQixDQUFELENBQUQsQ0FBS3hKLEtBQUwsQ0FBVzJPLEtBQVgsQ0FBaUJILElBQWpCLEVBQXVCOEUsSUFBdkI7QUFDN0Q7QUF0Q3VDLENBQTFDOztBQXlDQSxTQUFTaFUsR0FBVCxDQUFhcUgsSUFBYixFQUFtQjNDLElBQW5CLEVBQXlCO0FBQ3ZCLE9BQUssSUFBSXdGLENBQUMsR0FBRyxDQUFSLEVBQVd3TyxDQUFDLEdBQUdyUixJQUFJLENBQUMxRixNQUFwQixFQUE0QnlOLENBQWpDLEVBQW9DbEYsQ0FBQyxHQUFHd08sQ0FBeEMsRUFBMkMsRUFBRXhPLENBQTdDLEVBQWdEO0FBQzlDLFFBQUksQ0FBQ2tGLENBQUMsR0FBRy9ILElBQUksQ0FBQzZDLENBQUQsQ0FBVCxFQUFjeEYsSUFBZCxLQUF1QkEsSUFBM0IsRUFBaUM7QUFDL0IsYUFBTzBLLENBQUMsQ0FBQzFPLEtBQVQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBU3FHLEdBQVQsQ0FBYU0sSUFBYixFQUFtQjNDLElBQW5CLEVBQXlCNDJDLFFBQXpCLEVBQW1DO0FBQ2pDLE9BQUssSUFBSXB4QyxDQUFDLEdBQUcsQ0FBUixFQUFXd08sQ0FBQyxHQUFHclIsSUFBSSxDQUFDMUYsTUFBekIsRUFBaUN1SSxDQUFDLEdBQUd3TyxDQUFyQyxFQUF3QyxFQUFFeE8sQ0FBMUMsRUFBNkM7QUFDM0MsUUFBSTdDLElBQUksQ0FBQzZDLENBQUQsQ0FBSixDQUFReEYsSUFBUixLQUFpQkEsSUFBckIsRUFBMkI7QUFDekIyQyxNQUFBQSxJQUFJLENBQUM2QyxDQUFELENBQUosR0FBVXF1RSxJQUFWLEVBQWdCbHhFLElBQUksR0FBR0EsSUFBSSxDQUFDdkcsS0FBTCxDQUFXLENBQVgsRUFBY29KLENBQWQsRUFBaUJHLE1BQWpCLENBQXdCaEQsSUFBSSxDQUFDdkcsS0FBTCxDQUFXb0osQ0FBQyxHQUFHLENBQWYsQ0FBeEIsQ0FBdkI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsTUFBSW94QyxRQUFRLElBQUksSUFBaEIsRUFBc0JqMEMsSUFBSSxDQUFDekQsSUFBTCxDQUFVO0FBQUNjLElBQUFBLElBQUksRUFBRUEsSUFBUDtBQUFhaEUsSUFBQUEsS0FBSyxFQUFFNDZDO0FBQXBCLEdBQVY7QUFDdEIsU0FBT2owQyxJQUFQO0FBQ0Q7Ozs7Ozs7QUNqRkQ7QUFDQTtBQUVBLElBQUlteEUsUUFBUSxHQUFHMzRFLEdBQUEsQ0FBdUIyNEUsUUFBdEM7O0FBRUEsSUFBSU8sWUFBWSxHQUFHNTVFLElBQUksQ0FBQzg4QyxFQUFMLEdBQVUsR0FBN0I7QUFBQSxJQUNJKzhCLEVBQUUsR0FBRyxLQUFLLEVBQUwsSUFBVyxDQURwQjtBQUFBLElBRUlwdUMsRUFBRSxHQUFHLEtBQUssRUFGZDs7SUFJQXhyQyxPQUFBLEdBQWlCLFlBQVc7QUFDMUIsTUFBSTh3QixJQUFJLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixDQUFYO0FBQUEsTUFDSXVuQyxJQUFJLEdBQUd3aEIsU0FEWDtBQUFBLE1BRUlDLElBQUksR0FBR0MsU0FGWDtBQUFBLE1BR0lDLFFBQVEsR0FBR0MsYUFIZjtBQUFBLE1BSUlDLFNBQVMsR0FBR0MsZUFKaEI7QUFBQSxNQUtJQyxVQUFVLEdBQUdELGVBTGpCO0FBQUEsTUFNSUUsTUFBTSxHQUFHQyxXQU5iO0FBQUEsTUFPSUMsT0FBTyxHQUFHQyxZQVBkO0FBQUEsTUFRSUMsTUFBTSxHQUFHQyxpQkFSYjtBQUFBLE1BU0lDLEtBQUssR0FBRyxFQVRaO0FBQUEsTUFVSUMsWUFBWSxHQUFHNTJELFFBVm5CO0FBQUEsTUFXSXdXLEtBQUssR0FBRzQrQyxRQUFRLENBQUMsTUFBRCxFQUFTLEtBQVQsQ0FYcEI7QUFBQSxNQVlJeUIsS0FBSyxHQUFHLElBWlo7QUFBQSxNQWFJNzFFLE1BQU0sR0FBR2pGLElBQUksQ0FBQ2lGLE1BYmxCO0FBQUEsTUFjSTgxRSxLQUFLLEdBQUcsRUFkWjtBQUFBLE1BZUlDLE1BQU0sR0FBR0MsV0FmYjs7QUFpQkFGLEVBQUFBLEtBQUssQ0FBQ0MsTUFBTixHQUFlLFVBQVNodkMsQ0FBVCxFQUFZO0FBQ3pCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CdzRFLE1BQU0sR0FBR0UsT0FBTyxDQUFDbHZDLENBQUQsQ0FBaEIsRUFBcUIrdUMsS0FBekMsSUFBa0RDLE1BQXpEO0FBQ0QsR0FGRDs7QUFJQUQsRUFBQUEsS0FBSyxDQUFDcmhFLEtBQU4sR0FBYyxZQUFXO0FBQ3ZCLFFBQUl5aEUsZUFBZSxHQUFHQyxVQUFVLENBQUNKLE1BQU0sRUFBUCxDQUFoQztBQUFBLFFBQ0lLLEtBQUssR0FBR0MsU0FBUyxDQUFDLENBQUN2cUQsSUFBSSxDQUFDLENBQUQsQ0FBSixJQUFXLENBQVosSUFBaUJBLElBQUksQ0FBQyxDQUFELENBQXRCLENBRHJCO0FBQUEsUUFFSXdxRCxNQUFNLEdBQUcsSUFGYjtBQUFBLFFBR0loaUUsQ0FBQyxHQUFHcWhFLEtBQUssQ0FBQ3A0RSxNQUhkO0FBQUEsUUFJSXVJLENBQUMsR0FBRyxDQUFDLENBSlQ7QUFBQSxRQUtJeXdFLElBQUksR0FBRyxFQUxYO0FBQUEsUUFNSTN2RSxJQUFJLEdBQUcrdUUsS0FBSyxDQUFDL29FLEdBQU4sQ0FBVSxVQUFTMitELENBQVQsRUFBWXpsRSxDQUFaLEVBQWU7QUFDOUJ5bEUsTUFBQUEsQ0FBQyxDQUFDbFksSUFBRixHQUFTQSxJQUFJLENBQUNwM0QsSUFBTCxDQUFVLElBQVYsRUFBZ0JzdkUsQ0FBaEIsRUFBbUJ6bEUsQ0FBbkIsQ0FBVDtBQUNBeWxFLE1BQUFBLENBQUMsQ0FBQ3VKLElBQUYsR0FBU0EsSUFBSSxDQUFDNzRFLElBQUwsQ0FBVSxJQUFWLEVBQWdCc3ZFLENBQWhCLEVBQW1CemxFLENBQW5CLENBQVQ7QUFDQXlsRSxNQUFBQSxDQUFDLENBQUMzaEUsS0FBRixHQUFVc3JFLFNBQVMsQ0FBQ2o1RSxJQUFWLENBQWUsSUFBZixFQUFxQnN2RSxDQUFyQixFQUF3QnpsRSxDQUF4QixDQUFWO0FBQ0F5bEUsTUFBQUEsQ0FBQyxDQUFDaUwsTUFBRixHQUFXcEIsVUFBVSxDQUFDbjVFLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JzdkUsQ0FBdEIsRUFBeUJ6bEUsQ0FBekIsQ0FBWDtBQUNBeWxFLE1BQUFBLENBQUMsQ0FBQzhKLE1BQUYsR0FBV0EsTUFBTSxDQUFDcDVFLElBQVAsQ0FBWSxJQUFaLEVBQWtCc3ZFLENBQWxCLEVBQXFCemxFLENBQXJCLENBQVg7QUFDQXlsRSxNQUFBQSxDQUFDLENBQUN6L0MsSUFBRixHQUFTLENBQUMsQ0FBQ2twRCxRQUFRLENBQUMvNEUsSUFBVCxDQUFjLElBQWQsRUFBb0JzdkUsQ0FBcEIsRUFBdUJ6bEUsQ0FBdkIsQ0FBWDtBQUNBeWxFLE1BQUFBLENBQUMsQ0FBQ2dLLE9BQUYsR0FBWUEsT0FBTyxDQUFDdDVFLElBQVIsQ0FBYSxJQUFiLEVBQW1Cc3ZFLENBQW5CLEVBQXNCemxFLENBQXRCLENBQVo7QUFDQSxhQUFPeWxFLENBQVA7QUFDRCxLQVRNLEVBU0podkQsSUFUSSxDQVNDLFVBQVNwYixDQUFULEVBQVk0SixDQUFaLEVBQWU7QUFBRSxhQUFPQSxDQUFDLENBQUMrZ0IsSUFBRixHQUFTM3FCLENBQUMsQ0FBQzJxQixJQUFsQjtBQUF5QixLQVQzQyxDQU5YO0FBaUJBLFFBQUkrcEQsS0FBSixFQUFXakMsYUFBYSxDQUFDaUMsS0FBRCxDQUFiO0FBQ1hBLElBQUFBLEtBQUssR0FBRzN6QixXQUFXLENBQUMvdkMsSUFBRCxFQUFPLENBQVAsQ0FBbkI7QUFDQUEsSUFBQUEsSUFBSTtBQUVKLFdBQU8yakUsS0FBUDs7QUFFQSxhQUFTM2pFLElBQVQsR0FBZ0I7QUFDZCxVQUFJc0MsS0FBSyxHQUFHNFEsSUFBSSxDQUFDRyxHQUFMLEVBQVo7O0FBQ0EsYUFBT0gsSUFBSSxDQUFDRyxHQUFMLEtBQWEvUSxLQUFiLEdBQXFCbWhFLFlBQXJCLElBQXFDLEVBQUU5dkUsQ0FBRixHQUFNd08sQ0FBM0MsSUFBZ0R1aEUsS0FBdkQsRUFBOEQ7QUFDNUQsWUFBSXRLLENBQUMsR0FBRzNrRSxJQUFJLENBQUNkLENBQUQsQ0FBWjtBQUNBeWxFLFFBQUFBLENBQUMsQ0FBQ3R1RCxDQUFGLEdBQU82TyxJQUFJLENBQUMsQ0FBRCxDQUFKLElBQVc5ckIsTUFBTSxLQUFLLEVBQXRCLENBQUQsSUFBK0IsQ0FBckM7QUFDQXVyRSxRQUFBQSxDQUFDLENBQUNydUQsQ0FBRixHQUFPNE8sSUFBSSxDQUFDLENBQUQsQ0FBSixJQUFXOXJCLE1BQU0sS0FBSyxFQUF0QixDQUFELElBQStCLENBQXJDO0FBQ0F5MkUsUUFBQUEsV0FBVyxDQUFDUCxlQUFELEVBQWtCM0ssQ0FBbEIsRUFBcUIza0UsSUFBckIsRUFBMkJkLENBQTNCLENBQVg7O0FBQ0EsWUFBSXlsRSxDQUFDLENBQUNtTCxPQUFGLElBQWFDLEtBQUssQ0FBQ1AsS0FBRCxFQUFRN0ssQ0FBUixFQUFXK0ssTUFBWCxDQUF0QixFQUEwQztBQUN4Q0MsVUFBQUEsSUFBSSxDQUFDLzJFLElBQUwsQ0FBVStyRSxDQUFWO0FBQ0EvMUMsVUFBQUEsS0FBSyxDQUFDdjVCLElBQU4sQ0FBVyxNQUFYLEVBQW1CNjVFLEtBQW5CLEVBQTBCdkssQ0FBMUI7QUFDQSxjQUFJK0ssTUFBSixFQUFZTSxXQUFXLENBQUNOLE1BQUQsRUFBUy9LLENBQVQsQ0FBWCxDQUFaLEtBQ0srSyxNQUFNLEdBQUcsQ0FBQztBQUFDcjVELFlBQUFBLENBQUMsRUFBRXN1RCxDQUFDLENBQUN0dUQsQ0FBRixHQUFNc3VELENBQUMsQ0FBQy95QixFQUFaO0FBQWdCdDdCLFlBQUFBLENBQUMsRUFBRXF1RCxDQUFDLENBQUNydUQsQ0FBRixHQUFNcXVELENBQUMsQ0FBQzd5QjtBQUEzQixXQUFELEVBQWlDO0FBQUN6N0IsWUFBQUEsQ0FBQyxFQUFFc3VELENBQUMsQ0FBQ3R1RCxDQUFGLEdBQU1zdUQsQ0FBQyxDQUFDOXlCLEVBQVo7QUFBZ0J2N0IsWUFBQUEsQ0FBQyxFQUFFcXVELENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU1xdUQsQ0FBQyxDQUFDNXlCO0FBQTNCLFdBQWpDLENBQVQsQ0FKbUM7O0FBTXhDNHlCLFVBQUFBLENBQUMsQ0FBQ3R1RCxDQUFGLElBQU82TyxJQUFJLENBQUMsQ0FBRCxDQUFKLElBQVcsQ0FBbEI7QUFDQXkvQyxVQUFBQSxDQUFDLENBQUNydUQsQ0FBRixJQUFPNE8sSUFBSSxDQUFDLENBQUQsQ0FBSixJQUFXLENBQWxCO0FBQ0Q7QUFDRjs7QUFDRCxVQUFJaG1CLENBQUMsSUFBSXdPLENBQVQsRUFBWTtBQUNWd2hFLFFBQUFBLEtBQUssQ0FBQzFqRSxJQUFOO0FBQ0FvakIsUUFBQUEsS0FBSyxDQUFDdjVCLElBQU4sQ0FBVyxLQUFYLEVBQWtCNjVFLEtBQWxCLEVBQXlCUyxJQUF6QixFQUErQkQsTUFBL0I7QUFDRDtBQUNGO0FBQ0YsR0E5Q0Q7O0FBZ0RBUixFQUFBQSxLQUFLLENBQUMxakUsSUFBTixHQUFhLFlBQVc7QUFDdEIsUUFBSXlqRSxLQUFKLEVBQVc7QUFDVGpDLE1BQUFBLGFBQWEsQ0FBQ2lDLEtBQUQsQ0FBYjtBQUNBQSxNQUFBQSxLQUFLLEdBQUcsSUFBUjtBQUNEOztBQUNELFdBQU9DLEtBQVA7QUFDRCxHQU5EOztBQVFBLFdBQVNLLFVBQVQsQ0FBb0JKLE1BQXBCLEVBQTRCO0FBQzFCQSxJQUFBQSxNQUFNLENBQUNjLEtBQVAsR0FBZWQsTUFBTSxDQUFDZSxNQUFQLEdBQWdCLENBQS9CO0FBQ0EsUUFBSUMsS0FBSyxHQUFHaDhFLElBQUksQ0FBQyt4QixJQUFMLENBQVVpcEQsTUFBTSxDQUFDSSxVQUFQLENBQWtCLElBQWxCLEVBQXdCYSxZQUF4QixDQUFxQyxDQUFyQyxFQUF3QyxDQUF4QyxFQUEyQyxDQUEzQyxFQUE4QyxDQUE5QyxFQUFpRHB3RSxJQUFqRCxDQUFzRHJKLE1BQXRELElBQWdFLENBQTFFLENBQVo7QUFDQXc0RSxJQUFBQSxNQUFNLENBQUNjLEtBQVAsR0FBZSxDQUFDakMsRUFBRSxJQUFJLENBQVAsSUFBWW1DLEtBQTNCO0FBQ0FoQixJQUFBQSxNQUFNLENBQUNlLE1BQVAsR0FBZ0J0d0MsRUFBRSxHQUFHdXdDLEtBQXJCO0FBRUEsUUFBSW5iLE9BQU8sR0FBR21hLE1BQU0sQ0FBQ0ksVUFBUCxDQUFrQixJQUFsQixDQUFkO0FBQ0F2YSxJQUFBQSxPQUFPLENBQUNxYixTQUFSLEdBQW9CcmIsT0FBTyxDQUFDc2IsV0FBUixHQUFzQixLQUExQztBQUNBdGIsSUFBQUEsT0FBTyxDQUFDdWIsU0FBUixHQUFvQixRQUFwQjtBQUVBLFdBQU87QUFBQ3ZiLE1BQUFBLE9BQU8sRUFBRUEsT0FBVjtBQUFtQm1iLE1BQUFBLEtBQUssRUFBRUE7QUFBMUIsS0FBUDtBQUNEOztBQUVELFdBQVNKLEtBQVQsQ0FBZVAsS0FBZixFQUFzQmp1RSxHQUF0QixFQUEyQm11RSxNQUEzQixFQUFtQztBQUNqQyxJQUFnQixDQUFDO0FBQUNyNUQsTUFBQUEsQ0FBQyxFQUFFLENBQUo7QUFBT0MsTUFBQUEsQ0FBQyxFQUFFO0FBQVYsS0FBRCxFQUFlO0FBQUNELE1BQUFBLENBQUMsRUFBRTZPLElBQUksQ0FBQyxDQUFELENBQVI7QUFBYTVPLE1BQUFBLENBQUMsRUFBRTRPLElBQUksQ0FBQyxDQUFEO0FBQXBCLEtBQWYsQ0FBaEI7QUFBQSxZQUNJc3JELE1BQU0sR0FBR2p2RSxHQUFHLENBQUM4VSxDQURqQjtBQUFBLFFBRUlvNkQsTUFBTSxHQUFHbHZFLEdBQUcsQ0FBQytVLENBRmpCO0FBQUEsUUFHSW82RCxRQUFRLEdBQUd2OEUsSUFBSSxDQUFDK3hCLElBQUwsQ0FBVWhCLElBQUksQ0FBQyxDQUFELENBQUosR0FBVUEsSUFBSSxDQUFDLENBQUQsQ0FBZCxHQUFvQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixHQUFVQSxJQUFJLENBQUMsQ0FBRCxDQUE1QyxDQUhmO0FBQUEsUUFJSW9HLENBQUMsR0FBR3VqRCxNQUFNLENBQUMzcEQsSUFBRCxDQUpkO0FBQUEsUUFLSXlyRCxFQUFFLEdBQUd2M0UsTUFBTSxLQUFLLEVBQVgsR0FBZ0IsQ0FBaEIsR0FBb0IsQ0FBQyxDQUw5QjtBQUFBLFFBTUk2dEIsQ0FBQyxHQUFHLENBQUMwcEQsRUFOVDtBQUFBLFFBT0lDLElBUEo7QUFBQSxRQVFJQyxFQVJKO0FBQUEsUUFTSUM7O0FBRUosV0FBT0YsSUFBSSxHQUFHdGxELENBQUMsQ0FBQ3JFLENBQUMsSUFBSTBwRCxFQUFOLENBQWYsRUFBMEI7QUFDeEJFLE1BQUFBLEVBQUUsR0FBRyxDQUFDLENBQUNELElBQUksQ0FBQyxDQUFELENBQVg7QUFDQUUsTUFBQUEsRUFBRSxHQUFHLENBQUMsQ0FBQ0YsSUFBSSxDQUFDLENBQUQsQ0FBWDtBQUVBLFVBQUl6OEUsSUFBSSxDQUFDZ0ssR0FBTCxDQUFTaEssSUFBSSxDQUFDa2pCLEdBQUwsQ0FBU3c1RCxFQUFULENBQVQsRUFBdUIxOEUsSUFBSSxDQUFDa2pCLEdBQUwsQ0FBU3k1RCxFQUFULENBQXZCLEtBQXdDSixRQUE1QyxFQUFzRDtBQUV0RG52RSxNQUFBQSxHQUFHLENBQUM4VSxDQUFKLEdBQVFtNkQsTUFBTSxHQUFHSyxFQUFqQjtBQUNBdHZFLE1BQUFBLEdBQUcsQ0FBQytVLENBQUosR0FBUW02RCxNQUFNLEdBQUdLLEVBQWpCO0FBRUEsVUFBSXZ2RSxHQUFHLENBQUM4VSxDQUFKLEdBQVE5VSxHQUFHLENBQUNxd0MsRUFBWixHQUFpQixDQUFqQixJQUFzQnJ3QyxHQUFHLENBQUMrVSxDQUFKLEdBQVEvVSxHQUFHLENBQUN1d0MsRUFBWixHQUFpQixDQUF2QyxJQUNBdndDLEdBQUcsQ0FBQzhVLENBQUosR0FBUTlVLEdBQUcsQ0FBQ3N3QyxFQUFaLEdBQWlCM3NCLElBQUksQ0FBQyxDQUFELENBRHJCLElBQzRCM2pCLEdBQUcsQ0FBQytVLENBQUosR0FBUS9VLEdBQUcsQ0FBQ3d3QyxFQUFaLEdBQWlCN3NCLElBQUksQ0FBQyxDQUFELENBRHJELEVBQzBELFNBVmxDOztBQVl4QixVQUFJLENBQUN3cUQsTUFBRCxJQUFXLENBQUNxQixZQUFZLENBQUN4dkUsR0FBRCxFQUFNaXVFLEtBQU4sRUFBYXRxRCxJQUFJLENBQUMsQ0FBRCxDQUFqQixDQUE1QixFQUFtRDtBQUNqRCxZQUFJLENBQUN3cUQsTUFBRCxJQUFXc0IsWUFBWSxDQUFDenZFLEdBQUQsRUFBTW11RSxNQUFOLENBQTNCLEVBQTBDO0FBQ3hDLGNBQUl1QixNQUFNLEdBQUcxdkUsR0FBRyxDQUFDMHZFLE1BQWpCO0FBQUEsY0FDSUMsQ0FBQyxHQUFHM3ZFLEdBQUcsQ0FBQzB1RSxLQUFKLElBQWEsQ0FEckI7QUFBQSxjQUVJa0IsRUFBRSxHQUFHanNELElBQUksQ0FBQyxDQUFELENBQUosSUFBVyxDQUZwQjtBQUFBLGNBR0lrc0QsRUFBRSxHQUFHN3ZFLEdBQUcsQ0FBQzhVLENBQUosSUFBUzY2RCxDQUFDLElBQUksQ0FBZCxDQUhUO0FBQUEsY0FJSUcsRUFBRSxHQUFHRCxFQUFFLEdBQUcsSUFKZDtBQUFBLGNBS0lFLEdBQUcsR0FBRyxLQUFLRCxFQUxmO0FBQUEsY0FNSUUsQ0FBQyxHQUFHaHdFLEdBQUcsQ0FBQ3d3QyxFQUFKLEdBQVN4d0MsR0FBRyxDQUFDdXdDLEVBTnJCO0FBQUEsY0FPSXo3QixDQUFDLEdBQUcsQ0FBQzlVLEdBQUcsQ0FBQytVLENBQUosR0FBUS9VLEdBQUcsQ0FBQ3V3QyxFQUFiLElBQW1CcS9CLEVBQW5CLElBQXlCQyxFQUFFLElBQUksQ0FBL0IsQ0FQUjtBQUFBLGNBUUluc0QsSUFSSjs7QUFTQSxlQUFLLElBQUlwUSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHMDhELENBQXBCLEVBQXVCMThELENBQUMsRUFBeEIsRUFBNEI7QUFDMUJvUSxZQUFBQSxJQUFJLEdBQUcsQ0FBUDs7QUFDQSxpQkFBSyxJQUFJL2xCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLElBQUlneUUsQ0FBckIsRUFBd0JoeUUsQ0FBQyxFQUF6QixFQUE2QjtBQUMzQnN3RSxjQUFBQSxLQUFLLENBQUNuNUQsQ0FBQyxHQUFHblgsQ0FBTCxDQUFMLElBQWlCK2xCLElBQUksSUFBSXFzRCxHQUFULElBQWlCcHlFLENBQUMsR0FBR2d5RSxDQUFKLEdBQVEsQ0FBQ2pzRCxJQUFJLEdBQUdnc0QsTUFBTSxDQUFDcDhELENBQUMsR0FBR3E4RCxDQUFKLEdBQVFoeUUsQ0FBVCxDQUFkLE1BQStCbXlFLEVBQXZDLEdBQTRDLENBQTdELENBQWhCO0FBQ0Q7O0FBQ0RoN0QsWUFBQUEsQ0FBQyxJQUFJODZELEVBQUw7QUFDRDs7QUFDRCxpQkFBTzV2RSxHQUFHLENBQUMwdkUsTUFBWDtBQUNBLGlCQUFPLElBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQvQixFQUFBQSxLQUFLLENBQUNGLFlBQU4sR0FBcUIsVUFBUzd1QyxDQUFULEVBQVk7QUFDL0IsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0JxNEUsWUFBWSxHQUFHN3VDLENBQUMsSUFBSSxJQUFMLEdBQVkvbkIsUUFBWixHQUF1QituQixDQUF0QyxFQUF5Qyt1QyxLQUE3RCxJQUFzRUYsWUFBN0U7QUFDRCxHQUZEOztBQUlBRSxFQUFBQSxLQUFLLENBQUNILEtBQU4sR0FBYyxVQUFTNXVDLENBQVQsRUFBWTtBQUN4QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQm80RSxLQUFLLEdBQUc1dUMsQ0FBUixFQUFXK3VDLEtBQS9CLElBQXdDSCxLQUEvQztBQUNELEdBRkQ7O0FBSUFHLEVBQUFBLEtBQUssQ0FBQ2hxRCxJQUFOLEdBQWEsVUFBU2liLENBQVQsRUFBWTtBQUN2QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQnV1QixJQUFJLEdBQUcsQ0FBQyxDQUFDaWIsQ0FBQyxDQUFDLENBQUQsQ0FBSCxFQUFRLENBQUNBLENBQUMsQ0FBQyxDQUFELENBQVYsQ0FBUCxFQUF1Qit1QyxLQUEzQyxJQUFvRGhxRCxJQUEzRDtBQUNELEdBRkQ7O0FBSUFncUQsRUFBQUEsS0FBSyxDQUFDaEIsSUFBTixHQUFhLFVBQVMvdEMsQ0FBVCxFQUFZO0FBQ3ZCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CdTNFLElBQUksR0FBR21CLE9BQU8sQ0FBQ2x2QyxDQUFELENBQWQsRUFBbUIrdUMsS0FBdkMsSUFBZ0RoQixJQUF2RDtBQUNELEdBRkQ7O0FBSUFnQixFQUFBQSxLQUFLLENBQUNaLFNBQU4sR0FBa0IsVUFBU251QyxDQUFULEVBQVk7QUFDNUIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0IyM0UsU0FBUyxHQUFHZSxPQUFPLENBQUNsdkMsQ0FBRCxDQUFuQixFQUF3Qit1QyxLQUE1QyxJQUFxRFosU0FBNUQ7QUFDRCxHQUZEOztBQUlBWSxFQUFBQSxLQUFLLENBQUNWLFVBQU4sR0FBbUIsVUFBU3J1QyxDQUFULEVBQVk7QUFDN0IsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0I2M0UsVUFBVSxHQUFHYSxPQUFPLENBQUNsdkMsQ0FBRCxDQUFwQixFQUF5Qit1QyxLQUE3QyxJQUFzRFYsVUFBN0Q7QUFDRCxHQUZEOztBQUlBVSxFQUFBQSxLQUFLLENBQUNULE1BQU4sR0FBZSxVQUFTdHVDLENBQVQsRUFBWTtBQUN6QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQjgzRSxNQUFNLEdBQUdZLE9BQU8sQ0FBQ2x2QyxDQUFELENBQWhCLEVBQXFCK3VDLEtBQXpDLElBQWtEVCxNQUF6RDtBQUNELEdBRkQ7O0FBSUFTLEVBQUFBLEtBQUssQ0FBQ3ppQixJQUFOLEdBQWEsVUFBU3RzQixDQUFULEVBQVk7QUFDdkIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0I4MUQsSUFBSSxHQUFHNGlCLE9BQU8sQ0FBQ2x2QyxDQUFELENBQWQsRUFBbUIrdUMsS0FBdkMsSUFBZ0R6aUIsSUFBdkQ7QUFDRCxHQUZEOztBQUlBeWlCLEVBQUFBLEtBQUssQ0FBQ0wsTUFBTixHQUFlLFVBQVMxdUMsQ0FBVCxFQUFZO0FBQ3pCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CazRFLE1BQU0sR0FBRzJDLE9BQU8sQ0FBQ3J4QyxDQUFELENBQVAsSUFBY0EsQ0FBdkIsRUFBMEIrdUMsS0FBOUMsSUFBdURMLE1BQTlEO0FBQ0QsR0FGRDs7QUFJQUssRUFBQUEsS0FBSyxDQUFDZCxRQUFOLEdBQWlCLFVBQVNqdUMsQ0FBVCxFQUFZO0FBQzNCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CeTNFLFFBQVEsR0FBR2lCLE9BQU8sQ0FBQ2x2QyxDQUFELENBQWxCLEVBQXVCK3VDLEtBQTNDLElBQW9EZCxRQUEzRDtBQUNELEdBRkQ7O0FBSUFjLEVBQUFBLEtBQUssQ0FBQ1AsT0FBTixHQUFnQixVQUFTeHVDLENBQVQsRUFBWTtBQUMxQixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQmc0RSxPQUFPLEdBQUdVLE9BQU8sQ0FBQ2x2QyxDQUFELENBQWpCLEVBQXNCK3VDLEtBQTFDLElBQW1EUCxPQUExRDtBQUNELEdBRkQ7O0FBSUFPLEVBQUFBLEtBQUssQ0FBQzkxRSxNQUFOLEdBQWUsVUFBUyttQyxDQUFULEVBQVk7QUFDekIsV0FBT3pwQyxTQUFTLENBQUNDLE1BQVYsSUFBb0J5QyxNQUFNLEdBQUcrbUMsQ0FBVCxFQUFZK3VDLEtBQWhDLElBQXlDOTFFLE1BQWhEO0FBQ0QsR0FGRDs7QUFJQTgxRSxFQUFBQSxLQUFLLENBQUN0QixFQUFOLEdBQVcsWUFBVztBQUNwQixRQUFJbDRFLEtBQUssR0FBR2s1QixLQUFLLENBQUNnL0MsRUFBTixDQUFTdnBFLEtBQVQsQ0FBZXVxQixLQUFmLEVBQXNCbDRCLFNBQXRCLENBQVo7QUFDQSxXQUFPaEIsS0FBSyxLQUFLazVCLEtBQVYsR0FBa0JzZ0QsS0FBbEIsR0FBMEJ4NUUsS0FBakM7QUFDRCxHQUhEOztBQUtBLFNBQU93NUUsS0FBUDtBQUNELENBbk1EOztBQXFNQSxTQUFTakIsU0FBVCxDQUFtQnRKLENBQW5CLEVBQXNCO0FBQ3BCLFNBQU9BLENBQUMsQ0FBQ2xZLElBQVQ7QUFDRDs7QUFFRCxTQUFTMGhCLFNBQVQsR0FBcUI7QUFDbkIsU0FBTyxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0ksZUFBVCxHQUEyQjtBQUN6QixTQUFPLFFBQVA7QUFDRDs7QUFFRCxTQUFTRixhQUFULENBQXVCMUosQ0FBdkIsRUFBMEI7QUFDeEIsU0FBT3h3RSxJQUFJLENBQUMreEIsSUFBTCxDQUFVeStDLENBQUMsQ0FBQ2p2RSxLQUFaLENBQVA7QUFDRDs7QUFFRCxTQUFTZzVFLFdBQVQsR0FBdUI7QUFDckIsU0FBTyxDQUFDLENBQUMsRUFBRXY2RSxJQUFJLENBQUNpRixNQUFMLEtBQWdCLENBQWxCLENBQUQsR0FBd0IsQ0FBekIsSUFBOEIsRUFBckM7QUFDRDs7QUFFRCxTQUFTdzFFLFlBQVQsR0FBd0I7QUFDdEIsU0FBTyxDQUFQO0FBQ0Q7QUFHRDs7O0FBQ0EsU0FBU2lCLFdBQVQsQ0FBcUJQLGVBQXJCLEVBQXNDM0ssQ0FBdEMsRUFBeUMza0UsSUFBekMsRUFBK0N5eEUsRUFBL0MsRUFBbUQ7QUFDakQsTUFBSTlNLENBQUMsQ0FBQ3NNLE1BQU4sRUFBYztBQUNkLE1BQUk3c0UsQ0FBQyxHQUFHa3JFLGVBQWUsQ0FBQ3RhLE9BQXhCO0FBQUEsTUFDSW1iLEtBQUssR0FBR2IsZUFBZSxDQUFDYSxLQUQ1QjtBQUdBL3JFLEVBQUFBLENBQUMsQ0FBQ3N0RSxTQUFGLENBQVksQ0FBWixFQUFlLENBQWYsRUFBa0IsQ0FBQzFELEVBQUUsSUFBSSxDQUFQLElBQVltQyxLQUE5QixFQUFxQ3Z3QyxFQUFFLEdBQUd1d0MsS0FBMUM7QUFDQSxNQUFJOTVELENBQUMsR0FBRyxDQUFSO0FBQUEsTUFDSUMsQ0FBQyxHQUFHLENBRFI7QUFBQSxNQUVJcTdELElBQUksR0FBRyxDQUZYO0FBQUEsTUFHSWprRSxDQUFDLEdBQUcxTixJQUFJLENBQUNySixNQUhiO0FBSUEsSUFBRTg2RSxFQUFGOztBQUNBLFNBQU8sRUFBRUEsRUFBRixHQUFPL2pFLENBQWQsRUFBaUI7QUFDZmkzRCxJQUFBQSxDQUFDLEdBQUcza0UsSUFBSSxDQUFDeXhFLEVBQUQsQ0FBUjtBQUNBcnRFLElBQUFBLENBQUMsQ0FBQ3d0RSxJQUFGO0FBQ0F4dEUsSUFBQUEsQ0FBQyxDQUFDOHBFLElBQUYsR0FBU3ZKLENBQUMsQ0FBQzNoRSxLQUFGLEdBQVUsR0FBVixHQUFnQjJoRSxDQUFDLENBQUNpTCxNQUFsQixHQUEyQixHQUEzQixHQUFpQyxDQUFDLEVBQUUsQ0FBQ2pMLENBQUMsQ0FBQ3ovQyxJQUFGLEdBQVMsQ0FBVixJQUFlaXJELEtBQWpCLENBQWxDLEdBQTRELEtBQTVELEdBQW9FeEwsQ0FBQyxDQUFDdUosSUFBL0U7QUFDQSxRQUFJZ0QsQ0FBQyxHQUFHOXNFLENBQUMsQ0FBQ3l0RSxXQUFGLENBQWNsTixDQUFDLENBQUNsWSxJQUFGLEdBQVMsR0FBdkIsRUFBNEJ3akIsS0FBNUIsR0FBb0NFLEtBQTVDO0FBQUEsUUFDSW9CLENBQUMsR0FBRzVNLENBQUMsQ0FBQ3ovQyxJQUFGLElBQVUsQ0FEbEI7O0FBRUEsUUFBSXkvQyxDQUFDLENBQUM4SixNQUFOLEVBQWM7QUFDWixVQUFJcUQsRUFBRSxHQUFHMzlFLElBQUksQ0FBQzQ5RSxHQUFMLENBQVNwTixDQUFDLENBQUM4SixNQUFGLEdBQVdWLFlBQXBCLENBQVQ7QUFBQSxVQUNJaUUsRUFBRSxHQUFHNzlFLElBQUksQ0FBQzg5RSxHQUFMLENBQVN0TixDQUFDLENBQUM4SixNQUFGLEdBQVdWLFlBQXBCLENBRFQ7QUFBQSxVQUVJbUUsR0FBRyxHQUFHaEIsQ0FBQyxHQUFHYyxFQUZkO0FBQUEsVUFHSUcsR0FBRyxHQUFHakIsQ0FBQyxHQUFHWSxFQUhkO0FBQUEsVUFJSU0sR0FBRyxHQUFHYixDQUFDLEdBQUdTLEVBSmQ7QUFBQSxVQUtJSyxHQUFHLEdBQUdkLENBQUMsR0FBR08sRUFMZDtBQU1BWixNQUFBQSxDQUFDLEdBQUkvOEUsSUFBSSxDQUFDK0osR0FBTCxDQUFTL0osSUFBSSxDQUFDa2pCLEdBQUwsQ0FBUzY2RCxHQUFHLEdBQUdHLEdBQWYsQ0FBVCxFQUE4QmwrRSxJQUFJLENBQUNrakIsR0FBTCxDQUFTNjZELEdBQUcsR0FBR0csR0FBZixDQUE5QixJQUFxRCxJQUF0RCxJQUErRCxDQUEvRCxJQUFvRSxDQUF4RTtBQUNBZCxNQUFBQSxDQUFDLEdBQUcsQ0FBQyxDQUFDcDlFLElBQUksQ0FBQytKLEdBQUwsQ0FBUy9KLElBQUksQ0FBQ2tqQixHQUFMLENBQVM4NkQsR0FBRyxHQUFHQyxHQUFmLENBQVQsRUFBOEJqK0UsSUFBSSxDQUFDa2pCLEdBQUwsQ0FBUzg2RCxHQUFHLEdBQUdDLEdBQWYsQ0FBOUIsQ0FBTjtBQUNELEtBVEQsTUFTTztBQUNMbEIsTUFBQUEsQ0FBQyxHQUFJQSxDQUFDLEdBQUcsSUFBTCxJQUFjLENBQWQsSUFBbUIsQ0FBdkI7QUFDRDs7QUFDRCxRQUFJSyxDQUFDLEdBQUdJLElBQVIsRUFBY0EsSUFBSSxHQUFHSixDQUFQOztBQUNkLFFBQUlsN0QsQ0FBQyxHQUFHNjZELENBQUosSUFBVWxELEVBQUUsSUFBSSxDQUFwQixFQUF3QjtBQUN0QjMzRCxNQUFBQSxDQUFDLEdBQUcsQ0FBSjtBQUNBQyxNQUFBQSxDQUFDLElBQUlxN0QsSUFBTDtBQUNBQSxNQUFBQSxJQUFJLEdBQUcsQ0FBUDtBQUNEOztBQUNELFFBQUlyN0QsQ0FBQyxHQUFHaTdELENBQUosSUFBUzN4QyxFQUFiLEVBQWlCO0FBQ2pCeDdCLElBQUFBLENBQUMsQ0FBQ2t1RSxTQUFGLENBQVksQ0FBQ2o4RCxDQUFDLElBQUk2NkQsQ0FBQyxJQUFJLENBQVQsQ0FBRixJQUFpQmYsS0FBN0IsRUFBb0MsQ0FBQzc1RCxDQUFDLElBQUlpN0QsQ0FBQyxJQUFJLENBQVQsQ0FBRixJQUFpQnBCLEtBQXJEO0FBQ0EsUUFBSXhMLENBQUMsQ0FBQzhKLE1BQU4sRUFBY3JxRSxDQUFDLENBQUNxcUUsTUFBRixDQUFTOUosQ0FBQyxDQUFDOEosTUFBRixHQUFXVixZQUFwQjtBQUNkM3BFLElBQUFBLENBQUMsQ0FBQ211RSxRQUFGLENBQVc1TixDQUFDLENBQUNsWSxJQUFiLEVBQW1CLENBQW5CLEVBQXNCLENBQXRCO0FBQ0EsUUFBSWtZLENBQUMsQ0FBQ2dLLE9BQU4sRUFBZXZxRSxDQUFDLENBQUNvdUUsU0FBRixHQUFjLElBQUk3TixDQUFDLENBQUNnSyxPQUFwQixFQUE2QnZxRSxDQUFDLENBQUNxdUUsVUFBRixDQUFhOU4sQ0FBQyxDQUFDbFksSUFBZixFQUFxQixDQUFyQixFQUF3QixDQUF4QixDQUE3QjtBQUNmcm9ELElBQUFBLENBQUMsQ0FBQ3N1RSxPQUFGO0FBQ0EvTixJQUFBQSxDQUFDLENBQUNzTCxLQUFGLEdBQVVpQixDQUFWO0FBQ0F2TSxJQUFBQSxDQUFDLENBQUN1TCxNQUFGLEdBQVdxQixDQUFYO0FBQ0E1TSxJQUFBQSxDQUFDLENBQUNnTyxJQUFGLEdBQVN0OEQsQ0FBVDtBQUNBc3VELElBQUFBLENBQUMsQ0FBQ2lPLElBQUYsR0FBU3Q4RCxDQUFUO0FBQ0FxdUQsSUFBQUEsQ0FBQyxDQUFDOXlCLEVBQUYsR0FBT3EvQixDQUFDLElBQUksQ0FBWjtBQUNBdk0sSUFBQUEsQ0FBQyxDQUFDNXlCLEVBQUYsR0FBT3cvQixDQUFDLElBQUksQ0FBWjtBQUNBNU0sSUFBQUEsQ0FBQyxDQUFDL3lCLEVBQUYsR0FBTyxDQUFDK3lCLENBQUMsQ0FBQzl5QixFQUFWO0FBQ0E4eUIsSUFBQUEsQ0FBQyxDQUFDN3lCLEVBQUYsR0FBTyxDQUFDNnlCLENBQUMsQ0FBQzV5QixFQUFWO0FBQ0E0eUIsSUFBQUEsQ0FBQyxDQUFDbUwsT0FBRixHQUFZLElBQVo7QUFDQXo1RCxJQUFBQSxDQUFDLElBQUk2NkQsQ0FBTDtBQUNEOztBQUNELE1BQUkyQixNQUFNLEdBQUd6dUUsQ0FBQyxDQUFDZ3NFLFlBQUYsQ0FBZSxDQUFmLEVBQWtCLENBQWxCLEVBQXFCLENBQUNwQyxFQUFFLElBQUksQ0FBUCxJQUFZbUMsS0FBakMsRUFBd0N2d0MsRUFBRSxHQUFHdXdDLEtBQTdDLEVBQW9EbndFLElBQWpFO0FBQUEsTUFDSWl4RSxNQUFNLEdBQUcsRUFEYjs7QUFFQSxTQUFPLEVBQUVRLEVBQUYsSUFBUSxDQUFmLEVBQWtCO0FBQ2hCOU0sSUFBQUEsQ0FBQyxHQUFHM2tFLElBQUksQ0FBQ3l4RSxFQUFELENBQVI7QUFDQSxRQUFJLENBQUM5TSxDQUFDLENBQUNtTCxPQUFQLEVBQWdCO0FBQ2hCLFFBQUlvQixDQUFDLEdBQUd2TSxDQUFDLENBQUNzTCxLQUFWO0FBQUEsUUFDSTZDLEdBQUcsR0FBRzVCLENBQUMsSUFBSSxDQURmO0FBQUEsUUFFSUssQ0FBQyxHQUFHNU0sQ0FBQyxDQUFDNXlCLEVBQUYsR0FBTzR5QixDQUFDLENBQUM3eUIsRUFGakIsQ0FIZ0I7O0FBT2hCLFNBQUssSUFBSTV5QyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHcXlFLENBQUMsR0FBR3VCLEdBQXhCLEVBQTZCNXpFLENBQUMsRUFBOUIsRUFBa0MreEUsTUFBTSxDQUFDL3hFLENBQUQsQ0FBTixHQUFZLENBQVo7O0FBQ2xDbVgsSUFBQUEsQ0FBQyxHQUFHc3VELENBQUMsQ0FBQ2dPLElBQU47QUFDQSxRQUFJdDhELENBQUMsSUFBSSxJQUFULEVBQWU7QUFDZkMsSUFBQUEsQ0FBQyxHQUFHcXVELENBQUMsQ0FBQ2lPLElBQU47QUFDQSxRQUFJRyxJQUFJLEdBQUcsQ0FBWDtBQUFBLFFBQ0lDLE9BQU8sR0FBRyxDQUFDLENBRGY7O0FBRUEsU0FBSyxJQUFJbitELENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcwOEQsQ0FBcEIsRUFBdUIxOEQsQ0FBQyxFQUF4QixFQUE0QjtBQUMxQixXQUFLLElBQUkzVixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHZ3lFLENBQXBCLEVBQXVCaHlFLENBQUMsRUFBeEIsRUFBNEI7QUFDMUIsWUFBSXVOLENBQUMsR0FBR3FtRSxHQUFHLEdBQUdqK0QsQ0FBTixJQUFXM1YsQ0FBQyxJQUFJLENBQWhCLENBQVI7QUFBQSxZQUNJd2dDLENBQUMsR0FBR216QyxNQUFNLENBQUUsQ0FBQ3Y4RCxDQUFDLEdBQUd6QixDQUFMLEtBQVdtNUQsRUFBRSxJQUFJLENBQWpCLEtBQXVCMzNELENBQUMsR0FBR25YLENBQTNCLENBQUQsSUFBbUMsQ0FBcEMsQ0FBTixHQUErQyxLQUFNLEtBQU1BLENBQUMsR0FBRyxFQUEvRCxHQUFzRSxDQUQ5RTtBQUVBK3hFLFFBQUFBLE1BQU0sQ0FBQ3hrRSxDQUFELENBQU4sSUFBYWl6QixDQUFiO0FBQ0FxekMsUUFBQUEsSUFBSSxJQUFJcnpDLENBQVI7QUFDRDs7QUFDRCxVQUFJcXpDLElBQUosRUFBVUMsT0FBTyxHQUFHbitELENBQVYsQ0FBVixLQUNLO0FBQ0g4dkQsUUFBQUEsQ0FBQyxDQUFDN3lCLEVBQUY7QUFDQXkvQixRQUFBQSxDQUFDO0FBQ0QxOEQsUUFBQUEsQ0FBQztBQUNEeUIsUUFBQUEsQ0FBQztBQUNGO0FBQ0Y7O0FBQ0RxdUQsSUFBQUEsQ0FBQyxDQUFDNXlCLEVBQUYsR0FBTzR5QixDQUFDLENBQUM3eUIsRUFBRixHQUFPa2hDLE9BQWQ7QUFDQXJPLElBQUFBLENBQUMsQ0FBQ3NNLE1BQUYsR0FBV0EsTUFBTSxDQUFDbjdFLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLENBQUM2dUUsQ0FBQyxDQUFDNXlCLEVBQUYsR0FBTzR5QixDQUFDLENBQUM3eUIsRUFBVixJQUFnQmdoQyxHQUFoQyxDQUFYO0FBQ0Q7QUFDRjs7O0FBR0QsU0FBUy9CLFlBQVQsQ0FBc0J4dkUsR0FBdEIsRUFBMkJpdUUsS0FBM0IsRUFBa0MyQixFQUFsQyxFQUFzQztBQUNwQ0EsRUFBQUEsRUFBRSxLQUFLLENBQVA7QUFDQSxNQUFJRixNQUFNLEdBQUcxdkUsR0FBRyxDQUFDMHZFLE1BQWpCO0FBQUEsTUFDSUMsQ0FBQyxHQUFHM3ZFLEdBQUcsQ0FBQzB1RSxLQUFKLElBQWEsQ0FEckI7QUFBQSxNQUVJbUIsRUFBRSxHQUFHN3ZFLEdBQUcsQ0FBQzhVLENBQUosSUFBUzY2RCxDQUFDLElBQUksQ0FBZCxDQUZUO0FBQUEsTUFHSUcsRUFBRSxHQUFHRCxFQUFFLEdBQUcsSUFIZDtBQUFBLE1BSUlFLEdBQUcsR0FBRyxLQUFLRCxFQUpmO0FBQUEsTUFLSUUsQ0FBQyxHQUFHaHdFLEdBQUcsQ0FBQ3d3QyxFQUFKLEdBQVN4d0MsR0FBRyxDQUFDdXdDLEVBTHJCO0FBQUEsTUFNSXo3QixDQUFDLEdBQUcsQ0FBQzlVLEdBQUcsQ0FBQytVLENBQUosR0FBUS9VLEdBQUcsQ0FBQ3V3QyxFQUFiLElBQW1CcS9CLEVBQW5CLElBQXlCQyxFQUFFLElBQUksQ0FBL0IsQ0FOUjtBQUFBLE1BT0luc0QsSUFQSjs7QUFRQSxPQUFLLElBQUlwUSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHMDhELENBQXBCLEVBQXVCMThELENBQUMsRUFBeEIsRUFBNEI7QUFDMUJvUSxJQUFBQSxJQUFJLEdBQUcsQ0FBUDs7QUFDQSxTQUFLLElBQUkvbEIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsSUFBSWd5RSxDQUFyQixFQUF3Qmh5RSxDQUFDLEVBQXpCLEVBQTZCO0FBQzNCLFVBQUksQ0FBRStsQixJQUFJLElBQUlxc0QsR0FBVCxJQUFpQnB5RSxDQUFDLEdBQUdneUUsQ0FBSixHQUFRLENBQUNqc0QsSUFBSSxHQUFHZ3NELE1BQU0sQ0FBQ3A4RCxDQUFDLEdBQUdxOEQsQ0FBSixHQUFRaHlFLENBQVQsQ0FBZCxNQUErQm15RSxFQUF2QyxHQUE0QyxDQUE3RCxDQUFELElBQ0U3QixLQUFLLENBQUNuNUQsQ0FBQyxHQUFHblgsQ0FBTCxDQURYLEVBQ29CLE9BQU8sSUFBUDtBQUNyQjs7QUFDRG1YLElBQUFBLENBQUMsSUFBSTg2RCxFQUFMO0FBQ0Q7O0FBQ0QsU0FBTyxLQUFQO0FBQ0Q7O0FBRUQsU0FBU25CLFdBQVQsQ0FBcUJOLE1BQXJCLEVBQTZCL0ssQ0FBN0IsRUFBZ0M7QUFDOUIsTUFBSXNPLEVBQUUsR0FBR3ZELE1BQU0sQ0FBQyxDQUFELENBQWY7QUFBQSxNQUNJd0QsRUFBRSxHQUFHeEQsTUFBTSxDQUFDLENBQUQsQ0FEZjtBQUVBLE1BQUkvSyxDQUFDLENBQUN0dUQsQ0FBRixHQUFNc3VELENBQUMsQ0FBQy95QixFQUFSLEdBQWFxaEMsRUFBRSxDQUFDNThELENBQXBCLEVBQXVCNDhELEVBQUUsQ0FBQzU4RCxDQUFILEdBQU9zdUQsQ0FBQyxDQUFDdHVELENBQUYsR0FBTXN1RCxDQUFDLENBQUMveUIsRUFBZjtBQUN2QixNQUFJK3lCLENBQUMsQ0FBQ3J1RCxDQUFGLEdBQU1xdUQsQ0FBQyxDQUFDN3lCLEVBQVIsR0FBYW1oQyxFQUFFLENBQUMzOEQsQ0FBcEIsRUFBdUIyOEQsRUFBRSxDQUFDMzhELENBQUgsR0FBT3F1RCxDQUFDLENBQUNydUQsQ0FBRixHQUFNcXVELENBQUMsQ0FBQzd5QixFQUFmO0FBQ3ZCLE1BQUk2eUIsQ0FBQyxDQUFDdHVELENBQUYsR0FBTXN1RCxDQUFDLENBQUM5eUIsRUFBUixHQUFhcWhDLEVBQUUsQ0FBQzc4RCxDQUFwQixFQUF1QjY4RCxFQUFFLENBQUM3OEQsQ0FBSCxHQUFPc3VELENBQUMsQ0FBQ3R1RCxDQUFGLEdBQU1zdUQsQ0FBQyxDQUFDOXlCLEVBQWY7QUFDdkIsTUFBSTh5QixDQUFDLENBQUNydUQsQ0FBRixHQUFNcXVELENBQUMsQ0FBQzV5QixFQUFSLEdBQWFtaEMsRUFBRSxDQUFDNThELENBQXBCLEVBQXVCNDhELEVBQUUsQ0FBQzU4RCxDQUFILEdBQU9xdUQsQ0FBQyxDQUFDcnVELENBQUYsR0FBTXF1RCxDQUFDLENBQUM1eUIsRUFBZjtBQUN4Qjs7QUFFRCxTQUFTaS9CLFlBQVQsQ0FBc0J6MkUsQ0FBdEIsRUFBeUI0SixDQUF6QixFQUE0QjtBQUMxQixTQUFPNUosQ0FBQyxDQUFDOGIsQ0FBRixHQUFNOWIsQ0FBQyxDQUFDczNDLEVBQVIsR0FBYTF0QyxDQUFDLENBQUMsQ0FBRCxDQUFELENBQUtrUyxDQUFsQixJQUF1QjliLENBQUMsQ0FBQzhiLENBQUYsR0FBTTliLENBQUMsQ0FBQ3EzQyxFQUFSLEdBQWF6dEMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFLa1MsQ0FBekMsSUFBOEM5YixDQUFDLENBQUMrYixDQUFGLEdBQU0vYixDQUFDLENBQUN3M0MsRUFBUixHQUFhNXRDLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS21TLENBQWhFLElBQXFFL2IsQ0FBQyxDQUFDK2IsQ0FBRixHQUFNL2IsQ0FBQyxDQUFDdTNDLEVBQVIsR0FBYTN0QyxDQUFDLENBQUMsQ0FBRCxDQUFELENBQUttUyxDQUE5RjtBQUNEOztBQUVELFNBQVN3NEQsaUJBQVQsQ0FBMkI1cEQsSUFBM0IsRUFBaUM7QUFDL0IsTUFBSXVHLENBQUMsR0FBR3ZHLElBQUksQ0FBQyxDQUFELENBQUosR0FBVUEsSUFBSSxDQUFDLENBQUQsQ0FBdEI7QUFDQSxTQUFPLFVBQVMrQixDQUFULEVBQVk7QUFDakIsV0FBTyxDQUFDd0UsQ0FBQyxJQUFJeEUsQ0FBQyxJQUFJLEVBQVQsQ0FBRCxHQUFnQjl5QixJQUFJLENBQUM4OUUsR0FBTCxDQUFTaHJELENBQVQsQ0FBakIsRUFBOEJBLENBQUMsR0FBRzl5QixJQUFJLENBQUM0OUUsR0FBTCxDQUFTOXFELENBQVQsQ0FBbEMsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTa3NELGlCQUFULENBQTJCanVELElBQTNCLEVBQWlDO0FBQy9CLE1BQUk0ckQsRUFBRSxHQUFHLENBQVQ7QUFBQSxNQUNJRCxFQUFFLEdBQUdDLEVBQUUsR0FBRzVyRCxJQUFJLENBQUMsQ0FBRCxDQUFULEdBQWVBLElBQUksQ0FBQyxDQUFELENBRDVCO0FBQUEsTUFFSTdPLENBQUMsR0FBRyxDQUZSO0FBQUEsTUFHSUMsQ0FBQyxHQUFHLENBSFI7QUFJQSxTQUFPLFVBQVMyUSxDQUFULEVBQVk7QUFDakIsUUFBSWhQLElBQUksR0FBR2dQLENBQUMsR0FBRyxDQUFKLEdBQVEsQ0FBQyxDQUFULEdBQWEsQ0FBeEIsQ0FEaUI7O0FBR2pCLFlBQVM5eUIsSUFBSSxDQUFDK3hCLElBQUwsQ0FBVSxJQUFJLElBQUlqTyxJQUFKLEdBQVdnUCxDQUF6QixJQUE4QmhQLElBQS9CLEdBQXVDLENBQS9DO0FBQ0UsV0FBSyxDQUFMO0FBQVM1QixRQUFBQSxDQUFDLElBQUl3NkQsRUFBTDtBQUFTOztBQUNsQixXQUFLLENBQUw7QUFBU3Y2RCxRQUFBQSxDQUFDLElBQUl3NkQsRUFBTDtBQUFTOztBQUNsQixXQUFLLENBQUw7QUFBU3o2RCxRQUFBQSxDQUFDLElBQUl3NkQsRUFBTDtBQUFTOztBQUNsQjtBQUFTdjZELFFBQUFBLENBQUMsSUFBSXc2RCxFQUFMO0FBQVM7QUFKcEI7O0FBTUEsV0FBTyxDQUFDejZELENBQUQsRUFBSUMsQ0FBSixDQUFQO0FBQ0QsR0FWRDtBQVdEOzs7QUFHRCxTQUFTbTVELFNBQVQsQ0FBbUIvaEUsQ0FBbkIsRUFBc0I7QUFDcEIsTUFBSW5ULENBQUMsR0FBRyxFQUFSO0FBQUEsTUFDSTJFLENBQUMsR0FBRyxDQUFDLENBRFQ7O0FBRUEsU0FBTyxFQUFFQSxDQUFGLEdBQU13TyxDQUFiLEVBQWdCblQsQ0FBQyxDQUFDMkUsQ0FBRCxDQUFELEdBQU8sQ0FBUDs7QUFDaEIsU0FBTzNFLENBQVA7QUFDRDs7QUFFRCxTQUFTNjBFLFdBQVQsR0FBdUI7QUFDckIsU0FBT2oxRSxRQUFRLENBQUNFLGFBQVQsQ0FBdUIsUUFBdkIsQ0FBUDtBQUNEOztBQUVELFNBQVNnMUUsT0FBVCxDQUFpQjFLLENBQWpCLEVBQW9CO0FBQ2xCLFNBQU8sT0FBT0EsQ0FBUCxLQUFhLFVBQWIsR0FBMEJBLENBQTFCLEdBQThCLFlBQVc7QUFBRSxXQUFPQSxDQUFQO0FBQVcsR0FBN0Q7QUFDRDs7QUFFRCxJQUFJNk0sT0FBTyxHQUFHO0FBQ1o0QixFQUFBQSxXQUFXLEVBQUV0RSxpQkFERDtBQUVadUUsRUFBQUEsV0FBVyxFQUFFRjtBQUZELENBQWQ7Ozs7QUN6WUEsSUFBSUcsY0FBYyxHQUFHLE9BQU8vb0IsT0FBUCxLQUFtQixXQUF4QztBQUNBLElBQUlncEIsTUFBTSxHQUFHLE9BQU96dEQsR0FBUCxLQUFlLFVBQTVCO0FBQ0EsSUFBSTB0RCxNQUFNLEdBQUcsT0FBT2g0QyxHQUFQLEtBQWUsVUFBNUI7QUFDQSxJQUFJaTRDLGNBQWMsR0FBRyxPQUFPdjhELFdBQVAsS0FBdUIsVUFBdkIsSUFBcUMsQ0FBQyxDQUFDQSxXQUFXLENBQUNrRyxNQUF4RTs7QUFJQSxTQUFTczJELEtBQVQsQ0FBZW41RSxDQUFmLEVBQWtCNEosQ0FBbEIsRUFBcUI7QUFDbkI7QUFDQSxNQUFJNUosQ0FBQyxLQUFLNEosQ0FBVixFQUFhLE9BQU8sSUFBUDs7QUFFYixNQUFJNUosQ0FBQyxJQUFJNEosQ0FBTCxJQUFVLE9BQU81SixDQUFQLElBQVksUUFBdEIsSUFBa0MsT0FBTzRKLENBQVAsSUFBWSxRQUFsRCxFQUE0RDtBQUMxRCxRQUFJNUosQ0FBQyxDQUFDMEssV0FBRixLQUFrQmQsQ0FBQyxDQUFDYyxXQUF4QixFQUFxQyxPQUFPLEtBQVA7QUFFckMsUUFBSXRPLE1BQUosRUFBWXVJLENBQVosRUFBZXpELElBQWY7O0FBQ0EsUUFBSXVGLEtBQUssQ0FBQ0MsT0FBTixDQUFjMUcsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCNUQsTUFBQUEsTUFBTSxHQUFHNEQsQ0FBQyxDQUFDNUQsTUFBWDtBQUNBLFVBQUlBLE1BQU0sSUFBSXdOLENBQUMsQ0FBQ3hOLE1BQWhCLEVBQXdCLE9BQU8sS0FBUDs7QUFDeEIsV0FBS3VJLENBQUMsR0FBR3ZJLE1BQVQsRUFBaUJ1SSxDQUFDLE9BQU8sQ0FBekIsR0FDRSxJQUFJLENBQUN3MEUsS0FBSyxDQUFDbjVFLENBQUMsQ0FBQzJFLENBQUQsQ0FBRixFQUFPaUYsQ0FBQyxDQUFDakYsQ0FBRCxDQUFSLENBQVYsRUFBd0IsT0FBTyxLQUFQOztBQUMxQixhQUFPLElBQVA7QUFDRCxLQVZ5RDtBQWExRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsUUFBSWhMLEVBQUo7O0FBQ0EsUUFBSXEvRSxNQUFNLElBQUtoNUUsQ0FBQyxZQUFZdXJCLEdBQXhCLElBQWlDM2hCLENBQUMsWUFBWTJoQixHQUFsRCxFQUF3RDtBQUN0RCxVQUFJdnJCLENBQUMsQ0FBQzJxQixJQUFGLEtBQVcvZ0IsQ0FBQyxDQUFDK2dCLElBQWpCLEVBQXVCLE9BQU8sS0FBUDtBQUN2Qmh4QixNQUFBQSxFQUFFLEdBQUdxRyxDQUFDLENBQUM2WCxPQUFGLEVBQUw7O0FBQ0EsYUFBTyxDQUFDLENBQUNsVCxDQUFDLEdBQUdoTCxFQUFFLENBQUNvWCxJQUFILEVBQUwsRUFBZ0JLLElBQXhCLEVBQ0UsSUFBSSxDQUFDeEgsQ0FBQyxDQUFDbkksR0FBRixDQUFNa0QsQ0FBQyxDQUFDeEosS0FBRixDQUFRLENBQVIsQ0FBTixDQUFMLEVBQXdCLE9BQU8sS0FBUDs7QUFDMUJ4QixNQUFBQSxFQUFFLEdBQUdxRyxDQUFDLENBQUM2WCxPQUFGLEVBQUw7O0FBQ0EsYUFBTyxDQUFDLENBQUNsVCxDQUFDLEdBQUdoTCxFQUFFLENBQUNvWCxJQUFILEVBQUwsRUFBZ0JLLElBQXhCLEVBQ0UsSUFBSSxDQUFDK25FLEtBQUssQ0FBQ3gwRSxDQUFDLENBQUN4SixLQUFGLENBQVEsQ0FBUixDQUFELEVBQWF5TyxDQUFDLENBQUNuUCxHQUFGLENBQU1rSyxDQUFDLENBQUN4SixLQUFGLENBQVEsQ0FBUixDQUFOLENBQWIsQ0FBVixFQUEyQyxPQUFPLEtBQVA7O0FBQzdDLGFBQU8sSUFBUDtBQUNEOztBQUVELFFBQUk4OUUsTUFBTSxJQUFLajVFLENBQUMsWUFBWWloQyxHQUF4QixJQUFpQ3IzQixDQUFDLFlBQVlxM0IsR0FBbEQsRUFBd0Q7QUFDdEQsVUFBSWpoQyxDQUFDLENBQUMycUIsSUFBRixLQUFXL2dCLENBQUMsQ0FBQytnQixJQUFqQixFQUF1QixPQUFPLEtBQVA7QUFDdkJoeEIsTUFBQUEsRUFBRSxHQUFHcUcsQ0FBQyxDQUFDNlgsT0FBRixFQUFMOztBQUNBLGFBQU8sQ0FBQyxDQUFDbFQsQ0FBQyxHQUFHaEwsRUFBRSxDQUFDb1gsSUFBSCxFQUFMLEVBQWdCSyxJQUF4QixFQUNFLElBQUksQ0FBQ3hILENBQUMsQ0FBQ25JLEdBQUYsQ0FBTWtELENBQUMsQ0FBQ3hKLEtBQUYsQ0FBUSxDQUFSLENBQU4sQ0FBTCxFQUF3QixPQUFPLEtBQVA7O0FBQzFCLGFBQU8sSUFBUDtBQUNELEtBbER5RDs7O0FBcUQxRCxRQUFJKzlFLGNBQWMsSUFBSXY4RCxXQUFXLENBQUNrRyxNQUFaLENBQW1CN2lCLENBQW5CLENBQWxCLElBQTJDMmMsV0FBVyxDQUFDa0csTUFBWixDQUFtQmpaLENBQW5CLENBQS9DLEVBQXNFO0FBQ3BFeE4sTUFBQUEsTUFBTSxHQUFHNEQsQ0FBQyxDQUFDNUQsTUFBWDtBQUNBLFVBQUlBLE1BQU0sSUFBSXdOLENBQUMsQ0FBQ3hOLE1BQWhCLEVBQXdCLE9BQU8sS0FBUDs7QUFDeEIsV0FBS3VJLENBQUMsR0FBR3ZJLE1BQVQsRUFBaUJ1SSxDQUFDLE9BQU8sQ0FBekIsR0FDRSxJQUFJM0UsQ0FBQyxDQUFDMkUsQ0FBRCxDQUFELEtBQVNpRixDQUFDLENBQUNqRixDQUFELENBQWQsRUFBbUIsT0FBTyxLQUFQOztBQUNyQixhQUFPLElBQVA7QUFDRDs7QUFFRCxRQUFJM0UsQ0FBQyxDQUFDMEssV0FBRixLQUFrQmtrQixNQUF0QixFQUE4QixPQUFPNXVCLENBQUMsQ0FBQ3FELE1BQUYsS0FBYXVHLENBQUMsQ0FBQ3ZHLE1BQWYsSUFBeUJyRCxDQUFDLENBQUMyOUIsS0FBRixLQUFZL3pCLENBQUMsQ0FBQyt6QixLQUE5QztBQUM5QixRQUFJMzlCLENBQUMsQ0FBQ2hDLE9BQUYsS0FBY3pELE1BQU0sQ0FBQytILFNBQVAsQ0FBaUJ0RSxPQUFuQyxFQUE0QyxPQUFPZ0MsQ0FBQyxDQUFDaEMsT0FBRixPQUFnQjRMLENBQUMsQ0FBQzVMLE9BQUYsRUFBdkI7QUFDNUMsUUFBSWdDLENBQUMsQ0FBQzFFLFFBQUYsS0FBZWYsTUFBTSxDQUFDK0gsU0FBUCxDQUFpQmhILFFBQXBDLEVBQThDLE9BQU8wRSxDQUFDLENBQUMxRSxRQUFGLE9BQWlCc08sQ0FBQyxDQUFDdE8sUUFBRixFQUF4QjtBQUU5QzRGLElBQUFBLElBQUksR0FBRzNHLE1BQU0sQ0FBQzJHLElBQVAsQ0FBWWxCLENBQVosQ0FBUDtBQUNBNUQsSUFBQUEsTUFBTSxHQUFHOEUsSUFBSSxDQUFDOUUsTUFBZDtBQUNBLFFBQUlBLE1BQU0sS0FBSzdCLE1BQU0sQ0FBQzJHLElBQVAsQ0FBWTBJLENBQVosRUFBZXhOLE1BQTlCLEVBQXNDLE9BQU8sS0FBUDs7QUFFdEMsU0FBS3VJLENBQUMsR0FBR3ZJLE1BQVQsRUFBaUJ1SSxDQUFDLE9BQU8sQ0FBekIsR0FDRSxJQUFJLENBQUNwSyxNQUFNLENBQUMrSCxTQUFQLENBQWlCN0QsY0FBakIsQ0FBZ0MzRCxJQUFoQyxDQUFxQzhPLENBQXJDLEVBQXdDMUksSUFBSSxDQUFDeUQsQ0FBRCxDQUE1QyxDQUFMLEVBQXVELE9BQU8sS0FBUCxDQXRFQztBQXlFMUQ7QUFDQTs7O0FBQ0EsUUFBSW8wRSxjQUFjLElBQUkvNEUsQ0FBQyxZQUFZZ3dELE9BQW5DLEVBQTRDLE9BQU8sS0FBUCxDQTNFYzs7QUE4RTFELFNBQUtyckQsQ0FBQyxHQUFHdkksTUFBVCxFQUFpQnVJLENBQUMsT0FBTyxDQUF6QixHQUE2QjtBQUMzQixVQUFJLENBQUN6RCxJQUFJLENBQUN5RCxDQUFELENBQUosS0FBWSxRQUFaLElBQXdCekQsSUFBSSxDQUFDeUQsQ0FBRCxDQUFKLEtBQVksS0FBcEMsSUFBNkN6RCxJQUFJLENBQUN5RCxDQUFELENBQUosS0FBWSxLQUExRCxLQUFvRTNFLENBQUMsQ0FBQ3l2RCxRQUExRSxFQUFvRjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0QsT0FYMEI7OztBQWMzQixVQUFJLENBQUMwcEIsS0FBSyxDQUFDbjVFLENBQUMsQ0FBQ2tCLElBQUksQ0FBQ3lELENBQUQsQ0FBTCxDQUFGLEVBQWFpRixDQUFDLENBQUMxSSxJQUFJLENBQUN5RCxDQUFELENBQUwsQ0FBZCxDQUFWLEVBQW9DLE9BQU8sS0FBUDtBQUNyQyxLQTdGeUQ7QUFnRzFEOzs7QUFDQSxXQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFPM0UsQ0FBQyxLQUFLQSxDQUFOLElBQVc0SixDQUFDLEtBQUtBLENBQXhCO0FBQ0Q7OztJQUdEL1AsZ0JBQUEsR0FBaUIsU0FBU3UvRSxPQUFULENBQWlCcDVFLENBQWpCLEVBQW9CNEosQ0FBcEIsRUFBdUI7QUFDdEMsTUFBSTtBQUNGLFdBQU91dkUsS0FBSyxDQUFDbjVFLENBQUQsRUFBSTRKLENBQUosQ0FBWjtBQUNELEdBRkQsQ0FFRSxPQUFPeFAsS0FBUCxFQUFjO0FBQ2QsUUFBSyxDQUFDQSxLQUFLLENBQUNzWCxPQUFOLElBQWlCLEVBQWxCLEVBQXNCOVUsS0FBdEIsQ0FBNEIsa0JBQTVCLENBQUwsRUFBdUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBbTZCLE1BQUFBLE9BQU8sQ0FBQ3NpRCxJQUFSLENBQWEsZ0RBQWI7QUFDQSxhQUFPLEtBQVA7QUFDRCxLQVRhOzs7QUFXZCxVQUFNai9FLEtBQU47QUFDRDtBQUNGLENBaEJEOztBQ3JITyxJQUFJay9FLEtBQUssR0FBRyw4QkFBWjtBQUVQLGlCQUFlO0FBQ2JDLEVBQUFBLEdBQUcsRUFBRSw0QkFEUTtBQUViRCxFQUFBQSxLQUFLLEVBQUVBLEtBRk07QUFHYkUsRUFBQUEsS0FBSyxFQUFFLDhCQUhNO0FBSWJDLEVBQUFBLEdBQUcsRUFBRSxzQ0FKUTtBQUtiQyxFQUFBQSxLQUFLLEVBQUU7QUFMTSxDQUFmOztBQ0FlLG9CQUFTdjZFLElBQVQsRUFBZTtBQUM1QixNQUFJMDhELE1BQU0sR0FBRzE4RCxJQUFJLElBQUksRUFBckI7QUFBQSxNQUF5QndGLENBQUMsR0FBR2szRCxNQUFNLENBQUNwM0QsT0FBUCxDQUFlLEdBQWYsQ0FBN0I7QUFDQSxNQUFJRSxDQUFDLElBQUksQ0FBTCxJQUFVLENBQUNrM0QsTUFBTSxHQUFHMThELElBQUksQ0FBQzVELEtBQUwsQ0FBVyxDQUFYLEVBQWNvSixDQUFkLENBQVYsTUFBZ0MsT0FBOUMsRUFBdUR4RixJQUFJLEdBQUdBLElBQUksQ0FBQzVELEtBQUwsQ0FBV29KLENBQUMsR0FBRyxDQUFmLENBQVA7QUFDdkQsU0FBT2cxRSxVQUFVLENBQUNsN0UsY0FBWCxDQUEwQm85RCxNQUExQixJQUFvQztBQUFDcnRELElBQUFBLEtBQUssRUFBRW1yRSxVQUFVLENBQUM5ZCxNQUFELENBQWxCO0FBQTRCK2QsSUFBQUEsS0FBSyxFQUFFejZFO0FBQW5DLEdBQXBDLEdBQStFQSxJQUF0RixDQUg0QjtBQUk3Qjs7QUNIRCxTQUFTMDZFLGNBQVQsQ0FBd0IxNkUsSUFBeEIsRUFBOEI7QUFDNUIsU0FBTyxZQUFXO0FBQ2hCLFFBQUlTLFFBQVEsR0FBRyxLQUFLdzZELGFBQXBCO0FBQUEsUUFDSTBmLEdBQUcsR0FBRyxLQUFLQyxZQURmO0FBRUEsV0FBT0QsR0FBRyxLQUFLUixLQUFSLElBQWlCMTVFLFFBQVEsQ0FBQ2s3RCxlQUFULENBQXlCaWYsWUFBekIsS0FBMENULEtBQTNELEdBQ0QxNUUsUUFBUSxDQUFDRSxhQUFULENBQXVCWCxJQUF2QixDQURDLEdBRURTLFFBQVEsQ0FBQ216RSxlQUFULENBQXlCK0csR0FBekIsRUFBOEIzNkUsSUFBOUIsQ0FGTjtBQUdELEdBTkQ7QUFPRDs7QUFFRCxTQUFTNjZFLFlBQVQsQ0FBc0JDLFFBQXRCLEVBQWdDO0FBQzlCLFNBQU8sWUFBVztBQUNoQixXQUFPLEtBQUs3ZixhQUFMLENBQW1CMlksZUFBbkIsQ0FBbUNrSCxRQUFRLENBQUN6ckUsS0FBNUMsRUFBbUR5ckUsUUFBUSxDQUFDTCxLQUE1RCxDQUFQO0FBQ0QsR0FGRDtBQUdEOztBQUVjLGtCQUFTejZFLElBQVQsRUFBZTtBQUM1QixNQUFJODZFLFFBQVEsR0FBR2grRSxTQUFTLENBQUNrRCxJQUFELENBQXhCO0FBQ0EsU0FBTyxDQUFDODZFLFFBQVEsQ0FBQ0wsS0FBVCxHQUNGSSxZQURFLEdBRUZILGNBRkMsRUFFZUksUUFGZixDQUFQO0FBR0Q7O0FDeEJELFNBQVNDLElBQVQsR0FBZ0I7O0FBRUQsbUJBQVM1VixRQUFULEVBQW1CO0FBQ2hDLFNBQU9BLFFBQVEsSUFBSSxJQUFaLEdBQW1CNFYsSUFBbkIsR0FBMEIsWUFBVztBQUMxQyxXQUFPLEtBQUtsUyxhQUFMLENBQW1CMUQsUUFBbkIsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUNIYywyQkFBU25CLE1BQVQsRUFBaUI7QUFDOUIsTUFBSSxPQUFPQSxNQUFQLEtBQWtCLFVBQXRCLEVBQWtDQSxNQUFNLEdBQUdtQixRQUFRLENBQUNuQixNQUFELENBQWpCOztBQUVsQyxPQUFLLElBQUl2bEMsTUFBTSxHQUFHLEtBQUt1OEMsT0FBbEIsRUFBMkJoMUMsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQXRDLEVBQThDZytFLFNBQVMsR0FBRyxJQUFJM3pFLEtBQUosQ0FBVTArQixDQUFWLENBQTFELEVBQXdFN3FCLENBQUMsR0FBRyxDQUFqRixFQUFvRkEsQ0FBQyxHQUFHNnFCLENBQXhGLEVBQTJGLEVBQUU3cUIsQ0FBN0YsRUFBZ0c7QUFDOUYsU0FBSyxJQUFJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBQWxCLEVBQXVCbkgsQ0FBQyxHQUFHZ3RCLEtBQUssQ0FBQy9qQyxNQUFqQyxFQUF5Q2krRSxRQUFRLEdBQUdELFNBQVMsQ0FBQzkvRCxDQUFELENBQVQsR0FBZSxJQUFJN1QsS0FBSixDQUFVME0sQ0FBVixDQUFuRSxFQUFpRjJpQixJQUFqRixFQUF1RndrRCxPQUF2RixFQUFnRzMxRSxDQUFDLEdBQUcsQ0FBekcsRUFBNEdBLENBQUMsR0FBR3dPLENBQWhILEVBQW1ILEVBQUV4TyxDQUFySCxFQUF3SDtBQUN0SCxVQUFJLENBQUNteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBYixNQUFzQjIxRSxPQUFPLEdBQUduWCxNQUFNLENBQUNyb0UsSUFBUCxDQUFZZzdCLElBQVosRUFBa0JBLElBQUksQ0FBQ3lrRCxRQUF2QixFQUFpQzUxRSxDQUFqQyxFQUFvQ3c3QixLQUFwQyxDQUFoQyxDQUFKLEVBQWlGO0FBQy9FLFlBQUksY0FBY3JLLElBQWxCLEVBQXdCd2tELE9BQU8sQ0FBQ0MsUUFBUixHQUFtQnprRCxJQUFJLENBQUN5a0QsUUFBeEI7QUFDeEJGLFFBQUFBLFFBQVEsQ0FBQzExRSxDQUFELENBQVIsR0FBYzIxRSxPQUFkO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU8sSUFBSUUsU0FBSixDQUFjSixTQUFkLEVBQXlCLEtBQUtLLFFBQTlCLENBQVA7QUFDRDs7QUNoQmMsZ0JBQVMzK0QsQ0FBVCxFQUFZO0FBQ3pCLFNBQU8sT0FBT0EsQ0FBUCxLQUFhLFFBQWIsSUFBeUIsWUFBWUEsQ0FBckMsR0FDSEEsQ0FERztBQUFBLElBRUhyVixLQUFLLENBQUMrTSxJQUFOLENBQVdzSSxDQUFYLENBRkosQ0FEeUI7QUFJMUI7O0FDSkQsU0FBUy9SLEtBQVQsR0FBaUI7QUFDZixTQUFPLEVBQVA7QUFDRDs7QUFFYyxzQkFBU3U2RCxRQUFULEVBQW1CO0FBQ2hDLFNBQU9BLFFBQVEsSUFBSSxJQUFaLEdBQW1CdjZELEtBQW5CLEdBQTJCLFlBQVc7QUFDM0MsV0FBTyxLQUFLcThELGdCQUFMLENBQXNCOUIsUUFBdEIsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUNKRCxTQUFTb1csUUFBVCxDQUFrQnZYLE1BQWxCLEVBQTBCO0FBQ3hCLFNBQU8sWUFBVztBQUNoQixRQUFJaGpDLEtBQUssR0FBR2dqQyxNQUFNLENBQUNyNUQsS0FBUCxDQUFhLElBQWIsRUFBbUIzTixTQUFuQixDQUFaO0FBQ0EsV0FBT2drQyxLQUFLLElBQUksSUFBVCxHQUFnQixFQUFoQixHQUFxQjl0QixLQUFLLENBQUM4dEIsS0FBRCxDQUFqQztBQUNELEdBSEQ7QUFJRDs7QUFFYyw4QkFBU2dqQyxNQUFULEVBQWlCO0FBQzlCLE1BQUksT0FBT0EsTUFBUCxLQUFrQixVQUF0QixFQUFrQ0EsTUFBTSxHQUFHdVgsUUFBUSxDQUFDdlgsTUFBRCxDQUFqQixDQUFsQyxLQUNLQSxNQUFNLEdBQUd3WCxXQUFXLENBQUN4WCxNQUFELENBQXBCOztBQUVMLE9BQUssSUFBSXZsQyxNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQmgxQyxDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBdEMsRUFBOENnK0UsU0FBUyxHQUFHLEVBQTFELEVBQThEUSxPQUFPLEdBQUcsRUFBeEUsRUFBNEV0Z0UsQ0FBQyxHQUFHLENBQXJGLEVBQXdGQSxDQUFDLEdBQUc2cUIsQ0FBNUYsRUFBK0YsRUFBRTdxQixDQUFqRyxFQUFvRztBQUNsRyxTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUJuSCxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQWpDLEVBQXlDMDVCLElBQXpDLEVBQStDbnhCLENBQUMsR0FBRyxDQUF4RCxFQUEyREEsQ0FBQyxHQUFHd08sQ0FBL0QsRUFBa0UsRUFBRXhPLENBQXBFLEVBQXVFO0FBQ3JFLFVBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEIsRUFBcUI7QUFDbkJ5MUUsUUFBQUEsU0FBUyxDQUFDLzdFLElBQVYsQ0FBZThrRSxNQUFNLENBQUNyb0UsSUFBUCxDQUFZZzdCLElBQVosRUFBa0JBLElBQUksQ0FBQ3lrRCxRQUF2QixFQUFpQzUxRSxDQUFqQyxFQUFvQ3c3QixLQUFwQyxDQUFmO0FBQ0F5NkMsUUFBQUEsT0FBTyxDQUFDdjhFLElBQVIsQ0FBYXkzQixJQUFiO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU8sSUFBSTBrRCxTQUFKLENBQWNKLFNBQWQsRUFBeUJRLE9BQXpCLENBQVA7QUFDRDs7QUN6QmMsa0JBQVN0VyxRQUFULEVBQW1CO0FBQ2hDLFNBQU8sWUFBVztBQUNoQixXQUFPLEtBQUtyRyxPQUFMLENBQWFxRyxRQUFiLENBQVA7QUFDRCxHQUZEO0FBR0Q7QUFFTSxTQUFTdVcsWUFBVCxDQUFzQnZXLFFBQXRCLEVBQWdDO0FBQ3JDLFNBQU8sVUFBU3h1QyxJQUFULEVBQWU7QUFDcEIsV0FBT0EsSUFBSSxDQUFDbW9DLE9BQUwsQ0FBYXFHLFFBQWIsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUNSRCxJQUFJejRELElBQUksR0FBR3BGLEtBQUssQ0FBQ25FLFNBQU4sQ0FBZ0J1SixJQUEzQjs7QUFFQSxTQUFTaXZFLFNBQVQsQ0FBbUJsK0UsS0FBbkIsRUFBMEI7QUFDeEIsU0FBTyxZQUFXO0FBQ2hCLFdBQU9pUCxJQUFJLENBQUMvUSxJQUFMLENBQVUsS0FBS210RSxRQUFmLEVBQXlCcnJFLEtBQXpCLENBQVA7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBU20rRSxVQUFULEdBQXNCO0FBQ3BCLFNBQU8sS0FBS0MsaUJBQVo7QUFDRDs7QUFFYyxnQ0FBU3ArRSxLQUFULEVBQWdCO0FBQzdCLFNBQU8sS0FBS3VtRSxNQUFMLENBQVl2bUUsS0FBSyxJQUFJLElBQVQsR0FBZ0JtK0UsVUFBaEIsR0FDYkQsU0FBUyxDQUFDLE9BQU9sK0UsS0FBUCxLQUFpQixVQUFqQixHQUE4QkEsS0FBOUIsR0FBc0NpK0UsWUFBWSxDQUFDaitFLEtBQUQsQ0FBbkQsQ0FEUixDQUFQO0FBRUQ7O0FDZkQsSUFBSThPLE1BQU0sR0FBR2pGLEtBQUssQ0FBQ25FLFNBQU4sQ0FBZ0JvSixNQUE3Qjs7QUFFQSxTQUFTdThELFFBQVQsR0FBb0I7QUFDbEIsU0FBTyxLQUFLQSxRQUFaO0FBQ0Q7O0FBRUQsU0FBU2dULGNBQVQsQ0FBd0JyK0UsS0FBeEIsRUFBK0I7QUFDN0IsU0FBTyxZQUFXO0FBQ2hCLFdBQU84TyxNQUFNLENBQUM1USxJQUFQLENBQVksS0FBS210RSxRQUFqQixFQUEyQnJyRSxLQUEzQixDQUFQO0FBQ0QsR0FGRDtBQUdEOztBQUVjLG1DQUFTQSxLQUFULEVBQWdCO0FBQzdCLFNBQU8sS0FBS3MrRSxTQUFMLENBQWV0K0UsS0FBSyxJQUFJLElBQVQsR0FBZ0JxckUsUUFBaEIsR0FDaEJnVCxjQUFjLENBQUMsT0FBT3IrRSxLQUFQLEtBQWlCLFVBQWpCLEdBQThCQSxLQUE5QixHQUFzQ2krRSxZQUFZLENBQUNqK0UsS0FBRCxDQUFuRCxDQURiLENBQVA7QUFFRDs7QUNkYywyQkFBU0EsS0FBVCxFQUFnQjtBQUM3QixNQUFJLE9BQU9BLEtBQVAsS0FBaUIsVUFBckIsRUFBaUNBLEtBQUssR0FBR3ltQyxPQUFPLENBQUN6bUMsS0FBRCxDQUFmOztBQUVqQyxPQUFLLElBQUlnaEMsTUFBTSxHQUFHLEtBQUt1OEMsT0FBbEIsRUFBMkJoMUMsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQXRDLEVBQThDZytFLFNBQVMsR0FBRyxJQUFJM3pFLEtBQUosQ0FBVTArQixDQUFWLENBQTFELEVBQXdFN3FCLENBQUMsR0FBRyxDQUFqRixFQUFvRkEsQ0FBQyxHQUFHNnFCLENBQXhGLEVBQTJGLEVBQUU3cUIsQ0FBN0YsRUFBZ0c7QUFDOUYsU0FBSyxJQUFJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBQWxCLEVBQXVCbkgsQ0FBQyxHQUFHZ3RCLEtBQUssQ0FBQy9qQyxNQUFqQyxFQUF5Q2krRSxRQUFRLEdBQUdELFNBQVMsQ0FBQzkvRCxDQUFELENBQVQsR0FBZSxFQUFuRSxFQUF1RXdiLElBQXZFLEVBQTZFbnhCLENBQUMsR0FBRyxDQUF0RixFQUF5RkEsQ0FBQyxHQUFHd08sQ0FBN0YsRUFBZ0csRUFBRXhPLENBQWxHLEVBQXFHO0FBQ25HLFVBQUksQ0FBQ214QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFiLEtBQXFCL0gsS0FBSyxDQUFDOUIsSUFBTixDQUFXZzdCLElBQVgsRUFBaUJBLElBQUksQ0FBQ3lrRCxRQUF0QixFQUFnQzUxRSxDQUFoQyxFQUFtQ3c3QixLQUFuQyxDQUF6QixFQUFvRTtBQUNsRWs2QyxRQUFBQSxRQUFRLENBQUNoOEUsSUFBVCxDQUFjeTNCLElBQWQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBTyxJQUFJMGtELFNBQUosQ0FBY0osU0FBZCxFQUF5QixLQUFLSyxRQUE5QixDQUFQO0FBQ0Q7O0FDZmMsaUJBQVN4bEMsTUFBVCxFQUFpQjtBQUM5QixTQUFPLElBQUl4dUMsS0FBSixDQUFVd3VDLE1BQU0sQ0FBQzc0QyxNQUFqQixDQUFQO0FBQ0Q7O0FDQ2MsNEJBQVc7QUFDeEIsU0FBTyxJQUFJbytFLFNBQUosQ0FBYyxLQUFLVyxNQUFMLElBQWUsS0FBS2hCLE9BQUwsQ0FBYTF1RSxHQUFiLENBQWlCMnZFLE1BQWpCLENBQTdCLEVBQXVELEtBQUtYLFFBQTVELENBQVA7QUFDRDtBQUVNLFNBQVNZLFNBQVQsQ0FBbUJwbEQsTUFBbkIsRUFBMkJxbEQsS0FBM0IsRUFBa0M7QUFDdkMsT0FBS2xoQixhQUFMLEdBQXFCbmtDLE1BQU0sQ0FBQ21rQyxhQUE1QjtBQUNBLE9BQUsyZixZQUFMLEdBQW9COWpELE1BQU0sQ0FBQzhqRCxZQUEzQjtBQUNBLE9BQUt3QixLQUFMLEdBQWEsSUFBYjtBQUNBLE9BQUtDLE9BQUwsR0FBZXZsRCxNQUFmO0FBQ0EsT0FBS3NrRCxRQUFMLEdBQWdCZSxLQUFoQjtBQUNEO0FBRURELFNBQVMsQ0FBQy80RSxTQUFWLEdBQXNCO0FBQ3BCb0ksRUFBQUEsV0FBVyxFQUFFMndFLFNBRE87QUFFcEIxeUUsRUFBQUEsV0FBVyxFQUFFLFVBQVMyNEQsS0FBVCxFQUFnQjtBQUFFLFdBQU8sS0FBS2thLE9BQUwsQ0FBYTFULFlBQWIsQ0FBMEJ4RyxLQUExQixFQUFpQyxLQUFLaWEsS0FBdEMsQ0FBUDtBQUFzRCxHQUZqRTtBQUdwQnpULEVBQUFBLFlBQVksRUFBRSxVQUFTeEcsS0FBVCxFQUFnQnZ3RCxJQUFoQixFQUFzQjtBQUFFLFdBQU8sS0FBS3lxRSxPQUFMLENBQWExVCxZQUFiLENBQTBCeEcsS0FBMUIsRUFBaUN2d0QsSUFBakMsQ0FBUDtBQUFnRCxHQUhsRTtBQUlwQmkzRCxFQUFBQSxhQUFhLEVBQUUsVUFBUzFELFFBQVQsRUFBbUI7QUFBRSxXQUFPLEtBQUtrWCxPQUFMLENBQWF4VCxhQUFiLENBQTJCMUQsUUFBM0IsQ0FBUDtBQUE4QyxHQUo5RDtBQUtwQjhCLEVBQUFBLGdCQUFnQixFQUFFLFVBQVM5QixRQUFULEVBQW1CO0FBQUUsV0FBTyxLQUFLa1gsT0FBTCxDQUFhcFYsZ0JBQWIsQ0FBOEI5QixRQUE5QixDQUFQO0FBQWlEO0FBTHBFLENBQXRCOztBQ2ZlLG1CQUFTeG9ELENBQVQsRUFBWTtBQUN6QixTQUFPLFlBQVc7QUFDaEIsV0FBT0EsQ0FBUDtBQUNELEdBRkQ7QUFHRDs7QUNDRCxTQUFTMi9ELFNBQVQsQ0FBbUJ4bEQsTUFBbkIsRUFBMkJrSyxLQUEzQixFQUFrQ2hLLEtBQWxDLEVBQXlDOGUsTUFBekMsRUFBaUQvZSxJQUFqRCxFQUF1RHp3QixJQUF2RCxFQUE2RDtBQUMzRCxNQUFJZCxDQUFDLEdBQUcsQ0FBUjtBQUFBLE1BQ0lteEIsSUFESjtBQUFBLE1BRUk0bEQsV0FBVyxHQUFHdjdDLEtBQUssQ0FBQy9qQyxNQUZ4QjtBQUFBLE1BR0l1L0UsVUFBVSxHQUFHbDJFLElBQUksQ0FBQ3JKLE1BSHRCLENBRDJEO0FBTzNEO0FBQ0E7O0FBQ0EsU0FBT3VJLENBQUMsR0FBR2czRSxVQUFYLEVBQXVCLEVBQUVoM0UsQ0FBekIsRUFBNEI7QUFDMUIsUUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQjtBQUNuQm14QixNQUFBQSxJQUFJLENBQUN5a0QsUUFBTCxHQUFnQjkwRSxJQUFJLENBQUNkLENBQUQsQ0FBcEI7QUFDQXN3QyxNQUFBQSxNQUFNLENBQUN0d0MsQ0FBRCxDQUFOLEdBQVlteEIsSUFBWjtBQUNELEtBSEQsTUFHTztBQUNMSyxNQUFBQSxLQUFLLENBQUN4eEIsQ0FBRCxDQUFMLEdBQVcsSUFBSTAyRSxTQUFKLENBQWNwbEQsTUFBZCxFQUFzQnh3QixJQUFJLENBQUNkLENBQUQsQ0FBMUIsQ0FBWDtBQUNEO0FBQ0YsR0FoQjBEOzs7QUFtQjNELFNBQU9BLENBQUMsR0FBRysyRSxXQUFYLEVBQXdCLEVBQUUvMkUsQ0FBMUIsRUFBNkI7QUFDM0IsUUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQjtBQUNuQnV4QixNQUFBQSxJQUFJLENBQUN2eEIsQ0FBRCxDQUFKLEdBQVVteEIsSUFBVjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFTOGxELE9BQVQsQ0FBaUIzbEQsTUFBakIsRUFBeUJrSyxLQUF6QixFQUFnQ2hLLEtBQWhDLEVBQXVDOGUsTUFBdkMsRUFBK0MvZSxJQUEvQyxFQUFxRHp3QixJQUFyRCxFQUEyRHhILEdBQTNELEVBQWdFO0FBQzlELE1BQUkwRyxDQUFKO0FBQUEsTUFDSW14QixJQURKO0FBQUEsTUFFSStsRCxjQUFjLEdBQUcsSUFBSXR3RCxHQUFKLEVBRnJCO0FBQUEsTUFHSW13RCxXQUFXLEdBQUd2N0MsS0FBSyxDQUFDL2pDLE1BSHhCO0FBQUEsTUFJSXUvRSxVQUFVLEdBQUdsMkUsSUFBSSxDQUFDckosTUFKdEI7QUFBQSxNQUtJMC9FLFNBQVMsR0FBRyxJQUFJcjFFLEtBQUosQ0FBVWkxRSxXQUFWLENBTGhCO0FBQUEsTUFNSUssUUFOSixDQUQ4RDtBQVU5RDs7QUFDQSxPQUFLcDNFLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBRysyRSxXQUFoQixFQUE2QixFQUFFLzJFLENBQS9CLEVBQWtDO0FBQ2hDLFFBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEIsRUFBcUI7QUFDbkJtM0UsTUFBQUEsU0FBUyxDQUFDbjNFLENBQUQsQ0FBVCxHQUFlbzNFLFFBQVEsR0FBRzk5RSxHQUFHLENBQUNuRCxJQUFKLENBQVNnN0IsSUFBVCxFQUFlQSxJQUFJLENBQUN5a0QsUUFBcEIsRUFBOEI1MUUsQ0FBOUIsRUFBaUN3N0IsS0FBakMsSUFBMEMsRUFBcEU7O0FBQ0EsVUFBSTA3QyxjQUFjLENBQUNwNkUsR0FBZixDQUFtQnM2RSxRQUFuQixDQUFKLEVBQWtDO0FBQ2hDN2xELFFBQUFBLElBQUksQ0FBQ3Z4QixDQUFELENBQUosR0FBVW14QixJQUFWO0FBQ0QsT0FGRCxNQUVPO0FBQ0wrbEQsUUFBQUEsY0FBYyxDQUFDcjZFLEdBQWYsQ0FBbUJ1NkUsUUFBbkIsRUFBNkJqbUQsSUFBN0I7QUFDRDtBQUNGO0FBQ0YsR0FwQjZEO0FBdUI5RDtBQUNBOzs7QUFDQSxPQUFLbnhCLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR2czRSxVQUFoQixFQUE0QixFQUFFaDNFLENBQTlCLEVBQWlDO0FBQy9CbzNFLElBQUFBLFFBQVEsR0FBRzk5RSxHQUFHLENBQUNuRCxJQUFKLENBQVNtN0IsTUFBVCxFQUFpQnh3QixJQUFJLENBQUNkLENBQUQsQ0FBckIsRUFBMEJBLENBQTFCLEVBQTZCYyxJQUE3QixJQUFxQyxFQUFoRDs7QUFDQSxRQUFJcXdCLElBQUksR0FBRytsRCxjQUFjLENBQUNwaEYsR0FBZixDQUFtQnNoRixRQUFuQixDQUFYLEVBQXlDO0FBQ3ZDOW1DLE1BQUFBLE1BQU0sQ0FBQ3R3QyxDQUFELENBQU4sR0FBWW14QixJQUFaO0FBQ0FBLE1BQUFBLElBQUksQ0FBQ3lrRCxRQUFMLEdBQWdCOTBFLElBQUksQ0FBQ2QsQ0FBRCxDQUFwQjtBQUNBazNFLE1BQUFBLGNBQWMsQ0FBQ0csTUFBZixDQUFzQkQsUUFBdEI7QUFDRCxLQUpELE1BSU87QUFDTDVsRCxNQUFBQSxLQUFLLENBQUN4eEIsQ0FBRCxDQUFMLEdBQVcsSUFBSTAyRSxTQUFKLENBQWNwbEQsTUFBZCxFQUFzQnh3QixJQUFJLENBQUNkLENBQUQsQ0FBMUIsQ0FBWDtBQUNEO0FBQ0YsR0FsQzZEOzs7QUFxQzlELE9BQUtBLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBRysyRSxXQUFoQixFQUE2QixFQUFFLzJFLENBQS9CLEVBQWtDO0FBQ2hDLFFBQUksQ0FBQ214QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFiLEtBQXNCazNFLGNBQWMsQ0FBQ3BoRixHQUFmLENBQW1CcWhGLFNBQVMsQ0FBQ24zRSxDQUFELENBQTVCLE1BQXFDbXhCLElBQS9ELEVBQXNFO0FBQ3BFSSxNQUFBQSxJQUFJLENBQUN2eEIsQ0FBRCxDQUFKLEdBQVVteEIsSUFBVjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFTd2xELEtBQVQsQ0FBZXhsRCxJQUFmLEVBQXFCO0FBQ25CLFNBQU9BLElBQUksQ0FBQ3lrRCxRQUFaO0FBQ0Q7O0FBRWMseUJBQVNwL0UsS0FBVCxFQUFnQjhDLEdBQWhCLEVBQXFCO0FBQ2xDLE1BQUksQ0FBQzlCLFNBQVMsQ0FBQ0MsTUFBZixFQUF1QixPQUFPcUssS0FBSyxDQUFDK00sSUFBTixDQUFXLElBQVgsRUFBaUI4bkUsS0FBakIsQ0FBUDtBQUV2QixNQUFJMXdFLElBQUksR0FBRzNNLEdBQUcsR0FBRzI5RSxPQUFILEdBQWFILFNBQTNCO0FBQUEsTUFDSWIsT0FBTyxHQUFHLEtBQUtILFFBRG5CO0FBQUEsTUFFSTc4QyxNQUFNLEdBQUcsS0FBS3U4QyxPQUZsQjtBQUlBLE1BQUksT0FBT2gvRSxLQUFQLEtBQWlCLFVBQXJCLEVBQWlDQSxLQUFLLEdBQUc4Z0YsUUFBUSxDQUFDOWdGLEtBQUQsQ0FBaEI7O0FBRWpDLE9BQUssSUFBSWdxQyxDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBZixFQUF1QjY0QyxNQUFNLEdBQUcsSUFBSXh1QyxLQUFKLENBQVUwK0IsQ0FBVixDQUFoQyxFQUE4Q2hQLEtBQUssR0FBRyxJQUFJMXZCLEtBQUosQ0FBVTArQixDQUFWLENBQXRELEVBQW9FalAsSUFBSSxHQUFHLElBQUl6dkIsS0FBSixDQUFVMCtCLENBQVYsQ0FBM0UsRUFBeUY3cUIsQ0FBQyxHQUFHLENBQWxHLEVBQXFHQSxDQUFDLEdBQUc2cUIsQ0FBekcsRUFBNEcsRUFBRTdxQixDQUE5RyxFQUFpSDtBQUMvRyxRQUFJMmIsTUFBTSxHQUFHMmtELE9BQU8sQ0FBQ3RnRSxDQUFELENBQXBCO0FBQUEsUUFDSTZsQixLQUFLLEdBQUd2QyxNQUFNLENBQUN0akIsQ0FBRCxDQURsQjtBQUFBLFFBRUlvaEUsV0FBVyxHQUFHdjdDLEtBQUssQ0FBQy9qQyxNQUZ4QjtBQUFBLFFBR0lxSixJQUFJLEdBQUc0TSxLQUFLLENBQUNsWCxLQUFLLENBQUNMLElBQU4sQ0FBV203QixNQUFYLEVBQW1CQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ3NrRCxRQUFwQyxFQUE4Q2pnRSxDQUE5QyxFQUFpRHNnRSxPQUFqRCxDQUFELENBSGhCO0FBQUEsUUFJSWUsVUFBVSxHQUFHbDJFLElBQUksQ0FBQ3JKLE1BSnRCO0FBQUEsUUFLSTgvRSxVQUFVLEdBQUcvbEQsS0FBSyxDQUFDN2IsQ0FBRCxDQUFMLEdBQVcsSUFBSTdULEtBQUosQ0FBVWsxRSxVQUFWLENBTDVCO0FBQUEsUUFNSVEsV0FBVyxHQUFHbG5DLE1BQU0sQ0FBQzM2QixDQUFELENBQU4sR0FBWSxJQUFJN1QsS0FBSixDQUFVazFFLFVBQVYsQ0FOOUI7QUFBQSxRQU9JUyxTQUFTLEdBQUdsbUQsSUFBSSxDQUFDNWIsQ0FBRCxDQUFKLEdBQVUsSUFBSTdULEtBQUosQ0FBVWkxRSxXQUFWLENBUDFCO0FBU0E5d0UsSUFBQUEsSUFBSSxDQUFDcXJCLE1BQUQsRUFBU2tLLEtBQVQsRUFBZ0IrN0MsVUFBaEIsRUFBNEJDLFdBQTVCLEVBQXlDQyxTQUF6QyxFQUFvRDMyRSxJQUFwRCxFQUEwRHhILEdBQTFELENBQUosQ0FWK0c7QUFhL0c7QUFDQTs7QUFDQSxTQUFLLElBQUlvK0UsRUFBRSxHQUFHLENBQVQsRUFBWUMsRUFBRSxHQUFHLENBQWpCLEVBQW9CdnhELFFBQXBCLEVBQThCaGEsSUFBbkMsRUFBeUNzckUsRUFBRSxHQUFHVixVQUE5QyxFQUEwRCxFQUFFVSxFQUE1RCxFQUFnRTtBQUM5RCxVQUFJdHhELFFBQVEsR0FBR214RCxVQUFVLENBQUNHLEVBQUQsQ0FBekIsRUFBK0I7QUFDN0IsWUFBSUEsRUFBRSxJQUFJQyxFQUFWLEVBQWNBLEVBQUUsR0FBR0QsRUFBRSxHQUFHLENBQVY7O0FBQ2QsZUFBTyxFQUFFdHJFLElBQUksR0FBR29yRSxXQUFXLENBQUNHLEVBQUQsQ0FBcEIsS0FBNkIsRUFBRUEsRUFBRixHQUFPWCxVQUEzQyxDQUFzRDs7QUFDdEQ1d0QsUUFBQUEsUUFBUSxDQUFDd3dELEtBQVQsR0FBaUJ4cUUsSUFBSSxJQUFJLElBQXpCO0FBQ0Q7QUFDRjtBQUNGOztBQUVEa2tDLEVBQUFBLE1BQU0sR0FBRyxJQUFJdWxDLFNBQUosQ0FBY3ZsQyxNQUFkLEVBQXNCMmxDLE9BQXRCLENBQVQ7QUFDQTNsQyxFQUFBQSxNQUFNLENBQUNrbUMsTUFBUCxHQUFnQmhsRCxLQUFoQjtBQUNBOGUsRUFBQUEsTUFBTSxDQUFDc25DLEtBQVAsR0FBZXJtRCxJQUFmO0FBQ0EsU0FBTytlLE1BQVA7QUFDRDs7QUNqSGMsMkJBQVc7QUFDeEIsU0FBTyxJQUFJdWxDLFNBQUosQ0FBYyxLQUFLK0IsS0FBTCxJQUFjLEtBQUtwQyxPQUFMLENBQWExdUUsR0FBYixDQUFpQjJ2RSxNQUFqQixDQUE1QixFQUFzRCxLQUFLWCxRQUEzRCxDQUFQO0FBQ0Q7O0FDTGMseUJBQVMrQixPQUFULEVBQWtCQyxRQUFsQixFQUE0QkMsTUFBNUIsRUFBb0M7QUFDakQsTUFBSXZtRCxLQUFLLEdBQUcsS0FBS0EsS0FBTCxFQUFaO0FBQUEsTUFBMEI4ZSxNQUFNLEdBQUcsSUFBbkM7QUFBQSxNQUF5Qy9lLElBQUksR0FBRyxLQUFLQSxJQUFMLEVBQWhEO0FBQ0FDLEVBQUFBLEtBQUssR0FBRyxPQUFPcW1ELE9BQVAsS0FBbUIsVUFBbkIsR0FBZ0NBLE9BQU8sQ0FBQ3JtRCxLQUFELENBQXZDLEdBQWlEQSxLQUFLLENBQUNxdkIsTUFBTixDQUFhZzNCLE9BQU8sR0FBRyxFQUF2QixDQUF6RDtBQUNBLE1BQUlDLFFBQVEsSUFBSSxJQUFoQixFQUFzQnhuQyxNQUFNLEdBQUd3bkMsUUFBUSxDQUFDeG5DLE1BQUQsQ0FBakI7QUFDdEIsTUFBSXluQyxNQUFNLElBQUksSUFBZCxFQUFvQnhtRCxJQUFJLENBQUN5bUQsTUFBTCxHQUFwQixLQUF3Q0QsTUFBTSxDQUFDeG1ELElBQUQsQ0FBTjtBQUN4QyxTQUFPQyxLQUFLLElBQUk4ZSxNQUFULEdBQWtCOWUsS0FBSyxDQUFDOWIsS0FBTixDQUFZNDZCLE1BQVosRUFBb0I4cEIsS0FBcEIsRUFBbEIsR0FBZ0Q5cEIsTUFBdkQ7QUFDRDs7QUNKYywwQkFBUzJuQyxTQUFULEVBQW9CO0FBQ2pDLE1BQUksRUFBRUEsU0FBUyxZQUFZcEMsU0FBdkIsQ0FBSixFQUF1QyxNQUFNLElBQUk3b0UsS0FBSixDQUFVLGVBQVYsQ0FBTjs7QUFFdkMsT0FBSyxJQUFJa3JFLE9BQU8sR0FBRyxLQUFLMUMsT0FBbkIsRUFBNEIyQyxPQUFPLEdBQUdGLFNBQVMsQ0FBQ3pDLE9BQWhELEVBQXlENEMsRUFBRSxHQUFHRixPQUFPLENBQUN6Z0YsTUFBdEUsRUFBOEU0Z0YsRUFBRSxHQUFHRixPQUFPLENBQUMxZ0YsTUFBM0YsRUFBbUcrb0MsQ0FBQyxHQUFHdnJDLElBQUksQ0FBQ2dLLEdBQUwsQ0FBU201RSxFQUFULEVBQWFDLEVBQWIsQ0FBdkcsRUFBeUhDLE1BQU0sR0FBRyxJQUFJeDJFLEtBQUosQ0FBVXMyRSxFQUFWLENBQWxJLEVBQWlKemlFLENBQUMsR0FBRyxDQUExSixFQUE2SkEsQ0FBQyxHQUFHNnFCLENBQWpLLEVBQW9LLEVBQUU3cUIsQ0FBdEssRUFBeUs7QUFDdkssU0FBSyxJQUFJNGlFLE1BQU0sR0FBR0wsT0FBTyxDQUFDdmlFLENBQUQsQ0FBcEIsRUFBeUI2aUUsTUFBTSxHQUFHTCxPQUFPLENBQUN4aUUsQ0FBRCxDQUF6QyxFQUE4Q25ILENBQUMsR0FBRytwRSxNQUFNLENBQUM5Z0YsTUFBekQsRUFBaUVpZSxLQUFLLEdBQUc0aUUsTUFBTSxDQUFDM2lFLENBQUQsQ0FBTixHQUFZLElBQUk3VCxLQUFKLENBQVUwTSxDQUFWLENBQXJGLEVBQW1HMmlCLElBQW5HLEVBQXlHbnhCLENBQUMsR0FBRyxDQUFsSCxFQUFxSEEsQ0FBQyxHQUFHd08sQ0FBekgsRUFBNEgsRUFBRXhPLENBQTlILEVBQWlJO0FBQy9ILFVBQUlteEIsSUFBSSxHQUFHb25ELE1BQU0sQ0FBQ3Y0RSxDQUFELENBQU4sSUFBYXc0RSxNQUFNLENBQUN4NEUsQ0FBRCxDQUE5QixFQUFtQztBQUNqQzBWLFFBQUFBLEtBQUssQ0FBQzFWLENBQUQsQ0FBTCxHQUFXbXhCLElBQVg7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBT3hiLENBQUMsR0FBR3lpRSxFQUFYLEVBQWUsRUFBRXppRSxDQUFqQixFQUFvQjtBQUNsQjJpRSxJQUFBQSxNQUFNLENBQUMzaUUsQ0FBRCxDQUFOLEdBQVl1aUUsT0FBTyxDQUFDdmlFLENBQUQsQ0FBbkI7QUFDRDs7QUFFRCxTQUFPLElBQUlrZ0UsU0FBSixDQUFjeUMsTUFBZCxFQUFzQixLQUFLeEMsUUFBM0IsQ0FBUDtBQUNEOztBQ2xCYyw0QkFBVztBQUV4QixPQUFLLElBQUk3OEMsTUFBTSxHQUFHLEtBQUt1OEMsT0FBbEIsRUFBMkI3L0QsQ0FBQyxHQUFHLENBQUMsQ0FBaEMsRUFBbUM2cUIsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQW5ELEVBQTJELEVBQUVrZSxDQUFGLEdBQU02cUIsQ0FBakUsR0FBcUU7QUFDbkUsU0FBSyxJQUFJaEYsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUIzVixDQUFDLEdBQUd3N0IsS0FBSyxDQUFDL2pDLE1BQU4sR0FBZSxDQUExQyxFQUE2QzJVLElBQUksR0FBR292QixLQUFLLENBQUN4N0IsQ0FBRCxDQUF6RCxFQUE4RG14QixJQUFuRSxFQUF5RSxFQUFFbnhCLENBQUYsSUFBTyxDQUFoRixHQUFvRjtBQUNsRixVQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCLEVBQXFCO0FBQ25CLFlBQUlvTSxJQUFJLElBQUkra0IsSUFBSSxDQUFDaWxDLHVCQUFMLENBQTZCaHFELElBQTdCLElBQXFDLENBQWpELEVBQW9EQSxJQUFJLENBQUN5cUQsVUFBTCxDQUFnQnNNLFlBQWhCLENBQTZCaHlDLElBQTdCLEVBQW1DL2tCLElBQW5DO0FBQ3BEQSxRQUFBQSxJQUFJLEdBQUcra0IsSUFBUDtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRDs7QUNWYyx5QkFBUzg2QyxPQUFULEVBQWtCO0FBQy9CLE1BQUksQ0FBQ0EsT0FBTCxFQUFjQSxPQUFPLEdBQUd3TSxTQUFWOztBQUVkLFdBQVNDLFdBQVQsQ0FBcUJyOUUsQ0FBckIsRUFBd0I0SixDQUF4QixFQUEyQjtBQUN6QixXQUFPNUosQ0FBQyxJQUFJNEosQ0FBTCxHQUFTZ25FLE9BQU8sQ0FBQzV3RSxDQUFDLENBQUN1NkUsUUFBSCxFQUFhM3dFLENBQUMsQ0FBQzJ3RSxRQUFmLENBQWhCLEdBQTJDLENBQUN2NkUsQ0FBRCxHQUFLLENBQUM0SixDQUF4RDtBQUNEOztBQUVELE9BQUssSUFBSWcwQixNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQmgxQyxDQUFDLEdBQUd2SCxNQUFNLENBQUN4aEMsTUFBdEMsRUFBOENraEYsVUFBVSxHQUFHLElBQUk3MkUsS0FBSixDQUFVMCtCLENBQVYsQ0FBM0QsRUFBeUU3cUIsQ0FBQyxHQUFHLENBQWxGLEVBQXFGQSxDQUFDLEdBQUc2cUIsQ0FBekYsRUFBNEYsRUFBRTdxQixDQUE5RixFQUFpRztBQUMvRixTQUFLLElBQUk2bEIsS0FBSyxHQUFHdkMsTUFBTSxDQUFDdGpCLENBQUQsQ0FBbEIsRUFBdUJuSCxDQUFDLEdBQUdndEIsS0FBSyxDQUFDL2pDLE1BQWpDLEVBQXlDbWhGLFNBQVMsR0FBR0QsVUFBVSxDQUFDaGpFLENBQUQsQ0FBVixHQUFnQixJQUFJN1QsS0FBSixDQUFVME0sQ0FBVixDQUFyRSxFQUFtRjJpQixJQUFuRixFQUF5Rm54QixDQUFDLEdBQUcsQ0FBbEcsRUFBcUdBLENBQUMsR0FBR3dPLENBQXpHLEVBQTRHLEVBQUV4TyxDQUE5RyxFQUFpSDtBQUMvRyxVQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCLEVBQXFCO0FBQ25CNDRFLFFBQUFBLFNBQVMsQ0FBQzU0RSxDQUFELENBQVQsR0FBZW14QixJQUFmO0FBQ0Q7QUFDRjs7QUFDRHluRCxJQUFBQSxTQUFTLENBQUNuaUUsSUFBVixDQUFlaWlFLFdBQWY7QUFDRDs7QUFFRCxTQUFPLElBQUk3QyxTQUFKLENBQWM4QyxVQUFkLEVBQTBCLEtBQUs3QyxRQUEvQixFQUF5QzFiLEtBQXpDLEVBQVA7QUFDRDs7QUFFRCxTQUFTcWUsU0FBVCxDQUFtQnA5RSxDQUFuQixFQUFzQjRKLENBQXRCLEVBQXlCO0FBQ3ZCLFNBQU81SixDQUFDLEdBQUc0SixDQUFKLEdBQVEsQ0FBQyxDQUFULEdBQWE1SixDQUFDLEdBQUc0SixDQUFKLEdBQVEsQ0FBUixHQUFZNUosQ0FBQyxJQUFJNEosQ0FBTCxHQUFTLENBQVQsR0FBYW9VLEdBQTdDO0FBQ0Q7O0FDdkJjLDJCQUFXO0FBQ3hCLE1BQUkrM0IsUUFBUSxHQUFHNTVDLFNBQVMsQ0FBQyxDQUFELENBQXhCO0FBQ0FBLEVBQUFBLFNBQVMsQ0FBQyxDQUFELENBQVQsR0FBZSxJQUFmO0FBQ0E0NUMsRUFBQUEsUUFBUSxDQUFDanNDLEtBQVQsQ0FBZSxJQUFmLEVBQXFCM04sU0FBckI7QUFDQSxTQUFPLElBQVA7QUFDRDs7QUNMYyw0QkFBVztBQUN4QixTQUFPc0ssS0FBSyxDQUFDK00sSUFBTixDQUFXLElBQVgsQ0FBUDtBQUNEOztBQ0ZjLDJCQUFXO0FBRXhCLE9BQUssSUFBSW9xQixNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQjcvRCxDQUFDLEdBQUcsQ0FBL0IsRUFBa0M2cUIsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQWxELEVBQTBEa2UsQ0FBQyxHQUFHNnFCLENBQTlELEVBQWlFLEVBQUU3cUIsQ0FBbkUsRUFBc0U7QUFDcEUsU0FBSyxJQUFJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBQWxCLEVBQXVCM1YsQ0FBQyxHQUFHLENBQTNCLEVBQThCd08sQ0FBQyxHQUFHZ3RCLEtBQUssQ0FBQy9qQyxNQUE3QyxFQUFxRHVJLENBQUMsR0FBR3dPLENBQXpELEVBQTRELEVBQUV4TyxDQUE5RCxFQUFpRTtBQUMvRCxVQUFJbXhCLElBQUksR0FBR3FLLEtBQUssQ0FBQ3g3QixDQUFELENBQWhCO0FBQ0EsVUFBSW14QixJQUFKLEVBQVUsT0FBT0EsSUFBUDtBQUNYO0FBQ0Y7O0FBRUQsU0FBTyxJQUFQO0FBQ0Q7O0FDVmMsMkJBQVc7QUFDeEIsTUFBSW5MLElBQUksR0FBRyxDQUFYOztBQUNBLE9BQUssTUFBTW1MLElBQVgsSUFBbUIsSUFBbkIsRUFBeUIsRUFBRW5MLElBQUYsQ0FGRDs7O0FBR3hCLFNBQU9BLElBQVA7QUFDRDs7QUNKYyw0QkFBVztBQUN4QixTQUFPLENBQUMsS0FBS21MLElBQUwsRUFBUjtBQUNEOztBQ0ZjLHlCQUFTaWdCLFFBQVQsRUFBbUI7QUFFaEMsT0FBSyxJQUFJblksTUFBTSxHQUFHLEtBQUt1OEMsT0FBbEIsRUFBMkI3L0QsQ0FBQyxHQUFHLENBQS9CLEVBQWtDNnFCLENBQUMsR0FBR3ZILE1BQU0sQ0FBQ3hoQyxNQUFsRCxFQUEwRGtlLENBQUMsR0FBRzZxQixDQUE5RCxFQUFpRSxFQUFFN3FCLENBQW5FLEVBQXNFO0FBQ3BFLFNBQUssSUFBSTZsQixLQUFLLEdBQUd2QyxNQUFNLENBQUN0akIsQ0FBRCxDQUFsQixFQUF1QjNWLENBQUMsR0FBRyxDQUEzQixFQUE4QndPLENBQUMsR0FBR2d0QixLQUFLLENBQUMvakMsTUFBeEMsRUFBZ0QwNUIsSUFBckQsRUFBMkRueEIsQ0FBQyxHQUFHd08sQ0FBL0QsRUFBa0UsRUFBRXhPLENBQXBFLEVBQXVFO0FBQ3JFLFVBQUlteEIsSUFBSSxHQUFHcUssS0FBSyxDQUFDeDdCLENBQUQsQ0FBaEIsRUFBcUJveEMsUUFBUSxDQUFDajdDLElBQVQsQ0FBY2c3QixJQUFkLEVBQW9CQSxJQUFJLENBQUN5a0QsUUFBekIsRUFBbUM1MUUsQ0FBbkMsRUFBc0N3N0IsS0FBdEM7QUFDdEI7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRDs7QUNQRCxTQUFTcTlDLFVBQVQsQ0FBb0JyK0UsSUFBcEIsRUFBMEI7QUFDeEIsU0FBTyxZQUFXO0FBQ2hCLFNBQUtzb0UsZUFBTCxDQUFxQnRvRSxJQUFyQjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTcytFLFlBQVQsQ0FBc0J4RCxRQUF0QixFQUFnQztBQUM5QixTQUFPLFlBQVc7QUFDaEIsU0FBS3lELGlCQUFMLENBQXVCekQsUUFBUSxDQUFDenJFLEtBQWhDLEVBQXVDeXJFLFFBQVEsQ0FBQ0wsS0FBaEQ7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBUytELFlBQVQsQ0FBc0J4K0UsSUFBdEIsRUFBNEJoRSxLQUE1QixFQUFtQztBQUNqQyxTQUFPLFlBQVc7QUFDaEIsU0FBS2svRCxZQUFMLENBQWtCbDdELElBQWxCLEVBQXdCaEUsS0FBeEI7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBU3lpRixjQUFULENBQXdCM0QsUUFBeEIsRUFBa0M5K0UsS0FBbEMsRUFBeUM7QUFDdkMsU0FBTyxZQUFXO0FBQ2hCLFNBQUswaUYsY0FBTCxDQUFvQjVELFFBQVEsQ0FBQ3pyRSxLQUE3QixFQUFvQ3lyRSxRQUFRLENBQUNMLEtBQTdDLEVBQW9EeitFLEtBQXBEO0FBQ0QsR0FGRDtBQUdEOztBQUVELFNBQVMyaUYsWUFBVCxDQUFzQjMrRSxJQUF0QixFQUE0QmhFLEtBQTVCLEVBQW1DO0FBQ2pDLFNBQU8sWUFBVztBQUNoQixRQUFJd2dCLENBQUMsR0FBR3hnQixLQUFLLENBQUMyTyxLQUFOLENBQVksSUFBWixFQUFrQjNOLFNBQWxCLENBQVI7QUFDQSxRQUFJd2YsQ0FBQyxJQUFJLElBQVQsRUFBZSxLQUFLOHJELGVBQUwsQ0FBcUJ0b0UsSUFBckIsRUFBZixLQUNLLEtBQUtrN0QsWUFBTCxDQUFrQmw3RCxJQUFsQixFQUF3QndjLENBQXhCO0FBQ04sR0FKRDtBQUtEOztBQUVELFNBQVNvaUUsY0FBVCxDQUF3QjlELFFBQXhCLEVBQWtDOStFLEtBQWxDLEVBQXlDO0FBQ3ZDLFNBQU8sWUFBVztBQUNoQixRQUFJd2dCLENBQUMsR0FBR3hnQixLQUFLLENBQUMyTyxLQUFOLENBQVksSUFBWixFQUFrQjNOLFNBQWxCLENBQVI7QUFDQSxRQUFJd2YsQ0FBQyxJQUFJLElBQVQsRUFBZSxLQUFLK2hFLGlCQUFMLENBQXVCekQsUUFBUSxDQUFDenJFLEtBQWhDLEVBQXVDeXJFLFFBQVEsQ0FBQ0wsS0FBaEQsRUFBZixLQUNLLEtBQUtpRSxjQUFMLENBQW9CNUQsUUFBUSxDQUFDenJFLEtBQTdCLEVBQW9DeXJFLFFBQVEsQ0FBQ0wsS0FBN0MsRUFBb0RqK0QsQ0FBcEQ7QUFDTixHQUpEO0FBS0Q7O0FBRWMseUJBQVN4YyxJQUFULEVBQWVoRSxLQUFmLEVBQXNCO0FBQ25DLE1BQUk4K0UsUUFBUSxHQUFHaCtFLFNBQVMsQ0FBQ2tELElBQUQsQ0FBeEI7O0FBRUEsTUFBSWhELFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN4QixRQUFJMDVCLElBQUksR0FBRyxLQUFLQSxJQUFMLEVBQVg7QUFDQSxXQUFPbWtELFFBQVEsQ0FBQ0wsS0FBVCxHQUNEOWpELElBQUksQ0FBQ2tvRCxjQUFMLENBQW9CL0QsUUFBUSxDQUFDenJFLEtBQTdCLEVBQW9DeXJFLFFBQVEsQ0FBQ0wsS0FBN0MsQ0FEQyxHQUVEOWpELElBQUksQ0FBQ2drQyxZQUFMLENBQWtCbWdCLFFBQWxCLENBRk47QUFHRDs7QUFFRCxTQUFPLEtBQUsxZ0IsSUFBTCxDQUFVLENBQUNwK0QsS0FBSyxJQUFJLElBQVQsR0FDWDgrRSxRQUFRLENBQUNMLEtBQVQsR0FBaUI2RCxZQUFqQixHQUFnQ0QsVUFEckIsR0FDb0MsT0FBT3JpRixLQUFQLEtBQWlCLFVBQWpCLEdBQy9DOCtFLFFBQVEsQ0FBQ0wsS0FBVCxHQUFpQm1FLGNBQWpCLEdBQWtDRCxZQURhLEdBRS9DN0QsUUFBUSxDQUFDTCxLQUFULEdBQWlCZ0UsY0FBakIsR0FBa0NELFlBSHhCLEVBR3dDMUQsUUFIeEMsRUFHa0Q5K0UsS0FIbEQsQ0FBVixDQUFQO0FBSUQ7O0FDeERjLHNCQUFTMjZCLElBQVQsRUFBZTtBQUM1QixTQUFRQSxJQUFJLENBQUNza0MsYUFBTCxJQUFzQnRrQyxJQUFJLENBQUNza0MsYUFBTCxDQUFtQjBZLFdBQTFDO0FBQUEsS0FDQ2g5QyxJQUFJLENBQUNsMkIsUUFBTCxJQUFpQmsyQixJQURsQjtBQUFBLEtBRUFBLElBQUksQ0FBQ2c5QyxXQUZaLENBRDRCO0FBSTdCOztBQ0ZELFNBQVNtTCxXQUFULENBQXFCOStFLElBQXJCLEVBQTJCO0FBQ3pCLFNBQU8sWUFBVztBQUNoQixTQUFLc0osS0FBTCxDQUFXaytELGNBQVgsQ0FBMEJ4bkUsSUFBMUI7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBUysrRSxhQUFULENBQXVCLytFLElBQXZCLEVBQTZCaEUsS0FBN0IsRUFBb0NnakYsUUFBcEMsRUFBOEM7QUFDNUMsU0FBTyxZQUFXO0FBQ2hCLFNBQUsxMUUsS0FBTCxDQUFXKzlELFdBQVgsQ0FBdUJybkUsSUFBdkIsRUFBNkJoRSxLQUE3QixFQUFvQ2dqRixRQUFwQztBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTQyxhQUFULENBQXVCai9FLElBQXZCLEVBQTZCaEUsS0FBN0IsRUFBb0NnakYsUUFBcEMsRUFBOEM7QUFDNUMsU0FBTyxZQUFXO0FBQ2hCLFFBQUl4aUUsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtBQUNBLFFBQUl3ZixDQUFDLElBQUksSUFBVCxFQUFlLEtBQUtsVCxLQUFMLENBQVdrK0QsY0FBWCxDQUEwQnhuRSxJQUExQixFQUFmLEtBQ0ssS0FBS3NKLEtBQUwsQ0FBVys5RCxXQUFYLENBQXVCcm5FLElBQXZCLEVBQTZCd2MsQ0FBN0IsRUFBZ0N3aUUsUUFBaEM7QUFDTixHQUpEO0FBS0Q7O0FBRWMsMEJBQVNoL0UsSUFBVCxFQUFlaEUsS0FBZixFQUFzQmdqRixRQUF0QixFQUFnQztBQUM3QyxTQUFPaGlGLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUNELEtBQUttOUQsSUFBTCxDQUFVLENBQUNwK0QsS0FBSyxJQUFJLElBQVQsR0FDTDhpRixXQURLLEdBQ1MsT0FBTzlpRixLQUFQLEtBQWlCLFVBQWpCLEdBQ2RpakYsYUFEYyxHQUVkRixhQUhJLEVBR1cvK0UsSUFIWCxFQUdpQmhFLEtBSGpCLEVBR3dCZ2pGLFFBQVEsSUFBSSxJQUFaLEdBQW1CLEVBQW5CLEdBQXdCQSxRQUhoRCxDQUFWLENBREMsR0FLREUsVUFBVSxDQUFDLEtBQUt2b0QsSUFBTCxFQUFELEVBQWMzMkIsSUFBZCxDQUxoQjtBQU1EO0FBRU0sU0FBU2svRSxVQUFULENBQW9Cdm9ELElBQXBCLEVBQTBCMzJCLElBQTFCLEVBQWdDO0FBQ3JDLFNBQU8yMkIsSUFBSSxDQUFDcnRCLEtBQUwsQ0FBV2krRCxnQkFBWCxDQUE0QnZuRSxJQUE1QixLQUNBMnpFLFdBQVcsQ0FBQ2g5QyxJQUFELENBQVgsQ0FBa0JnMEMsZ0JBQWxCLENBQW1DaDBDLElBQW5DLEVBQXlDLElBQXpDLEVBQStDNHdDLGdCQUEvQyxDQUFnRXZuRSxJQUFoRSxDQURQO0FBRUQ7O0FDbENELFNBQVNtL0UsY0FBVCxDQUF3Qm4vRSxJQUF4QixFQUE4QjtBQUM1QixTQUFPLFlBQVc7QUFDaEIsV0FBTyxLQUFLQSxJQUFMLENBQVA7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBU28vRSxnQkFBVCxDQUEwQnAvRSxJQUExQixFQUFnQ2hFLEtBQWhDLEVBQXVDO0FBQ3JDLFNBQU8sWUFBVztBQUNoQixTQUFLZ0UsSUFBTCxJQUFhaEUsS0FBYjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTcWpGLGdCQUFULENBQTBCci9FLElBQTFCLEVBQWdDaEUsS0FBaEMsRUFBdUM7QUFDckMsU0FBTyxZQUFXO0FBQ2hCLFFBQUl3Z0IsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtBQUNBLFFBQUl3ZixDQUFDLElBQUksSUFBVCxFQUFlLE9BQU8sS0FBS3hjLElBQUwsQ0FBUCxDQUFmLEtBQ0ssS0FBS0EsSUFBTCxJQUFhd2MsQ0FBYjtBQUNOLEdBSkQ7QUFLRDs7QUFFYyw2QkFBU3hjLElBQVQsRUFBZWhFLEtBQWYsRUFBc0I7QUFDbkMsU0FBT2dCLFNBQVMsQ0FBQ0MsTUFBVixHQUFtQixDQUFuQixHQUNELEtBQUttOUQsSUFBTCxDQUFVLENBQUNwK0QsS0FBSyxJQUFJLElBQVQsR0FDUG1qRixjQURPLEdBQ1UsT0FBT25qRixLQUFQLEtBQWlCLFVBQWpCLEdBQ2pCcWpGLGdCQURpQixHQUVqQkQsZ0JBSE0sRUFHWXAvRSxJQUhaLEVBR2tCaEUsS0FIbEIsQ0FBVixDQURDLEdBS0QsS0FBSzI2QixJQUFMLEdBQVkzMkIsSUFBWixDQUxOO0FBTUQ7O0FDM0JELFNBQVNzL0UsVUFBVCxDQUFvQjU0RSxNQUFwQixFQUE0QjtBQUMxQixTQUFPQSxNQUFNLENBQUNpcEIsSUFBUCxHQUFjcnpCLEtBQWQsQ0FBb0IsT0FBcEIsQ0FBUDtBQUNEOztBQUVELFNBQVMwa0QsU0FBVCxDQUFtQnJxQixJQUFuQixFQUF5QjtBQUN2QixTQUFPQSxJQUFJLENBQUNxcUIsU0FBTCxJQUFrQixJQUFJdStCLFNBQUosQ0FBYzVvRCxJQUFkLENBQXpCO0FBQ0Q7O0FBRUQsU0FBUzRvRCxTQUFULENBQW1CNW9ELElBQW5CLEVBQXlCO0FBQ3ZCLE9BQUs2b0QsS0FBTCxHQUFhN29ELElBQWI7QUFDQSxPQUFLOG9ELE1BQUwsR0FBY0gsVUFBVSxDQUFDM29ELElBQUksQ0FBQ2drQyxZQUFMLENBQWtCLE9BQWxCLEtBQThCLEVBQS9CLENBQXhCO0FBQ0Q7O0FBRUQ0a0IsU0FBUyxDQUFDcDhFLFNBQVYsR0FBc0I7QUFDcEJ3bkIsRUFBQUEsR0FBRyxFQUFFLFVBQVMzcUIsSUFBVCxFQUFlO0FBQ2xCLFFBQUl3RixDQUFDLEdBQUcsS0FBS2k2RSxNQUFMLENBQVluNkUsT0FBWixDQUFvQnRGLElBQXBCLENBQVI7O0FBQ0EsUUFBSXdGLENBQUMsR0FBRyxDQUFSLEVBQVc7QUFDVCxXQUFLaTZFLE1BQUwsQ0FBWXZnRixJQUFaLENBQWlCYyxJQUFqQjs7QUFDQSxXQUFLdy9FLEtBQUwsQ0FBV3RrQixZQUFYLENBQXdCLE9BQXhCLEVBQWlDLEtBQUt1a0IsTUFBTCxDQUFZdDdFLElBQVosQ0FBaUIsR0FBakIsQ0FBakM7QUFDRDtBQUNGLEdBUG1CO0FBUXBCcTVFLEVBQUFBLE1BQU0sRUFBRSxVQUFTeDlFLElBQVQsRUFBZTtBQUNyQixRQUFJd0YsQ0FBQyxHQUFHLEtBQUtpNkUsTUFBTCxDQUFZbjZFLE9BQVosQ0FBb0J0RixJQUFwQixDQUFSOztBQUNBLFFBQUl3RixDQUFDLElBQUksQ0FBVCxFQUFZO0FBQ1YsV0FBS2k2RSxNQUFMLENBQVl0aUUsTUFBWixDQUFtQjNYLENBQW5CLEVBQXNCLENBQXRCOztBQUNBLFdBQUtnNkUsS0FBTCxDQUFXdGtCLFlBQVgsQ0FBd0IsT0FBeEIsRUFBaUMsS0FBS3VrQixNQUFMLENBQVl0N0UsSUFBWixDQUFpQixHQUFqQixDQUFqQztBQUNEO0FBQ0YsR0FkbUI7QUFlcEJpNEQsRUFBQUEsUUFBUSxFQUFFLFVBQVNwOEQsSUFBVCxFQUFlO0FBQ3ZCLFdBQU8sS0FBS3kvRSxNQUFMLENBQVluNkUsT0FBWixDQUFvQnRGLElBQXBCLEtBQTZCLENBQXBDO0FBQ0Q7QUFqQm1CLENBQXRCOztBQW9CQSxTQUFTMC9FLFVBQVQsQ0FBb0Ivb0QsSUFBcEIsRUFBMEJweEIsS0FBMUIsRUFBaUM7QUFDL0IsTUFBSTBpQixJQUFJLEdBQUcrNEIsU0FBUyxDQUFDcnFCLElBQUQsQ0FBcEI7QUFBQSxNQUE0Qm54QixDQUFDLEdBQUcsQ0FBQyxDQUFqQztBQUFBLE1BQW9Dd08sQ0FBQyxHQUFHek8sS0FBSyxDQUFDdEksTUFBOUM7O0FBQ0EsU0FBTyxFQUFFdUksQ0FBRixHQUFNd08sQ0FBYixFQUFnQmlVLElBQUksQ0FBQzBDLEdBQUwsQ0FBU3BsQixLQUFLLENBQUNDLENBQUQsQ0FBZDtBQUNqQjs7QUFFRCxTQUFTbTZFLGFBQVQsQ0FBdUJocEQsSUFBdkIsRUFBNkJweEIsS0FBN0IsRUFBb0M7QUFDbEMsTUFBSTBpQixJQUFJLEdBQUcrNEIsU0FBUyxDQUFDcnFCLElBQUQsQ0FBcEI7QUFBQSxNQUE0Qm54QixDQUFDLEdBQUcsQ0FBQyxDQUFqQztBQUFBLE1BQW9Dd08sQ0FBQyxHQUFHek8sS0FBSyxDQUFDdEksTUFBOUM7O0FBQ0EsU0FBTyxFQUFFdUksQ0FBRixHQUFNd08sQ0FBYixFQUFnQmlVLElBQUksQ0FBQ3UxRCxNQUFMLENBQVlqNEUsS0FBSyxDQUFDQyxDQUFELENBQWpCO0FBQ2pCOztBQUVELFNBQVNvNkUsV0FBVCxDQUFxQnI2RSxLQUFyQixFQUE0QjtBQUMxQixTQUFPLFlBQVc7QUFDaEJtNkUsSUFBQUEsVUFBVSxDQUFDLElBQUQsRUFBT242RSxLQUFQLENBQVY7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBU3M2RSxZQUFULENBQXNCdDZFLEtBQXRCLEVBQTZCO0FBQzNCLFNBQU8sWUFBVztBQUNoQm82RSxJQUFBQSxhQUFhLENBQUMsSUFBRCxFQUFPcDZFLEtBQVAsQ0FBYjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTdTZFLGVBQVQsQ0FBeUJ2NkUsS0FBekIsRUFBZ0N2SixLQUFoQyxFQUF1QztBQUNyQyxTQUFPLFlBQVc7QUFDaEIsS0FBQ0EsS0FBSyxDQUFDMk8sS0FBTixDQUFZLElBQVosRUFBa0IzTixTQUFsQixJQUErQjBpRixVQUEvQixHQUE0Q0MsYUFBN0MsRUFBNEQsSUFBNUQsRUFBa0VwNkUsS0FBbEU7QUFDRCxHQUZEO0FBR0Q7O0FBRWMsNEJBQVN2RixJQUFULEVBQWVoRSxLQUFmLEVBQXNCO0FBQ25DLE1BQUl1SixLQUFLLEdBQUcrNUUsVUFBVSxDQUFDdC9FLElBQUksR0FBRyxFQUFSLENBQXRCOztBQUVBLE1BQUloRCxTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsUUFBSWdyQixJQUFJLEdBQUcrNEIsU0FBUyxDQUFDLEtBQUtycUIsSUFBTCxFQUFELENBQXBCO0FBQUEsUUFBbUNueEIsQ0FBQyxHQUFHLENBQUMsQ0FBeEM7QUFBQSxRQUEyQ3dPLENBQUMsR0FBR3pPLEtBQUssQ0FBQ3RJLE1BQXJEOztBQUNBLFdBQU8sRUFBRXVJLENBQUYsR0FBTXdPLENBQWIsRUFBZ0IsSUFBSSxDQUFDaVUsSUFBSSxDQUFDbTBDLFFBQUwsQ0FBYzcyRCxLQUFLLENBQUNDLENBQUQsQ0FBbkIsQ0FBTCxFQUE4QixPQUFPLEtBQVA7O0FBQzlDLFdBQU8sSUFBUDtBQUNEOztBQUVELFNBQU8sS0FBSzQwRCxJQUFMLENBQVUsQ0FBQyxPQUFPcCtELEtBQVAsS0FBaUIsVUFBakIsR0FDWjhqRixlQURZLEdBQ005akYsS0FBSyxHQUN2QjRqRixXQUR1QixHQUV2QkMsWUFIVyxFQUdHdDZFLEtBSEgsRUFHVXZKLEtBSFYsQ0FBVixDQUFQO0FBSUQ7O0FDMUVELFNBQVMrakYsVUFBVCxHQUFzQjtBQUNwQixPQUFLdlYsV0FBTCxHQUFtQixFQUFuQjtBQUNEOztBQUVELFNBQVN3VixZQUFULENBQXNCaGtGLEtBQXRCLEVBQTZCO0FBQzNCLFNBQU8sWUFBVztBQUNoQixTQUFLd3VFLFdBQUwsR0FBbUJ4dUUsS0FBbkI7QUFDRCxHQUZEO0FBR0Q7O0FBRUQsU0FBU2lrRixZQUFULENBQXNCamtGLEtBQXRCLEVBQTZCO0FBQzNCLFNBQU8sWUFBVztBQUNoQixRQUFJd2dCLENBQUMsR0FBR3hnQixLQUFLLENBQUMyTyxLQUFOLENBQVksSUFBWixFQUFrQjNOLFNBQWxCLENBQVI7QUFDQSxTQUFLd3RFLFdBQUwsR0FBbUJodUQsQ0FBQyxJQUFJLElBQUwsR0FBWSxFQUFaLEdBQWlCQSxDQUFwQztBQUNELEdBSEQ7QUFJRDs7QUFFYyx5QkFBU3hnQixLQUFULEVBQWdCO0FBQzdCLFNBQU9nQixTQUFTLENBQUNDLE1BQVYsR0FDRCxLQUFLbTlELElBQUwsQ0FBVXArRCxLQUFLLElBQUksSUFBVCxHQUNOK2pGLFVBRE0sR0FDTyxDQUFDLE9BQU8vakYsS0FBUCxLQUFpQixVQUFqQixHQUNkaWtGLFlBRGMsR0FFZEQsWUFGYSxFQUVDaGtGLEtBRkQsQ0FEakIsQ0FEQyxHQUtELEtBQUsyNkIsSUFBTCxHQUFZNnpDLFdBTGxCO0FBTUQ7O0FDeEJELFNBQVMwVixVQUFULEdBQXNCO0FBQ3BCLE9BQUszVixTQUFMLEdBQWlCLEVBQWpCO0FBQ0Q7O0FBRUQsU0FBUzRWLFlBQVQsQ0FBc0Jua0YsS0FBdEIsRUFBNkI7QUFDM0IsU0FBTyxZQUFXO0FBQ2hCLFNBQUt1dUUsU0FBTCxHQUFpQnZ1RSxLQUFqQjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTb2tGLFlBQVQsQ0FBc0Jwa0YsS0FBdEIsRUFBNkI7QUFDM0IsU0FBTyxZQUFXO0FBQ2hCLFFBQUl3Z0IsQ0FBQyxHQUFHeGdCLEtBQUssQ0FBQzJPLEtBQU4sQ0FBWSxJQUFaLEVBQWtCM04sU0FBbEIsQ0FBUjtBQUNBLFNBQUt1dEUsU0FBTCxHQUFpQi90RCxDQUFDLElBQUksSUFBTCxHQUFZLEVBQVosR0FBaUJBLENBQWxDO0FBQ0QsR0FIRDtBQUlEOztBQUVjLHlCQUFTeGdCLEtBQVQsRUFBZ0I7QUFDN0IsU0FBT2dCLFNBQVMsQ0FBQ0MsTUFBVixHQUNELEtBQUttOUQsSUFBTCxDQUFVcCtELEtBQUssSUFBSSxJQUFULEdBQ05ra0YsVUFETSxHQUNPLENBQUMsT0FBT2xrRixLQUFQLEtBQWlCLFVBQWpCLEdBQ2Rva0YsWUFEYyxHQUVkRCxZQUZhLEVBRUNua0YsS0FGRCxDQURqQixDQURDLEdBS0QsS0FBSzI2QixJQUFMLEdBQVk0ekMsU0FMbEI7QUFNRDs7QUN4QkQsU0FBUzhWLEtBQVQsR0FBaUI7QUFDZixNQUFJLEtBQUtsVyxXQUFULEVBQXNCLEtBQUs5TixVQUFMLENBQWdCN3lELFdBQWhCLENBQTRCLElBQTVCO0FBQ3ZCOztBQUVjLDRCQUFXO0FBQ3hCLFNBQU8sS0FBSzR3RCxJQUFMLENBQVVpbUIsS0FBVixDQUFQO0FBQ0Q7O0FDTkQsU0FBU2pwQyxLQUFULEdBQWlCO0FBQ2YsTUFBSSxLQUFLa3pCLGVBQVQsRUFBMEIsS0FBS2pPLFVBQUwsQ0FBZ0JzTSxZQUFoQixDQUE2QixJQUE3QixFQUFtQyxLQUFLdE0sVUFBTCxDQUFnQmlrQixVQUFuRDtBQUMzQjs7QUFFYyw0QkFBVztBQUN4QixTQUFPLEtBQUtsbUIsSUFBTCxDQUFVaGpCLEtBQVYsQ0FBUDtBQUNEOztBQ0pjLDJCQUFTcDNDLElBQVQsRUFBZTtBQUM1QixNQUFJZ0ssTUFBTSxHQUFHLE9BQU9oSyxJQUFQLEtBQWdCLFVBQWhCLEdBQTZCQSxJQUE3QixHQUFvQ3VnRixPQUFPLENBQUN2Z0YsSUFBRCxDQUF4RDtBQUNBLFNBQU8sS0FBS2drRSxNQUFMLENBQVksWUFBVztBQUM1QixXQUFPLEtBQUt4NkQsV0FBTCxDQUFpQlEsTUFBTSxDQUFDVyxLQUFQLENBQWEsSUFBYixFQUFtQjNOLFNBQW5CLENBQWpCLENBQVA7QUFDRCxHQUZNLENBQVA7QUFHRDs7QUNKRCxTQUFTd2pGLFlBQVQsR0FBd0I7QUFDdEIsU0FBTyxJQUFQO0FBQ0Q7O0FBRWMsMkJBQVN4Z0YsSUFBVCxFQUFlNG9FLE1BQWYsRUFBdUI7QUFDcEMsTUFBSTUrRCxNQUFNLEdBQUcsT0FBT2hLLElBQVAsS0FBZ0IsVUFBaEIsR0FBNkJBLElBQTdCLEdBQW9DdWdGLE9BQU8sQ0FBQ3ZnRixJQUFELENBQXhEO0FBQUEsTUFDSWdrRSxNQUFNLEdBQUc0RSxNQUFNLElBQUksSUFBVixHQUFpQjRYLFlBQWpCLEdBQWdDLE9BQU81WCxNQUFQLEtBQWtCLFVBQWxCLEdBQStCQSxNQUEvQixHQUF3Q3pELFFBQVEsQ0FBQ3lELE1BQUQsQ0FEN0Y7QUFFQSxTQUFPLEtBQUs1RSxNQUFMLENBQVksWUFBVztBQUM1QixXQUFPLEtBQUsyRSxZQUFMLENBQWtCMytELE1BQU0sQ0FBQ1csS0FBUCxDQUFhLElBQWIsRUFBbUIzTixTQUFuQixDQUFsQixFQUFpRGduRSxNQUFNLENBQUNyNUQsS0FBUCxDQUFhLElBQWIsRUFBbUIzTixTQUFuQixLQUFpQyxJQUFsRixDQUFQO0FBQ0QsR0FGTSxDQUFQO0FBR0Q7O0FDYkQsU0FBU3dnRixNQUFULEdBQWtCO0FBQ2hCLE1BQUkxbUQsTUFBTSxHQUFHLEtBQUt1bEMsVUFBbEI7QUFDQSxNQUFJdmxDLE1BQUosRUFBWUEsTUFBTSxDQUFDakIsV0FBUCxDQUFtQixJQUFuQjtBQUNiOztBQUVjLDZCQUFXO0FBQ3hCLFNBQU8sS0FBS3VrQyxJQUFMLENBQVVvakIsTUFBVixDQUFQO0FBQ0Q7O0FDUEQsU0FBU2lELHNCQUFULEdBQWtDO0FBQ2hDLE1BQUlDLEtBQUssR0FBRyxLQUFLelgsU0FBTCxDQUFlLEtBQWYsQ0FBWjtBQUFBLE1BQW1DbnlDLE1BQU0sR0FBRyxLQUFLdWxDLFVBQWpEO0FBQ0EsU0FBT3ZsQyxNQUFNLEdBQUdBLE1BQU0sQ0FBQzZ4QyxZQUFQLENBQW9CK1gsS0FBcEIsRUFBMkIsS0FBS3ZXLFdBQWhDLENBQUgsR0FBa0R1VyxLQUEvRDtBQUNEOztBQUVELFNBQVNDLG1CQUFULEdBQStCO0FBQzdCLE1BQUlELEtBQUssR0FBRyxLQUFLelgsU0FBTCxDQUFlLElBQWYsQ0FBWjtBQUFBLE1BQWtDbnlDLE1BQU0sR0FBRyxLQUFLdWxDLFVBQWhEO0FBQ0EsU0FBT3ZsQyxNQUFNLEdBQUdBLE1BQU0sQ0FBQzZ4QyxZQUFQLENBQW9CK1gsS0FBcEIsRUFBMkIsS0FBS3ZXLFdBQWhDLENBQUgsR0FBa0R1VyxLQUEvRDtBQUNEOztBQUVjLDBCQUFTeFgsSUFBVCxFQUFlO0FBQzVCLFNBQU8sS0FBS2xGLE1BQUwsQ0FBWWtGLElBQUksR0FBR3lYLG1CQUFILEdBQXlCRixzQkFBekMsQ0FBUDtBQUNEOztBQ1pjLDBCQUFTemtGLEtBQVQsRUFBZ0I7QUFDN0IsU0FBT2dCLFNBQVMsQ0FBQ0MsTUFBVixHQUNELEtBQUsrbUIsUUFBTCxDQUFjLFVBQWQsRUFBMEJob0IsS0FBMUIsQ0FEQyxHQUVELEtBQUsyNkIsSUFBTCxHQUFZeWtELFFBRmxCO0FBR0Q7O0FDSkQsU0FBU3dGLGVBQVQsQ0FBeUIzckQsUUFBekIsRUFBbUM7QUFDakMsU0FBTyxVQUFTQyxLQUFULEVBQWdCO0FBQ3JCRCxJQUFBQSxRQUFRLENBQUN0NUIsSUFBVCxDQUFjLElBQWQsRUFBb0J1NUIsS0FBcEIsRUFBMkIsS0FBS2ttRCxRQUFoQztBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTckgsY0FBVCxDQUF3QkMsU0FBeEIsRUFBbUM7QUFDakMsU0FBT0EsU0FBUyxDQUFDcmtELElBQVYsR0FBaUJyekIsS0FBakIsQ0FBdUIsT0FBdkIsRUFBZ0NnUSxHQUFoQyxDQUFvQyxVQUFTaWhCLENBQVQsRUFBWTtBQUNyRCxRQUFJdnRCLElBQUksR0FBRyxFQUFYO0FBQUEsUUFBZXdGLENBQUMsR0FBRytuQixDQUFDLENBQUNqb0IsT0FBRixDQUFVLEdBQVYsQ0FBbkI7QUFDQSxRQUFJRSxDQUFDLElBQUksQ0FBVCxFQUFZeEYsSUFBSSxHQUFHdXRCLENBQUMsQ0FBQ254QixLQUFGLENBQVFvSixDQUFDLEdBQUcsQ0FBWixDQUFQLEVBQXVCK25CLENBQUMsR0FBR0EsQ0FBQyxDQUFDbnhCLEtBQUYsQ0FBUSxDQUFSLEVBQVdvSixDQUFYLENBQTNCO0FBQ1osV0FBTztBQUFDN0MsTUFBQUEsSUFBSSxFQUFFNHFCLENBQVA7QUFBVXZ0QixNQUFBQSxJQUFJLEVBQUVBO0FBQWhCLEtBQVA7QUFDRCxHQUpNLENBQVA7QUFLRDs7QUFFRCxTQUFTNmdGLFFBQVQsQ0FBa0IxTSxRQUFsQixFQUE0QjtBQUMxQixTQUFPLFlBQVc7QUFDaEIsUUFBSUQsRUFBRSxHQUFHLEtBQUs0TSxJQUFkO0FBQ0EsUUFBSSxDQUFDNU0sRUFBTCxFQUFTOztBQUNULFNBQUssSUFBSS80RCxDQUFDLEdBQUcsQ0FBUixFQUFXM1YsQ0FBQyxHQUFHLENBQUMsQ0FBaEIsRUFBbUJ3Z0MsQ0FBQyxHQUFHa3VDLEVBQUUsQ0FBQ2ozRSxNQUExQixFQUFrQzhqRixDQUF2QyxFQUEwQzVsRSxDQUFDLEdBQUc2cUIsQ0FBOUMsRUFBaUQsRUFBRTdxQixDQUFuRCxFQUFzRDtBQUNwRCxVQUFJNGxFLENBQUMsR0FBRzdNLEVBQUUsQ0FBQy80RCxDQUFELENBQU4sRUFBVyxDQUFDLENBQUNnNUQsUUFBUSxDQUFDeHhFLElBQVYsSUFBa0JvK0UsQ0FBQyxDQUFDcCtFLElBQUYsS0FBV3d4RSxRQUFRLENBQUN4eEUsSUFBdkMsS0FBZ0RvK0UsQ0FBQyxDQUFDL2dGLElBQUYsS0FBV20wRSxRQUFRLENBQUNuMEUsSUFBbkYsRUFBeUY7QUFDdkYsYUFBS3lvRSxtQkFBTCxDQUF5QnNZLENBQUMsQ0FBQ3ArRSxJQUEzQixFQUFpQ28rRSxDQUFDLENBQUM5ckQsUUFBbkMsRUFBNkM4ckQsQ0FBQyxDQUFDbDlFLE9BQS9DO0FBQ0QsT0FGRCxNQUVPO0FBQ0xxd0UsUUFBQUEsRUFBRSxDQUFDLEVBQUUxdUUsQ0FBSCxDQUFGLEdBQVV1N0UsQ0FBVjtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSSxFQUFFdjdFLENBQU4sRUFBUzB1RSxFQUFFLENBQUNqM0UsTUFBSCxHQUFZdUksQ0FBWixDQUFULEtBQ0ssT0FBTyxLQUFLczdFLElBQVo7QUFDTixHQVpEO0FBYUQ7O0FBRUQsU0FBU0UsS0FBVCxDQUFlN00sUUFBZixFQUF5Qm40RSxLQUF6QixFQUFnQzZILE9BQWhDLEVBQXlDO0FBQ3ZDLFNBQU8sWUFBVztBQUNoQixRQUFJcXdFLEVBQUUsR0FBRyxLQUFLNE0sSUFBZDtBQUFBLFFBQW9CQyxDQUFwQjtBQUFBLFFBQXVCOXJELFFBQVEsR0FBRzJyRCxlQUFlLENBQUM1a0YsS0FBRCxDQUFqRDtBQUNBLFFBQUlrNEUsRUFBSixFQUFRLEtBQUssSUFBSS80RCxDQUFDLEdBQUcsQ0FBUixFQUFXNnFCLENBQUMsR0FBR2t1QyxFQUFFLENBQUNqM0UsTUFBdkIsRUFBK0JrZSxDQUFDLEdBQUc2cUIsQ0FBbkMsRUFBc0MsRUFBRTdxQixDQUF4QyxFQUEyQztBQUNqRCxVQUFJLENBQUM0bEUsQ0FBQyxHQUFHN00sRUFBRSxDQUFDLzRELENBQUQsQ0FBUCxFQUFZeFksSUFBWixLQUFxQnd4RSxRQUFRLENBQUN4eEUsSUFBOUIsSUFBc0NvK0UsQ0FBQyxDQUFDL2dGLElBQUYsS0FBV20wRSxRQUFRLENBQUNuMEUsSUFBOUQsRUFBb0U7QUFDbEUsYUFBS3lvRSxtQkFBTCxDQUF5QnNZLENBQUMsQ0FBQ3ArRSxJQUEzQixFQUFpQ28rRSxDQUFDLENBQUM5ckQsUUFBbkMsRUFBNkM4ckQsQ0FBQyxDQUFDbDlFLE9BQS9DO0FBQ0EsYUFBSzh4QixnQkFBTCxDQUFzQm9yRCxDQUFDLENBQUNwK0UsSUFBeEIsRUFBOEJvK0UsQ0FBQyxDQUFDOXJELFFBQUYsR0FBYUEsUUFBM0MsRUFBcUQ4ckQsQ0FBQyxDQUFDbDlFLE9BQUYsR0FBWUEsT0FBakU7QUFDQWs5RSxRQUFBQSxDQUFDLENBQUMva0YsS0FBRixHQUFVQSxLQUFWO0FBQ0E7QUFDRDtBQUNGO0FBQ0QsU0FBSzI1QixnQkFBTCxDQUFzQncrQyxRQUFRLENBQUN4eEUsSUFBL0IsRUFBcUNzeUIsUUFBckMsRUFBK0NweEIsT0FBL0M7QUFDQWs5RSxJQUFBQSxDQUFDLEdBQUc7QUFBQ3ArRSxNQUFBQSxJQUFJLEVBQUV3eEUsUUFBUSxDQUFDeHhFLElBQWhCO0FBQXNCM0MsTUFBQUEsSUFBSSxFQUFFbTBFLFFBQVEsQ0FBQ24wRSxJQUFyQztBQUEyQ2hFLE1BQUFBLEtBQUssRUFBRUEsS0FBbEQ7QUFBeURpNUIsTUFBQUEsUUFBUSxFQUFFQSxRQUFuRTtBQUE2RXB4QixNQUFBQSxPQUFPLEVBQUVBO0FBQXRGLEtBQUo7QUFDQSxRQUFJLENBQUNxd0UsRUFBTCxFQUFTLEtBQUs0TSxJQUFMLEdBQVksQ0FBQ0MsQ0FBRCxDQUFaLENBQVQsS0FDSzdNLEVBQUUsQ0FBQ2gxRSxJQUFILENBQVE2aEYsQ0FBUjtBQUNOLEdBZEQ7QUFlRDs7QUFFYyx1QkFBUzVNLFFBQVQsRUFBbUJuNEUsS0FBbkIsRUFBMEI2SCxPQUExQixFQUFtQztBQUNoRCxNQUFJbXdFLFNBQVMsR0FBR0QsY0FBYyxDQUFDSSxRQUFRLEdBQUcsRUFBWixDQUE5QjtBQUFBLE1BQStDM3VFLENBQS9DO0FBQUEsTUFBa0R3TyxDQUFDLEdBQUdnZ0UsU0FBUyxDQUFDLzJFLE1BQWhFO0FBQUEsTUFBd0Vzd0IsQ0FBeEU7O0FBRUEsTUFBSXZ3QixTQUFTLENBQUNDLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsUUFBSWkzRSxFQUFFLEdBQUcsS0FBS3Y5QyxJQUFMLEdBQVltcUQsSUFBckI7O0FBQ0EsUUFBSTVNLEVBQUosRUFBUSxLQUFLLElBQUkvNEQsQ0FBQyxHQUFHLENBQVIsRUFBVzZxQixDQUFDLEdBQUdrdUMsRUFBRSxDQUFDajNFLE1BQWxCLEVBQTBCOGpGLENBQS9CLEVBQWtDNWxFLENBQUMsR0FBRzZxQixDQUF0QyxFQUF5QyxFQUFFN3FCLENBQTNDLEVBQThDO0FBQ3BELFdBQUszVixDQUFDLEdBQUcsQ0FBSixFQUFPdTdFLENBQUMsR0FBRzdNLEVBQUUsQ0FBQy80RCxDQUFELENBQWxCLEVBQXVCM1YsQ0FBQyxHQUFHd08sQ0FBM0IsRUFBOEIsRUFBRXhPLENBQWhDLEVBQW1DO0FBQ2pDLFlBQUksQ0FBQytuQixDQUFDLEdBQUd5bUQsU0FBUyxDQUFDeHVFLENBQUQsQ0FBZCxFQUFtQjdDLElBQW5CLEtBQTRCbytFLENBQUMsQ0FBQ3ArRSxJQUE5QixJQUFzQzRxQixDQUFDLENBQUN2dEIsSUFBRixLQUFXK2dGLENBQUMsQ0FBQy9nRixJQUF2RCxFQUE2RDtBQUMzRCxpQkFBTytnRixDQUFDLENBQUMva0YsS0FBVDtBQUNEO0FBQ0Y7QUFDRjtBQUNEO0FBQ0Q7O0FBRURrNEUsRUFBQUEsRUFBRSxHQUFHbDRFLEtBQUssR0FBR2dsRixLQUFILEdBQVdILFFBQXJCOztBQUNBLE9BQUtyN0UsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHd08sQ0FBaEIsRUFBbUIsRUFBRXhPLENBQXJCLEVBQXdCLEtBQUs0MEQsSUFBTCxDQUFVOFosRUFBRSxDQUFDRixTQUFTLENBQUN4dUUsQ0FBRCxDQUFWLEVBQWV4SixLQUFmLEVBQXNCNkgsT0FBdEIsQ0FBWjs7QUFDeEIsU0FBTyxJQUFQO0FBQ0Q7O0FDaEVELFNBQVMrMEIsYUFBVCxDQUF1QmpDLElBQXZCLEVBQTZCaDBCLElBQTdCLEVBQW1Db2pELE1BQW5DLEVBQTJDO0FBQ3pDLE1BQUluckQsTUFBTSxHQUFHKzRFLFdBQVcsQ0FBQ2g5QyxJQUFELENBQXhCO0FBQUEsTUFDSXpCLEtBQUssR0FBR3Q2QixNQUFNLENBQUNxbUYsV0FEbkI7O0FBR0EsTUFBSSxPQUFPL3JELEtBQVAsS0FBaUIsVUFBckIsRUFBaUM7QUFDL0JBLElBQUFBLEtBQUssR0FBRyxJQUFJQSxLQUFKLENBQVV2eUIsSUFBVixFQUFnQm9qRCxNQUFoQixDQUFSO0FBQ0QsR0FGRCxNQUVPO0FBQ0w3d0IsSUFBQUEsS0FBSyxHQUFHdDZCLE1BQU0sQ0FBQzZGLFFBQVAsQ0FBZ0JrNEIsV0FBaEIsQ0FBNEIsT0FBNUIsQ0FBUjtBQUNBLFFBQUlvdEIsTUFBSixFQUFZN3dCLEtBQUssQ0FBQzJGLFNBQU4sQ0FBZ0JsNEIsSUFBaEIsRUFBc0JvakQsTUFBTSxDQUFDbTdCLE9BQTdCLEVBQXNDbjdCLE1BQU0sQ0FBQ283QixVQUE3QyxHQUEwRGpzRCxLQUFLLENBQUNrc0QsTUFBTixHQUFlcjdCLE1BQU0sQ0FBQ3E3QixNQUFoRixDQUFaLEtBQ0tsc0QsS0FBSyxDQUFDMkYsU0FBTixDQUFnQmw0QixJQUFoQixFQUFzQixLQUF0QixFQUE2QixLQUE3QjtBQUNOOztBQUVEZzBCLEVBQUFBLElBQUksQ0FBQ2lDLGFBQUwsQ0FBbUIxRCxLQUFuQjtBQUNEOztBQUVELFNBQVNtc0QsZ0JBQVQsQ0FBMEIxK0UsSUFBMUIsRUFBZ0NvakQsTUFBaEMsRUFBd0M7QUFDdEMsU0FBTyxZQUFXO0FBQ2hCLFdBQU9udEIsYUFBYSxDQUFDLElBQUQsRUFBT2oyQixJQUFQLEVBQWFvakQsTUFBYixDQUFwQjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTdTdCLGdCQUFULENBQTBCMytFLElBQTFCLEVBQWdDb2pELE1BQWhDLEVBQXdDO0FBQ3RDLFNBQU8sWUFBVztBQUNoQixXQUFPbnRCLGFBQWEsQ0FBQyxJQUFELEVBQU9qMkIsSUFBUCxFQUFhb2pELE1BQU0sQ0FBQ3A3QyxLQUFQLENBQWEsSUFBYixFQUFtQjNOLFNBQW5CLENBQWIsQ0FBcEI7QUFDRCxHQUZEO0FBR0Q7O0FBRWMsNkJBQVMyRixJQUFULEVBQWVvakQsTUFBZixFQUF1QjtBQUNwQyxTQUFPLEtBQUtxVSxJQUFMLENBQVUsQ0FBQyxPQUFPclUsTUFBUCxLQUFrQixVQUFsQixHQUNadTdCLGdCQURZLEdBRVpELGdCQUZXLEVBRU8xK0UsSUFGUCxFQUVhb2pELE1BRmIsQ0FBVixDQUFQO0FBR0Q7O0FDakNjLGdDQUFZO0FBQ3pCLE9BQUssSUFBSXRuQixNQUFNLEdBQUcsS0FBS3U4QyxPQUFsQixFQUEyQjcvRCxDQUFDLEdBQUcsQ0FBL0IsRUFBa0M2cUIsQ0FBQyxHQUFHdkgsTUFBTSxDQUFDeGhDLE1BQWxELEVBQTBEa2UsQ0FBQyxHQUFHNnFCLENBQTlELEVBQWlFLEVBQUU3cUIsQ0FBbkUsRUFBc0U7QUFDcEUsU0FBSyxJQUFJNmxCLEtBQUssR0FBR3ZDLE1BQU0sQ0FBQ3RqQixDQUFELENBQWxCLEVBQXVCM1YsQ0FBQyxHQUFHLENBQTNCLEVBQThCd08sQ0FBQyxHQUFHZ3RCLEtBQUssQ0FBQy9qQyxNQUF4QyxFQUFnRDA1QixJQUFyRCxFQUEyRG54QixDQUFDLEdBQUd3TyxDQUEvRCxFQUFrRSxFQUFFeE8sQ0FBcEUsRUFBdUU7QUFDckUsVUFBSW14QixJQUFJLEdBQUdxSyxLQUFLLENBQUN4N0IsQ0FBRCxDQUFoQixFQUFxQixNQUFNbXhCLElBQU47QUFDdEI7QUFDRjtBQUNGOztBQzZCTSxJQUFJbWUsSUFBSSxHQUFHLENBQUMsSUFBRCxDQUFYO0FBRUEsU0FBU3VtQyxTQUFULENBQW1CNThDLE1BQW5CLEVBQTJCZzlDLE9BQTNCLEVBQW9DO0FBQ3pDLE9BQUtULE9BQUwsR0FBZXY4QyxNQUFmO0FBQ0EsT0FBSzY4QyxRQUFMLEdBQWdCRyxPQUFoQjtBQUNEOztBQU1ELFNBQVM4RixtQkFBVCxHQUErQjtBQUM3QixTQUFPLElBQVA7QUFDRDs7QUFFRGxHLFNBQVMsQ0FBQ2w0RSxTQUFWLEdBQTRDO0FBQzFDb0ksRUFBQUEsV0FBVyxFQUFFOHZFLFNBRDZCO0FBRTFDclgsRUFBQUEsTUFBTSxFQUFFd2QsZ0JBRmtDO0FBRzFDekYsRUFBQUEsU0FBUyxFQUFFMEYsbUJBSCtCO0FBSTFDQyxFQUFBQSxXQUFXLEVBQUVDLHFCQUo2QjtBQUsxQ0MsRUFBQUEsY0FBYyxFQUFFQyx3QkFMMEI7QUFNMUN0MUUsRUFBQUEsTUFBTSxFQUFFdTFFLGdCQU5rQztBQU8xQ3g3RSxFQUFBQSxJQUFJLEVBQUV5N0UsY0FQb0M7QUFRMUMvcUQsRUFBQUEsS0FBSyxFQUFFZ3JELGVBUm1DO0FBUzFDanJELEVBQUFBLElBQUksRUFBRWtyRCxjQVRvQztBQVUxQzk5RSxFQUFBQSxJQUFJLEVBQUUrOUUsY0FWb0M7QUFXMUNobkUsRUFBQUEsS0FBSyxFQUFFaW5FLGVBWG1DO0FBWTFDMUUsRUFBQUEsU0FBUyxFQUFFOEQsbUJBWitCO0FBYTFDM2hCLEVBQUFBLEtBQUssRUFBRXdpQixlQWJtQztBQWMxQ25tRSxFQUFBQSxJQUFJLEVBQUVvbUUsY0Fkb0M7QUFlMUMxbUYsRUFBQUEsSUFBSSxFQUFFMm1GLGNBZm9DO0FBZ0IxQzltQixFQUFBQSxLQUFLLEVBQUUrbUIsZUFoQm1DO0FBaUIxQzVyRCxFQUFBQSxJQUFJLEVBQUU2ckQsY0FqQm9DO0FBa0IxQ2gzRCxFQUFBQSxJQUFJLEVBQUVpM0QsY0FsQm9DO0FBbUIxQzczRSxFQUFBQSxLQUFLLEVBQUU4M0UsZUFuQm1DO0FBb0IxQ3RvQixFQUFBQSxJQUFJLEVBQUV1b0IsY0FwQm9DO0FBcUIxQzlsQixFQUFBQSxJQUFJLEVBQUUrbEIsY0FyQm9DO0FBc0IxQ3Q1RSxFQUFBQSxLQUFLLEVBQUV1NUUsZUF0Qm1DO0FBdUIxQzcrRCxFQUFBQSxRQUFRLEVBQUU4K0Qsa0JBdkJnQztBQXdCMUNDLEVBQUFBLE9BQU8sRUFBRUMsaUJBeEJpQztBQXlCMUNqd0IsRUFBQUEsSUFBSSxFQUFFa3dCLGNBekJvQztBQTBCMUMvNkUsRUFBQUEsSUFBSSxFQUFFZzdFLGNBMUJvQztBQTJCMUM3QyxFQUFBQSxLQUFLLEVBQUU4QyxlQTNCbUM7QUE0QjFDL3JDLEVBQUFBLEtBQUssRUFBRWdzQyxlQTVCbUM7QUE2QjFDLzhCLEVBQUFBLE1BQU0sRUFBRWc5QixnQkE3QmtDO0FBOEIxQ3R0QyxFQUFBQSxNQUFNLEVBQUV1dEMsZ0JBOUJrQztBQStCMUM5RixFQUFBQSxNQUFNLEVBQUUrRixnQkEvQmtDO0FBZ0MxQzdDLEVBQUFBLEtBQUssRUFBRThDLGVBaENtQztBQWlDMUNySCxFQUFBQSxLQUFLLEVBQUVzSCxlQWpDbUM7QUFrQzFDdlAsRUFBQUEsRUFBRSxFQUFFd1AsWUFsQ3NDO0FBbUMxQzVQLEVBQUFBLFFBQVEsRUFBRTZQLGtCQW5DZ0M7QUFvQzFDLEdBQUM5bEYsTUFBTSxDQUFDSSxRQUFSLEdBQW1CMmxGO0FBcEN1QixDQUE1Qzs7QUNoRGUsaUJBQVN6ZSxRQUFULEVBQW1CO0FBQ2hDLFNBQU8sT0FBT0EsUUFBUCxLQUFvQixRQUFwQixHQUNELElBQUlrVyxTQUFKLENBQWMsQ0FBQyxDQUFDNTZFLFFBQVEsQ0FBQ29vRSxhQUFULENBQXVCMUQsUUFBdkIsQ0FBRCxDQUFELENBQWQsRUFBb0QsQ0FBQzFrRSxRQUFRLENBQUNrN0QsZUFBVixDQUFwRCxDQURDLEdBRUQsSUFBSTBmLFNBQUosQ0FBYyxDQUFDLENBQUNsVyxRQUFELENBQUQsQ0FBZCxFQUE0QnJ3QixJQUE1QixDQUZOO0FBR0Q7O0FDTk0sU0FBUyt1QyxTQUFULENBQW1COTVFLE1BQW5CLEVBQTJCeXFDLEtBQTNCLEVBQWtDO0FBQ3ZDLFVBQVF4M0MsU0FBUyxDQUFDQyxNQUFsQjtBQUNFLFNBQUssQ0FBTDtBQUFROztBQUNSLFNBQUssQ0FBTDtBQUFRLFdBQUt1M0MsS0FBTCxDQUFXenFDLE1BQVg7QUFBb0I7O0FBQzVCO0FBQVMsV0FBS3lxQyxLQUFMLENBQVdBLEtBQVgsRUFBa0J6cUMsTUFBbEIsQ0FBeUJBLE1BQXpCO0FBQWtDO0FBSDdDOztBQUtBLFNBQU8sSUFBUDtBQUNEOztBQ0xNLE1BQU0rNUUsUUFBUSxHQUFHam1GLE1BQU0sQ0FBQyxVQUFELENBQXZCO0FBRVEsU0FBU2ttRixPQUFULEdBQW1CO0FBQ2hDLE1BQUlyL0UsS0FBSyxHQUFHLElBQUkwbkIsR0FBSixFQUFaO0FBQUEsTUFDSXJpQixNQUFNLEdBQUcsRUFEYjtBQUFBLE1BRUl5cUMsS0FBSyxHQUFHLEVBRlo7QUFBQSxNQUdJd3ZDLE9BQU8sR0FBR0YsUUFIZDs7QUFLQSxXQUFTbnNDLEtBQVQsQ0FBZXN6QixDQUFmLEVBQWtCO0FBQ2hCLFFBQUluc0UsR0FBRyxHQUFHbXNFLENBQUMsR0FBRyxFQUFkO0FBQUEsUUFBa0J6bEUsQ0FBQyxHQUFHZCxLQUFLLENBQUNwSixHQUFOLENBQVV3RCxHQUFWLENBQXRCOztBQUNBLFFBQUksQ0FBQzBHLENBQUwsRUFBUTtBQUNOLFVBQUl3K0UsT0FBTyxLQUFLRixRQUFoQixFQUEwQixPQUFPRSxPQUFQO0FBQzFCdC9FLE1BQUFBLEtBQUssQ0FBQ3JDLEdBQU4sQ0FBVXZELEdBQVYsRUFBZTBHLENBQUMsR0FBR3VFLE1BQU0sQ0FBQzdLLElBQVAsQ0FBWStyRSxDQUFaLENBQW5CO0FBQ0Q7O0FBQ0QsV0FBT3oyQixLQUFLLENBQUMsQ0FBQ2h2QyxDQUFDLEdBQUcsQ0FBTCxJQUFVZ3ZDLEtBQUssQ0FBQ3YzQyxNQUFqQixDQUFaO0FBQ0Q7O0FBRUQwNkMsRUFBQUEsS0FBSyxDQUFDNXRDLE1BQU4sR0FBZSxVQUFTMDhCLENBQVQsRUFBWTtBQUN6QixRQUFJLENBQUN6cEMsU0FBUyxDQUFDQyxNQUFmLEVBQXVCLE9BQU84TSxNQUFNLENBQUMzTixLQUFQLEVBQVA7QUFDdkIyTixJQUFBQSxNQUFNLEdBQUcsRUFBVCxFQUFhckYsS0FBSyxHQUFHLElBQUkwbkIsR0FBSixFQUFyQjs7QUFDQSxTQUFLLE1BQU1wd0IsS0FBWCxJQUFvQnlxQyxDQUFwQixFQUF1QjtBQUNyQixZQUFNM25DLEdBQUcsR0FBRzlDLEtBQUssR0FBRyxFQUFwQjtBQUNBLFVBQUkwSSxLQUFLLENBQUNwQyxHQUFOLENBQVV4RCxHQUFWLENBQUosRUFBb0I7QUFDcEI0RixNQUFBQSxLQUFLLENBQUNyQyxHQUFOLENBQVV2RCxHQUFWLEVBQWVpTCxNQUFNLENBQUM3SyxJQUFQLENBQVlsRCxLQUFaLENBQWY7QUFDRDs7QUFDRCxXQUFPMjdDLEtBQVA7QUFDRCxHQVREOztBQVdBQSxFQUFBQSxLQUFLLENBQUNuRCxLQUFOLEdBQWMsVUFBUy9OLENBQVQsRUFBWTtBQUN4QixXQUFPenBDLFNBQVMsQ0FBQ0MsTUFBVixJQUFvQnUzQyxLQUFLLEdBQUdsdEMsS0FBSyxDQUFDK00sSUFBTixDQUFXb3lCLENBQVgsQ0FBUixFQUF1QmtSLEtBQTNDLElBQW9EbkQsS0FBSyxDQUFDcDRDLEtBQU4sRUFBM0Q7QUFDRCxHQUZEOztBQUlBdTdDLEVBQUFBLEtBQUssQ0FBQ3FzQyxPQUFOLEdBQWdCLFVBQVN2OUMsQ0FBVCxFQUFZO0FBQzFCLFdBQU96cEMsU0FBUyxDQUFDQyxNQUFWLElBQW9CK21GLE9BQU8sR0FBR3Y5QyxDQUFWLEVBQWFrUixLQUFqQyxJQUEwQ3FzQyxPQUFqRDtBQUNELEdBRkQ7O0FBSUFyc0MsRUFBQUEsS0FBSyxDQUFDeThCLElBQU4sR0FBYSxZQUFXO0FBQ3RCLFdBQU8yUCxPQUFPLENBQUNoNkUsTUFBRCxFQUFTeXFDLEtBQVQsQ0FBUCxDQUF1Qnd2QyxPQUF2QixDQUErQkEsT0FBL0IsQ0FBUDtBQUNELEdBRkQ7O0FBSUFILEVBQUFBLFNBQVMsQ0FBQ2w1RSxLQUFWLENBQWdCZ3RDLEtBQWhCLEVBQXVCMzZDLFNBQXZCO0FBRUEsU0FBTzI2QyxLQUFQO0FBQ0Q7O0FDN0NjLGlCQUFTc3NDLFNBQVQsRUFBb0I7QUFDakMsTUFBSWp3RSxDQUFDLEdBQUdpd0UsU0FBUyxDQUFDaG5GLE1BQVYsR0FBbUIsQ0FBbkIsR0FBdUIsQ0FBL0I7QUFBQSxNQUFrQ2luRixNQUFNLEdBQUcsSUFBSTU4RSxLQUFKLENBQVUwTSxDQUFWLENBQTNDO0FBQUEsTUFBeUR4TyxDQUFDLEdBQUcsQ0FBN0Q7O0FBQ0EsU0FBT0EsQ0FBQyxHQUFHd08sQ0FBWCxFQUFja3dFLE1BQU0sQ0FBQzErRSxDQUFELENBQU4sR0FBWSxNQUFNeStFLFNBQVMsQ0FBQzduRixLQUFWLENBQWdCb0osQ0FBQyxHQUFHLENBQXBCLEVBQXVCLEVBQUVBLENBQUYsR0FBTSxDQUE3QixDQUFsQjs7QUFDZCxTQUFPMCtFLE1BQVA7QUFDRDs7QUNGRCx1QkFBZUEsTUFBTSxDQUFDLDhEQUFELENBQXJCOztBQ0FBLFNBQVNDLGNBQVQsQ0FBd0I5cEIsR0FBeEIsRUFBNkI3MEQsQ0FBN0IsRUFBZ0M7QUFBRSxTQUFPNCtFLGVBQWUsQ0FBQy9wQixHQUFELENBQWYsSUFBd0JncUIscUJBQXFCLENBQUNocUIsR0FBRCxFQUFNNzBELENBQU4sQ0FBN0MsSUFBeUQ4K0UsMkJBQTJCLENBQUNqcUIsR0FBRCxFQUFNNzBELENBQU4sQ0FBcEYsSUFBZ0crK0UsZ0JBQWdCLEVBQXZIO0FBQTRIOztBQUU5SixTQUFTQSxnQkFBVCxHQUE0QjtBQUFFLFFBQU0sSUFBSS9uRixTQUFKLENBQWMsMklBQWQsQ0FBTjtBQUFtSzs7QUFFak0sU0FBUzhuRiwyQkFBVCxDQUFxQ3ZELENBQXJDLEVBQXdDeUQsTUFBeEMsRUFBZ0Q7QUFBRSxNQUFJLENBQUN6RCxDQUFMLEVBQVE7QUFBUSxNQUFJLE9BQU9BLENBQVAsS0FBYSxRQUFqQixFQUEyQixPQUFPMEQsaUJBQWlCLENBQUMxRCxDQUFELEVBQUl5RCxNQUFKLENBQXhCO0FBQXFDLE1BQUl4d0UsQ0FBQyxHQUFHNVksTUFBTSxDQUFDK0gsU0FBUCxDQUFpQmhILFFBQWpCLENBQTBCUixJQUExQixDQUErQm9sRixDQUEvQixFQUFrQzNrRixLQUFsQyxDQUF3QyxDQUF4QyxFQUEyQyxDQUFDLENBQTVDLENBQVI7QUFBd0QsTUFBSTRYLENBQUMsS0FBSyxRQUFOLElBQWtCK3NFLENBQUMsQ0FBQ3gxRSxXQUF4QixFQUFxQ3lJLENBQUMsR0FBRytzRSxDQUFDLENBQUN4MUUsV0FBRixDQUFjdkwsSUFBbEI7QUFBd0IsTUFBSWdVLENBQUMsS0FBSyxLQUFOLElBQWVBLENBQUMsS0FBSyxLQUF6QixFQUFnQyxPQUFPMU0sS0FBSyxDQUFDK00sSUFBTixDQUFXMHNFLENBQVgsQ0FBUDtBQUFzQixNQUFJL3NFLENBQUMsS0FBSyxXQUFOLElBQXFCLDJDQUEyQ2xTLElBQTNDLENBQWdEa1MsQ0FBaEQsQ0FBekIsRUFBNkUsT0FBT3l3RSxpQkFBaUIsQ0FBQzFELENBQUQsRUFBSXlELE1BQUosQ0FBeEI7QUFBc0M7O0FBRWhhLFNBQVNDLGlCQUFULENBQTJCcHFCLEdBQTNCLEVBQWdDeG5ELEdBQWhDLEVBQXFDO0FBQUUsTUFBSUEsR0FBRyxJQUFJLElBQVAsSUFBZUEsR0FBRyxHQUFHd25ELEdBQUcsQ0FBQ3A5RCxNQUE3QixFQUFxQzRWLEdBQUcsR0FBR3duRCxHQUFHLENBQUNwOUQsTUFBVjs7QUFBa0IsT0FBSyxJQUFJdUksQ0FBQyxHQUFHLENBQVIsRUFBV2svRSxJQUFJLEdBQUcsSUFBSXA5RSxLQUFKLENBQVV1TCxHQUFWLENBQXZCLEVBQXVDck4sQ0FBQyxHQUFHcU4sR0FBM0MsRUFBZ0RyTixDQUFDLEVBQWpELEVBQXFEO0FBQUVrL0UsSUFBQUEsSUFBSSxDQUFDbC9FLENBQUQsQ0FBSixHQUFVNjBELEdBQUcsQ0FBQzcwRCxDQUFELENBQWI7QUFBbUI7O0FBQUMsU0FBT2svRSxJQUFQO0FBQWM7O0FBRXZMLFNBQVNMLHFCQUFULENBQStCaHFCLEdBQS9CLEVBQW9DNzBELENBQXBDLEVBQXVDO0FBQUUsTUFBSW0vRSxFQUFFLEdBQUd0cUIsR0FBRyxJQUFJLElBQVAsR0FBYyxJQUFkLEdBQXFCLE9BQU94OEQsTUFBUCxLQUFrQixXQUFsQixJQUFpQ3c4RCxHQUFHLENBQUN4OEQsTUFBTSxDQUFDSSxRQUFSLENBQXBDLElBQXlEbzhELEdBQUcsQ0FBQyxZQUFELENBQTFGOztBQUEwRyxNQUFJc3FCLEVBQUUsSUFBSSxJQUFWLEVBQWdCO0FBQVEsTUFBSUMsSUFBSSxHQUFHLEVBQVg7QUFBZSxNQUFJQyxFQUFFLEdBQUcsSUFBVDtBQUFlLE1BQUlDLEVBQUUsR0FBRyxLQUFUOztBQUFnQixNQUFJQyxFQUFKLEVBQVFDLEVBQVI7O0FBQVksTUFBSTtBQUFFLFNBQUtMLEVBQUUsR0FBR0EsRUFBRSxDQUFDaHBGLElBQUgsQ0FBUTArRCxHQUFSLENBQVYsRUFBd0IsRUFBRXdxQixFQUFFLEdBQUcsQ0FBQ0UsRUFBRSxHQUFHSixFQUFFLENBQUMveUUsSUFBSCxFQUFOLEVBQWlCSyxJQUF4QixDQUF4QixFQUF1RDR5RSxFQUFFLEdBQUcsSUFBNUQsRUFBa0U7QUFBRUQsTUFBQUEsSUFBSSxDQUFDMWxGLElBQUwsQ0FBVTZsRixFQUFFLENBQUMvb0YsS0FBYjs7QUFBcUIsVUFBSXdKLENBQUMsSUFBSW8vRSxJQUFJLENBQUMzbkYsTUFBTCxLQUFnQnVJLENBQXpCLEVBQTRCO0FBQVE7QUFBRSxHQUFySSxDQUFzSSxPQUFPbXRDLEdBQVAsRUFBWTtBQUFFbXlDLElBQUFBLEVBQUUsR0FBRyxJQUFMO0FBQVdFLElBQUFBLEVBQUUsR0FBR3J5QyxHQUFMO0FBQVcsR0FBMUssU0FBbUw7QUFBRSxRQUFJO0FBQUUsVUFBSSxDQUFDa3lDLEVBQUQsSUFBT0YsRUFBRSxDQUFDLFFBQUQsQ0FBRixJQUFnQixJQUEzQixFQUFpQ0EsRUFBRSxDQUFDLFFBQUQsQ0FBRjtBQUFpQixLQUF4RCxTQUFpRTtBQUFFLFVBQUlHLEVBQUosRUFBUSxNQUFNRSxFQUFOO0FBQVc7QUFBRTs7QUFBQyxTQUFPSixJQUFQO0FBQWM7O0FBRWpnQixTQUFTUixlQUFULENBQXlCL3BCLEdBQXpCLEVBQThCO0FBQUUsTUFBSS95RCxLQUFLLENBQUNDLE9BQU4sQ0FBYzh5RCxHQUFkLENBQUosRUFBd0IsT0FBT0EsR0FBUDtBQUFhO0FBU3JFLElBQUk0cUIsbUJBQW1CLEdBQUdDLE9BQVksQ0FBQ0MsZ0JBQUQsQ0FBdEM7O0FBRUEsU0FBU0MsU0FBVCxDQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsTUFBSS8rRSxJQUFJLEdBQUcrK0UsSUFBSSxDQUFDLytFLElBQWhCO0FBQUEsTUFDSWcvRSxVQUFVLEdBQUdELElBQUksQ0FBQzlPLEtBRHRCO0FBQUEsTUFFSUEsS0FBSyxHQUFHK08sVUFBVSxLQUFLLEtBQUssQ0FBcEIsR0FBd0IsR0FBeEIsR0FBOEJBLFVBRjFDO0FBQUEsTUFHSUMsV0FBVyxHQUFHRixJQUFJLENBQUM3TyxNQUh2QjtBQUFBLE1BSUlBLE1BQU0sR0FBRytPLFdBQVcsS0FBSyxLQUFLLENBQXJCLEdBQXlCLEdBQXpCLEdBQStCQSxXQUo1QztBQUFBLE1BS0lDLFNBQVMsR0FBR0gsSUFBSSxDQUFDN1EsSUFMckI7QUFBQSxNQU1JQSxJQUFJLEdBQUdnUixTQUFTLEtBQUssS0FBSyxDQUFuQixHQUF1QixPQUF2QixHQUFpQ0EsU0FONUM7QUFBQSxNQU9JQyxjQUFjLEdBQUdKLElBQUksQ0FBQ3pRLFNBUDFCO0FBQUEsTUFRSUEsU0FBUyxHQUFHNlEsY0FBYyxLQUFLLEtBQUssQ0FBeEIsR0FBNEIsUUFBNUIsR0FBdUNBLGNBUnZEO0FBQUEsTUFTSUMsZUFBZSxHQUFHTCxJQUFJLENBQUN2USxVQVQzQjtBQUFBLE1BVUlBLFVBQVUsR0FBRzRRLGVBQWUsS0FBSyxLQUFLLENBQXpCLEdBQTZCLFFBQTdCLEdBQXdDQSxlQVZ6RDtBQUFBLE1BV0lDLGFBQWEsR0FBR04sSUFBSSxDQUFDM1EsUUFYekI7QUFBQSxNQVlJQSxRQUFRLEdBQUdpUixhQUFhLEtBQUssS0FBSyxDQUF2QixHQUEyQixVQUFVMWEsQ0FBVixFQUFhO0FBQ3JELFdBQU94d0UsSUFBSSxDQUFDK3hCLElBQUwsQ0FBVXkrQyxDQUFDLENBQUNqdkUsS0FBWixDQUFQO0FBQ0QsR0FGYyxHQUVYMnBGLGFBZEo7QUFBQSxNQWVJQyxXQUFXLEdBQUdQLElBQUksQ0FBQ3RRLE1BZnZCO0FBQUEsTUFnQklBLE1BQU0sR0FBRzZRLFdBQVcsS0FBSyxLQUFLLENBQXJCLEdBQXlCLFlBQVk7QUFDaEQsV0FBTyxDQUFDLENBQUMsRUFBRW5yRixJQUFJLENBQUNpRixNQUFMLEtBQWdCLENBQWxCLENBQUQsR0FBd0IsQ0FBekIsSUFBOEIsRUFBckM7QUFDRCxHQUZZLEdBRVRrbUYsV0FsQko7QUFBQSxNQW1CSUMsV0FBVyxHQUFHUixJQUFJLENBQUNsUSxNQW5CdkI7QUFBQSxNQW9CSUEsTUFBTSxHQUFHMFEsV0FBVyxLQUFLLEtBQUssQ0FBckIsR0FBeUIsYUFBekIsR0FBeUNBLFdBcEJ0RDtBQUFBLE1BcUJJQyxZQUFZLEdBQUdULElBQUksQ0FBQ3BRLE9BckJ4QjtBQUFBLE1Bc0JJQSxPQUFPLEdBQUc2USxZQUFZLEtBQUssS0FBSyxDQUF0QixHQUEwQixDQUExQixHQUE4QkEsWUF0QjVDO0FBQUEsTUF1QklDLFdBQVcsR0FBR1YsSUFBSSxDQUFDM2xGLE1BdkJ2QjtBQUFBLE1Bd0JJQSxNQUFNLEdBQUdxbUYsV0FBVyxLQUFLLEtBQUssQ0FBckIsR0FBeUJ0ckYsSUFBSSxDQUFDaUYsTUFBOUIsR0FBdUNxbUYsV0F4QnBEO0FBQUEsTUF5QklDLFNBQVMsR0FBR1gsSUFBSSxDQUFDendFLElBekJyQjtBQUFBLE1BMEJJQSxJQUFJLEdBQUdveEUsU0FBUyxLQUFLLEtBQUssQ0FBbkIsR0FBdUIsVUFBVXYvQyxDQUFWLEVBQWFqaEMsQ0FBYixFQUFnQjtBQUNoRCxXQUFPeS9FLG1CQUFtQixDQUFDei9FLENBQUQsQ0FBMUI7QUFDRCxHQUZVLEdBRVB3Z0YsU0E1Qko7QUFBQSxNQTZCSUMsV0FBVyxHQUFHWixJQUFJLENBQUNZLFdBN0J2QjtBQUFBLE1BOEJJQyxlQUFlLEdBQUdiLElBQUksQ0FBQ2EsZUE5QjNCO0FBQUEsTUErQklDLGNBQWMsR0FBR2QsSUFBSSxDQUFDYyxjQS9CMUI7QUFnQ0EsTUFBSUMsVUFBVSxHQUFHQyxNQUFNLEVBQXZCOztBQUVBLE1BQUksQ0FBQ0QsVUFBVSxDQUFDRSxPQUFoQixFQUF5QjtBQUN2QkYsSUFBQUEsVUFBVSxDQUFDRSxPQUFYLEdBQXFCQyxZQUFZLENBQUM1bEYsYUFBYixDQUEyQixLQUEzQixDQUFyQjtBQUNEOztBQUVELE1BQUl3RSxFQUFFLEdBQUdpaEYsVUFBVSxDQUFDRSxPQUFwQixDQXZDdUI7O0FBeUN2QnRpQixFQUFBQSxNQUFNLENBQUM3K0QsRUFBRCxDQUFOLENBQVc0MkUsU0FBWCxDQUFxQixHQUFyQixFQUEwQnlCLE1BQTFCLEdBekN1Qjs7QUEyQ3ZCLE1BQUlnSixNQUFNLEdBQUdoUixPQUFLLEdBQUdILEtBQVIsQ0FBYy91RSxJQUFkLEVBQW9Ca2xCLElBQXBCLENBQXlCLENBQUMrcUQsS0FBRCxFQUFRQyxNQUFSLENBQXpCLEVBQTBDaEMsSUFBMUMsQ0FBK0NBLElBQS9DLEVBQXFESSxTQUFyRCxDQUErREEsU0FBL0QsRUFBMEVFLFVBQTFFLENBQXFGQSxVQUFyRixFQUFpR0osUUFBakcsQ0FBMEdBLFFBQTFHLEVBQW9ISyxNQUFwSCxDQUEySEEsTUFBM0gsRUFBbUlJLE1BQW5JLENBQTBJQSxNQUExSSxFQUFrSkYsT0FBbEosQ0FBMEpBLE9BQTFKLEVBQW1LdjFFLE1BQW5LLENBQTBLQSxNQUExSyxFQUFrTHcwRSxFQUFsTCxDQUFxTCxLQUFyTCxFQUE0TCxVQUFVbUIsS0FBVixFQUFpQjtBQUN4TixRQUFJb1IsWUFBWSxHQUFHRCxNQUFNLENBQUNoN0QsSUFBUCxFQUFuQjtBQUFBLFFBQ0lrN0QsYUFBYSxHQUFHdkMsY0FBYyxDQUFDc0MsWUFBRCxFQUFlLENBQWYsQ0FEbEM7QUFBQSxRQUVJalAsQ0FBQyxHQUFHa1AsYUFBYSxDQUFDLENBQUQsQ0FGckI7QUFBQSxRQUdJN08sQ0FBQyxHQUFHNk8sYUFBYSxDQUFDLENBQUQsQ0FIckI7O0FBS0EsUUFBSUMsS0FBSyxHQUFHM2lCLE1BQU0sQ0FBQzcrRCxFQUFELENBQU4sQ0FBV2toRCxNQUFYLENBQWtCLEtBQWxCLEVBQXlCd1csSUFBekIsQ0FBOEIsU0FBOUIsRUFBeUMsT0FBT2wzRCxNQUFQLENBQWM2eEUsQ0FBZCxFQUFpQixHQUFqQixFQUFzQjd4RSxNQUF0QixDQUE2Qmt5RSxDQUE3QixDQUF6QyxFQUEwRWhiLElBQTFFLENBQStFLHFCQUEvRSxFQUFzRyxlQUF0RyxFQUF1SHhXLE1BQXZILENBQThILEdBQTlILEVBQW1Jd1csSUFBbkksQ0FBd0ksV0FBeEksRUFBcUosYUFBYWwzRCxNQUFiLENBQW9CNnhFLENBQUMsR0FBRyxDQUF4QixFQUEyQixHQUEzQixFQUFnQzd4RSxNQUFoQyxDQUF1Q2t5RSxDQUFDLEdBQUcsQ0FBM0MsRUFBOEMsR0FBOUMsQ0FBckosRUFBeU1rRSxTQUF6TSxDQUFtTixNQUFuTixFQUEyTnoxRSxJQUEzTixDQUFnTyt1RSxLQUFoTyxFQUF1T3IrQyxLQUF2TyxHQUErT3F2QixNQUEvTyxDQUFzUCxNQUF0UCxFQUE4UC84QyxLQUE5UCxDQUFvUSxhQUFwUSxFQUFtUixVQUFVMmhFLENBQVYsRUFBYTtBQUMxUyxhQUFPQSxDQUFDLENBQUN1SixJQUFUO0FBQ0QsS0FGVyxFQUVUbHJFLEtBRlMsQ0FFSCxZQUZHLEVBRVcsVUFBVTJoRSxDQUFWLEVBQWE7QUFDbEMsYUFBT0EsQ0FBQyxDQUFDM2hFLEtBQVQ7QUFDRCxLQUpXLEVBSVRBLEtBSlMsQ0FJSCxhQUpHLEVBSVksVUFBVTJoRSxDQUFWLEVBQWE7QUFDbkMsYUFBT0EsQ0FBQyxDQUFDaUwsTUFBVDtBQUNELEtBTlcsRUFNVDVzRSxLQU5TLENBTUgsV0FORyxFQU1VLFVBQVUyaEUsQ0FBVixFQUFhO0FBQ2pDLGFBQU8sR0FBR3RsRSxNQUFILENBQVVzbEUsQ0FBQyxDQUFDei9DLElBQVosRUFBa0IsSUFBbEIsQ0FBUDtBQUNELEtBUlcsRUFRVGxpQixLQVJTLENBUUgsTUFSRyxFQVFLc0wsSUFSTCxFQVFXaW9ELElBUlgsQ0FRZ0IsYUFSaEIsRUFRK0IsUUFSL0IsRUFReUNBLElBUnpDLENBUThDLFdBUjlDLEVBUTJELFVBQVVvTyxDQUFWLEVBQWE7QUFDbEYsYUFBTyxhQUFhdGxFLE1BQWIsQ0FBb0IsQ0FBQ3NsRSxDQUFDLENBQUN0dUQsQ0FBSCxFQUFNc3VELENBQUMsQ0FBQ3J1RCxDQUFSLENBQXBCLEVBQWdDLFVBQWhDLEVBQTRDalgsTUFBNUMsQ0FBbURzbEUsQ0FBQyxDQUFDOEosTUFBckQsRUFBNkQsR0FBN0QsQ0FBUDtBQUNELEtBVlcsRUFVVGhpQixJQVZTLENBVUosVUFBVWtZLENBQVYsRUFBYTtBQUNuQixhQUFPQSxDQUFDLENBQUNsWSxJQUFUO0FBQ0QsS0FaVyxDQUFaOztBQWNBLFFBQUlrekIsV0FBSixFQUFpQjtBQUNmVSxNQUFBQSxLQUFLLENBQUN6UyxFQUFOLENBQVMsT0FBVCxFQUFrQitSLFdBQWxCO0FBQ0Q7O0FBRUQsUUFBSUMsZUFBSixFQUFxQjtBQUNuQlMsTUFBQUEsS0FBSyxDQUFDelMsRUFBTixDQUFTLFdBQVQsRUFBc0JnUyxlQUF0QjtBQUNEOztBQUVELFFBQUlDLGNBQUosRUFBb0I7QUFDbEJRLE1BQUFBLEtBQUssQ0FBQ3pTLEVBQU4sQ0FBUyxVQUFULEVBQXFCaVMsY0FBckI7QUFDRDtBQUNGLEdBL0JZLENBQWI7QUFnQ0FLLEVBQUFBLE1BQU0sQ0FBQ3J5RSxLQUFQO0FBQ0EsU0FBT2hQLEVBQUUsQ0FBQ2trRSxPQUFILEVBQVA7QUFDRDs7QUFFRCtiLFNBQVMsQ0FBQ2haLFNBQVYsR0FBc0I7QUFDcEI5bEUsRUFBQUEsSUFBSSxFQUFFc2dGLEdBQUcsQ0FBQ3R5QixPQUFKLENBQVlzeUIsR0FBRyxDQUFDeHhCLEtBQUosQ0FBVTtBQUMxQnJDLElBQUFBLElBQUksRUFBRTZ6QixHQUFHLENBQUNsZ0YsTUFBSixDQUFXb3ZELFVBRFM7QUFFMUI5NUQsSUFBQUEsS0FBSyxFQUFFNHFGLEdBQUcsQ0FBQ3RpRixNQUFKLENBQVd3eEQ7QUFGUSxHQUFWLENBQVosRUFHRkEsVUFKZ0I7QUFLcEJ5Z0IsRUFBQUEsS0FBSyxFQUFFcVEsR0FBRyxDQUFDdGlGLE1BTFM7QUFNcEJreUUsRUFBQUEsTUFBTSxFQUFFb1EsR0FBRyxDQUFDdGlGLE1BTlE7QUFPcEJrd0UsRUFBQUEsSUFBSSxFQUFFb1MsR0FBRyxDQUFDMXhCLFNBQUosQ0FBYyxDQUFDMHhCLEdBQUcsQ0FBQ2xnRixNQUFMLEVBQWFrZ0YsR0FBRyxDQUFDcm9GLElBQWpCLENBQWQsQ0FQYztBQVFwQnEyRSxFQUFBQSxTQUFTLEVBQUVnUyxHQUFHLENBQUMxeEIsU0FBSixDQUFjLENBQUMweEIsR0FBRyxDQUFDbGdGLE1BQUwsRUFBYWtnRixHQUFHLENBQUNyb0YsSUFBakIsQ0FBZCxDQVJTO0FBU3BCdTJFLEVBQUFBLFVBQVUsRUFBRThSLEdBQUcsQ0FBQzF4QixTQUFKLENBQWMsQ0FBQzB4QixHQUFHLENBQUNsZ0YsTUFBTCxFQUFha2dGLEdBQUcsQ0FBQ3RpRixNQUFqQixFQUF5QnNpRixHQUFHLENBQUNyb0YsSUFBN0IsQ0FBZCxDQVRRO0FBVXBCbTJFLEVBQUFBLFFBQVEsRUFBRWtTLEdBQUcsQ0FBQzF4QixTQUFKLENBQWMsQ0FBQzB4QixHQUFHLENBQUN0aUYsTUFBTCxFQUFhc2lGLEdBQUcsQ0FBQ3JvRixJQUFqQixDQUFkLENBVlU7QUFXcEJ3MkUsRUFBQUEsTUFBTSxFQUFFNlIsR0FBRyxDQUFDMXhCLFNBQUosQ0FBYyxDQUFDMHhCLEdBQUcsQ0FBQ3RpRixNQUFMLEVBQWFzaUYsR0FBRyxDQUFDcm9GLElBQWpCLENBQWQsQ0FYWTtBQVlwQjQyRSxFQUFBQSxNQUFNLEVBQUV5UixHQUFHLENBQUMxeEIsU0FBSixDQUFjLENBQUMweEIsR0FBRyxDQUFDNXhCLEtBQUosQ0FBVSxDQUFDLGFBQUQsQ0FBVixDQUFELEVBQTZCNHhCLEdBQUcsQ0FBQzV4QixLQUFKLENBQVUsQ0FBQyxhQUFELENBQVYsQ0FBN0IsRUFBeUQ0eEIsR0FBRyxDQUFDcm9GLElBQTdELENBQWQsQ0FaWTtBQWFwQjAyRSxFQUFBQSxPQUFPLEVBQUUyUixHQUFHLENBQUMxeEIsU0FBSixDQUFjLENBQUMweEIsR0FBRyxDQUFDdGlGLE1BQUwsRUFBYXNpRixHQUFHLENBQUNyb0YsSUFBakIsQ0FBZCxDQWJXO0FBY3BCbUIsRUFBQUEsTUFBTSxFQUFFa25GLEdBQUcsQ0FBQ3JvRixJQWRRO0FBZXBCMG5GLEVBQUFBLFdBQVcsRUFBRVcsR0FBRyxDQUFDcm9GLElBZkc7QUFnQnBCMm5GLEVBQUFBLGVBQWUsRUFBRVUsR0FBRyxDQUFDcm9GLElBaEJEO0FBaUJwQjRuRixFQUFBQSxjQUFjLEVBQUVTLEdBQUcsQ0FBQ3JvRjtBQWpCQSxDQUF0QjtBQW1CQSxrQkFBZSxhQUFhd29FLE9BQUssQ0FBQ2p0RCxJQUFOLENBQVdzckUsU0FBWCxFQUFzQnlCLGdCQUF0QixDQUE1Qjs7QUNqSGUsU0FBU0Msd0JBQVQsQ0FBa0Mvd0IsS0FBbEMsRUFBeUM7QUFFdEQsUUFBTXp2RCxJQUFJLEdBQUd5dkQsS0FBSyxDQUFDZ3hCLFNBQW5COztBQUNBLFFBQU1DLGNBQWMsR0FBR0MsSUFBSSxJQUFJeHNGLElBQUksQ0FBQ3kwQixJQUFMLENBQVUrM0QsSUFBSSxDQUFDanJGLEtBQWYsSUFBd0IsQ0FBdkQ7O0FBQ0EsUUFBTSs0RSxNQUFNLEdBQUdrUyxJQUFJLElBQUt4c0YsSUFBSSxDQUFDNEosS0FBTCxDQUFXNUosSUFBSSxDQUFDaUYsTUFBTCxLQUFnQixDQUEzQixJQUFnQyxFQUF4RDs7QUFDQSxRQUFNd25GLGFBQWEsR0FBSW4wQixJQUFELElBQVU7QUFFN0JnRCxJQUFBQSxLQUFLLENBQUNveEIsYUFBTixDQUFvQkMsVUFBcEIsSUFBa0MsQ0FBQ3J4QixLQUFLLENBQUNveEIsYUFBTixDQUFvQkUsV0FBeEQ7QUFFQTtBQUNFdHhCLE1BQUFBLEtBQUssQ0FBQ3V4QixVQUFOLENBQWlCQyxRQUFqQixDQUEwQngwQixJQUExQjtBQUNBZ0QsTUFBQUEsS0FBSyxDQUFDb3hCLGFBQU4sQ0FBb0JLLE9BQXBCO0FBQ0Q7QUFDRixHQVJEOztBQVVBLFNBRUU3bUYsZ0JBQUN5a0YsV0FBRDtBQUFXLElBQUEsSUFBSSxFQUFFOStFLElBQWpCO0FBQXVCLElBQUEsY0FBYyxFQUFFMGdGLGNBQXZDO0FBQXVELElBQUEsTUFBTSxFQUFFalMsTUFBL0Q7QUFBdUUsSUFBQSxXQUFXLEVBQUUsQ0FBQzcvQyxLQUFELEVBQVEreEQsSUFBUixLQUFpQkMsYUFBYSxDQUFDRCxJQUFJLENBQUNsMEIsSUFBTjtBQUFsSCxJQUZGO0FBS0Q7O0FDbkJjLE1BQU0wMEIsZUFBTixTQUE4QjFXLFNBQTlCLENBQXdDO0FBR25EakUsRUFBQUEscUJBQXFCLENBQUM0YSxTQUFELEVBQVk7QUFFN0IsV0FBT0EsU0FBUyxDQUFDQyxVQUFWLEtBQXlCLEtBQUs1eEIsS0FBTCxDQUFXNHhCLFVBQTNDO0FBQ0g7O0FBRURqYixFQUFBQSxNQUFNLEdBQUc7QUFFTCxRQUFJa2IsWUFBWSxHQUFHLEVBQW5COztBQUVBLFFBQUksS0FBSzd4QixLQUFMLENBQVc0eEIsVUFBWCxDQUFzQjdyRCxNQUF0QixLQUFpQyxXQUFqQyxJQUFnRCxLQUFLaTZCLEtBQUwsQ0FBVzR4QixVQUFYLENBQXNCOXFFLEtBQTFFLEVBQWlGO0FBRTdFLFVBQUlyWCxDQUFDLEdBQUcsQ0FBUjs7QUFDWSxXQUFLQSxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUcsS0FBS3V3RCxLQUFMLENBQVc0eEIsVUFBWCxDQUFzQjlxRSxLQUF0QixDQUE0QjVmLE1BQTVDLEVBQW9EdUksQ0FBQyxFQUFyRCxFQUF5RDtBQUNqRW9pRixRQUFBQSxZQUFZLENBQUMxb0YsSUFBYixDQUFrQjtBQUdkNnpELFVBQUFBLElBQUksRUFBRSxLQUFLZ0QsS0FBTCxDQUFXOHhCLFVBQVgsQ0FBc0J2c0YsR0FBdEIsQ0FBMkIsS0FBS3k2RCxLQUFMLENBQVc0eEIsVUFBWCxDQUFzQjlxRSxLQUF0QixDQUE0QnJYLENBQTVCLENBQTNCLEVBQTREeEosS0FIcEQ7QUFJZEEsVUFBQUEsS0FBSyxFQUFFLEtBQUsrNUQsS0FBTCxDQUFXK3hCLFNBQVgsQ0FBcUJ4c0YsR0FBckIsQ0FBMEIsS0FBS3k2RCxLQUFMLENBQVc0eEIsVUFBWCxDQUFzQjlxRSxLQUF0QixDQUE0QnJYLENBQTVCLENBQTFCLEVBQTJEeEo7QUFKcEQsU0FBbEI7QUFNSDtBQUNKOztBQUNELFdBQU8yRSxnQkFBQyx3QkFBRDtBQUEwQixNQUFBLFNBQVMsRUFBRWluRixZQUFyQztBQUFtRCxNQUFBLFVBQVUsRUFBRSxLQUFLN3hCLEtBQUwsQ0FBV3V4QixVQUExRTtBQUFzRixNQUFBLGFBQWEsRUFBRSxLQUFLdnhCLEtBQUwsQ0FBV294QjtBQUFoSCxNQUFQO0FBRUg7O0FBMUJrRDs7OzsifQ==
diff --git a/dist/tmp/widgets/package.xml b/dist/tmp/widgets/package.xml
new file mode 100644
index 0000000..323b4a8
--- /dev/null
+++ b/dist/tmp/widgets/package.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 9da3535..7ad5caf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,57 +1,60 @@
{
"name": "wordcloud",
"version": "1.0.0",
- "lockfileVersion": 1,
+ "lockfileVersion": 2,
"requires": true,
- "dependencies": {
- "@babel/cli": {
- "version": "7.13.14",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.14.tgz",
- "integrity": "sha512-zmEFV8WBRsW+mPQumO1/4b34QNALBVReaiHJOkxhUsdo/AvYM62c+SKSuLi2aZ42t3ocK6OI0uwUXRvrIbREZw==",
- "dev": true,
- "requires": {
- "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents",
- "chokidar": "^3.4.0",
- "commander": "^4.0.1",
- "convert-source-map": "^1.1.0",
- "fs-readdir-recursive": "^1.1.0",
- "glob": "^7.0.0",
- "lodash": "^4.17.19",
- "make-dir": "^2.1.0",
- "slash": "^2.0.0",
- "source-map": "^0.5.0"
+ "packages": {
+ "": {
+ "name": "wordcloud",
+ "version": "1.0.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/d3-cloud": "^1.2.5",
+ "classnames": "^2.3.1",
+ "react-d3-cloud": "^1.0.5",
+ "react-wordcloud": "^1.2.7"
+ },
+ "devDependencies": {
+ "@mendix/pluggable-widgets-tools": "^9.5.4",
+ "@types/node": "^16.10.9"
}
},
- "@babel/code-frame": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
- "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+ "node_modules/@babel/code-frame": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
+ "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
- "requires": {
- "@babel/highlight": "^7.12.13"
+ "dependencies": {
+ "@babel/highlight": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/compat-data": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
- "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==",
- "dev": true
+ "node_modules/@babel/compat-data": {
+ "version": "7.15.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+ "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@babel/core": {
- "version": "7.13.14",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
- "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
+ "node_modules/@babel/core": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz",
+ "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-compilation-targets": "^7.13.13",
- "@babel/helper-module-transforms": "^7.13.14",
- "@babel/helpers": "^7.13.10",
- "@babel/parser": "^7.13.13",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14",
+ "dependencies": {
+ "@babel/code-frame": "^7.15.8",
+ "@babel/generator": "^7.15.8",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-module-transforms": "^7.15.8",
+ "@babel/helpers": "^7.15.4",
+ "@babel/parser": "^7.15.8",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.6",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -59,109 +62,131 @@
"semver": "^6.3.0",
"source-map": "^0.5.0"
},
- "dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "@babel/generator": {
- "version": "7.13.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
- "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==",
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "@babel/types": "^7.13.0",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
+ "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-annotate-as-pure": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz",
- "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==",
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+ "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
"dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
- "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==",
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz",
+ "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==",
"dev": true,
- "requires": {
- "@babel/helper-explode-assignable-expression": "^7.12.13",
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-explode-assignable-expression": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-compilation-targets": {
- "version": "7.13.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz",
- "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==",
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
+ "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
"dev": true,
- "requires": {
- "@babel/compat-data": "^7.13.12",
- "@babel/helper-validator-option": "^7.12.17",
- "browserslist": "^4.14.5",
+ "dependencies": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.16.6",
"semver": "^6.3.0"
},
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "@babel/helper-create-class-features-plugin": {
- "version": "7.13.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
- "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==",
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-member-expression-to-functions": "^7.13.0",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-replace-supers": "^7.13.0",
- "@babel/helper-split-export-declaration": "^7.12.13"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz",
- "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==",
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz",
+ "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==",
"dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-member-expression-to-functions": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz",
+ "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
"regexpu-core": "^4.7.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "@babel/helper-define-polyfill-provider": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
- "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz",
+ "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-compilation-targets": "^7.13.0",
"@babel/helper-module-imports": "^7.12.13",
"@babel/helper-plugin-utils": "^7.13.0",
@@ -171,996 +196,1533 @@
"resolve": "^1.14.2",
"semver": "^6.1.2"
},
- "dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "peerDependencies": {
+ "@babel/core": "^7.4.0-0"
}
},
- "@babel/helper-explode-assignable-expression": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz",
- "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==",
+ "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "@babel/types": "^7.13.0"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "@babel/helper-function-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
- "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
+ "node_modules/@babel/helper-explode-assignable-expression": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz",
+ "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==",
"dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.12.13",
- "@babel/template": "^7.12.13",
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-get-function-arity": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
- "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
+ "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
"dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-get-function-arity": "^7.15.4",
+ "@babel/template": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-hoist-variables": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz",
- "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==",
+ "node_modules/@babel/helper-get-function-arity": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
+ "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
"dev": true,
- "requires": {
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-member-expression-to-functions": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
- "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
+ "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
"dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-module-imports": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
- "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
+ "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
"dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-module-transforms": {
- "version": "7.13.14",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz",
- "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==",
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
+ "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
"dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.13.12",
- "@babel/helper-replace-supers": "^7.13.12",
- "@babel/helper-simple-access": "^7.13.12",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/helper-validator-identifier": "^7.12.11",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.13",
- "@babel/types": "^7.13.14"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-optimise-call-expression": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
- "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
+ "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.15.4",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-simple-access": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-plugin-utils": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
- "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
- "dev": true
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
+ "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@babel/helper-remap-async-to-generator": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz",
- "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==",
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
"dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
- "@babel/helper-wrap-function": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-replace-supers": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
- "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==",
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz",
+ "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==",
"dev": true,
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.13.12",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.12"
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-wrap-function": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-simple-access": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
- "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
+ "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
"dev": true,
- "requires": {
- "@babel/types": "^7.13.12"
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
- "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
+ "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
"dev": true,
- "requires": {
- "@babel/types": "^7.12.1"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-split-export-declaration": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
- "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz",
+ "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==",
"dev": true,
- "requires": {
- "@babel/types": "^7.12.13"
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helper-validator-identifier": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
- "dev": true
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
+ "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@babel/helper-validator-option": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
- "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==",
- "dev": true
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.15.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+ "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "@babel/helper-wrap-function": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz",
- "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==",
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
+ "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
"dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.12.13",
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/helpers": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
- "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==",
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz",
+ "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==",
"dev": true,
- "requires": {
- "@babel/template": "^7.12.13",
- "@babel/traverse": "^7.13.0",
- "@babel/types": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/highlight": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
- "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
+ "node_modules/@babel/helpers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz",
+ "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
"dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
+ "dependencies": {
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+ "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.14.5",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/parser": {
- "version": "7.13.13",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
- "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
- "dev": true
+ "node_modules/@babel/parser": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
+ "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
+ "dev": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz",
- "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==",
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz",
+ "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
- "@babel/plugin-proposal-optional-chaining": "^7.13.12"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
}
},
- "@babel/plugin-external-helpers": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.12.13.tgz",
- "integrity": "sha512-ClvAsk4RqpE6iacYUjdU9PtvIwC9yAefZENsPfGeG5FckX3jFZLDlWPuyv5gi9/9C2VgwX6H8q1ukBifC0ha+Q==",
+ "node_modules/@babel/plugin-external-helpers": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.14.5.tgz",
+ "integrity": "sha512-q/B/hLX+nDGk73Xn529d7Ar4ih17J8pNBbsXafq8oXij0XfFEA/bks+u+6q5q04zO5o/qivjzui6BqzPfYShEg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-async-generator-functions": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
- "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==",
+ "node_modules/@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz",
+ "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-remap-async-to-generator": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.15.4",
"@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-class-properties": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz",
- "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==",
+ "node_modules/@babel/plugin-proposal-class-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz",
+ "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==",
"dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-dynamic-import": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz",
- "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==",
+ "node_modules/@babel/plugin-proposal-class-static-block": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz",
+ "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-dynamic-import": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz",
+ "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-export-default-from": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.13.tgz",
- "integrity": "sha512-idIsBT+DGXdOHL82U+8bwX4goHm/z10g8sGGrQroh+HCRcm7mDv/luaGdWJQMTuCX2FsdXS7X0Nyyzp4znAPJA==",
+ "node_modules/@babel/plugin-proposal-export-default-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.14.5.tgz",
+ "integrity": "sha512-T8KZ5abXvKMjF6JcoXjgac3ElmXf0AWzJwi2O/42Jk+HmCky3D9+i1B7NPP1FblyceqTevKeV/9szeikFoaMDg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
- "@babel/plugin-syntax-export-default-from": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-export-default-from": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-export-namespace-from": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz",
- "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==",
+ "node_modules/@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz",
+ "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-json-strings": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz",
- "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==",
+ "node_modules/@babel/plugin-proposal-json-strings": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz",
+ "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz",
- "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==",
+ "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz",
+ "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
- "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==",
+ "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz",
+ "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-numeric-separator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz",
- "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==",
+ "node_modules/@babel/plugin-proposal-numeric-separator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz",
+ "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-object-rest-spread": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz",
- "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==",
+ "node_modules/@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.15.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz",
+ "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==",
"dev": true,
- "requires": {
- "@babel/compat-data": "^7.13.8",
- "@babel/helper-compilation-targets": "^7.13.8",
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.13.0"
+ "@babel/plugin-transform-parameters": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
- "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==",
+ "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz",
+ "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-optional-chaining": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
- "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==",
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz",
+ "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-private-methods": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz",
- "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==",
+ "node_modules/@babel/plugin-proposal-private-methods": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz",
+ "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==",
"dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz",
- "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==",
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz",
+ "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==",
"dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-async-generators": {
+ "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz",
+ "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-bigint": {
+ "node_modules/@babel/plugin-syntax-bigint": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
"integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-class-properties": {
+ "node_modules/@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-dynamic-import": {
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-export-default-from": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.13.tgz",
- "integrity": "sha512-gVry0zqoums0hA+EniCYK3gABhjYSLX1dVuwYpPw9DrLNA4/GovXySHVg4FGRsZht09ON/5C2NVx3keq+qqVGQ==",
+ "node_modules/@babel/plugin-syntax-export-default-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.14.5.tgz",
+ "integrity": "sha512-snWDxjuaPEobRBnhpqEfZ8RMxDbHt8+87fiEioGuE+Uc0xAKgSD8QiuL3lF93hPVQfZFAcYwrrf+H5qUhike3Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-export-namespace-from": {
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-flow": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz",
- "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==",
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz",
+ "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-import-meta": {
+ "node_modules/@babel/plugin-syntax-import-meta": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-json-strings": {
+ "node_modules/@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-jsx": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz",
- "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==",
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz",
+ "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-logical-assignment-operators": {
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-numeric-separator": {
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-object-rest-spread": {
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-optional-catch-binding": {
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-optional-chaining": {
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz",
- "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==",
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-syntax-typescript": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz",
- "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==",
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz",
- "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==",
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz",
+ "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz",
- "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==",
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz",
+ "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==",
"dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-remap-async-to-generator": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz",
- "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==",
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz",
+ "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-block-scoping": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz",
- "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==",
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz",
+ "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-classes": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz",
- "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==",
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz",
+ "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==",
"dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-optimise-call-expression": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-replace-supers": "^7.13.0",
- "@babel/helper-split-export-declaration": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz",
+ "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
"globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-computed-properties": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz",
- "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==",
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz",
+ "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-destructuring": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz",
- "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==",
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.14.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz",
+ "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz",
- "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==",
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz",
+ "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==",
"dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz",
- "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==",
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz",
+ "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz",
- "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==",
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz",
+ "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==",
"dev": true,
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-flow-strip-types": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz",
- "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==",
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz",
+ "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/plugin-syntax-flow": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-flow": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-for-of": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz",
- "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==",
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz",
+ "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-function-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz",
- "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==",
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz",
+ "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==",
"dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-literals": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz",
- "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==",
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz",
+ "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz",
- "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==",
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz",
+ "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-modules-amd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz",
- "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==",
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz",
+ "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==",
"dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
"babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz",
- "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==",
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz",
+ "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==",
"dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-simple-access": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-simple-access": "^7.15.4",
"babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.13.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz",
- "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==",
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz",
+ "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==",
"dev": true,
- "requires": {
- "@babel/helper-hoist-variables": "^7.13.0",
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-validator-identifier": "^7.12.11",
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.15.4",
+ "@babel/helper-module-transforms": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-identifier": "^7.14.9",
"babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-modules-umd": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz",
- "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==",
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz",
+ "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==",
"dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz",
- "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==",
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz",
+ "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==",
"dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "@babel/plugin-transform-new-target": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz",
- "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==",
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz",
+ "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-object-assign": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz",
- "integrity": "sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA==",
+ "node_modules/@babel/plugin-transform-object-assign": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz",
+ "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-object-super": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz",
- "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==",
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz",
+ "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13",
- "@babel/helper-replace-supers": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-parameters": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz",
- "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==",
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz",
+ "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-property-literals": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz",
- "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==",
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz",
+ "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-display-name": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz",
- "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==",
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.15.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz",
+ "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-jsx": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz",
- "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==",
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz",
+ "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==",
"dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.12.13",
- "@babel/helper-module-imports": "^7.13.12",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/plugin-syntax-jsx": "^7.12.13",
- "@babel/types": "^7.13.12"
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-jsx": "^7.14.5",
+ "@babel/types": "^7.14.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-jsx-development": {
- "version": "7.12.17",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz",
- "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==",
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz",
+ "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==",
"dev": true,
- "requires": {
- "@babel/plugin-transform-react-jsx": "^7.12.17"
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-jsx-self": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz",
- "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==",
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.9.tgz",
+ "integrity": "sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-jsx-source": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz",
- "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==",
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz",
+ "integrity": "sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-react-pure-annotations": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz",
- "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==",
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz",
+ "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==",
"dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.10.4",
- "@babel/helper-plugin-utils": "^7.10.4"
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-regenerator": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz",
- "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==",
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz",
+ "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==",
"dev": true,
- "requires": {
+ "dependencies": {
"regenerator-transform": "^0.14.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-reserved-words": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz",
- "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==",
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz",
+ "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-runtime": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz",
- "integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA==",
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz",
+ "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==",
"dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "babel-plugin-polyfill-corejs2": "^0.1.4",
- "babel-plugin-polyfill-corejs3": "^0.1.3",
- "babel-plugin-polyfill-regenerator": "^0.1.2",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.5",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
"semver": "^6.3.0"
},
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz",
- "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==",
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "@babel/plugin-transform-spread": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz",
- "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==",
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz",
+ "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz",
- "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==",
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz",
+ "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-template-literals": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz",
- "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==",
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz",
+ "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz",
- "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==",
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz",
+ "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-typescript": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz",
- "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==",
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz",
+ "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==",
"dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.13.0",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/plugin-syntax-typescript": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz",
- "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==",
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz",
+ "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-typescript": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz",
- "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==",
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz",
+ "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==",
"dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.12.13"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/preset-env": {
- "version": "7.13.12",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz",
- "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==",
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz",
+ "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==",
"dev": true,
- "requires": {
- "@babel/compat-data": "^7.13.12",
- "@babel/helper-compilation-targets": "^7.13.10",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-validator-option": "^7.12.17",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-async-generator-functions": "^7.13.8",
- "@babel/plugin-proposal-class-properties": "^7.13.0",
- "@babel/plugin-proposal-dynamic-import": "^7.13.8",
- "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
- "@babel/plugin-proposal-json-strings": "^7.13.8",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
- "@babel/plugin-proposal-numeric-separator": "^7.12.13",
- "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
- "@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
- "@babel/plugin-proposal-optional-chaining": "^7.13.12",
- "@babel/plugin-proposal-private-methods": "^7.13.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz",
+ "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4",
+ "@babel/plugin-proposal-async-generator-functions": "^7.15.8",
+ "@babel/plugin-proposal-class-properties": "^7.14.5",
+ "@babel/plugin-proposal-class-static-block": "^7.15.4",
+ "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+ "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+ "@babel/plugin-proposal-json-strings": "^7.14.5",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+ "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+ "@babel/plugin-proposal-object-rest-spread": "^7.15.6",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+ "@babel/plugin-proposal-private-methods": "^7.14.5",
+ "@babel/plugin-proposal-private-property-in-object": "^7.15.4",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.3",
@@ -1170,296 +1732,395 @@
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.12.13",
- "@babel/plugin-transform-arrow-functions": "^7.13.0",
- "@babel/plugin-transform-async-to-generator": "^7.13.0",
- "@babel/plugin-transform-block-scoped-functions": "^7.12.13",
- "@babel/plugin-transform-block-scoping": "^7.12.13",
- "@babel/plugin-transform-classes": "^7.13.0",
- "@babel/plugin-transform-computed-properties": "^7.13.0",
- "@babel/plugin-transform-destructuring": "^7.13.0",
- "@babel/plugin-transform-dotall-regex": "^7.12.13",
- "@babel/plugin-transform-duplicate-keys": "^7.12.13",
- "@babel/plugin-transform-exponentiation-operator": "^7.12.13",
- "@babel/plugin-transform-for-of": "^7.13.0",
- "@babel/plugin-transform-function-name": "^7.12.13",
- "@babel/plugin-transform-literals": "^7.12.13",
- "@babel/plugin-transform-member-expression-literals": "^7.12.13",
- "@babel/plugin-transform-modules-amd": "^7.13.0",
- "@babel/plugin-transform-modules-commonjs": "^7.13.8",
- "@babel/plugin-transform-modules-systemjs": "^7.13.8",
- "@babel/plugin-transform-modules-umd": "^7.13.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
- "@babel/plugin-transform-new-target": "^7.12.13",
- "@babel/plugin-transform-object-super": "^7.12.13",
- "@babel/plugin-transform-parameters": "^7.13.0",
- "@babel/plugin-transform-property-literals": "^7.12.13",
- "@babel/plugin-transform-regenerator": "^7.12.13",
- "@babel/plugin-transform-reserved-words": "^7.12.13",
- "@babel/plugin-transform-shorthand-properties": "^7.12.13",
- "@babel/plugin-transform-spread": "^7.13.0",
- "@babel/plugin-transform-sticky-regex": "^7.12.13",
- "@babel/plugin-transform-template-literals": "^7.13.0",
- "@babel/plugin-transform-typeof-symbol": "^7.12.13",
- "@babel/plugin-transform-unicode-escapes": "^7.12.13",
- "@babel/plugin-transform-unicode-regex": "^7.12.13",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-transform-arrow-functions": "^7.14.5",
+ "@babel/plugin-transform-async-to-generator": "^7.14.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+ "@babel/plugin-transform-block-scoping": "^7.15.3",
+ "@babel/plugin-transform-classes": "^7.15.4",
+ "@babel/plugin-transform-computed-properties": "^7.14.5",
+ "@babel/plugin-transform-destructuring": "^7.14.7",
+ "@babel/plugin-transform-dotall-regex": "^7.14.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+ "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+ "@babel/plugin-transform-for-of": "^7.15.4",
+ "@babel/plugin-transform-function-name": "^7.14.5",
+ "@babel/plugin-transform-literals": "^7.14.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+ "@babel/plugin-transform-modules-amd": "^7.14.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.15.4",
+ "@babel/plugin-transform-modules-systemjs": "^7.15.4",
+ "@babel/plugin-transform-modules-umd": "^7.14.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9",
+ "@babel/plugin-transform-new-target": "^7.14.5",
+ "@babel/plugin-transform-object-super": "^7.14.5",
+ "@babel/plugin-transform-parameters": "^7.15.4",
+ "@babel/plugin-transform-property-literals": "^7.14.5",
+ "@babel/plugin-transform-regenerator": "^7.14.5",
+ "@babel/plugin-transform-reserved-words": "^7.14.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+ "@babel/plugin-transform-spread": "^7.15.8",
+ "@babel/plugin-transform-sticky-regex": "^7.14.5",
+ "@babel/plugin-transform-template-literals": "^7.14.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+ "@babel/plugin-transform-unicode-regex": "^7.14.5",
"@babel/preset-modules": "^0.1.4",
- "@babel/types": "^7.13.12",
- "babel-plugin-polyfill-corejs2": "^0.1.4",
- "babel-plugin-polyfill-corejs3": "^0.1.3",
- "babel-plugin-polyfill-regenerator": "^0.1.2",
- "core-js-compat": "^3.9.0",
+ "@babel/types": "^7.15.6",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.5",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
+ "core-js-compat": "^3.16.0",
"semver": "^6.3.0"
},
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/preset-modules": {
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
"integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
"@babel/plugin-transform-dotall-regex": "^7.4.4",
"@babel/types": "^7.4.4",
"esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/preset-react": {
- "version": "7.13.13",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz",
- "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==",
+ "node_modules/@babel/preset-react": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz",
+ "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-validator-option": "^7.12.17",
- "@babel/plugin-transform-react-display-name": "^7.12.13",
- "@babel/plugin-transform-react-jsx": "^7.13.12",
- "@babel/plugin-transform-react-jsx-development": "^7.12.17",
- "@babel/plugin-transform-react-pure-annotations": "^7.12.1"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "@babel/plugin-transform-react-display-name": "^7.14.5",
+ "@babel/plugin-transform-react-jsx": "^7.14.5",
+ "@babel/plugin-transform-react-jsx-development": "^7.14.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/register": {
- "version": "7.13.14",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.14.tgz",
- "integrity": "sha512-iyw0hUwjh/fzN8qklVqZodbyWjEBOG0KdDnBOpv3zzIgK3NmuRXBmIXH39ZBdspkn8LTHvSboN+oYb4MT43+9Q==",
+ "node_modules/@babel/register": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz",
+ "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==",
"dev": true,
- "requires": {
+ "dependencies": {
+ "clone-deep": "^4.0.1",
"find-cache-dir": "^2.0.0",
- "lodash": "^4.17.19",
"make-dir": "^2.1.0",
"pirates": "^4.0.0",
"source-map-support": "^0.5.16"
},
- "dependencies": {
- "find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
- }
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- }
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "@babel/runtime": {
- "version": "7.13.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
- "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
+ "node_modules/@babel/register/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.4"
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "@babel/template": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz",
- "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==",
+ "node_modules/@babel/register/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/parser": "^7.12.13",
- "@babel/types": "^7.12.13"
+ "engines": {
+ "node": ">=6"
}
},
- "@babel/traverse": {
- "version": "7.13.13",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
- "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==",
+ "node_modules/@babel/register/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@babel/generator": "^7.13.9",
- "@babel/helper-function-name": "^7.12.13",
- "@babel/helper-split-export-declaration": "^7.12.13",
- "@babel/parser": "^7.13.13",
- "@babel/types": "^7.13.13",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
+ "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime-corejs3": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz",
+ "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==",
+ "dev": true,
+ "dependencies": {
+ "core-js-pure": "^3.16.0",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+ "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
+ "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/generator": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-hoist-variables": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
- "dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@babel/types": {
- "version": "7.13.14",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
- "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
+ "node_modules/@babel/types": {
+ "version": "7.15.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
+ "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.14.9",
"to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "@bcoe/v8-coverage": {
+ "node_modules/@bcoe/v8-coverage": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
- "@cnakazawa/watch": {
+ "node_modules/@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
"integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"exec-sh": "^0.3.2",
"minimist": "^1.2.0"
+ },
+ "bin": {
+ "watch": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.1.95"
}
},
- "@hapi/address": {
+ "node_modules/@eslint/eslintrc": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+ "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^13.9.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+ "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
"integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "deprecated": "Moved to 'npm install @sideway/address'",
"dev": true
},
- "@hapi/bourne": {
+ "node_modules/@hapi/bourne": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
"integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
"dev": true
},
- "@hapi/hoek": {
+ "node_modules/@hapi/hoek": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
"integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
"dev": true
},
- "@hapi/joi": {
+ "node_modules/@hapi/joi": {
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
"integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "deprecated": "Switch to 'npm install joi'",
"dev": true,
- "requires": {
+ "dependencies": {
"@hapi/address": "2.x.x",
"@hapi/bourne": "1.x.x",
"@hapi/hoek": "8.x.x",
"@hapi/topo": "3.x.x"
}
},
- "@hapi/topo": {
+ "node_modules/@hapi/topo": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
"integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
"dev": true,
- "requires": {
+ "dependencies": {
"@hapi/hoek": "^8.3.0"
}
},
- "@istanbuljs/load-nyc-config": {
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+ "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.0",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
+ "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
"integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"camelcase": "^5.3.1",
"find-up": "^4.1.0",
"get-package-type": "^0.1.0",
"js-yaml": "^3.13.1",
"resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@istanbuljs/schema": {
+ "node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "@jest/console": {
+ "node_modules/@jest/console": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
"integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/types": "^26.6.2",
"@types/node": "*",
"chalk": "^4.0.0",
@@ -1467,70 +2128,86 @@
"jest-util": "^26.6.2",
"slash": "^3.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/@jest/console/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@jest/core": {
+ "node_modules/@jest/console/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@jest/console/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core": {
"version": "26.6.3",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
"integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/console": "^26.6.2",
"@jest/reporters": "^26.6.2",
"@jest/test-result": "^26.6.2",
@@ -1560,150 +2237,132 @@
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/@jest/core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@jest/environment": {
+ "node_modules/@jest/core/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@jest/core/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/environment": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
"integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/fake-timers": "^26.6.2",
"@jest/types": "^26.6.2",
"@types/node": "*",
"jest-mock": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/fake-timers": {
+ "node_modules/@jest/fake-timers": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
"integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/types": "^26.6.2",
"@sinonjs/fake-timers": "^6.0.1",
"@types/node": "*",
"jest-message-util": "^26.6.2",
"jest-mock": "^26.6.2",
"jest-util": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/globals": {
+ "node_modules/@jest/globals": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
"integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/environment": "^26.6.2",
"@jest/types": "^26.6.2",
"expect": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/reporters": {
+ "node_modules/@jest/reporters": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
"integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
"dev": true,
- "requires": {
+ "dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
"@jest/console": "^26.6.2",
"@jest/test-result": "^26.6.2",
@@ -1723,127 +2382,158 @@
"jest-resolve": "^26.6.2",
"jest-util": "^26.6.2",
"jest-worker": "^26.6.2",
- "node-notifier": "^8.0.0",
"slash": "^3.0.0",
"source-map": "^0.6.0",
"string-length": "^4.0.1",
"terminal-link": "^2.0.0",
"v8-to-istanbul": "^7.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ },
+ "optionalDependencies": {
+ "node-notifier": "^8.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@jest/source-map": {
+ "node_modules/@jest/reporters/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@jest/reporters/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/source-map": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
"integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
"dev": true,
- "requires": {
+ "dependencies": {
"callsites": "^3.0.0",
"graceful-fs": "^4.2.4",
"source-map": "^0.6.0"
},
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/test-result": {
+ "node_modules/@jest/source-map/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
"integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/console": "^26.6.2",
"@jest/types": "^26.6.2",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/test-sequencer": {
+ "node_modules/@jest/test-sequencer": {
"version": "26.6.3",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
"integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/test-result": "^26.6.2",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^26.6.2",
"jest-runner": "^26.6.3",
"jest-runtime": "^26.6.3"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "@jest/transform": {
+ "node_modules/@jest/transform": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
"integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@babel/core": "^7.1.0",
"@jest/types": "^26.6.2",
"babel-plugin-istanbul": "^6.0.0",
@@ -1860,10814 +2550,28888 @@
"source-map": "^0.6.1",
"write-file-atomic": "^3.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@jest/types": {
+ "node_modules/@jest/transform/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@jest/transform/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
"dev": true,
- "requires": {
+ "dependencies": {
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
"@types/yargs": "^15.0.0",
"chalk": "^4.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/@jest/types/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@mendix/pluggable-widgets-tools": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/@mendix/pluggable-widgets-tools/-/pluggable-widgets-tools-8.18.0.tgz",
- "integrity": "sha512-3/iHbVIaF6w2G9eL1y4f0s/gjAq6TYdXwrc+vy9Zq7orAxGWMCZAr9p7IOryDK6hdRFvwhHUqhArHoK4XtCBzw==",
- "dev": true,
- "requires": {
- "@babel/cli": "^7.6.0",
- "@babel/core": "^7.6.0",
- "@babel/plugin-proposal-class-properties": "^7.4.4",
- "@babel/preset-env": "^7.5.5",
- "@babel/preset-react": "^7.0.0",
- "@typescript-eslint/eslint-plugin": "^2.19.2",
- "@typescript-eslint/parser": "^2.19.2",
- "@wdio/cli": "^5.11.13",
- "@wdio/dot-reporter": "^5.11.7",
- "@wdio/jasmine-framework": "^5.11.0",
- "@wdio/local-runner": "^5.11.13",
- "@wdio/selenium-standalone-service": "^5.11.2",
- "@wdio/spec-reporter": "^5.11.7",
- "@wdio/sync": "^5.11.13",
- "babel-eslint": "^10.0.2",
- "babel-jest": "^26.1.0",
- "babel-loader": "^8.0.6",
- "big.js": "^5.2.2",
- "colors": "^1.4.0",
- "concurrently": "^5.0.1",
- "copy-webpack-plugin": "^6.0.0",
- "core-js": "^3.6.4",
- "css-loader": "^3.1.0",
- "del": "^4.1.1",
- "dotenv": "^8.2.0",
- "enzyme": "^3.10.0",
- "enzyme-adapter-react-16": "^1.14.0",
- "enzyme-to-json": "^3.3.5",
- "eslint": "^6.8.0",
- "eslint-config-prettier": "^6.10.0",
- "eslint-plugin-jest": "^23.19.0",
- "eslint-plugin-prettier": "^3.1.2",
- "eslint-plugin-promise": "^4.2.1",
- "eslint-plugin-react": "^7.18.3",
- "extract-text-webpack-plugin": "^4.0.0-beta.0",
- "file-loader": "^4.0.0",
- "find-free-port": "^2.0.0",
- "gulp": "^4.0.2",
- "gulp-zip": "^5.0.0",
- "jasmine": "^3.4.0",
- "jasmine-core": "^3.4.0",
- "jest": "^26.1.0",
- "jest-junit": "^11.1.0",
- "json-loader": "^0.5.7",
- "json-source-map": "^0.6.1",
- "map-stream": "^0.0.7",
- "mendix": "^8.14.0",
- "metro-react-native-babel-preset": "~0.61.0",
- "node-fetch": "^2.6.0",
- "plugin-error": "^1.0.1",
- "prettier": "^1.19.1",
- "raw-loader": "^3.1.0",
- "react": "~16.9.0",
- "react-dom": "~16.9.0",
- "react-hot-loader": "^4.12.19",
- "react-native": "0.61.5",
- "react-test-renderer": "~16.9.0",
- "sass": "^1.26.10",
- "sass-loader": "^9.0.2",
- "semver": "^7.3.2",
- "source-map-loader": "^0.2.4",
- "style-loader": "^0.23.1",
- "to-string-loader": "^1.1.6",
- "ts-jest": "^26.1.4",
- "ts-loader": "^6.2.1",
- "ts-node": "^8.10.2",
- "typescript": "^3.8.3",
- "url-loader": "^1.1.2",
- "webdriverio": "^5.18.6",
- "webpack": "^4.41.6",
- "webpack-cli": "^3.3.11",
- "webpack-dev-server": "^3.10.3",
- "webpack-merge": "^4.2.2",
- "xml2js": "^0.4.23"
- }
- },
- "@nicolo-ribaudo/chokidar-2": {
- "version": "2.1.8-no-fsevents",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz",
- "integrity": "sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w==",
+ "node_modules/@jest/types/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "optional": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "@nodelib/fs.scandir": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
- "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
+ "node_modules/@jest/types/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.4",
- "run-parallel": "^1.1.9"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "@nodelib/fs.stat": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
- "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==",
+ "node_modules/@jest/types/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "@nodelib/fs.walk": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
- "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
+ "node_modules/@jest/types/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.4",
- "fastq": "^1.6.0"
+ "engines": {
+ "node": ">=8"
}
},
- "@npmcli/move-file": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
- "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+ "node_modules/@jest/types/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@popperjs/core": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
- "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA=="
- },
- "@react-native-community/cli-debugger-ui": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz",
- "integrity": "sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g==",
+ "node_modules/@mendix/pluggable-widgets-tools": {
+ "version": "9.5.4",
+ "resolved": "https://registry.npmjs.org/@mendix/pluggable-widgets-tools/-/pluggable-widgets-tools-9.5.4.tgz",
+ "integrity": "sha512-FMKBdLkR2aisE3Ip+i5nL0392nZYsY6wcluga4uHuyF820tN1HJLcp9VVVtWtsvs6s807NW7Pf2f1wzlLJNmIg==",
"dev": true,
- "requires": {
- "serve-static": "^1.13.1"
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/preset-env": "^7.12.1",
+ "@babel/preset-react": "^7.12.1",
+ "@rollup/plugin-alias": "^3.1.5",
+ "@rollup/plugin-babel": "^5.3.0",
+ "@rollup/plugin-commonjs": "^20.0.0",
+ "@rollup/plugin-image": "^2.1.0",
+ "@rollup/plugin-json": "^4.1.0",
+ "@rollup/plugin-node-resolve": "^13.0.4",
+ "@rollup/plugin-typescript": "^8.2.5",
+ "@rollup/plugin-url": "^6.1.0",
+ "@testing-library/dom": "^8.1.0",
+ "@testing-library/jest-dom": "^5.14.1",
+ "@testing-library/react": "^12.0.0",
+ "@testing-library/user-event": "^13.2.1",
+ "@types/testing-library__jest-dom": "^5.14.1",
+ "@typescript-eslint/eslint-plugin": "^4.15.2",
+ "@typescript-eslint/parser": "^4.15.2",
+ "@wdio/cli": "^7.5.3",
+ "@wdio/jasmine-framework": "^7.5.3",
+ "@wdio/local-runner": "^7.5.5",
+ "@wdio/selenium-standalone-service": "^7.5.3",
+ "@wdio/spec-reporter": "^7.5.3",
+ "@wdio/sync": "^7.5.3",
+ "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3",
+ "babel-eslint": "^10.1.0",
+ "babel-jest": "^26.6.1",
+ "big.js": "^6.0.2",
+ "colors": "^1.4.0",
+ "concurrently": "^5.3.0",
+ "core-js": "^3.6.5",
+ "dotenv": "^8.2.0",
+ "enzyme": "^3.11.0",
+ "enzyme-to-json": "^3.6.1",
+ "eslint": "^7.20.0",
+ "eslint-config-prettier": "^8.0.0",
+ "eslint-plugin-jest": "^24.1.5",
+ "eslint-plugin-prettier": "^3.3.1",
+ "eslint-plugin-promise": "^4.3.1",
+ "eslint-plugin-react": "^7.22.0",
+ "eslint-plugin-react-hooks": "^4.2.0",
+ "fast-glob": "^2.2.7",
+ "find-free-port": "^2.0.0",
+ "fs-extra": "^9.0.1",
+ "identity-obj-proxy": "^3.0.0",
+ "jasmine": "^3.6.2",
+ "jasmine-core": "^3.6.0",
+ "jest": "^26.6.1",
+ "jest-junit": "^12.0.0",
+ "jest-react-hooks-shallow": "^1.4.1",
+ "jest-svg-transformer": "^1.0.0",
+ "mendix": "^9.5.25874",
+ "metro-react-native-babel-preset": "~0.63.0",
+ "node-fetch": "^2.6.1",
+ "postcss": "^8.1.10",
+ "postcss-url": "^10.1.0",
+ "prettier": "^2.2.1",
+ "react": "~17.0.1",
+ "react-dom": "~17.0.1",
+ "react-hot-loader": "^4.13.0",
+ "react-native": "0.63.3",
+ "react-test-renderer": "~17.0.1",
+ "recursive-copy": "^2.0.11",
+ "resolve": "^1.19.0",
+ "rollup": "^2.56.2",
+ "rollup-plugin-clear": "^2.0.7",
+ "rollup-plugin-command": "^1.1.3",
+ "rollup-plugin-livereload": "^2.0.0",
+ "rollup-plugin-re": "^1.0.7",
+ "rollup-plugin-sass": "^1.2.6",
+ "rollup-plugin-terser": "^7.0.2",
+ "semver": "^7.3.2",
+ "shelljs": "^0.8.4",
+ "ts-jest": "^26.4.3",
+ "ts-node": "^9.0.0",
+ "typescript": "~4.3.5",
+ "webdriverio": "^7.5.3",
+ "xml2js": "^0.4.23",
+ "zip-a-folder": "^0.0.12"
+ },
+ "bin": {
+ "pluggable-widgets-tools": "bin/mx-scripts.js"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "@react-native-community/cli-platform-android": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-3.1.4.tgz",
- "integrity": "sha512-ClSdY20F0gzWVLTqCv7vHjnUqOcuq10jd9GgHX6lGSc2GI+Ql3/aQg3tmG4uY3KXNNwAv3U8QCoYgg1WGfwiHA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
"dev": true,
- "requires": {
- "@react-native-community/cli-tools": "^3.0.0",
- "chalk": "^2.4.2",
- "execa": "^1.0.0",
- "jetifier": "^1.6.2",
- "logkitty": "^0.6.0",
- "slash": "^3.0.0",
- "xmldoc": "^1.1.2"
- },
"dependencies": {
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- }
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "@react-native-community/cli-platform-ios": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.2.0.tgz",
- "integrity": "sha512-pzEnx68H6+mHBq5jsMrr3UmAmkrLSMlC9BZ4yoUdfUXCQq6/R70zNYvH4hjUw8h2Al7Kgq53UzHUsM0ph8TSWQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
"dev": true,
- "requires": {
- "@react-native-community/cli-tools": "^3.0.0",
- "chalk": "^2.4.2",
- "js-yaml": "^3.13.1",
- "xcode": "^2.0.0"
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
}
},
- "@react-native-community/cli-tools": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-3.0.0.tgz",
- "integrity": "sha512-8IhQKZdf3E4CR8T7HhkPGgorot/cLkRDgneJFDSWk/wCYZAuUh4NEAdumQV7N0jLSMWX7xxiWUPi94lOBxVY9g==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
"dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "lodash": "^4.17.5",
- "mime": "^2.4.1",
- "node-fetch": "^2.5.0"
- },
"dependencies": {
- "mime": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
- "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
- "dev": true
- }
+ "@types/yargs-parser": "*"
}
},
- "@react-native-community/cli-types": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-3.0.0.tgz",
- "integrity": "sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg==",
- "dev": true
- },
- "@sindresorhus/is": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz",
- "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==",
- "dev": true
- },
- "@sinonjs/commons": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz",
- "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/@wojtekmaj/enzyme-adapter-react-17": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.3.tgz",
+ "integrity": "sha512-Kp1ZJxtHkKEnUksaWrcMABNTOgL4wOt8VI6k2xOek2aH9PtZcWRXJNUEgnKrdJrqg5UqIjRslbVF9uUqwQJtFg==",
"dev": true,
- "requires": {
- "type-detect": "4.0.8"
+ "dependencies": {
+ "@wojtekmaj/enzyme-adapter-utils": "^0.1.1",
+ "enzyme-shallow-equal": "^1.0.0",
+ "has": "^1.0.0",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.0",
+ "react-is": "^17.0.2",
+ "react-test-renderer": "^17.0.0"
+ },
+ "peerDependencies": {
+ "enzyme": "^3.0.0",
+ "react": "^17.0.0-0",
+ "react-dom": "^17.0.0-0"
}
},
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/@wojtekmaj/enzyme-adapter-utils": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz",
+ "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==",
"dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
+ "dependencies": {
+ "function.prototype.name": "^1.1.0",
+ "has": "^1.0.0",
+ "object.assign": "^4.1.0",
+ "object.fromentries": "^2.0.0",
+ "prop-types": "^15.7.0"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0-0"
}
},
- "@szmarczak/http-timer": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz",
- "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ansi-escapes": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz",
+ "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
"dev": true,
- "requires": {
- "defer-to-connect": "^2.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "@types/babel__core": {
- "version": "7.1.14",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz",
- "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
+ "engines": {
+ "node": ">=6"
}
},
- "@types/babel__generator": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz",
- "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/big.js": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.1.1.tgz",
+ "integrity": "sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==",
"dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bigjs"
}
},
- "@types/babel__template": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz",
- "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@types/babel__traverse": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz",
- "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/chalk/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@types/big.js": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-4.0.5.tgz",
- "integrity": "sha512-D9KFrAt05FDSqLo7PU9TDHfDgkarlwdkuwFsg7Zm4xl62tTNaz+zN+Tkcdx2wGLBbSMf8BnoMhOVeUGUaJfLKg==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
"dev": true
},
- "@types/cacheable-request": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz",
- "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
- "requires": {
- "@types/http-cache-semantics": "*",
- "@types/keyv": "*",
- "@types/node": "*",
- "@types/responselike": "*"
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@types/caseless": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
- "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/cli-width": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true
},
- "@types/cheerio": {
- "version": "0.22.28",
- "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.28.tgz",
- "integrity": "sha512-ehUMGSW5IeDxJjbru4awKYMlKGmo1wSSGUVqXtYwlgmUM8X1a0PZttEIm6yEY7vHsY/hh6iPnklF213G0UColw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "@types/eslint-visitor-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
- "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "@types/glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
"dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/external-editor": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
- "@types/http-cache-semantics": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
- "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==",
- "dev": true
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
+ "engines": {
+ "node": ">=8"
}
},
- "@types/istanbul-reports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
- "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz",
+ "integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==",
"dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
+ "dependencies": {
+ "ansi-escapes": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
}
},
- "@types/json-schema": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
- "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "@types/keyv": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz",
- "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@types/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "@types/node": {
- "version": "14.14.37",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz",
- "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "@types/normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/inquirer/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
- "@types/prettier": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz",
- "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
},
- "@types/react": {
- "version": "16.9.56",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.56.tgz",
- "integrity": "sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dev": true,
- "requires": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
+ "dependencies": {
+ "chalk": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@types/react-native": {
- "version": "0.61.23",
- "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.61.23.tgz",
- "integrity": "sha512-upHmySsrVBDBokWWhYIKkKnpvadsHdioSjbBTu4xl7fjN0yb94KR5ngUOBXsyqAYqQzF+hP6qpvobG9M7Jr6hw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/log-symbols/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
- "requires": {
- "@types/react": "*"
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@types/request": {
- "version": "2.48.5",
- "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz",
- "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/log-symbols/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true,
- "requires": {
- "@types/caseless": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "form-data": "^2.5.0"
+ "engines": {
+ "node": ">=4"
}
},
- "@types/responselike": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
- "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/log-symbols/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@types/selenium-standalone": {
- "version": "6.15.2",
- "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-6.15.2.tgz",
- "integrity": "sha512-Jnt4AHHcUOPGuZ5cJRYfP3IpPalNc/o1BmFvuFFmLtU2PtvEGvyyJPdpErqzZDxsP8E4yjTst0GL+QMJiEWuBA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true,
- "requires": {
- "@types/node": "*"
+ "engines": {
+ "node": ">=4"
}
},
- "@types/stack-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
- "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
},
- "@types/tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
},
- "@types/yargs": {
- "version": "15.0.13",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
- "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
- "requires": {
- "@types/yargs-parser": "*"
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@types/yargs-parser": {
- "version": "20.2.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
- "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
- "dev": true
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "@typescript-eslint/eslint-plugin": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
- "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ora/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "2.34.0",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.0.0",
- "tsutils": "^3.17.1"
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@typescript-eslint/experimental-utils": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz",
- "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ora/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true,
- "requires": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/typescript-estree": "2.34.0",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^2.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "@typescript-eslint/parser": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
- "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/ora/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
- "requires": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "2.34.0",
- "@typescript-eslint/typescript-estree": "2.34.0",
- "eslint-visitor-keys": "^1.1.0"
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@typescript-eslint/typescript-estree": {
- "version": "2.34.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz",
- "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
"dev": true,
- "requires": {
- "debug": "^4.1.1",
- "eslint-visitor-keys": "^1.1.0",
- "glob": "^7.1.6",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.15",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
},
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/pretty-format/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/promise": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
+ "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
+ "dev": true,
"dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
+ "asap": "~2.0.6"
}
},
- "@wdio/cli": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-5.23.0.tgz",
- "integrity": "sha512-QYhVQUIBamgr627dU88XE7yyiZ/Oe6gQR2ZGiZMyxDQ3zxXnf9BRhKtn1x+AKLO7Dwag8+Apy/3xNeY4OOsfog==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
"dev": true,
- "requires": {
- "@wdio/config": "5.22.4",
- "@wdio/logger": "5.16.10",
- "@wdio/utils": "5.23.0",
- "async-exit-hook": "^2.0.1",
- "chalk": "^3.0.0",
- "chokidar": "^3.0.0",
- "cli-spinners": "^2.1.0",
- "ejs": "^3.0.1",
- "fs-extra": "^8.0.1",
- "inquirer": "^7.0.0",
- "lodash.flattendeep": "^4.4.0",
- "lodash.pickby": "^4.6.0",
- "lodash.union": "^4.6.0",
- "log-update": "^3.2.0",
- "webdriverio": "5.23.0",
- "yargs": "^15.0.1",
- "yarn-install": "^1.0.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@wdio/config": {
- "version": "5.22.4",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-5.22.4.tgz",
- "integrity": "sha512-i5dJQWb80darcRA//tfG0guMeQCeRUXroZNnHjGNb1qzvTRZmcIIhdxaD+DbK/5dWEx6aoMfoi6wjVp/CXwdAg==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-dom": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
"dev": true,
- "requires": {
- "@wdio/logger": "5.16.10",
- "deepmerge": "^4.0.0",
- "glob": "^7.1.2"
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "scheduler": "^0.20.2"
+ },
+ "peerDependencies": {
+ "react": "17.0.2"
}
},
- "@wdio/dot-reporter": {
- "version": "5.22.4",
- "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-5.22.4.tgz",
- "integrity": "sha512-PKhfPugbYCy3qoPvsYjfxnYI1fVQOLYVh1R9tEvwZx5lMM3bZGSoyfqqyjRb5S4H6rQG5s+S8DczpCub+wJA2A==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native": {
+ "version": "0.63.3",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.3.tgz",
+ "integrity": "sha512-71wq13uNo5W8QVQnFlnzZ3AD+XgUBYGhpsxysQFW/hJ8GAt/J5o+Bvhy81FXichp6IBDJDh/JgfHH2gNji8dFA==",
"dev": true,
- "requires": {
- "@wdio/reporter": "5.22.4",
- "chalk": "^3.0.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "@babel/runtime": "^7.0.0",
+ "@react-native-community/cli": "^4.10.0",
+ "@react-native-community/cli-platform-android": "^4.10.0",
+ "@react-native-community/cli-platform-ios": "^4.10.0",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "base64-js": "^1.1.2",
+ "event-target-shim": "^5.0.1",
+ "fbjs": "^1.0.0",
+ "fbjs-scripts": "^1.1.0",
+ "hermes-engine": "~0.5.0",
+ "invariant": "^2.2.4",
+ "jsc-android": "^245459.0.0",
+ "metro-babel-register": "0.59.0",
+ "metro-react-native-babel-transformer": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^24.9.0",
+ "promise": "^8.0.3",
+ "prop-types": "^15.7.2",
+ "react-devtools-core": "^4.6.0",
+ "react-refresh": "^0.4.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.19.1",
+ "stacktrace-parser": "^0.1.3",
+ "use-subscription": "^1.0.0",
+ "whatwg-fetch": "^3.0.0"
+ },
+ "bin": {
+ "react-native": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "16.13.1"
}
},
- "@wdio/jasmine-framework": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/jasmine-framework/-/jasmine-framework-5.23.0.tgz",
- "integrity": "sha512-GKz9AEYC1ltKtlXzy9y1Jw4cFCFt099AJTTQ2BK43ZHtkx1pEa2a7bkZ/FnGtpLyj9eSDQ+Q0FqTl2vjCBNIdA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/@jest/types": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
+ "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
"dev": true,
- "requires": {
- "@wdio/logger": "5.16.10",
- "@wdio/utils": "5.23.0",
- "jasmine": "^3.5.0"
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8.3"
}
},
- "@wdio/local-runner": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-5.23.0.tgz",
- "integrity": "sha512-+hlkaLemsOodCq19DEWi6ILu4qi8q023LZfLj6ZJdxLdVxkqrvm6VlRhI3B7u6T5CGA7CaOe500LeKK4strKwA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/@react-native-community/cli": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.14.0.tgz",
+ "integrity": "sha512-EYJKBuxFxAu/iwNUfwDq41FjORpvSh1wvQ3qsHjzcR5uaGlWEOJrd3uNJDuKBAS0TVvbEesLF9NEXipjyRVr4Q==",
"dev": true,
- "requires": {
- "@wdio/logger": "5.16.10",
- "@wdio/repl": "5.23.0",
- "@wdio/runner": "5.23.0",
- "async-exit-hook": "^2.0.1",
- "stream-buffers": "^3.0.2"
+ "dependencies": {
+ "@hapi/joi": "^15.0.3",
+ "@react-native-community/cli-debugger-ui": "^4.13.1",
+ "@react-native-community/cli-hermes": "^4.13.0",
+ "@react-native-community/cli-server-api": "^4.13.1",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "@react-native-community/cli-types": "^4.10.1",
+ "chalk": "^3.0.0",
+ "command-exists": "^1.2.8",
+ "commander": "^2.19.0",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^3.2.0",
+ "envinfo": "^7.7.2",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.3",
+ "inquirer": "^3.0.6",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.15",
+ "metro": "^0.59.0",
+ "metro-config": "^0.59.0",
+ "metro-core": "^0.59.0",
+ "metro-react-native-babel-transformer": "^0.59.0",
+ "metro-resolver": "^0.59.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "node-stream-zip": "^1.9.1",
+ "ora": "^3.4.0",
+ "pretty-format": "^25.2.0",
+ "semver": "^6.3.0",
+ "serve-static": "^1.13.1",
+ "strip-ansi": "^5.2.0",
+ "sudo-prompt": "^9.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "bin": {
+ "react-native": "build/bin.js"
+ },
+ "engines": {
+ "node": ">=8.3"
+ },
+ "peerDependencies": {
+ "react-native": ">=0.62.0-rc.0 <0.64.0"
}
},
- "@wdio/logger": {
- "version": "5.16.10",
- "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-5.16.10.tgz",
- "integrity": "sha512-hRKhxgd9uB48Dtj2xe2ckxU4KwI/RO8IwguySuaI2SLFj6EDbdonwzpVkq111/fjBuq7R1NauAaNcm3AMEbIFA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/@react-native-community/cli/node_modules/pretty-format": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
+ "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
"dev": true,
- "requires": {
- "chalk": "^3.0.0",
- "loglevel": "^1.6.0",
- "loglevel-plugin-prefix": "^0.8.4",
- "strip-ansi": "^6.0.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "@jest/types": "^25.5.0",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^16.12.0"
+ },
+ "engines": {
+ "node": ">= 8.3"
}
},
- "@wdio/protocols": {
- "version": "5.22.1",
- "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-5.22.1.tgz",
- "integrity": "sha512-GdoWb/HTrb09Qb0S/7sLp1NU94LAhTsF1NnFj5sEFSUpecrl0S07pnhVg54pUImectN/woaqSl7uJGjlSGZcdQ==",
- "dev": true
- },
- "@wdio/repl": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-5.23.0.tgz",
- "integrity": "sha512-cKG9m0XuqcQenQmoup0yJX1fkDQEdY06QXuwt636ZQf6XgDoeoAdNOgnRnNruQ0+JsC2eqHFoSNto1q8wcLH/g==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/@types/yargs": {
+ "version": "15.0.14",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
+ "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
"dev": true,
- "requires": {
- "@wdio/utils": "5.23.0"
+ "dependencies": {
+ "@types/yargs-parser": "*"
}
},
- "@wdio/reporter": {
- "version": "5.22.4",
- "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-5.22.4.tgz",
- "integrity": "sha512-y/HIKGJHsKXroWWH1B7upynoYmFMuAwJs3LEVwdnpiJIBF4DxzIrRGCY/SSA6U1a/+cRTdI5m1+vA1gcFxcmwQ==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "requires": {
- "fs-extra": "^8.0.1"
+ "engines": {
+ "node": ">=8"
}
},
- "@wdio/runner": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-5.23.0.tgz",
- "integrity": "sha512-G4ddjgYeaopF3L+1+48V/MgCVSTOpiNXfHpQG3RBi9iw2dCYraZtn1bZEiBqTZaGd+tqd+DBvfQ0HjP0JUT8Kw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "@wdio/config": "5.22.4",
- "@wdio/logger": "5.16.10",
- "@wdio/utils": "5.23.0",
- "deepmerge": "^4.0.0",
- "gaze": "^1.1.2",
- "webdriverio": "5.23.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "@wdio/selenium-standalone-service": {
- "version": "5.16.10",
- "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-5.16.10.tgz",
- "integrity": "sha512-IudfrPgFoejkM+UT4sPv9g5pAGax7+CyHDZkbPDl2XXsct3gdAXDVe57KWuNYX+s0jFu8MSR/4nLnvJjdydNjw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
- "requires": {
- "@types/selenium-standalone": "^6.15.0",
- "@wdio/logger": "5.16.10",
- "fs-extra": "^8.0.1",
- "selenium-standalone": "^6.15.1"
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
}
},
- "@wdio/spec-reporter": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-5.23.0.tgz",
- "integrity": "sha512-dqVqo5+wbSaJhQfOOnw8o53StFtPOlUwrsMsp80YATZZxGjtLLuNFWlT9xGVhMDzTnzBUNO8ZxsSIl8gSE2Iew==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/react-native": {
+ "version": "0.63.4",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.4.tgz",
+ "integrity": "sha512-I4kM8kYO2mWEYUFITMcpRulcy4/jd+j9T6PbIzR0FuMcz/xwd+JwHoLPa1HmCesvR1RDOw9o4D+OFLwuXXfmGw==",
"dev": true,
- "requires": {
- "@wdio/reporter": "5.22.4",
- "chalk": "^3.0.0",
- "easy-table": "^1.1.1",
- "pretty-ms": "^6.0.0"
- },
+ "peer": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "@babel/runtime": "^7.0.0",
+ "@react-native-community/cli": "^4.10.0",
+ "@react-native-community/cli-platform-android": "^4.10.0",
+ "@react-native-community/cli-platform-ios": "^4.10.0",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "base64-js": "^1.1.2",
+ "event-target-shim": "^5.0.1",
+ "fbjs": "^1.0.0",
+ "fbjs-scripts": "^1.1.0",
+ "hermes-engine": "~0.5.0",
+ "invariant": "^2.2.4",
+ "jsc-android": "^245459.0.0",
+ "metro-babel-register": "0.59.0",
+ "metro-react-native-babel-transformer": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^24.9.0",
+ "promise": "^8.0.3",
+ "prop-types": "^15.7.2",
+ "react-devtools-core": "^4.6.0",
+ "react-refresh": "^0.4.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.19.1",
+ "stacktrace-parser": "^0.1.3",
+ "use-subscription": "^1.0.0",
+ "whatwg-fetch": "^3.0.0"
+ },
+ "bin": {
+ "react-native": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "16.13.1"
}
},
- "@wdio/sync": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-5.23.0.tgz",
- "integrity": "sha512-i+ntMVXqKcdQRfnjZ0qCXUoPlQhK2/GwDeCeO35fBeLkd7hbo5r8jGd/maXgnL19Jscjeotid5w53HJqSDYCYA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/scheduler": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
+ "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
"dev": true,
- "requires": {
- "@wdio/logger": "5.16.10",
- "fibers": "^4.0.1",
- "fibers_node_v8": "^3.1.2"
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
}
},
- "@wdio/utils": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-5.23.0.tgz",
- "integrity": "sha512-dWPEkDiaNUqJXPO6L2di2apI7Rle7Er4euh67Wlb5+3MrPNjCKhiF8gHcpQeL8oe6A1MH/f89kpSEEXe4BMkAw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "@wdio/logger": "5.16.10",
- "deepmerge": "^4.0.0"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "@webassemblyjs/ast": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
- "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-native/node_modules/use-subscription": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
+ "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
"dev": true,
- "requires": {
- "@webassemblyjs/helper-module-context": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/wast-parser": "1.9.0"
+ "dependencies": {
+ "object-assign": "^4.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0"
}
},
- "@webassemblyjs/floating-point-hex-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
- "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
- "dev": true
- },
- "@webassemblyjs/helper-api-error": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
- "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
- "dev": true
- },
- "@webassemblyjs/helper-buffer": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
- "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
- "dev": true
- },
- "@webassemblyjs/helper-code-frame": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
- "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/react-test-renderer": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
+ "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
"dev": true,
- "requires": {
- "@webassemblyjs/wast-printer": "1.9.0"
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "react-is": "^17.0.2",
+ "react-shallow-renderer": "^16.13.1",
+ "scheduler": "^0.20.2"
+ },
+ "peerDependencies": {
+ "react": "17.0.2"
}
},
- "@webassemblyjs/helper-fsm": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
- "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
- "dev": true
- },
- "@webassemblyjs/helper-module-context": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
- "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0"
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
- "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
- "dev": true
- },
- "@webassemblyjs/helper-wasm-section": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
- "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0"
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
}
},
- "@webassemblyjs/ieee754": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
- "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/string-width": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=",
"dev": true,
- "requires": {
- "@xtuc/ieee754": "^1.2.0"
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@webassemblyjs/leb128": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
- "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/string-width/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
- "requires": {
- "@xtuc/long": "4.2.2"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@webassemblyjs/utf8": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
- "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
- "dev": true
- },
- "@webassemblyjs/wasm-edit": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
- "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/string-width/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/helper-wasm-section": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0",
- "@webassemblyjs/wasm-opt": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0",
- "@webassemblyjs/wast-printer": "1.9.0"
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@webassemblyjs/wasm-gen": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
- "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/ieee754": "1.9.0",
- "@webassemblyjs/leb128": "1.9.0",
- "@webassemblyjs/utf8": "1.9.0"
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "@webassemblyjs/wasm-opt": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
- "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+ "node_modules/@mendix/pluggable-widgets-tools/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-buffer": "1.9.0",
- "@webassemblyjs/wasm-gen": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@webassemblyjs/wasm-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
- "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+ "node_modules/@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-api-error": "1.9.0",
- "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
- "@webassemblyjs/ieee754": "1.9.0",
- "@webassemblyjs/leb128": "1.9.0",
- "@webassemblyjs/utf8": "1.9.0"
+ "dependencies": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@webassemblyjs/wast-parser": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
- "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/floating-point-hex-parser": "1.9.0",
- "@webassemblyjs/helper-api-error": "1.9.0",
- "@webassemblyjs/helper-code-frame": "1.9.0",
- "@webassemblyjs/helper-fsm": "1.9.0",
- "@xtuc/long": "4.2.2"
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "@webassemblyjs/wast-printer": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
- "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+ "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/wast-parser": "1.9.0",
- "@xtuc/long": "4.2.2"
+ "engines": {
+ "node": ">= 8"
}
},
- "@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
- },
- "@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
- },
- "abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
- "dev": true
- },
- "abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
"dev": true,
- "requires": {
- "event-target-shim": "^5.0.0"
+ "engines": {
+ "node": ">= 6"
}
},
- "absolute-path": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
- "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=",
- "dev": true
- },
- "accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
- "requires": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
+ "node_modules/@popperjs/core": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
+ "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
},
- "acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "node_modules/@react-native-community/cli-debugger-ui": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.13.1.tgz",
+ "integrity": "sha512-UFnkg5RTq3s2X15fSkrWY9+5BKOFjihNSnJjTV2H5PtTUFbd55qnxxPw8CxSfK0bXb1IrSvCESprk2LEpqr5cg==",
"dev": true,
- "requires": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
+ "dependencies": {
+ "serve-static": "^1.13.1"
}
},
- "acorn-jsx": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
- "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
- "dev": true
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "dev": true
- },
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "node_modules/@react-native-community/cli-hermes": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz",
+ "integrity": "sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ==",
"dev": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
"dependencies": {
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- }
+ "@react-native-community/cli-platform-android": "^4.13.0",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "hermes-profile-transformer": "^0.0.6",
+ "ip": "^1.1.5"
}
},
- "airbnb-prop-types": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz",
- "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==",
- "requires": {
- "array.prototype.find": "^2.1.1",
- "function.prototype.name": "^1.1.2",
- "is-regex": "^1.1.0",
- "object-is": "^1.1.2",
- "object.assign": "^4.1.0",
- "object.entries": "^1.1.2",
- "prop-types": "^15.7.2",
- "prop-types-exact": "^1.2.0",
- "react-is": "^16.13.1"
+ "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/@react-native-community/cli-hermes/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
"dependencies": {
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "ajv-errors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
- "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
- "dev": true
+ "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "node_modules/@react-native-community/cli-hermes/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "ansi-colors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
- "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "ansi-wrap": "^0.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "ansi-cyan": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
- "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "node_modules/@react-native-community/cli-platform-android": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz",
+ "integrity": "sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA==",
"dev": true,
- "requires": {
- "type-fest": "^0.21.3"
+ "dependencies": {
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "execa": "^1.0.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "jetifier": "^1.6.2",
+ "lodash": "^4.17.15",
+ "logkitty": "^0.7.1",
+ "slash": "^3.0.0",
+ "xmldoc": "^1.1.2"
}
},
- "ansi-fragments": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
- "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "colorette": "^1.0.7",
- "slice-ansi": "^2.0.0",
- "strip-ansi": "^5.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
},
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "ansi-html": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "ansi-red": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
- "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
- "requires": {
- "ansi-wrap": "0.1.0"
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
}
},
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "color-convert": "^1.9.0"
+ "engines": {
+ "node": ">=8"
}
},
- "ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
- "dev": true
+ "node_modules/@react-native-community/cli-platform-android/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
},
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
"dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "node_modules/@react-native-community/cli-platform-ios": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz",
+ "integrity": "sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA==",
"dev": true,
- "requires": {
- "buffer-equal": "^1.0.0"
+ "dependencies": {
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "plist": "^3.0.1",
+ "xcode": "^2.0.0"
}
},
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "archiver": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
- "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "archiver-utils": "^2.1.0",
- "async": "^2.6.3",
- "buffer-crc32": "^0.2.1",
- "glob": "^7.1.4",
- "readable-stream": "^3.4.0",
- "tar-stream": "^2.1.0",
- "zip-stream": "^2.1.2"
- },
"dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "archiver-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
- "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
- "requires": {
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.0",
- "lazystream": "^1.0.0",
- "lodash.defaults": "^4.2.0",
- "lodash.difference": "^4.5.0",
- "lodash.flatten": "^4.4.0",
- "lodash.isplainobject": "^4.0.6",
- "lodash.union": "^4.6.0",
- "normalize-path": "^3.0.0",
- "readable-stream": "^2.0.0"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "archy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
- "dev": true
- },
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
+ "engines": {
+ "node": ">=8"
}
},
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
- "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "make-iterator": "^1.0.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
- "dev": true
- },
- "array-filter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
- "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=",
- "dev": true
- },
- "array-flatten": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
- "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
- "dev": true
- },
- "array-includes": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
- "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
+ "node_modules/@react-native-community/cli-server-api": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-4.13.1.tgz",
+ "integrity": "sha512-vQzsFKD9CjHthA2ehTQX8c7uIzlI9A7ejaIow1I9RlEnLraPH2QqVDmzIdbdh5Od47UPbRzamCgAP8Bnqv3qwQ==",
"dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "get-intrinsic": "^1.1.1",
- "is-string": "^1.0.5"
+ "dependencies": {
+ "@react-native-community/cli-debugger-ui": "^4.13.1",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "errorhandler": "^1.5.0",
+ "nocache": "^2.1.0",
+ "pretty-format": "^25.1.0",
+ "serve-static": "^1.13.1",
+ "ws": "^1.1.0"
}
},
- "array-initial": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
- "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
+ "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
+ "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
"dev": true,
- "requires": {
- "array-slice": "^1.0.0",
- "is-number": "^4.0.0"
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^3.0.0"
},
+ "engines": {
+ "node": ">= 8.3"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
"dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
}
},
- "array-last": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
- "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
+ "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "is-number": "^4.0.0"
- },
"dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "array-map": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
- "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
- "dev": true
+ "node_modules/@react-native-community/cli-server-api/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "array-reduce": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
- "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
- "dev": true
+ "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "node_modules/@react-native-community/cli-server-api/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "array-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
- "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
+ "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "default-compare": "^1.0.0",
- "get-value": "^2.0.6",
- "kind-of": "^5.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "engines": {
+ "node": ">=8"
}
},
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
+ "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
+ "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^25.5.0",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^16.12.0"
+ },
+ "engines": {
+ "node": ">= 8.3"
+ }
},
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
+ "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
+ "node_modules/@react-native-community/cli-server-api/node_modules/ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "dev": true,
+ "dependencies": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
},
- "array.prototype.find": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz",
- "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==",
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.4"
+ "node_modules/@react-native-community/cli-tools": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz",
+ "integrity": "sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "shell-quote": "1.6.1"
}
},
- "array.prototype.flat": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
- "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
+ "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "array.prototype.flatmap": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz",
- "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==",
+ "node_modules/@react-native-community/cli-tools/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1",
- "function-bind": "^1.1.1"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "art": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz",
- "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==",
- "dev": true
+ "node_modules/@react-native-community/cli-tools/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "node_modules/@react-native-community/cli-tools/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "node_modules/@react-native-community/cli-tools/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "node_modules/@react-native-community/cli-tools/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- },
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "assert": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
- "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "node_modules/@react-native-community/cli-types": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz",
+ "integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ==",
+ "dev": true
+ },
+ "node_modules/@rollup/plugin-alias": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz",
+ "integrity": "sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==",
"dev": true,
- "requires": {
- "object-assign": "^4.1.1",
- "util": "0.10.3"
+ "dependencies": {
+ "slash": "^3.0.0"
},
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/@rollup/plugin-babel": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz",
+ "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==",
+ "dev": true,
"dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- },
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dev": true,
- "requires": {
- "inherits": "2.0.1"
- }
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@types/babel__core": "^7.1.9",
+ "rollup": "^1.20.0||^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/babel__core": {
+ "optional": true
}
}
},
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz",
+ "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.1",
+ "glob": "^7.1.6",
+ "is-reference": "^1.2.1",
+ "magic-string": "^0.25.7",
+ "resolve": "^1.17.0"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.38.3"
+ }
},
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
+ "node_modules/@rollup/plugin-image": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-2.1.1.tgz",
+ "integrity": "sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "mini-svg-data-uri": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0 || ^2.0.0"
+ }
},
- "astral-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
- "dev": true
+ "node_modules/@rollup/plugin-json": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
+ "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.0.8"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0 || ^2.0.0"
+ }
},
- "async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
- "dev": true
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz",
+ "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "@types/resolve": "1.17.1",
+ "builtin-modules": "^3.1.0",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.42.0"
+ }
},
- "async-done": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
- "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "node_modules/@rollup/plugin-typescript": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz",
+ "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==",
"dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.2",
- "process-nextick-args": "^2.0.0",
- "stream-exhaust": "^1.0.1"
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "resolve": "^1.17.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.14.0",
+ "tslib": "*",
+ "typescript": ">=3.7.0"
}
},
- "async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
+ "node_modules/@rollup/plugin-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-url/-/plugin-url-6.1.0.tgz",
+ "integrity": "sha512-FJNWBnBB7nLzbcaGmu1no+U/LlRR67TtgfRFP+VEKSrWlDTE6n9jMns/N4Q/VL6l4x6kTHQX4HQfwTcldaAfHQ==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "make-dir": "^3.1.0",
+ "mime": "^2.4.6"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
},
- "async-exit-hook": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
- "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
- "dev": true
+ "node_modules/@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
},
- "async-limiter": {
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
"dev": true
},
- "async-settle": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
- "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
+ "node_modules/@sindresorhus/is": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
+ "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==",
"dev": true,
- "requires": {
- "async-done": "^1.2.2"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
},
- "aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
- "dev": true
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
+ "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
},
- "babel-eslint": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
- "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.0",
- "@babel/traverse": "^7.7.0",
- "@babel/types": "^7.7.0",
- "eslint-visitor-keys": "^1.0.0",
- "resolve": "^1.12.0"
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "babel-jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
- "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
+ "node_modules/@testing-library/dom": {
+ "version": "8.10.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.10.1.tgz",
+ "integrity": "sha512-rab7vpf1uGig5efWwsCOn9j4/doy+W3VBoUyzX7C4y77u0wAckwc7R8nyH6e2rw0rRzKJR+gWPiAg8zhiFbxWQ==",
"dev": true,
- "requires": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^4.2.0",
+ "aria-query": "^5.0.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.4.4",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "babel-loader": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz",
- "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==",
+ "node_modules/@testing-library/dom/node_modules/@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
- "requires": {
- "find-cache-dir": "^3.3.1",
- "loader-utils": "^1.4.0",
- "make-dir": "^3.1.0",
- "schema-utils": "^2.6.5"
- },
"dependencies": {
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "babel-plugin-dynamic-import-node": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
- "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "node_modules/@testing-library/dom/node_modules/@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
"dev": true,
- "requires": {
- "object.assign": "^4.1.0"
+ "dependencies": {
+ "@types/yargs-parser": "*"
}
},
- "babel-plugin-istanbul": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
- "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
+ "node_modules/@testing-library/dom/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^4.0.0",
- "test-exclude": "^6.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
- "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
+ "node_modules/@testing-library/dom/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "babel-plugin-polyfill-corejs2": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz",
- "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==",
+ "node_modules/@testing-library/dom/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "@babel/compat-data": "^7.13.0",
- "@babel/helper-define-polyfill-provider": "^0.1.5",
- "semver": "^6.1.1"
- },
"dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "babel-plugin-polyfill-corejs3": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz",
- "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==",
+ "node_modules/@testing-library/dom/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@testing-library/dom/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.1.5",
- "core-js-compat": "^3.8.1"
+ "engines": {
+ "node": ">=8"
}
},
- "babel-plugin-polyfill-regenerator": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz",
- "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==",
+ "node_modules/@testing-library/dom/node_modules/pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
"dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.1.5"
+ "dependencies": {
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "babel-plugin-syntax-trailing-function-commas": {
- "version": "7.0.0-beta.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
- "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==",
+ "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/dom/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
},
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "node_modules/@testing-library/dom/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "babel-preset-fbjs": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz",
- "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==",
+ "node_modules/@testing-library/jest-dom": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz",
+ "integrity": "sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ==",
"dev": true,
- "requires": {
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-syntax-class-properties": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.0.0",
- "@babel/plugin-syntax-jsx": "^7.0.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-member-expression-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-object-super": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-property-literals": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+ "dependencies": {
+ "@babel/runtime": "^7.9.2",
+ "@types/testing-library__jest-dom": "^5.9.1",
+ "aria-query": "^4.2.2",
+ "chalk": "^3.0.0",
+ "css": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.5.6",
+ "lodash": "^4.17.15",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=6",
+ "yarn": ">=1"
}
},
- "babel-preset-jest": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
- "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
+ "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "bach": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
- "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
+ "node_modules/@testing-library/jest-dom/node_modules/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
"dev": true,
- "requires": {
- "arr-filter": "^1.1.1",
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "array-each": "^1.0.0",
- "array-initial": "^1.0.0",
- "array-last": "^1.1.1",
- "async-done": "^1.2.2",
- "async-settle": "^1.0.0",
- "now-and-later": "^2.0.0"
+ "dependencies": {
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ },
+ "engines": {
+ "node": ">=6.0"
}
},
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "node_modules/@testing-library/jest-dom/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "node_modules/@testing-library/jest-dom/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "node_modules/@testing-library/jest-dom/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "safe-buffer": "5.1.2"
+ "engines": {
+ "node": ">=8"
}
},
- "batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
- "dev": true
+ "node_modules/@testing-library/jest-dom/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "node_modules/@testing-library/react": {
+ "version": "12.1.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.2.tgz",
+ "integrity": "sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g==",
"dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@testing-library/dom": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-dom": "*"
}
},
- "big-integer": {
- "version": "1.6.48",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
- "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==",
- "dev": true
+ "node_modules/@testing-library/user-event": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
+ "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": ">=7.21.4"
+ }
},
- "big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
},
- "binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "node_modules/@types/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
"dev": true
},
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "node_modules/@types/babel__core": {
+ "version": "7.1.16",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz",
+ "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==",
"dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
}
},
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "bn.js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
- "dev": true
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz",
+ "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
},
- "body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "node_modules/@types/babel__template": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+ "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
"dev": true,
- "requires": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
"dependencies": {
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
- "dev": true
- },
- "http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "dev": true
- }
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
}
},
- "bonjour": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
- "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "node_modules/@types/babel__traverse": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
+ "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
"dev": true,
- "requires": {
- "array-flatten": "^2.1.0",
- "deep-equal": "^1.0.1",
- "dns-equal": "^1.0.0",
- "dns-txt": "^2.0.2",
- "multicast-dns": "^6.0.1",
- "multicast-dns-service-types": "^1.1.0"
+ "dependencies": {
+ "@babel/types": "^7.3.0"
}
},
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "node_modules/@types/big.js": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.1.2.tgz",
+ "integrity": "sha512-h24JIZ52rvSvi2jkpYDk2yLH99VzZoCJiSfDWwjst7TwJVuXN61XVCUlPCzRl7mxKEMsGf8z42Q+J4TZwU3z2w==",
"dev": true
},
- "bplist-creator": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
- "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz",
+ "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==",
"dev": true,
- "requires": {
- "stream-buffers": "~2.2.0"
- },
"dependencies": {
- "stream-buffers": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
- "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
- "dev": true
- }
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "*",
+ "@types/node": "*",
+ "@types/responselike": "*"
}
},
- "bplist-parser": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
- "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "node_modules/@types/cheerio": {
+ "version": "0.22.30",
+ "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz",
+ "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==",
"dev": true,
- "requires": {
- "big-integer": "^1.6.44"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
+ "node_modules/@types/d3": {
+ "version": "3.5.46",
+ "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.46.tgz",
+ "integrity": "sha512-jNHfiGd41+JUV43LTMzQNidyp4Hn0XfhoSmy8baE0d/N5pGYpD+yX03JacY/MH+smFxYOQGXlz4HxkRZOuRNOQ=="
},
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
+ "node_modules/@types/d3-cloud": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/d3-cloud/-/d3-cloud-1.2.5.tgz",
+ "integrity": "sha512-vEIER9DsEBUOdpRiwCh3n1qE+cV6h4e1LhxhY2sLt+m8LPNAIkOOhTlqk0JDiBwD+ZPM8ynFAOU3AuPuVYBFBA==",
"dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "@types/d3": "^3"
}
},
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "node_modules/@types/diff": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.1.tgz",
+ "integrity": "sha512-XIpxU6Qdvp1ZE6Kr3yrkv1qgUab0fyf4mHYvW8N3Bx3PCsbN6or1q9/q72cv5jIFWolaGH08U9XyYoLLIykyKQ==",
"dev": true
},
- "browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "node_modules/@types/easy-table": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz",
+ "integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==",
"dev": true
},
- "browserify-aes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "node_modules/@types/ejs": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz",
+ "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==",
+ "dev": true
+ },
+ "node_modules/@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "dev": true
+ },
+ "node_modules/@types/fibers": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@types/fibers/-/fibers-3.1.1.tgz",
+ "integrity": "sha512-yHoUi46uika0snoTpNcVqUSvgbRndaIps4TUCotrXjtc0DHDoPQckmyXEZ2bX3e4mpJmyEW3hRhCwQa/ISCPaA==",
+ "dev": true
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
"dev": true,
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "browserify-cipher": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
+ "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
"dev": true,
- "requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "browserify-des": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
+ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
+ "dev": true
+ },
+ "node_modules/@types/inquirer": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz",
+ "integrity": "sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ==",
"dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "dependencies": {
+ "@types/through": "*",
+ "rxjs": "^7.2.0"
}
},
- "browserify-rsa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
- "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "node_modules/@types/inquirer/node_modules/rxjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz",
+ "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==",
"dev": true,
- "requires": {
- "bn.js": "^5.0.0",
- "randombytes": "^2.0.1"
+ "dependencies": {
+ "tslib": "~2.1.0"
}
},
- "browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "node_modules/@types/inquirer/node_modules/tslib": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
+ "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
"dev": true,
- "requires": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
- "inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
+ "@types/istanbul-lib-coverage": "*"
}
},
- "browserify-zlib": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+ "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
"dev": true,
- "requires": {
- "pako": "~1.0.5"
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
}
},
- "browserslist": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz",
- "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==",
+ "node_modules/@types/jasmine": {
+ "version": "3.6.9",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.9.tgz",
+ "integrity": "sha512-B53NIwMj/AO0O+xfSWLYmKB0Mo6TYxfv2Mk8/c1T2w/e38t55iaPR6p7pHXTTtqfTmevPK3i8T1YweYFTZlxDw==",
+ "dev": true
+ },
+ "node_modules/@types/jest": {
+ "version": "27.0.2",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz",
+ "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==",
"dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001181",
- "colorette": "^1.2.1",
- "electron-to-chromium": "^1.3.649",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.70"
+ "dependencies": {
+ "jest-diff": "^27.0.0",
+ "pretty-format": "^27.0.0"
}
},
- "bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "node_modules/@types/jest/node_modules/@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "node_modules/@types/jest/node_modules/@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
"dev": true,
- "requires": {
- "node-int64": "^0.4.0"
+ "dependencies": {
+ "@types/yargs-parser": "*"
}
},
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "node_modules/@types/jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
- "dev": true
+ "node_modules/@types/jest/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
},
- "buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
- "dev": true
+ "node_modules/@types/jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "node_modules/@types/jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "buffer-indexof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
- "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
- "dev": true
+ "node_modules/@types/jest/node_modules/diff-sequences": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
},
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
+ "node_modules/@types/jest/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
- "dev": true
+ "node_modules/@types/jest/node_modules/jest-diff": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+ "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.0.6",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
},
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "dev": true
+ "node_modules/@types/jest/node_modules/jest-get-type": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+ "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
},
- "cac": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz",
- "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=",
+ "node_modules/@types/jest/node_modules/pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
"dev": true,
- "requires": {
- "camelcase-keys": "^3.0.0",
- "chalk": "^1.1.3",
- "indent-string": "^3.0.0",
- "minimist": "^1.2.0",
- "read-pkg-up": "^1.0.1",
- "suffix": "^0.1.0",
- "text-table": "^0.2.0"
- },
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "cacache": {
- "version": "15.0.6",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.6.tgz",
- "integrity": "sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w==",
+ "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "requires": {
- "@npmcli/move-file": "^1.0.1",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "glob": "^7.1.4",
- "infer-owner": "^1.0.4",
- "lru-cache": "^6.0.0",
- "minipass": "^3.1.1",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.2",
- "mkdirp": "^1.0.3",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^8.0.1",
- "tar": "^6.0.2",
- "unique-filename": "^1.1.1"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "node_modules/@types/jest/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/@types/jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "cacheable-lookup": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
- "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "node_modules/@types/json-schema": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
"dev": true
},
- "cacheable-request": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz",
- "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==",
+ "node_modules/@types/keyv": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
+ "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==",
"dev": true,
- "requires": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^4.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^2.0.0"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "node_modules/@types/lodash": {
+ "version": "4.14.175",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz",
+ "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==",
+ "dev": true
+ },
+ "node_modules/@types/lodash.flattendeep": {
+ "version": "4.4.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.6.tgz",
+ "integrity": "sha512-uLm2MaRVlqJSGsMK0RZpP5T3KqReq+9WbYDHCUhBhp98v56hMG/Yht52bsoTSui9xz2mUvQ9NfG3LrNGDL92Ng==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "*"
}
},
- "caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "node_modules/@types/lodash.pickby": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.6.tgz",
+ "integrity": "sha512-NFa13XxlMd9eFi0UFZFWIztpMpXhozbijrx3Yb1viYZphT7jyopIFVoIRF4eYMjruWNEG1rnyrRmg/8ej9T8Iw==",
"dev": true,
- "requires": {
- "callsites": "^2.0.0"
- },
"dependencies": {
- "callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
- "dev": true
- }
+ "@types/lodash": "*"
}
},
- "caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "node_modules/@types/lodash.union": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.6.tgz",
+ "integrity": "sha512-Wu0ZEVNcyCz8eAn6TlUbYWZoGbH9E+iOHxAZbwUoCEXdUiy6qpcz5o44mMXViM4vlPLLCPlkAubEP1gokoSZaw==",
"dev": true,
- "requires": {
- "caller-callsite": "^2.0.0"
+ "dependencies": {
+ "@types/lodash": "*"
}
},
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "node_modules/@types/node": {
+ "version": "16.10.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz",
+ "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==",
"dev": true
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
"dev": true
},
- "camelcase-keys": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz",
- "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- }
- }
+ "node_modules/@types/object-inspect": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.1.tgz",
+ "integrity": "sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==",
+ "dev": true
},
- "caniuse-lite": {
- "version": "1.0.30001204",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
- "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==",
+ "node_modules/@types/prettier": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz",
+ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==",
"dev": true
},
- "capture-exit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
- "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
+ "node_modules/@types/prop-types": {
+ "version": "15.7.4",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
+ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==",
+ "dev": true
+ },
+ "node_modules/@types/puppeteer": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.4.tgz",
+ "integrity": "sha512-3Nau+qi69CN55VwZb0ATtdUAlYlqOOQ3OfQfq0Hqgc4JMFXiQT/XInlwQ9g6LbicDslE6loIFsXFklGh5XmI6Q==",
"dev": true,
- "requires": {
- "rsvp": "^4.8.4"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
+ "node_modules/@types/react": {
+ "version": "17.0.30",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.30.tgz",
+ "integrity": "sha512-3Dt/A8gd3TCXi2aRe84y7cK1K8G+N9CZRDG8kDGguOKa0kf/ZkSwTmVIDPsm/KbQOVMaDJXwhBtuOXxqwdpWVg==",
+ "dev": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/@types/react-native": {
+ "version": "0.64.16",
+ "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.64.16.tgz",
+ "integrity": "sha512-5XMYf+QfYICgvDtLI5xBxNHcApuIOhfKqLiLWeBVusgLYCIVSzlaCWUgbSsn39IXsVDPMFJQ1g/AIFWwg6PxBA==",
"dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "dependencies": {
+ "@types/react": "*"
}
},
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "cheerio": {
- "version": "1.0.0-rc.5",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.5.tgz",
- "integrity": "sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw==",
+ "node_modules/@types/recursive-readdir": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.0.tgz",
+ "integrity": "sha512-HGk753KRu2N4mWduovY4BLjYq4jTOL29gV2OfGdGxHcPSWGFkC5RRIdk+VTs5XmYd7MVAD+JwKrcb5+5Y7FOCg==",
"dev": true,
- "requires": {
- "cheerio-select-tmp": "^0.1.0",
- "dom-serializer": "~1.2.0",
- "domhandler": "^4.0.0",
- "entities": "~2.1.0",
- "htmlparser2": "^6.0.0",
- "parse5": "^6.0.0",
- "parse5-htmlparser2-tree-adapter": "^6.0.0"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "cheerio-select-tmp": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz",
- "integrity": "sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ==",
+ "node_modules/@types/resolve": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
+ "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
"dev": true,
- "requires": {
- "css-select": "^3.1.2",
- "css-what": "^4.0.0",
- "domelementtype": "^2.1.0",
- "domhandler": "^4.0.0",
- "domutils": "^2.4.4"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
+ "node_modules/@types/responselike": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
+ "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
"dev": true,
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- },
"dependencies": {
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "@types/node": "*"
}
},
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
"dev": true
},
- "chrome-trace-event": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
- "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "node_modules/@types/selenium-standalone": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz",
+ "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==",
"dev": true,
- "requires": {
- "tslib": "^1.9.0"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "node_modules/@types/stream-buffers": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz",
+ "integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "@types/node": "*"
}
},
- "cjs-module-lexer": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
- "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
+ "node_modules/@types/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==",
"dev": true
},
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "node_modules/@types/testing-library__jest-dom": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz",
+ "integrity": "sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw==",
"dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
+ "@types/jest": "*"
}
},
- "classnames": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ "node_modules/@types/through": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz",
+ "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
},
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "node_modules/@types/which": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz",
+ "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==",
"dev": true
},
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "node_modules/@types/yargs": {
+ "version": "15.0.14",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
+ "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
"dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
+ "dependencies": {
+ "@types/yargs-parser": "*"
}
},
- "cli-spinners": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz",
- "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==",
+ "node_modules/@types/yargs-parser": {
+ "version": "20.2.1",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
+ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
"dev": true
},
- "cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true
+ "node_modules/@types/yauzl": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
+ "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
},
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
+ "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
"dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
+ "@typescript-eslint/experimental-utils": "4.33.0",
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "debug": "^4.3.1",
+ "functional-red-black-tree": "^1.0.1",
+ "ignore": "^5.1.8",
+ "regexpp": "^3.1.0",
+ "semver": "^7.3.5",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^4.0.0",
+ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
}
}
},
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "dev": true
- },
- "clone-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
- "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
- "dev": true
- },
- "clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "node_modules/@typescript-eslint/experimental-utils": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
+ "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
"dev": true,
- "requires": {
- "mimic-response": "^1.0.0"
+ "dependencies": {
+ "@types/json-schema": "^7.0.7",
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/typescript-estree": "4.33.0",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
}
},
- "clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
- "dev": true
- },
- "cloneable-readable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
- "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "node_modules/@typescript-eslint/parser": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
+ "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "process-nextick-args": "^2.0.0",
- "readable-stream": "^2.3.5"
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/typescript-estree": "4.33.0",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "collection-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
- "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
+ "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
"dev": true,
- "requires": {
- "arr-map": "^2.0.2",
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
+ "dependencies": {
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/visitor-keys": "4.33.0"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "node_modules/@typescript-eslint/types": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
+ "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
"dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
+ "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
"dev": true,
- "requires": {
- "color-name": "1.1.3"
+ "dependencies": {
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/visitor-keys": "4.33.0",
+ "debug": "^4.3.1",
+ "globby": "^11.0.3",
+ "is-glob": "^4.0.1",
+ "semver": "^7.3.5",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
+ "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "4.33.0",
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
},
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
},
- "colorette": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
- "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
- "dev": true
+ "node_modules/@wdio/cli": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.14.1.tgz",
+ "integrity": "sha512-ydFsNlimP9W77NXRAYCn8xVtnS7/08UcaQT0iH0iCaaw+h9JJH4IIFhzIcPojG78g1ojEfBsQOqvD54elJpwzw==",
+ "dev": true,
+ "dependencies": {
+ "@types/ejs": "^3.0.5",
+ "@types/fs-extra": "^9.0.4",
+ "@types/inquirer": "^8.1.2",
+ "@types/lodash.flattendeep": "^4.4.6",
+ "@types/lodash.pickby": "^4.6.6",
+ "@types/lodash.union": "^4.6.6",
+ "@types/node": "^15.12.5",
+ "@types/recursive-readdir": "^2.2.0",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "async-exit-hook": "^2.0.1",
+ "chalk": "^4.0.0",
+ "chokidar": "^3.0.0",
+ "cli-spinners": "^2.1.0",
+ "ejs": "^3.0.1",
+ "fs-extra": "^10.0.0",
+ "inquirer": "8.1.5",
+ "lodash.flattendeep": "^4.4.0",
+ "lodash.pickby": "^4.6.0",
+ "lodash.union": "^4.6.0",
+ "mkdirp": "^1.0.4",
+ "recursive-readdir": "^2.2.2",
+ "webdriverio": "7.14.1",
+ "yargs": "^17.0.0",
+ "yarn-install": "^1.0.0"
+ },
+ "bin": {
+ "wdio": "bin/wdio.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
},
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "node_modules/@wdio/cli/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
"dev": true
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "node_modules/@wdio/cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "command-exists": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
- "dev": true
+ "node_modules/@wdio/cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
},
- "commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "node_modules/@wdio/cli/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "node_modules/@wdio/cli/node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/yargs": {
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+ "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@wdio/cli/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@wdio/config": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.14.1.tgz",
+ "integrity": "sha512-Moa5ea/0so50OX+xm4sX9ty9vbVcIowSnm/SINayzg+waAAVbjHi10hZke8TaTsQ/kmZGeJv6Qjq8PTOZeaNCw==",
+ "dev": true,
+ "dependencies": {
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "deepmerge": "^4.0.0",
+ "glob": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@wdio/jasmine-framework": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/jasmine-framework/-/jasmine-framework-7.14.1.tgz",
+ "integrity": "sha512-+IgAhy+aznd3uaLSVs3axG12ondeU80blBvVwk8eVJyK6VhOrAp9T7F9zMgYUyskFuzR7B3upaEVbiKlEUAn3A==",
+ "dev": true,
+ "dependencies": {
+ "@types/jasmine": "3.6.9",
+ "@types/node": "^15.12.5",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "expect-webdriverio": "^3.0.0",
+ "jasmine": "3.9.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@wdio/cli": "^7.0.0"
+ }
+ },
+ "node_modules/@wdio/jasmine-framework/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
"dev": true
},
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "node_modules/@wdio/jasmine-framework/node_modules/jasmine": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.9.0.tgz",
+ "integrity": "sha512-JgtzteG7xnqZZ51fg7N2/wiQmXon09szkALcRMTgCMX4u/m17gVJFjObnvw5FXkZOWuweHPaPRVB6DI2uN0wVA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.6",
+ "jasmine-core": "~3.9.0"
+ },
+ "bin": {
+ "jasmine": "bin/jasmine.js"
+ }
+ },
+ "node_modules/@wdio/jasmine-framework/node_modules/jasmine-core": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.9.0.tgz",
+ "integrity": "sha512-Tv3kVbPCGVrjsnHBZ38NsPU3sDOtNa0XmbG2baiyJqdb5/SPpDO6GVwJYtUryl6KB4q1Ssckwg612ES9Z0dreQ==",
"dev": true
},
- "compress-commons": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
- "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
+ "node_modules/@wdio/local-runner": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.14.1.tgz",
+ "integrity": "sha512-q/BXKN5hld1MpcABGTkurVKuNWy5GJNJvMamt0Fi5SLFDrTtndxaKFw9aciJiDqkJGCREVjYOOdMnsY+UmMKdg==",
"dev": true,
- "requires": {
- "buffer-crc32": "^0.2.13",
- "crc32-stream": "^3.0.1",
- "normalize-path": "^3.0.0",
- "readable-stream": "^2.3.6"
+ "dependencies": {
+ "@types/stream-buffers": "^3.0.3",
+ "@wdio/logger": "7.7.0",
+ "@wdio/repl": "7.14.1",
+ "@wdio/runner": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "async-exit-hook": "^2.0.1",
+ "split2": "^3.2.2",
+ "stream-buffers": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@wdio/cli": "^7.0.0"
}
},
- "compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "node_modules/@wdio/logger": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.7.0.tgz",
+ "integrity": "sha512-XX/OkC8NlvsBdhKsb9j7ZbuQtF/Vuo0xf38PXdqYtVezOrYbDuba0hPG++g/IGNuAF34ZbSi+49cvz4u5w92kQ==",
"dev": true,
- "requires": {
- "mime-db": ">= 1.43.0 < 2"
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "loglevel": "^1.6.0",
+ "loglevel-plugin-prefix": "^0.8.4",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "node_modules/@wdio/logger/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "node_modules/@wdio/logger/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@wdio/logger/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@wdio/logger/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "node_modules/@wdio/logger/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
+ "engines": {
+ "node": ">=8"
}
},
- "concurrently": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
- "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
+ "node_modules/@wdio/logger/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "date-fns": "^2.0.1",
- "lodash": "^4.17.15",
- "read-pkg": "^4.0.1",
- "rxjs": "^6.5.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^6.1.0",
- "tree-kill": "^1.2.2",
- "yargs": "^13.3.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wdio/protocols": {
+ "version": "7.13.2",
+ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.13.2.tgz",
+ "integrity": "sha512-GUbYbV2IjPlPhlz457nMD6C0GA9yPfVtZQAwgqaKXf9yR2cuNGHHkidWivfXJNG3zws2uFm/9I1+K9OaYIKVkQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@wdio/repl": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.14.1.tgz",
+ "integrity": "sha512-nD1RVihoEZaQ71eMyiPWMVUct40Wf8cp9Q6PZVn4MlIatRqB+X26C98qw6Bcjzfz72nEcmfkbN3tZpf9pY4saw==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
- "dev": true,
- "requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- }
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
+ "@wdio/utils": "7.14.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "node_modules/@wdio/reporter": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.14.1.tgz",
+ "integrity": "sha512-x/rV+aTTYf0Kj4Ti/6Yq/XEiA9k3StM6EnkMhaA3S/J6TeuQ8ZHZf6T4Lu/Izafg8F25ky0yH98HxZi2b2Fw1g==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
+ "dependencies": {
+ "@types/diff": "^5.0.0",
+ "@types/node": "^15.12.5",
+ "@types/object-inspect": "^1.8.0",
+ "@types/supports-color": "^8.1.0",
+ "@wdio/types": "7.14.1",
+ "diff": "^5.0.0",
+ "fs-extra": "^10.0.0",
+ "object-inspect": "^1.10.3",
+ "supports-color": "8.1.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "connect-history-api-fallback": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
- "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+ "node_modules/@wdio/reporter/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
"dev": true
},
- "console-browserify": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
- "dev": true
+ "node_modules/@wdio/reporter/node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
},
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "dev": true
+ "node_modules/@wdio/reporter/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "node_modules/@wdio/reporter/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
- "requires": {
- "safe-buffer": "5.1.2"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
+ "node_modules/@wdio/reporter/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "node_modules/@wdio/runner": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.14.1.tgz",
+ "integrity": "sha512-wMnv4yQX24/kcINUPq+OcGWAlCL5NldMi45zzt2iOuCeMNEv/Scchahr0gNZ1Mc0zubyCGDzrERYsYHmYAK3Dw==",
"dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
+ "dependencies": {
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "deepmerge": "^4.0.0",
+ "gaze": "^1.1.2",
+ "webdriver": "7.14.1",
+ "webdriverio": "7.14.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
- "dev": true
+ "node_modules/@wdio/selenium-standalone-service": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.14.1.tgz",
+ "integrity": "sha512-jciVimPFTopX/bnkU+8xPJGKFfOsqByLvXgTwJwc8jxHmK6MfkIHH8BO2Mij6FhycHvg17dH4panASDk6m10TA==",
+ "dev": true,
+ "dependencies": {
+ "@types/fs-extra": "^9.0.1",
+ "@types/node": "^15.12.5",
+ "@types/selenium-standalone": "^7.0.0",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "fs-extra": "^10.0.0",
+ "selenium-standalone": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@wdio/cli": "^7.0.0"
+ }
},
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "node_modules/@wdio/selenium-standalone-service/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
"dev": true
},
- "copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "node_modules/@wdio/selenium-standalone-service/node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
"dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- },
"dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
+ "node_modules/@wdio/selenium-standalone-service/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "copy-props": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
- "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
+ "node_modules/@wdio/spec-reporter": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.14.1.tgz",
+ "integrity": "sha512-vViWdv2ExsgyN04QZ0w+Kj1Qi03/WR2kriOJCrGmCVZFXpZKFFOscf6irLeGL6zMRy6k86mf+AwFxV6PZB9K/w==",
"dev": true,
- "requires": {
- "each-props": "^1.3.2",
- "is-plain-object": "^5.0.0"
+ "dependencies": {
+ "@types/easy-table": "^0.0.33",
+ "@wdio/reporter": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "chalk": "^4.0.0",
+ "easy-table": "^1.1.1",
+ "pretty-ms": "^7.0.0"
},
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@wdio/cli": "^7.0.0"
+ }
+ },
+ "node_modules/@wdio/spec-reporter/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
- "is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "copy-webpack-plugin": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz",
- "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==",
+ "node_modules/@wdio/spec-reporter/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "requires": {
- "cacache": "^15.0.5",
- "fast-glob": "^3.2.4",
- "find-cache-dir": "^3.3.1",
- "glob-parent": "^5.1.1",
- "globby": "^11.0.1",
- "loader-utils": "^2.0.0",
- "normalize-path": "^3.0.0",
- "p-limit": "^3.0.2",
- "schema-utils": "^3.0.0",
- "serialize-javascript": "^5.0.1",
- "webpack-sources": "^1.4.3"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@wdio/spec-reporter/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "schema-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
- "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.6",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "core-js": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
- "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
+ "node_modules/@wdio/spec-reporter/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "core-js-compat": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz",
- "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==",
+ "node_modules/@wdio/spec-reporter/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "browserslist": "^4.16.3",
- "semver": "7.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true
- }
+ "engines": {
+ "node": ">=8"
}
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "node_modules/@wdio/spec-reporter/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
"dependencies": {
- "import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
- "dev": true,
- "requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "node_modules/@wdio/sync": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-7.14.1.tgz",
+ "integrity": "sha512-lFRgV5G9X7UqrLAVbEielbYnKiHFcaQ66Xl+Ek+EqvTLL1HfII5kt0AkjfwMcybCbDqCYaI4unzjvfYkfvyvig==",
"dev": true,
- "requires": {
- "buffer": "^5.1.0"
+ "dependencies": {
+ "@types/fibers": "^3.1.0",
+ "@types/puppeteer": "^5.4.0",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "fibers": "^5.0.0",
+ "webdriverio": "7.14.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "crc32-stream": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
- "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
+ "node_modules/@wdio/types": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.14.1.tgz",
+ "integrity": "sha512-W1ctBarjFuLz7wub6wNFd3sWfaENf1+thQL2YQW/cgFuTvhyK5hhUPoP2Q1suXBDE+qs90wWwx4z8XwDC6S8OA==",
"dev": true,
- "requires": {
- "crc": "^3.4.4",
- "readable-stream": "^3.4.0"
- },
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "@types/node": "^15.12.5",
+ "got": "^11.8.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "create-ecdh": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "node_modules/@wdio/types/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "node_modules/@wdio/utils": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.14.1.tgz",
+ "integrity": "sha512-2LMjTiCccohUKGaHWpodIz9eF+5HApT4NVFJjWYqGQFAUrLaBrSocie7NW5+moYolY5dESYSNVB6qJlSdMbQlA==",
"dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- },
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "p-iteration": "^1.1.8"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
+ "node_modules/abab": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
+ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
+ "dev": true
},
- "create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dev": true,
- "requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
}
},
- "create-react-class": {
- "version": "15.7.0",
- "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
- "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
- "requires": {
- "loose-envify": "^1.3.1",
- "object-assign": "^4.1.1"
- }
+ "node_modules/absolute-path": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
+ "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=",
+ "dev": true
},
- "cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "node_modules/accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
"dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- },
"dependencies": {
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- }
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "crypto-browserify": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true,
- "requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "css-loader": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
- "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
"dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "cssesc": "^3.0.0",
- "icss-utils": "^4.1.1",
- "loader-utils": "^1.2.3",
- "normalize-path": "^3.0.0",
- "postcss": "^7.0.32",
- "postcss-modules-extract-imports": "^2.0.0",
- "postcss-modules-local-by-default": "^3.0.2",
- "postcss-modules-scope": "^2.2.0",
- "postcss-modules-values": "^3.0.0",
- "postcss-value-parser": "^4.1.0",
- "schema-utils": "^2.7.0",
- "semver": "^6.3.0"
- },
"dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
}
},
- "css-select": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz",
- "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^4.0.0",
- "domhandler": "^4.0.0",
- "domutils": "^2.4.3",
- "nth-check": "^2.0.0"
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "css-value": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz",
- "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=",
- "dev": true
- },
- "css-what": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz",
- "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==",
- "dev": true
- },
- "cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true
- },
- "cssom": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
- "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
- "dev": true
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
},
- "cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
- "requires": {
- "cssom": "~0.3.6"
- },
"dependencies": {
- "cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- }
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
}
},
- "csstype": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
- "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==",
- "dev": true
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
},
- "cyclist": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
- "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+ "node_modules/anser": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
"dev": true
},
- "d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "node_modules/ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true,
- "requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "engines": {
+ "node": ">=6"
}
},
- "d3-array": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
- "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
- "requires": {
- "internmap": "^1.0.0"
+ "node_modules/ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "dependencies": {
+ "ansi-wrap": "0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "d3-cloud": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/d3-cloud/-/d3-cloud-1.2.5.tgz",
- "integrity": "sha512-4s2hXZgvs0CoUIw31oBAGrHt9Kt/7P9Ik5HIVzISFiWkD0Ga2VLAuO/emO/z1tYIpE7KG2smB4PhMPfFMJpahw==",
- "requires": {
- "d3-dispatch": "^1.0.3"
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "d3-collection": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
- "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
- },
- "d3-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
- "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
+ "node_modules/ansi-fragments": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+ "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "dev": true,
+ "dependencies": {
+ "colorette": "^1.0.7",
+ "slice-ansi": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ }
},
- "d3-dispatch": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
- "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
+ "node_modules/ansi-fragments/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "d3-ease": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
- "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
+ "node_modules/ansi-fragments/node_modules/astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "d3-format": {
+ "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
- "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "d3-interpolate": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
- "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
- "requires": {
- "d3-color": "1 - 2"
+ "node_modules/ansi-fragments/node_modules/slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "d3-scale": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.4.tgz",
- "integrity": "sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA==",
- "requires": {
- "d3-array": "^2.3.0",
- "d3-format": "1 - 2",
- "d3-interpolate": "1.2.0 - 2",
- "d3-time": "1 - 2",
- "d3-time-format": "2 - 3"
+ "node_modules/ansi-fragments/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "d3-scale-chromatic": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz",
- "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==",
- "requires": {
- "d3-color": "1",
- "d3-interpolate": "1"
+ "node_modules/ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "dependencies": {
+ "ansi-wrap": "0.1.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
"dependencies": {
- "d3-color": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
- "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
- },
- "d3-interpolate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
- "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
- "requires": {
- "d3-color": "1"
- }
- }
+ "ansi-wrap": "0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "d3-selection": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz",
- "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "d3-time": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.0.0.tgz",
- "integrity": "sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q=="
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "d3-time-format": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
- "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
- "requires": {
- "d3-time": "1 - 2"
+ "node_modules/ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "d3-timer": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
- "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
},
- "d3-transition": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz",
- "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==",
- "requires": {
- "d3-color": "1",
- "d3-dispatch": "1",
- "d3-ease": "1",
- "d3-interpolate": "1",
- "d3-selection": "^1.1.0",
- "d3-timer": "1"
+ "node_modules/archiver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz",
+ "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.0",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.0.0",
+ "tar-stream": "^2.2.0",
+ "zip-stream": "^4.1.0"
},
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "dev": true,
"dependencies": {
- "d3-color": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
- "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
- },
- "d3-interpolate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
- "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
- "requires": {
- "d3-color": "1"
- }
- }
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "node_modules/archiver-utils/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "node_modules/archiver-utils/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "requires": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
- "date-fns": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz",
- "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==",
+ "node_modules/archiver/node_modules/async": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+ "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
"dev": true
},
- "dayjs": {
- "version": "1.10.4",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz",
- "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==",
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true
},
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
- "requires": {
- "ms": "2.0.0"
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
}
},
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
+ "node_modules/aria-query": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz",
+ "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0"
+ }
},
- "decimal.js": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
- "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==",
- "dev": true
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
"dev": true,
- "requires": {
- "mimic-response": "^3.1.0"
- },
- "dependencies": {
- "mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true
- }
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "deep-equal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
- "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true,
- "requires": {
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.1",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object-keys": "^1.1.1",
- "regexp.prototype.flags": "^1.2.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
+ "node_modules/array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "node_modules/array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
"dev": true
},
- "default-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
- "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
+ "node_modules/array-includes": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
"dev": true,
- "requires": {
- "kind-of": "^5.0.2"
- },
"dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "default-gateway": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
- "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "node_modules/array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "node_modules/array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "node_modules/array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
"dev": true,
- "requires": {
- "execa": "^1.0.0",
- "ip-regex": "^2.1.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "default-resolution": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
- "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
- "dev": true
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "defaults": {
+ "node_modules/array-uniq": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true,
- "requires": {
- "clone": "^1.0.2"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "defer-to-connect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "requires": {
- "object-keys": "^1.0.12"
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "node_modules/array.prototype.filter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz",
+ "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==",
"dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
"dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "del": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
- "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "node_modules/array.prototype.flat": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
+ "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
"dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "globby": "^6.1.0",
- "is-path-cwd": "^2.0.0",
- "is-path-in-cwd": "^2.0.0",
- "p-map": "^2.0.0",
- "pify": "^4.0.1",
- "rimraf": "^2.6.3"
- },
"dependencies": {
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "denodeify": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
- "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
- "dev": true
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz",
+ "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "des.js": {
+ "node_modules/arrify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
- "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
"dev": true
},
- "detect-file": {
+ "node_modules/assign-symbols": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
- "dev": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true,
- "optional": true
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "detect-node": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz",
- "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==",
+ "node_modules/async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
"dev": true
},
- "didyoumean": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz",
- "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=",
- "dev": true
+ "node_modules/async-exit-hook": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
},
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
- "diff-sequences": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
- "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
- "dev": true
- },
- "diffie-hellman": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
+ "engines": {
+ "node": ">= 4.0.0"
}
},
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true,
- "requires": {
- "path-type": "^4.0.0"
+ "bin": {
+ "atob": "bin/atob.js"
},
- "dependencies": {
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- }
+ "engines": {
+ "node": ">= 4.5.0"
}
},
- "discontinuous-range": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
- "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
- "dev": true
- },
- "dns-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
- "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
- "dev": true
- },
- "dns-packet": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
- "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+ "node_modules/babel-eslint": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+ "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
"dev": true,
- "requires": {
- "ip": "^1.1.0",
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "eslint": ">= 4.12.1"
}
},
- "dns-txt": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
- "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "node_modules/babel-jest": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
+ "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
"dev": true,
- "requires": {
- "buffer-indexof": "^1.0.0"
+ "dependencies": {
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/babel__core": "^7.1.7",
+ "babel-plugin-istanbul": "^6.0.0",
+ "babel-preset-jest": "^26.6.2",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "node_modules/babel-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "esutils": "^2.0.2"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "dom-serializer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz",
- "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==",
+ "node_modules/babel-jest/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "entities": "^2.0.0"
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "dom-walk": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
- "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
- "dev": true
- },
- "domain-browser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
- },
- "domelementtype": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
- "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
- "dev": true
- },
- "domexception": {
+ "node_modules/babel-jest/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
- "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "webidl-conversions": "^5.0.0"
- },
"dependencies": {
- "webidl-conversions": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
- "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
- "dev": true
- }
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "domhandler": {
+ "node_modules/babel-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/babel-jest/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz",
- "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "requires": {
- "domelementtype": "^2.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "domutils": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.0.tgz",
- "integrity": "sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==",
+ "node_modules/babel-jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "dotenv": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
- "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
- "dev": true
- },
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "node_modules/babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
"dev": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
+ "dependencies": {
+ "object.assign": "^4.1.0"
}
},
- "each-props": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
- "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
+ "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
"dev": true,
- "requires": {
- "is-plain-object": "^2.0.1",
- "object.defaults": "^1.1.0"
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^4.0.0",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "easy-table": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.1.tgz",
- "integrity": "sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ==",
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
+ "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
"dev": true,
- "requires": {
- "ansi-regex": "^3.0.0",
- "wcwidth": ">=1.0.1"
- },
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- }
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz",
+ "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==",
"dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "dependencies": {
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "semver": "^6.1.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "ejs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
- "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "requires": {
- "jake": "^10.6.1"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "electron-to-chromium": {
- "version": "1.3.702",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.702.tgz",
- "integrity": "sha512-qJVUKFWQnF6wP7MmTngDkmm8/KPzaiTXNFOAg5j7DSa6J7kPou7mTBqC8jpUOxauQWwHR3pn4dMRdV8IE1xdtA==",
- "dev": true
- },
- "elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
+ "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
"dev": true,
- "requires": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- },
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "core-js-compat": "^3.16.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "emittery": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
- "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "emojis-list": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz",
+ "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.2.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
},
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "node_modules/babel-plugin-syntax-trailing-function-commas": {
+ "version": "7.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
+ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==",
"dev": true
},
- "encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
"dev": true,
- "requires": {
- "iconv-lite": "^0.6.2"
- },
"dependencies": {
- "iconv-lite": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
- "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- }
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "node_modules/babel-preset-fbjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz",
+ "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==",
"dev": true,
- "requires": {
- "once": "^1.4.0"
+ "dependencies": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-syntax-class-properties": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-super": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-property-literals": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "enhanced-resolve": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+ "node_modules/babel-preset-jest": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
+ "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.5.0",
- "tapable": "^1.0.0"
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^26.6.2",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true
- },
- "envinfo": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz",
- "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==",
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "enzyme": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
- "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"dev": true,
- "requires": {
- "array.prototype.flat": "^1.2.3",
- "cheerio": "^1.0.0-rc.3",
- "enzyme-shallow-equal": "^1.0.1",
- "function.prototype.name": "^1.1.2",
- "has": "^1.0.3",
- "html-element-map": "^1.2.0",
- "is-boolean-object": "^1.0.1",
- "is-callable": "^1.1.5",
- "is-number-object": "^1.0.4",
- "is-regex": "^1.0.5",
- "is-string": "^1.0.5",
- "is-subset": "^0.1.1",
- "lodash.escape": "^4.0.1",
- "lodash.isequal": "^4.5.0",
- "object-inspect": "^1.7.0",
- "object-is": "^1.0.2",
- "object.assign": "^4.1.0",
- "object.entries": "^1.1.1",
- "object.values": "^1.1.1",
- "raf": "^3.4.1",
- "rst-selector-parser": "^2.2.3",
- "string.prototype.trim": "^1.2.1"
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "enzyme-adapter-react-16": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz",
- "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==",
- "requires": {
- "enzyme-adapter-utils": "^1.14.0",
- "enzyme-shallow-equal": "^1.0.4",
- "has": "^1.0.3",
- "object.assign": "^4.1.2",
- "object.values": "^1.1.2",
- "prop-types": "^15.7.2",
- "react-is": "^16.13.1",
- "react-test-renderer": "^16.0.0-0",
- "semver": "^5.7.0"
- },
+ "node_modules/base/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "enzyme-adapter-utils": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz",
- "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==",
- "requires": {
- "airbnb-prop-types": "^2.16.0",
- "function.prototype.name": "^1.1.3",
- "has": "^1.0.3",
- "object.assign": "^4.1.2",
- "object.fromentries": "^2.0.3",
- "prop-types": "^15.7.2",
- "semver": "^5.7.1"
- },
+ "node_modules/base/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "enzyme-shallow-equal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz",
- "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==",
- "requires": {
- "has": "^1.0.3",
- "object-is": "^1.1.2"
+ "node_modules/base/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "enzyme-to-json": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.1.tgz",
- "integrity": "sha512-15tXuONeq5ORoZjV/bUo2gbtZrN2IH+Z6DvL35QmZyKHgbY1ahn6wcnLd9Xv9OjiwbAXiiP8MRZwbZrCv1wYNg==",
+ "node_modules/base/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
- "requires": {
- "@types/cheerio": "^0.22.22",
- "lodash": "^4.17.15",
- "react-is": "^16.12.0"
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
- "requires": {
- "prr": "~1.0.1"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/big-integer": {
+ "version": "1.6.50",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz",
+ "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==",
"dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
+ "engines": {
+ "node": ">=0.6"
}
},
- "errorhandler": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
- "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
- "requires": {
- "accepts": "~1.3.7",
- "escape-html": "~1.0.3"
+ "engines": {
+ "node": "*"
}
},
- "es-abstract": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
- "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.2",
- "is-string": "^1.0.5",
- "object-inspect": "^1.9.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.0"
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
}
},
- "es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
- "requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
}
},
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "node_modules/bplist-creator": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
+ "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
"dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
+ "dependencies": {
+ "stream-buffers": "~2.2.0"
}
},
- "es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "node_modules/bplist-creator/node_modules/stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
"dev": true,
- "requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "engines": {
+ "node": ">= 0.10.0"
}
},
- "es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
"dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
}
},
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
"dev": true
},
- "escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "node_modules/browserslist": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz",
+ "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==",
"dev": true,
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
"dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- }
+ "caniuse-lite": "^1.0.30001265",
+ "electron-to-chromium": "^1.3.867",
+ "escalade": "^3.1.1",
+ "node-releases": "^2.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
}
},
- "eslint": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
- "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "ajv": "^6.10.0",
- "chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.3",
- "eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.2",
- "esquery": "^1.0.1",
- "esutils": "^2.0.2",
- "file-entry-cache": "^5.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.0.0",
- "globals": "^12.1.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "inquirer": "^7.0.0",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.3.0",
- "lodash": "^4.17.14",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "optionator": "^0.8.3",
- "progress": "^2.0.0",
- "regexpp": "^2.0.1",
- "semver": "^6.1.2",
- "strip-ansi": "^5.2.0",
- "strip-json-comments": "^3.0.1",
- "table": "^5.2.3",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
},
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "eslint-utils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
- "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "12.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
- "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
- "dev": true,
- "requires": {
- "type-fest": "^0.8.1"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "regexpp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
}
},
- "eslint-config-prettier": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz",
- "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==",
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true,
- "requires": {
- "get-stdin": "^6.0.0"
+ "engines": {
+ "node": "*"
}
},
- "eslint-plugin-jest": {
- "version": "23.20.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz",
- "integrity": "sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==",
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/builtin-modules": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
"dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "^2.5.0"
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "eslint-plugin-prettier": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz",
- "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==",
+ "node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
+ "engines": {
+ "node": ">= 0.8"
}
},
- "eslint-plugin-promise": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz",
- "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==",
- "dev": true
- },
- "eslint-plugin-react": {
- "version": "7.23.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz",
- "integrity": "sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==",
+ "node_modules/cac": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz",
+ "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=",
"dev": true,
- "requires": {
- "array-includes": "^3.1.3",
- "array.prototype.flatmap": "^1.2.4",
- "doctrine": "^2.1.0",
- "has": "^1.0.3",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.0.4",
- "object.entries": "^1.1.3",
- "object.fromentries": "^2.0.4",
- "object.values": "^1.1.3",
- "prop-types": "^15.7.2",
- "resolve": "^2.0.0-next.3",
- "string.prototype.matchall": "^4.0.4"
- },
"dependencies": {
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "resolve": {
- "version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
- "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- }
+ "camelcase-keys": "^3.0.0",
+ "chalk": "^1.1.3",
+ "indent-string": "^3.0.0",
+ "minimist": "^1.2.0",
+ "read-pkg-up": "^1.0.1",
+ "suffix": "^0.1.0",
+ "text-table": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/cac/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "node_modules/cac/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- },
- "espree": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
- "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "node_modules/cac/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "requires": {
- "acorn": "^7.1.1",
- "acorn-jsx": "^5.2.0",
- "eslint-visitor-keys": "^1.1.0"
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
+ "node_modules/cac/node_modules/indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "node_modules/cac/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
- "requires": {
- "estraverse": "^5.1.0"
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cac/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
"dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
"dev": true,
- "requires": {
- "estraverse": "^5.2.0"
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
+ "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
"dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "node_modules/call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
"dev": true
},
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
+ "node_modules/caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true
+ "node_modules/caller-callsite/node_modules/callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "event-target-shim": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
- "dev": true
+ "node_modules/caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "dependencies": {
+ "caller-callsite": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
- "dev": true
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "eventsource": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
- "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
+ "node_modules/camelcase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz",
+ "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=",
"dev": true,
- "requires": {
- "original": "^1.0.0"
+ "dependencies": {
+ "camelcase": "^3.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "node_modules/camelcase-keys/node_modules/camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true,
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "exec-sh": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
- "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
- "dev": true
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001267",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz",
+ "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ }
},
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "node_modules/capture-exit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
"dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "dependencies": {
+ "rsvp": "^4.8.4"
},
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
"dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- }
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
"dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
- "expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "node_modules/cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
"dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "expect": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
- "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+ "node_modules/cheerio/node_modules/tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "dev": true
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+ "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
}
},
- "express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "node_modules/chrome-launcher": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.1.tgz",
+ "integrity": "sha512-iQ4s61NkIyaozsE2VKg1Vu3YGdD3JGw+fBBrt3FYJi7uflO9TvlTLW4MUq0fq3EKGhzB/QHPd5AsLb14+9++JQ==",
"dev": true,
- "requires": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
"dependencies": {
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
- "dev": true
- },
- "qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
- "dev": true
- }
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12.13.0"
}
},
- "ext": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
- "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
+ "node_modules/chrome-launcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
- "requires": {
- "type": "^2.0.0"
+ "engines": {
+ "node": ">=10"
},
- "dependencies": {
- "type": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz",
- "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "node_modules/cjs-module-lexer": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
+ "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
+ "dev": true
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
"dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "external-editor": {
+ "node_modules/classnames": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
+ },
+ "node_modules/cli-cursor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "node_modules/cli-spinners": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
+ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
"dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "engines": {
+ "node": ">=6"
},
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "extract-text-webpack-plugin": {
- "version": "4.0.0-beta.0",
- "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz",
- "integrity": "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==",
+ "node_modules/cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dev": true,
- "requires": {
- "async": "^2.4.1",
- "loader-utils": "^1.1.0",
- "schema-utils": "^0.4.5",
- "webpack-sources": "^1.1.0"
- },
"dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "schema-utils": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
- "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0"
- }
- }
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "fast-deep-equal": {
+ "node_modules/cliui/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/cliui/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
"dev": true
},
- "fast-glob": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
- "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2",
- "picomatch": "^2.2.1"
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
"dependencies": {
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "color-name": "1.1.3"
}
},
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
"dev": true
},
- "fastq": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
- "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
+ "node_modules/colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
"dev": true,
- "requires": {
- "reusify": "^1.0.4"
+ "engines": {
+ "node": ">=0.1.90"
}
},
- "faye-websocket": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
- "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
- "requires": {
- "websocket-driver": ">=0.5.1"
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
- "requires": {
- "bser": "2.1.1"
+ "engines": {
+ "node": ">= 10"
}
},
- "fbjs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
- "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "node_modules/compress-commons": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz",
+ "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==",
"dev": true,
- "requires": {
- "core-js": "^2.4.1",
- "fbjs-css-vars": "^1.0.0",
- "isomorphic-fetch": "^2.1.1",
- "loose-envify": "^1.0.0",
- "object-assign": "^4.1.0",
- "promise": "^7.1.1",
- "setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.18"
- },
"dependencies": {
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "dev": true
- }
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.2",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
}
},
- "fbjs-css-vars": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
- "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==",
- "dev": true
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "fbjs-scripts": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz",
- "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==",
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
"dev": true,
- "requires": {
- "@babel/core": "^7.0.0",
- "ansi-colors": "^1.0.1",
- "babel-preset-fbjs": "^3.2.0",
- "core-js": "^2.4.1",
- "cross-spawn": "^5.1.0",
- "fancy-log": "^1.3.2",
- "object-assign": "^4.0.1",
- "plugin-error": "^0.1.2",
- "semver": "^5.1.0",
- "through2": "^2.0.0"
+ "dependencies": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
},
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
"dependencies": {
- "arr-diff": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
- "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1",
- "array-slice": "^0.2.3"
- }
- },
- "arr-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
- "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
- "dev": true
- },
- "array-slice": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
- "dev": true
- },
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
- "dev": true
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "extend-shallow": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
- "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
- "dev": true,
- "requires": {
- "kind-of": "^1.1.0"
- }
- },
- "kind-of": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
- "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "plugin-error": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
- "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
- "dev": true,
- "requires": {
- "ansi-cyan": "^0.1.1",
- "ansi-red": "^0.1.1",
- "arr-diff": "^1.0.1",
- "arr-union": "^2.0.1",
- "extend-shallow": "^1.1.2"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- }
+ "ms": "2.0.0"
}
},
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
- "requires": {
- "pend": "~1.2.0"
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
}
},
- "fibers": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/fibers/-/fibers-4.0.3.tgz",
- "integrity": "sha512-MW5VrDtTOLpKK7lzw4qD7Z9tXaAhdOmOED5RHzg3+HjUk+ibkjVW0Py2ERtdqgTXaerLkVkBy2AEmJiT6RMyzg==",
+ "node_modules/concat-stream/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.3"
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "fibers_node_v8": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/fibers_node_v8/-/fibers_node_v8-3.1.5.tgz",
- "integrity": "sha512-jcut+gL68TclewWH/9si73yDhFOzu8LhmWg6SZRBw13rk4+7DCtqOMdsBhAyXaWRjI7c1XqcRp4AgebLJnvfCQ==",
+ "node_modules/concat-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.3"
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
- "figgy-pudding": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
- "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
- "dev": true
+ "node_modules/concurrently": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
+ "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "date-fns": "^2.0.1",
+ "lodash": "^4.17.15",
+ "read-pkg": "^4.0.1",
+ "rxjs": "^6.5.2",
+ "spawn-command": "^0.0.2-1",
+ "supports-color": "^6.1.0",
+ "tree-kill": "^1.2.2",
+ "yargs": "^13.3.0"
+ },
+ "bin": {
+ "concurrently": "bin/concurrently.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "node_modules/concurrently/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
+ "engines": {
+ "node": ">=6"
}
},
- "file-entry-cache": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "node_modules/concurrently/node_modules/cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
- "requires": {
- "flat-cache": "^2.0.1"
+ "dependencies": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
}
},
- "file-loader": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
- "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+ "node_modules/concurrently/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/concurrently/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
- "requires": {
- "loader-utils": "^1.2.3",
- "schema-utils": "^2.5.0"
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "filelist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
- "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
+ "node_modules/concurrently/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true,
- "requires": {
- "minimatch": "^3.0.4"
+ "engines": {
+ "node": ">=4"
}
},
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "node_modules/concurrently/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
"dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "node_modules/concurrently/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+ "node_modules/concurrently/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
"dependencies": {
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "find-free-port": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/find-free-port/-/find-free-port-2.0.0.tgz",
- "integrity": "sha1-SyLl9leesaOMQaxryz7+0bbamxs=",
- "dev": true
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/concurrently/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "findup-sync": {
+ "node_modules/concurrently/node_modules/pify": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
- "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
+ "engines": {
+ "node": ">=4"
}
},
- "fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "node_modules/concurrently/node_modules/read-pkg": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
"dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
+ "dependencies": {
+ "normalize-package-data": "^2.3.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true
- },
- "flat-cache": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "node_modules/concurrently/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
- "requires": {
- "flatted": "^2.0.0",
- "rimraf": "2.6.3",
- "write": "1.0.3"
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
},
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/concurrently/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
"dependencies": {
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "flatted": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
- "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
- "dev": true
+ "node_modules/concurrently/node_modules/supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "node_modules/concurrently/node_modules/yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
+ "dependencies": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
}
},
- "follow-redirects": {
- "version": "1.13.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
- "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==",
- "dev": true
+ "node_modules/concurrently/node_modules/yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
},
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
},
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "node_modules/connect/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "requires": {
- "for-in": "^1.0.1"
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "node_modules/connect/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "node_modules/convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
"dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
}
},
- "forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
- "dev": true
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "node_modules/core-js": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz",
+ "integrity": "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==",
"dev": true,
- "requires": {
- "map-cache": "^0.2.2"
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
+ "node_modules/core-js-compat": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz",
+ "integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.17.3",
+ "semver": "7.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
},
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "node_modules/core-js-compat/node_modules/semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "node_modules/core-js-pure": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz",
+ "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true
},
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "node_modules/cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "dependencies": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "node_modules/cosmiconfig/node_modules/import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
"dev": true,
- "requires": {
- "minipass": "^3.0.0"
+ "dependencies": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+ "node_modules/cosmiconfig/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "fs-readdir-recursive": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
- "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
- "dev": true
+ "node_modules/cosmiconfig/node_modules/resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "node_modules/crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
+ "dependencies": {
+ "buffer": "^5.1.0"
}
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "node_modules/crc-32": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
+ "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
+ "dev": true,
+ "dependencies": {
+ "exit-on-epipe": "~1.0.1",
+ "printj": "~1.1.0"
+ },
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "node_modules/crc32-stream": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz",
+ "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
},
- "function-bind": {
+ "node_modules/create-react-class": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
+ "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+ "dependencies": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "node_modules/create-require": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
},
- "function.prototype.name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.4.tgz",
- "integrity": "sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "functions-have-names": "^1.2.2"
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
},
- "functions-have-names": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz",
- "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA=="
+ "node_modules/css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.6.0"
+ }
},
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "node_modules/css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
"dev": true,
- "requires": {
- "globule": "^1.0.0"
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "node_modules/css-shorthand-properties": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz",
+ "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==",
"dev": true
},
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "node_modules/css-value": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz",
+ "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=",
"dev": true
},
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "node_modules/css-what": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
+ "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "node_modules/css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=",
"dev": true
},
- "get-stdin": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
- "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
- "dev": true
+ "node_modules/css/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "node_modules/css/node_modules/source-map-resolve": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+ "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
"dev": true,
- "requires": {
- "pump": "^3.0.0"
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0"
}
},
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
"dev": true
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
"dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "node_modules/csstype": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz",
+ "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==",
+ "dev": true
+ },
+ "node_modules/cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
}
},
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
+ "node_modules/d3-cloud": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/d3-cloud/-/d3-cloud-1.2.5.tgz",
+ "integrity": "sha512-4s2hXZgvs0CoUIw31oBAGrHt9Kt/7P9Ik5HIVzISFiWkD0Ga2VLAuO/emO/z1tYIpE7KG2smB4PhMPfFMJpahw==",
"dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "d3-dispatch": "^1.0.3"
}
},
- "glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
- "dev": true,
- "requires": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
+ "node_modules/d3-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
+ },
+ "node_modules/d3-dispatch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
+ "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
+ },
+ "node_modules/d3-ease": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
+ "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
+ },
+ "node_modules/d3-format": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
+ "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
+ },
+ "node_modules/d3-interpolate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
+ "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
+ "dependencies": {
+ "d3-color": "1 - 2"
}
},
- "glob-watcher": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
- "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-done": "^1.2.0",
- "chokidar": "^2.0.0",
- "is-negated-glob": "^1.0.0",
- "just-debounce": "^1.0.0",
- "normalize-path": "^3.0.0",
- "object.defaults": "^1.1.0"
- },
+ "node_modules/d3-scale": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.4.tgz",
+ "integrity": "sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA==",
"dependencies": {
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
- "optional": true
- }
+ "d3-array": "^2.3.0",
+ "d3-format": "1 - 2",
+ "d3-interpolate": "1.2.0 - 2",
+ "d3-time": "1 - 2",
+ "d3-time-format": "2 - 3"
}
},
- "global": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
- "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
- "dev": true,
- "requires": {
- "min-document": "^2.19.0",
- "process": "^0.11.10"
+ "node_modules/d3-scale-chromatic": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz",
+ "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==",
+ "dependencies": {
+ "d3-color": "1",
+ "d3-interpolate": "1"
}
},
- "global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "node_modules/d3-scale-chromatic/node_modules/d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "node_modules/d3-scale-chromatic/node_modules/d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "dependencies": {
+ "d3-color": "1"
+ }
+ },
+ "node_modules/d3-selection": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz",
+ "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="
+ },
+ "node_modules/d3-time": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.0.0.tgz",
+ "integrity": "sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q=="
+ },
+ "node_modules/d3-time-format": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
+ "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
+ "dependencies": {
+ "d3-time": "1 - 2"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+ },
+ "node_modules/d3-transition": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz",
+ "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==",
+ "dependencies": {
+ "d3-color": "1",
+ "d3-dispatch": "1",
+ "d3-ease": "1",
+ "d3-interpolate": "1",
+ "d3-selection": "^1.1.0",
+ "d3-timer": "1"
+ }
+ },
+ "node_modules/d3-transition/node_modules/d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "node_modules/d3-transition/node_modules/d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "dependencies": {
+ "d3-color": "1"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
"dev": true,
- "requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "node_modules/date-fns": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
+ "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==",
"dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
}
},
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "node_modules/dayjs": {
+ "version": "1.10.7",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz",
+ "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==",
"dev": true
},
- "globby": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
- "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
+ "node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- },
"dependencies": {
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
}
}
},
- "globule": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
- "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true,
- "requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "glogg": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
- "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
+ "node_modules/decimal.js": {
+ "version": "10.3.1",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
+ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==",
+ "dev": true
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
"dev": true,
- "requires": {
- "sparkles": "^1.0.0"
+ "engines": {
+ "node": ">=0.10"
}
},
- "got": {
- "version": "11.8.2",
- "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz",
- "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==",
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"dev": true,
- "requires": {
- "@sindresorhus/is": "^4.0.0",
- "@szmarczak/http-timer": "^4.0.5",
- "@types/cacheable-request": "^6.0.1",
- "@types/responselike": "^1.0.0",
- "cacheable-lookup": "^5.0.3",
- "cacheable-request": "^7.0.1",
- "decompress-response": "^6.0.0",
- "http2-wrapper": "^1.0.0-beta.5.2",
- "lowercase-keys": "^2.0.0",
- "p-cancelable": "^2.0.0",
- "responselike": "^2.0.0"
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "graceful-fs": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
- "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
- "dev": true
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
- "growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
- "dev": true
+ "node_modules/deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "gulp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
- "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
+ "node_modules/defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"dev": true,
- "requires": {
- "glob-watcher": "^5.0.3",
- "gulp-cli": "^2.2.0",
- "undertaker": "^1.2.1",
- "vinyl-fs": "^3.0.0"
- },
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "yargs": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
- "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "5.0.0-security.0"
- }
- },
- "yargs-parser": {
- "version": "5.0.0-security.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
- "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
- }
+ "clone": "^1.0.2"
}
},
- "gulp-zip": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-5.1.0.tgz",
- "integrity": "sha512-XZr/y91IliK/SpR74g3TkZejGkGEmK7CSDjSghT1jXshgO+dFvpLIz9w9fpuwkew6i7k4F+G24TubNgq1ISzEw==",
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"dev": true,
- "requires": {
- "get-stream": "^5.2.0",
- "plugin-error": "^1.0.1",
- "through2": "^3.0.1",
- "vinyl": "^2.1.0",
- "yazl": "^2.5.1"
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "dependencies": {
+ "object-keys": "^1.0.12"
},
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
"dependencies": {
- "through2": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
- "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.4",
- "readable-stream": "2 || 3"
- }
- }
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "gulplog": {
+ "node_modules/define-property/node_modules/is-accessor-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
- "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
- "requires": {
- "glogg": "^1.0.0"
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "handle-thing": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
- "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
- "dev": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "node_modules/define-property/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
+ "node_modules/define-property/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "node_modules/del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
"dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- },
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- }
+ "globby": "^5.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "rimraf": "^2.2.8"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-symbols": {
+ "node_modules/del/node_modules/array-union": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
+ "dependencies": {
+ "array-uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "node_modules/del/node_modules/globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
"dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
"dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "node_modules/del/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
- "requires": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
}
},
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "hermes-engine": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.2.1.tgz",
- "integrity": "sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ==",
+ "node_modules/denodeify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+ "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
"dev": true
},
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
"dev": true,
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "requires": {
- "react-is": "^16.7.0"
- }
+ "node_modules/destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
},
- "homedir-polyfill": {
+ "node_modules/detect-libc": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"dev": true,
- "requires": {
- "parse-passwd": "^1.0.0"
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
- "dev": true
- },
- "hpack.js": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
- "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "obuf": "^1.0.0",
- "readable-stream": "^2.0.1",
- "wbuf": "^1.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "html-element-map": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.0.tgz",
- "integrity": "sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg==",
+ "node_modules/devtools": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.14.1.tgz",
+ "integrity": "sha512-NpGjos9SMOZeDXnlmxKBVrbxJuPqFgLDUX/g9IlMtsjUKFq+ePcDNxTr1gRLax+boinc5UoFYPEpeFUKbBzR4Q==",
"dev": true,
- "requires": {
- "array-filter": "^1.0.0",
- "call-bind": "^1.0.2"
+ "dependencies": {
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "chrome-launcher": "^0.14.0",
+ "edge-paths": "^2.1.0",
+ "puppeteer-core": "^10.1.0",
+ "query-selector-shadow-dom": "^1.0.0",
+ "ua-parser-js": "^0.7.21",
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
}
},
- "html-encoding-sniffer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
- "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "node_modules/devtools-protocol": {
+ "version": "0.0.927104",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.927104.tgz",
+ "integrity": "sha512-5jfffjSuTOv0Lz53wTNNTcCUV8rv7d82AhYcapj28bC2B5tDxEZzVb7k51cNxZP2KHw24QE+sW7ZuSeD9NfMpA==",
+ "dev": true
+ },
+ "node_modules/devtools/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "node_modules/diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.5"
+ "engines": {
+ "node": ">=0.3.1"
}
},
- "html-entities": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
- "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+ "node_modules/diff-sequences": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
+ "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/discontinuous-range": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
+ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
"dev": true
},
- "html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-accessibility-api": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz",
+ "integrity": "sha512-+KPF4o71fl6NrdnqIrJc6m44NA+Rhf1h7In2MRznejSQasWkjqmHOBUlk+pXJ77cVOSYyZeNHFwn/sjotB6+Sw==",
"dev": true
},
- "htmlparser2": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz",
- "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==",
+ "node_modules/dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
"dev": true,
- "requires": {
+ "dependencies": {
"domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.4.4",
+ "domhandler": "^4.2.0",
"entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
"dev": true
},
- "http-deceiver": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
- "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
- "dev": true
+ "node_modules/domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
},
- "http-errors": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
- "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
"dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "http-parser-js": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
- "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==",
- "dev": true
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "http-proxy": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "node_modules/domhandler": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+ "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
"dev": true,
- "requires": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
+ "dependencies": {
+ "domelementtype": "^2.2.0"
},
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
"dependencies": {
- "eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
- "dev": true
- }
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "http-proxy-middleware": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
- "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+ "node_modules/dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
"dev": true,
- "requires": {
- "http-proxy": "^1.17.0",
- "is-glob": "^4.0.0",
- "lodash": "^4.17.11",
- "micromatch": "^3.1.10"
+ "engines": {
+ "node": ">=10"
}
},
- "http-signature": {
+ "node_modules/easy-table": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz",
+ "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==",
"dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "optionalDependencies": {
+ "wcwidth": "^1.0.1"
}
},
- "http2-wrapper": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
- "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "node_modules/edge-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz",
+ "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==",
"dev": true,
- "requires": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.0.0"
+ "dependencies": {
+ "@types/which": "^1.3.2",
+ "which": "^2.0.2"
}
},
- "https-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
+ "node_modules/edge-paths/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
},
- "human-signals": {
+ "node_modules/ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
"dev": true
},
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "node_modules/ejs": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
+ "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
"dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "dependencies": {
+ "jake": "^10.6.1"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "icss-utils": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
- "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "node_modules/electron-to-chromium": {
+ "version": "1.3.868",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.868.tgz",
+ "integrity": "sha512-kZYCHqwJ1ctGrYDlOcWQH+/AftAm/KD4lEnLDNwS0kKwx1x6dU4zv+GuDjsPPOGn/2TjnKBaZjDyjXaoix0q/A==",
+ "dev": true
+ },
+ "node_modules/emittery": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
+ "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
"dev": true,
- "requires": {
- "postcss": "^7.0.14"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
}
},
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true
- },
- "iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "dev": true
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
},
- "image-size": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
- "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==",
- "dev": true
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
"dependencies": {
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- }
+ "iconv-lite": "^0.6.2"
}
},
- "import-local": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
- "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
- "dev": true
- },
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
- },
- "infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "dependencies": {
+ "once": "^1.4.0"
}
},
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "node_modules/enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
},
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
+ "node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
},
- "inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "node_modules/envinfo": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
"dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
+ "bin": {
+ "envinfo": "dist/cli.js"
},
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "engines": {
+ "node": ">=4"
}
},
- "internal-ip": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
- "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "node_modules/enzyme": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
+ "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
"dev": true,
- "requires": {
- "default-gateway": "^4.2.0",
- "ipaddr.js": "^1.9.0"
+ "dependencies": {
+ "array.prototype.flat": "^1.2.3",
+ "cheerio": "^1.0.0-rc.3",
+ "enzyme-shallow-equal": "^1.0.1",
+ "function.prototype.name": "^1.1.2",
+ "has": "^1.0.3",
+ "html-element-map": "^1.2.0",
+ "is-boolean-object": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-number-object": "^1.0.4",
+ "is-regex": "^1.0.5",
+ "is-string": "^1.0.5",
+ "is-subset": "^0.1.1",
+ "lodash.escape": "^4.0.1",
+ "lodash.isequal": "^4.5.0",
+ "object-inspect": "^1.7.0",
+ "object-is": "^1.0.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.1",
+ "object.values": "^1.1.1",
+ "raf": "^3.4.1",
+ "rst-selector-parser": "^2.2.3",
+ "string.prototype.trim": "^1.2.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "internal-slot": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "node_modules/enzyme-shallow-equal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz",
+ "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==",
"dev": true,
- "requires": {
- "get-intrinsic": "^1.1.0",
+ "dependencies": {
"has": "^1.0.3",
- "side-channel": "^1.0.4"
+ "object-is": "^1.1.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "internmap": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
- "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "node_modules/enzyme-to-json": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz",
+ "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==",
"dev": true,
- "requires": {
- "loose-envify": "^1.0.0"
+ "dependencies": {
+ "@types/cheerio": "^0.22.22",
+ "lodash": "^4.17.21",
+ "react-is": "^16.12.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "enzyme": "^3.4.0"
}
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
- "dev": true
- },
- "ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
- "dev": true
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "dev": true
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
},
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
- "requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
}
},
- "is-absolute-url": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
- "dev": true
+ "node_modules/error-stack-parser": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
+ "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
+ "dev": true,
+ "dependencies": {
+ "stackframe": "^1.1.1"
+ }
},
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "node_modules/errorhandler": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
+ "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
"dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "is-arguments": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
- "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
+ "node_modules/es-abstract": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
+ "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
"dev": true,
- "requires": {
- "call-bind": "^1.0.0"
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.2",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.1",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.1",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.1",
+ "object-inspect": "^1.11.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
"dev": true
},
- "is-bigint": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz",
- "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg=="
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
- "requires": {
- "binary-extensions": "^1.0.0"
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "is-boolean-object": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz",
- "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==",
- "requires": {
- "call-bind": "^1.0.0"
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
}
},
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
"dev": true
},
- "is-callable": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
- "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ=="
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true,
- "requires": {
- "ci-info": "^2.0.0"
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "node_modules/escodegen": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
"dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
}
},
- "is-date-object": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
- "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
+ "node_modules/escodegen/node_modules/estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
},
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "node_modules/escodegen/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "7.32.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+ "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "7.12.11",
+ "@eslint/eslintrc": "^0.4.3",
+ "@humanwhocodes/config-array": "^0.5.0",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "enquirer": "^2.3.5",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.1",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.1.2",
+ "globals": "^13.6.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "progress": "^2.0.0",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
+ "table": "^6.0.9",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
+ "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-jest": {
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz",
+ "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==",
+ "dev": true,
"dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
+ "@typescript-eslint/experimental-utils": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": ">= 4",
+ "eslint": ">=5"
+ },
+ "peerDependenciesMeta": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
}
}
},
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
- "is-docker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
- "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+ "node_modules/eslint-plugin-prettier": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz",
+ "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==",
"dev": true,
- "optional": true
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=5.0.0",
+ "prettier": ">=1.13.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
},
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
+ "node_modules/eslint-plugin-promise": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz",
+ "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
+ "node_modules/eslint-plugin-react": {
+ "version": "7.26.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
+ "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.3",
+ "array.prototype.flatmap": "^1.2.4",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.2.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.0.4",
+ "object.entries": "^1.1.4",
+ "object.fromentries": "^2.0.4",
+ "object.hasown": "^1.0.0",
+ "object.values": "^1.1.4",
+ "prop-types": "^15.7.2",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7"
+ }
},
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz",
+ "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
},
- "is-generator-fn": {
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "node_modules/eslint-plugin-react/node_modules/estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
"dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
+ "engines": {
+ "node": ">=4.0"
}
},
- "is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
- "dev": true
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "is-negative-zero": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "is-number-object": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
- "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw=="
- },
- "is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
- "dev": true
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
},
- "is-path-in-cwd": {
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
- "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
- "requires": {
- "is-path-inside": "^2.1.0"
+ "engines": {
+ "node": ">=10"
}
},
- "is-path-inside": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
- "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "node_modules/eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true,
- "requires": {
- "path-is-inside": "^1.0.2"
+ "engines": {
+ "node": ">=4"
}
},
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "node_modules/eslint/node_modules/@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+ "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
"dev": true,
- "requires": {
- "isobject": "^3.0.1"
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
}
},
- "is-potential-custom-element-name": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
- "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=",
- "dev": true
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
},
- "is-regex": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
- "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-symbols": "^1.0.1"
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
- "is-unc-path": "^1.0.0"
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "is-string": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
- "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ=="
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "is-subset": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
- "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
- "dev": true
- },
- "is-symbol": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
- "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
- "requires": {
- "has-symbols": "^1.0.1"
+ "node_modules/eslint/node_modules/eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
}
},
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true,
- "requires": {
- "unc-path-regex": "^0.1.2"
+ "engines": {
+ "node": ">=4"
}
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
- "optional": true,
- "requires": {
- "is-docker": "^2.0.0"
+ "engines": {
+ "node": ">=10"
}
},
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+ "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
},
- "isomorphic-fetch": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
- "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "node_modules/eslint/node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
- "requires": {
- "node-fetch": "^1.0.1",
- "whatwg-fetch": ">=0.10.0"
- },
"dependencies": {
- "node-fetch": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
- "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
- "dev": true,
- "requires": {
- "encoding": "^0.1.11",
- "is-stream": "^1.0.1"
- }
- }
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
+ "node_modules/eslint/node_modules/optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
},
- "istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
- "dev": true
+ "node_modules/eslint/node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
},
- "istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
+ "dependencies": {
+ "has-flag": "^4.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
"dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+ "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+ "dev": true,
"dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^1.3.0"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "istanbul-lib-source-maps": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
- "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
"dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "istanbul-reports": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
- "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
"dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
+ "engines": {
+ "node": ">=4.0"
}
},
- "jake": {
- "version": "10.8.2",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
- "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "requires": {
- "async": "0.9.x",
- "chalk": "^2.4.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
}
},
- "jasmine": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.7.0.tgz",
- "integrity": "sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ==",
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
"dev": true,
- "requires": {
- "glob": "^7.1.6",
- "jasmine-core": "~3.7.0"
+ "engines": {
+ "node": ">=4.0"
}
},
- "jasmine-core": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz",
- "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==",
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
- "jest": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
- "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
- "requires": {
- "@jest/core": "^26.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "jest-cli": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
- "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
- "dev": true,
- "requires": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-changed-files": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
- "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
+ "engines": {
+ "node": ">= 0.6"
}
},
- "jest-config": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
- "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+ "dev": true
+ },
+ "node_modules/exec-sh": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
+ "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
+ "dev": true
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
- "chalk": "^4.0.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "jest-diff": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
- "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "jest-docblock": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
- "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
+ "node_modules/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "jest-each": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
- "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
+ "node_modules/execa/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/exit-on-epipe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+ "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-environment-jsdom": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
- "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "jest-environment-node": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
- "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
- "requires": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-get-type": {
- "version": "26.3.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
- "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+ "node_modules/expand-brackets/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "jest-haste-map": {
+ "node_modules/expect": {
"version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
- "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
+ "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
"dev": true,
- "requires": {
+ "dependencies": {
"@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.1.2",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
+ "ansi-styles": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-regex-util": "^26.0.0"
},
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/expect-webdriverio": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.1.4.tgz",
+ "integrity": "sha512-65FTS3bmxcIp0cq6fLb/72TrCQXBCpwPLC7SwMWdpPlLq461mXcK1BPKJJjnIC587aXSKD+3E4hvnlCtwDmXfg==",
+ "dev": true,
"dependencies": {
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "expect": "^27.0.2",
+ "jest-matcher-utils": "^27.0.2"
}
},
- "jest-jasmine2": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
- "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
+ "node_modules/expect-webdriverio/node_modules/@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
- "requires": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
},
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "@types/yargs-parser": "*"
}
},
- "jest-junit": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-11.1.0.tgz",
- "integrity": "sha512-c2LFOyKY7+ZxL5zSu+WHmHfsJ2wqbOpeYJ4Uu26yMhFxny2J2NQj6AVS7M+Eaxji9Q/oIDDK5tQy0DGzDp9xOw==",
+ "node_modules/expect-webdriverio/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "requires": {
- "mkdirp": "^1.0.4",
- "strip-ansi": "^5.2.0",
- "uuid": "^3.3.3",
- "xml": "^1.0.1"
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "jest-leak-detector": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
- "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
+ "node_modules/expect-webdriverio/node_modules/chalk/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "requires": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "jest-matcher-utils": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
- "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+ "node_modules/expect-webdriverio/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "requires": {
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/expect-webdriverio/node_modules/diff-sequences": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/expect": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
+ "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.2.5",
+ "ansi-styles": "^5.0.0",
+ "jest-get-type": "^27.3.1",
+ "jest-matcher-utils": "^27.3.1",
+ "jest-message-util": "^27.3.1",
+ "jest-regex-util": "^27.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/jest-diff": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+ "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
+ "dev": true,
+ "dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
+ "diff-sequences": "^27.0.6",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
},
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/jest-get-type": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+ "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/jest-matcher-utils": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
+ "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.3.1",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "jest-message-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
- "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+ "node_modules/expect-webdriverio/node_modules/jest-message-util": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
+ "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
"dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.2.5",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.3.1",
"slash": "^3.0.0",
- "stack-utils": "^2.0.2"
+ "stack-utils": "^2.0.3"
},
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/jest-regex-util": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz",
+ "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/expect-webdriverio/node_modules/pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "jest-mock": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
- "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
+ "node_modules/expect-webdriverio/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/expect-webdriverio/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true
+ "node_modules/expect/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
},
- "jest-regex-util": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
- "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+ "node_modules/expect/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "jest-resolve": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
- "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
- "slash": "^3.0.0"
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend-shallow/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-resolve-dependencies": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
- "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "jest-runner": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
- "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
"dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-runtime": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
- "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
+ "node_modules/extglob/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
- "requires": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
+ "dependencies": {
+ "is-extendable": "^0.1.0"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-serializer": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
- "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
+ "node_modules/extglob/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-snapshot": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
- "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
+ "node_modules/extglob/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
- "requires": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
}
},
- "jest-util": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
- "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
+ "node_modules/fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
+ "dependencies": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
},
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- }
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "jest-validate": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
- "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+ "node_modules/fast-glob/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "leven": "^3.1.0",
- "pretty-format": "^26.6.2"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "camelcase": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-watcher": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
- "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
+ "node_modules/fast-glob/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
- "requires": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^26.6.2",
- "string-length": "^4.0.1"
- },
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "node_modules/fast-glob/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
"dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jetifier": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.6.tgz",
- "integrity": "sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==",
- "dev": true
+ "node_modules/fast-glob/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "jsc-android": {
- "version": "245459.0.0",
- "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
- "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==",
- "dev": true
+ "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "jsdom": {
- "version": "16.5.2",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.2.tgz",
- "integrity": "sha512-JxNtPt9C1ut85boCbJmffaQ06NBnzkQY/MWO3YxPW8IWS38A26z+B1oBvA9LwKrytewdfymnhi4UNH3/RAgZrg==",
+ "node_modules/fast-glob/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
- "requires": {
- "abab": "^2.0.5",
- "acorn": "^8.1.0",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "is-potential-custom-element-name": "^1.0.0",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "request": "^2.88.2",
- "request-promise-native": "^1.0.9",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.4",
- "xml-name-validator": "^3.0.0"
+ "dependencies": {
+ "kind-of": "^3.0.2"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"dependencies": {
- "acorn": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
- "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==",
- "dev": true
- },
- "tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "dev": true,
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- }
- }
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
+ "node_modules/fast-glob/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
+ "node_modules/fast-glob/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "json-loader": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
- "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "node_modules/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
},
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
+ "node_modules/fb-watchman": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
+ "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "dev": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
},
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "node_modules/fbjs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
+ "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^2.4.1",
+ "fbjs-css-vars": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ }
},
- "json-source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz",
- "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==",
+ "node_modules/fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==",
"dev": true
},
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "node_modules/fbjs-scripts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz",
+ "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==",
"dev": true,
- "requires": {
- "jsonify": "~0.0.0"
+ "dependencies": {
+ "@babel/core": "^7.0.0",
+ "ansi-colors": "^1.0.1",
+ "babel-preset-fbjs": "^3.2.0",
+ "core-js": "^2.4.1",
+ "cross-spawn": "^5.1.0",
+ "fancy-log": "^1.3.2",
+ "object-assign": "^4.0.1",
+ "plugin-error": "^0.1.2",
+ "semver": "^5.1.0",
+ "through2": "^2.0.0"
}
},
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
+ "node_modules/fbjs-scripts/node_modules/ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-wrap": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "json3": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
- "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
- "dev": true
+ "node_modules/fbjs-scripts/node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
+ "dev": true,
+ "hasInstallScript": true
},
- "json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "node_modules/fbjs-scripts/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
- "requires": {
- "minimist": "^1.2.5"
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
}
},
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "node_modules/fbjs-scripts/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
}
},
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "node_modules/fbjs-scripts/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
+ "bin": {
+ "semver": "bin/semver"
}
},
- "jsx-ast-utils": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz",
- "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==",
+ "node_modules/fbjs-scripts/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
- "requires": {
- "array-includes": "^3.1.2",
- "object.assign": "^4.1.2"
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "just-debounce": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
- "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
- "dev": true
- },
- "keyv": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
- "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
+ "node_modules/fbjs-scripts/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true,
- "requires": {
- "json-buffer": "3.0.1"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "killable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
- "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "node_modules/fbjs-scripts/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
+ "node_modules/fbjs/node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
+ "dev": true,
+ "hasInstallScript": true
},
- "klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.9"
+ "dependencies": {
+ "pend": "~1.2.0"
}
},
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "klona": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/klona/-/klona-1.1.2.tgz",
- "integrity": "sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==",
- "dev": true
- },
- "last-run": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
- "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
+ "node_modules/fibers": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fibers/-/fibers-5.0.0.tgz",
+ "integrity": "sha512-UpGv/YAZp7mhKHxDvC1tColrroGRX90sSvh8RMZV9leo+e5+EkRVgCEZPlmXeo3BUNQTZxUaVdLskq1Q2FyCPg==",
"dev": true,
- "requires": {
- "default-resolution": "^2.0.0",
- "es6-weak-map": "^2.0.1"
+ "hasInstallScript": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "lazystream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
- "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
"dev": true,
- "requires": {
- "readable-stream": "^2.0.5"
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "lead": {
+ "node_modules/file-uri-to-path": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true,
- "requires": {
- "flush-write-stream": "^1.0.2"
+ "optional": true
+ },
+ "node_modules/filelist": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
+ "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^3.0.4"
}
},
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "liftoff": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
- "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
- "requires": {
- "extend": "^3.0.0",
- "findup-sync": "^3.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
+ "dependencies": {
+ "ms": "2.0.0"
}
},
- "lines-and-columns": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
- "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "node_modules/find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
},
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
"dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "loader-runner": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
- "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
- "dev": true
+ "node_modules/find-cache-dir/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "loader-utils": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "node_modules/find-cache-dir/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^1.0.1"
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
"dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- }
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/find-cache-dir/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true,
- "requires": {
- "p-locate": "^4.1.0"
+ "engines": {
+ "node": ">=4"
}
},
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "node_modules/find-cache-dir/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
},
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ "node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+ "node_modules/find-cache-dir/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
},
- "lodash.defaults": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "node_modules/find-free-port": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-free-port/-/find-free-port-2.0.0.tgz",
+ "integrity": "sha1-SyLl9leesaOMQaxryz7+0bbamxs=",
"dev": true
},
- "lodash.difference": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
- "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
- "dev": true
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "lodash.escape": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
- "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=",
- "dev": true
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
},
- "lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "node_modules/flatted": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
+ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
"dev": true
},
- "lodash.flattendeep": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
- "dev": true
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
- "dev": true
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "lodash.isobject": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
- "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
- "dev": true
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
- "lodash.mapvalues": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
- "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
- "dev": true
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "lodash.pickby": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
- "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=",
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "lodash.throttle": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
- "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "lodash.union": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
- "lodash.zip": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
- "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=",
+ "node_modules/functions-have-names": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz",
+ "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "dependencies": {
+ "globule": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
"dev": true
},
- "log-symbols": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
- "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
"dev": true,
- "requires": {
- "chalk": "^2.0.1"
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
}
},
- "log-update": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz",
- "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==",
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
- "requires": {
- "ansi-escapes": "^3.2.0",
- "cli-cursor": "^2.1.0",
- "wrap-ansi": "^5.0.0"
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+ "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.1.1",
+ "ignore": "^5.1.4",
+ "merge2": "^1.3.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/globby/node_modules/fast-glob": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+ "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+ "dev": true,
"dependencies": {
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
- "dev": true,
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
- "dev": true,
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- }
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "logkitty": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.6.1.tgz",
- "integrity": "sha512-cHuXN8qUZuzX/7kB6VyS7kB4xyD24e8gyHXIFNhIv+fjW3P+jEXNUhj0o/7qWJtv7UZpbnPgUqzu/AZQ8RAqxQ==",
+ "node_modules/globule": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz",
+ "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==",
"dev": true,
- "requires": {
- "ansi-fragments": "^0.2.1",
- "dayjs": "^1.8.15",
- "yargs": "^12.0.5"
+ "dependencies": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
},
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/globule/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "dev": true,
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
- "dev": true,
- "requires": {
- "invert-kv": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- }
- },
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "yargs": {
- "version": "12.0.5",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
- "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^11.1.1"
- }
- },
- "yargs-parser": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
- "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "loglevel": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
- "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+ "node_modules/got": {
+ "version": "11.8.2",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz",
+ "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.1",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
- "loglevel-plugin-prefix": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz",
- "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
+ "node_modules/grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
+ "node_modules/growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+ "dev": true,
+ "optional": true
},
- "lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "node_modules/harmony-reflect": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
+ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
"dev": true
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
- "requires": {
- "yallist": "^4.0.0"
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
}
},
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "make-iterator": {
+ "node_modules/has-bigints": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
"dev": true,
- "requires": {
- "kind-of": "^6.0.2"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "makeerror": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
- "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true,
- "requires": {
- "tmpl": "1.0.x"
+ "engines": {
+ "node": ">=4"
}
},
- "map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "node_modules/has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true,
- "requires": {
- "p-defer": "^1.0.0"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "map-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
- "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
- "dev": true
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "map-visit": {
+ "node_modules/has-values": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
- "requires": {
- "object-visit": "^1.0.0"
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "matchdep": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
- "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
+ "node_modules/has-values/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
- "requires": {
- "findup-sync": "^2.0.0",
- "micromatch": "^3.0.4",
- "resolve": "^1.4.0",
- "stack-trace": "0.0.10"
+ "dependencies": {
+ "kind-of": "^3.0.2"
},
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"dependencies": {
- "findup-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
- "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- }
- },
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "md5.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "node_modules/hermes-engine": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz",
+ "integrity": "sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg==",
"dev": true
},
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "node_modules/hermes-profile-transformer": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
+ "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
"dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
+ "dependencies": {
+ "source-map": "^0.7.3"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hermes-profile-transformer/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"dependencies": {
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- }
+ "react-is": "^16.7.0"
}
},
- "memory-fs": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/html-element-map": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz",
+ "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==",
"dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "dependencies": {
+ "array.prototype.filter": "^1.0.0",
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "mendix": {
- "version": "8.18.13281",
- "resolved": "https://registry.npmjs.org/mendix/-/mendix-8.18.13281.tgz",
- "integrity": "sha512-9CG2HRz6JimuLPPtnuRmiXGJSBmWlPqnr4eDHlR64F0yXZcD6cjeNgc4DTrmDFzsLwzg0kqR8WmvIHMCVDtvDA==",
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
"dev": true,
- "requires": {
- "@types/big.js": "^4.0.5",
- "@types/react": "~16.9.0",
- "@types/react-native": "~0.61.0"
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
},
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
"dev": true
},
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
+ "node_modules/http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "metro": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.56.4.tgz",
- "integrity": "sha512-Kt3OQJQtQdts0JrKnyGdLpKHDjqYBgIfzvYrvfhmFCkKuZ8aqRlVnvpfjQ4/OBm0Fmm9NyyxbNRD9VIbj7WjnA==",
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"dev": true,
- "requires": {
- "@babel/core": "^7.0.0",
- "@babel/generator": "^7.0.0",
- "@babel/parser": "^7.0.0",
- "@babel/plugin-external-helpers": "^7.0.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "absolute-path": "^0.0.0",
- "async": "^2.4.0",
- "babel-preset-fbjs": "^3.1.2",
- "buffer-crc32": "^0.2.13",
- "chalk": "^2.4.1",
- "concat-stream": "^1.6.0",
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "denodeify": "^1.2.1",
- "eventemitter3": "^3.0.0",
- "fbjs": "^1.0.0",
- "fs-extra": "^1.0.0",
- "graceful-fs": "^4.1.3",
- "image-size": "^0.6.0",
- "invariant": "^2.2.4",
- "jest-haste-map": "^24.7.1",
- "jest-worker": "^24.6.0",
- "json-stable-stringify": "^1.0.1",
- "lodash.throttle": "^4.1.1",
- "merge-stream": "^1.0.1",
- "metro-babel-register": "^0.56.4",
- "metro-babel-transformer": "^0.56.4",
- "metro-cache": "^0.56.4",
- "metro-config": "^0.56.4",
- "metro-core": "^0.56.4",
- "metro-inspector-proxy": "^0.56.4",
- "metro-minify-uglify": "^0.56.4",
- "metro-react-native-babel-preset": "^0.56.4",
- "metro-resolver": "^0.56.4",
- "metro-source-map": "^0.56.4",
- "metro-symbolicate": "^0.56.4",
- "mime-types": "2.1.11",
- "mkdirp": "^0.5.1",
- "node-fetch": "^2.2.0",
- "nullthrows": "^1.1.0",
- "resolve": "^1.5.0",
- "rimraf": "^2.5.4",
- "serialize-error": "^2.1.0",
- "source-map": "^0.5.6",
- "temp": "0.8.3",
- "throat": "^4.1.0",
- "wordwrap": "^1.0.0",
- "write-file-atomic": "^1.2.0",
- "ws": "^1.1.5",
- "xpipe": "^1.0.5",
- "yargs": "^9.0.0"
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
},
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
"dependencies": {
- "@jest/console": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
- "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
- "dev": true,
- "requires": {
- "@jest/source-map": "^24.9.0",
- "chalk": "^2.0.1",
- "slash": "^2.0.0"
- }
- },
- "@jest/fake-timers": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
- "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-mock": "^24.9.0"
- }
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/identity-obj-proxy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
+ "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=",
+ "dev": true,
+ "dependencies": {
+ "harmony-reflect": "^1.4.6"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "@jest/source-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
- "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.1.15",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "@jest/test-result": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
- "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
- "dev": true,
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
+ "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==",
+ "dev": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz",
+ "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/inquirer": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz",
+ "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.1",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.21",
+ "mute-stream": "0.0.8",
+ "ora": "^5.4.1",
+ "run-async": "^2.4.0",
+ "rxjs": "^7.2.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/inquirer/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/rxjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz",
+ "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "~2.1.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/tslib": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "dev": true
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz",
+ "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-descriptor/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "dev": true
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
+ "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "dev": true,
+ "dependencies": {
+ "is-path-inside": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "dependencies": {
+ "path-is-inside": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-port-reachable": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz",
+ "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true
+ },
+ "node_modules/is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
+ "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "dev": true,
+ "dependencies": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-fetch/node_modules/node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "dev": true,
+ "dependencies": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz",
+ "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz",
+ "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jake": {
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
+ "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
+ "dev": true,
+ "dependencies": {
+ "async": "0.9.x",
+ "chalk": "^2.4.2",
+ "filelist": "^1.0.1",
+ "minimatch": "^3.0.4"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jasmine": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.10.0.tgz",
+ "integrity": "sha512-2Y42VsC+3CQCTzTwJezOvji4qLORmKIE0kwowWC+934Krn6ZXNQYljiwK5st9V3PVx96BSiDYXSB60VVah3IlQ==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.6",
+ "jasmine-core": "~3.10.0"
+ },
+ "bin": {
+ "jasmine": "bin/jasmine.js"
+ }
+ },
+ "node_modules/jasmine-core": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.10.0.tgz",
+ "integrity": "sha512-XWGaJ25RUdOQnjGiLoQa9QG/R4u1e9Bk4uhLdn9F4JCBco84L4SKM52bxci4vWTSUzhmhuHNAkAHFN/6Cox9wQ==",
+ "dev": true
+ },
+ "node_modules/jest": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
+ "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^26.6.3",
+ "import-local": "^3.0.2",
+ "jest-cli": "^26.6.3"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
+ "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "execa": "^4.0.0",
+ "throat": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
+ "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^26.6.3",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.4",
+ "import-local": "^3.0.2",
+ "is-ci": "^2.0.0",
+ "jest-config": "^26.6.3",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "prompts": "^2.0.1",
+ "yargs": "^15.4.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
+ "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/test-sequencer": "^26.6.3",
+ "@jest/types": "^26.6.2",
+ "babel-jest": "^26.6.3",
+ "chalk": "^4.0.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.4",
+ "jest-environment-jsdom": "^26.6.2",
+ "jest-environment-node": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "jest-jasmine2": "^26.6.3",
+ "jest-regex-util": "^26.0.0",
+ "jest-resolve": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-config/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
+ "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-diff/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
+ "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
+ "dev": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
+ "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "jest-util": "^26.6.2",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-each/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-each/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
+ "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "jest-mock": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jsdom": "^16.4.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
+ "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "jest-mock": "^26.6.2",
+ "jest-util": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "26.3.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
+ "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
+ "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.4",
+ "jest-regex-util": "^26.0.0",
+ "jest-serializer": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-worker": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.1.2"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
+ "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.1.0",
+ "@jest/environment": "^26.6.2",
+ "@jest/source-map": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^26.6.2",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^26.6.2",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-runtime": "^26.6.3",
+ "jest-snapshot": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "pretty-format": "^26.6.2",
+ "throat": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-jasmine2/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-junit": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.3.0.tgz",
+ "integrity": "sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==",
+ "dev": true,
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "strip-ansi": "^5.2.0",
+ "uuid": "^8.3.2",
+ "xml": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/jest-junit/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jest-junit/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
+ "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
+ "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-matcher-utils/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
+ "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/types": "^26.6.2",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "micromatch": "^4.0.2",
+ "pretty-format": "^26.6.2",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-message-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
+ "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
+ "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-react-hooks-shallow": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/jest-react-hooks-shallow/-/jest-react-hooks-shallow-1.5.1.tgz",
+ "integrity": "sha512-tyIUh2aKLTGPxbc6aK54pymvvRlX8eGNn3GzXefXAX5BkUwj4geS1pPJijmYeCELbn8+BUP9uS9+6OG5ElVI5Q==",
+ "dev": true,
+ "dependencies": {
+ "react": "^16.8.0"
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
+ "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
+ "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^26.6.2",
+ "read-pkg-up": "^7.0.1",
+ "resolve": "^1.18.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
+ "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-snapshot": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-resolve/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
+ "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^26.6.2",
+ "@jest/environment": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.7.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.4",
+ "jest-config": "^26.6.3",
+ "jest-docblock": "^26.0.0",
+ "jest-haste-map": "^26.6.2",
+ "jest-leak-detector": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-resolve": "^26.6.2",
+ "jest-runtime": "^26.6.3",
+ "jest-util": "^26.6.2",
+ "jest-worker": "^26.6.2",
+ "source-map-support": "^0.5.6",
+ "throat": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-runner/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-runner/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
+ "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^26.6.2",
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/globals": "^26.6.2",
+ "@jest/source-map": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^0.6.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.4",
+ "jest-config": "^26.6.3",
+ "jest-haste-map": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-mock": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-resolve": "^26.6.2",
+ "jest-snapshot": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0",
+ "yargs": "^15.4.1"
+ },
+ "bin": {
+ "jest-runtime": "bin/jest-runtime.js"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-runtime/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
+ "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.4"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
+ "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0",
+ "@jest/types": "^26.6.2",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^26.6.2",
+ "graceful-fs": "^4.2.4",
+ "jest-diff": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "jest-haste-map": "^26.6.2",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-resolve": "^26.6.2",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^26.6.2",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-snapshot/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-svg-transformer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/jest-svg-transformer/-/jest-svg-transformer-1.0.0.tgz",
+ "integrity": "sha1-44iEykzYsilc36KgskZnkgw6im0=",
+ "dev": true,
+ "peerDependencies": {
+ "jest": ">22",
+ "react": ">=16"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
+ "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "is-ci": "^2.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
+ "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "camelcase": "^6.0.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-validate/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-validate/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
+ "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^26.6.2",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/jest-watcher/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jetifier": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz",
+ "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==",
+ "dev": true,
+ "bin": {
+ "jetifier": "bin/jetify",
+ "jetifier-standalone": "bin/jetifier-standalone",
+ "jetify": "bin/jetify"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsc-android": {
+ "version": "245459.0.0",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
+ "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==",
+ "dev": true
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/acorn": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+ "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/jsdom/node_modules/tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "dependencies": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+ "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz",
+ "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.3",
+ "object.assign": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/junk": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz",
+ "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
+ "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ky": {
+ "version": "0.28.6",
+ "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.6.tgz",
+ "integrity": "sha512-EjxET5qSsaLUj1BSFtxPjEtRgF5JOhdroPwMNJFH/VvzruWQFBmh6W7GtqjBR56UZw4dBFTKLvx9nDxxnFXc7w==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/ky?sponsor=1"
+ }
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lighthouse-logger": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz",
+ "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "dev": true
+ },
+ "node_modules/livereload": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
+ "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.5.0",
+ "livereload-js": "^3.3.1",
+ "opts": ">= 1.2.0",
+ "ws": "^7.4.3"
+ },
+ "bin": {
+ "livereload": "bin/livereload.js"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/livereload-js": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz",
+ "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==",
+ "dev": true
+ },
+ "node_modules/load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+ },
+ "node_modules/lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "node_modules/lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
+ "dev": true
+ },
+ "node_modules/lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=",
+ "dev": true
+ },
+ "node_modules/lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "dev": true
+ },
+ "node_modules/lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "dev": true
+ },
+ "node_modules/lodash.isobject": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
+ "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
+ "dev": true
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "node_modules/lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.pickby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
+ "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=",
+ "dev": true
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
+ "dev": true
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+ "dev": true
+ },
+ "node_modules/lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "dev": true
+ },
+ "node_modules/lodash.zip": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
+ "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=",
+ "dev": true
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-symbols/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-symbols/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/log-symbols/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/log-symbols/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
+ "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^15.1.0"
+ },
+ "bin": {
+ "logkitty": "bin/logkitty.js"
+ }
+ },
+ "node_modules/loglevel": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
+ "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ },
+ "funding": {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/loglevel"
+ }
+ },
+ "node_modules/loglevel-plugin-prefix": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz",
+ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
+ "dev": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lz-string": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
+ "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=",
+ "dev": true,
+ "bin": {
+ "lz-string": "bin/bin.js"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+ "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.4"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "dev": true,
+ "dependencies": {
+ "tmpl": "1.0.x"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/marky": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz",
+ "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==",
+ "dev": true
+ },
+ "node_modules/maximatch": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
+ "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=",
+ "dev": true,
+ "dependencies": {
+ "array-differ": "^1.0.0",
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "minimatch": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/maximatch/node_modules/array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "dependencies": {
+ "array-uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mendix": {
+ "version": "9.6.27784",
+ "resolved": "https://registry.npmjs.org/mendix/-/mendix-9.6.27784.tgz",
+ "integrity": "sha512-2dSAQKSdH9eVg21FCprBMaOnLQBjCPetze82iqiyUwbkN+xGFWvv0akaEFnOx/gkfh+fw8W+hP51cD9YEpsM5w==",
+ "dev": true,
+ "dependencies": {
+ "@types/big.js": "^6.0.0",
+ "@types/react": "~17.0.0",
+ "@types/react-native": "~0.64.10"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/metro": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.59.0.tgz",
+ "integrity": "sha512-OpVgYXyuTvouusFZQJ/UYKEbwfLmialrSCUUTGTFaBor6UMUHZgXPYtK86LzesgMqRc8aiuTQVO78iKW2Iz3wg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/core": "^7.0.0",
+ "@babel/generator": "^7.5.0",
+ "@babel/parser": "^7.0.0",
+ "@babel/plugin-external-helpers": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "absolute-path": "^0.0.0",
+ "async": "^2.4.0",
+ "babel-preset-fbjs": "^3.3.0",
+ "buffer-crc32": "^0.2.13",
+ "chalk": "^2.4.1",
+ "ci-info": "^2.0.0",
+ "concat-stream": "^1.6.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "denodeify": "^1.2.1",
+ "error-stack-parser": "^2.0.6",
+ "eventemitter3": "^3.0.0",
+ "fbjs": "^1.0.0",
+ "fs-extra": "^1.0.0",
+ "graceful-fs": "^4.1.3",
+ "image-size": "^0.6.0",
+ "invariant": "^2.2.4",
+ "jest-haste-map": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "json-stable-stringify": "^1.0.1",
+ "lodash.throttle": "^4.1.1",
+ "merge-stream": "^1.0.1",
+ "metro-babel-register": "0.59.0",
+ "metro-babel-transformer": "0.59.0",
+ "metro-cache": "0.59.0",
+ "metro-config": "0.59.0",
+ "metro-core": "0.59.0",
+ "metro-inspector-proxy": "0.59.0",
+ "metro-minify-uglify": "0.59.0",
+ "metro-react-native-babel-preset": "0.59.0",
+ "metro-resolver": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "metro-symbolicate": "0.59.0",
+ "mime-types": "2.1.11",
+ "mkdirp": "^0.5.1",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "resolve": "^1.5.0",
+ "rimraf": "^2.5.4",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "strip-ansi": "^4.0.0",
+ "temp": "0.8.3",
+ "throat": "^4.1.0",
+ "wordwrap": "^1.0.0",
+ "ws": "^1.1.5",
+ "xpipe": "^1.0.5",
+ "yargs": "^14.2.0"
+ },
+ "bin": {
+ "metro": "src/cli.js"
+ }
+ },
+ "node_modules/metro-babel-register": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.59.0.tgz",
+ "integrity": "sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "node_modules/metro-babel-transformer": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz",
+ "integrity": "sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.0.0",
+ "metro-source-map": "0.59.0"
+ }
+ },
+ "node_modules/metro-cache": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.59.0.tgz",
+ "integrity": "sha512-ryWNkSnpyADfRpHGb8BRhQ3+k8bdT/bsxMH2O0ntlZYZ188d8nnYWmxbRvFmEzToJxe/ol4uDw0tJFAaQsN8KA==",
+ "dev": true,
+ "dependencies": {
+ "jest-serializer": "^24.9.0",
+ "metro-core": "0.59.0",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4"
+ }
+ },
+ "node_modules/metro-cache/node_modules/jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-cache/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/metro-cache/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/metro-config": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.59.0.tgz",
+ "integrity": "sha512-MDsknFG9vZ4Nb5VR6OUDmGHaWz6oZg/FtE3up1zVBKPVRTXE1Z+k7zypnPtMXjMh3WHs/Sy4+wU1xnceE/zdnA==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^5.0.5",
+ "jest-validate": "^24.9.0",
+ "metro": "0.59.0",
+ "metro-cache": "0.59.0",
+ "metro-core": "0.59.0"
+ }
+ },
+ "node_modules/metro-config/node_modules/@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-config/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/metro-config/node_modules/@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/metro-config/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-config/node_modules/jest-get-type": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
+ "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-config/node_modules/jest-validate": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
+ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^24.9.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-config/node_modules/pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.59.0.tgz",
+ "integrity": "sha512-kb5LKvV5r2pqMEzGyTid8ai2mIjW13NMduQ8oBmfha7/EPTATcTQ//s+bkhAs1toQD8vqVvjAb0cPNjWQEmcmQ==",
+ "dev": true,
+ "dependencies": {
+ "jest-haste-map": "^24.9.0",
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.59.0",
+ "wordwrap": "^1.0.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/metro-core/node_modules/@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "dev": true
+ },
+ "node_modules/metro-core/node_modules/@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/metro-core/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/metro-core/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-core/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "dev": true,
+ "dependencies": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro-core/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/metro-core/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-core/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-core/node_modules/stack-utils": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-core/node_modules/supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-core/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-inspector-proxy": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.59.0.tgz",
+ "integrity": "sha512-hPeAuQcofTOH0F+2GEZqWkvkVY1/skezSSlMocDQDaqds+Kw6JgdA7FlZXxnKmQ/jYrWUzff/pl8SUCDwuYthQ==",
+ "dev": true,
+ "dependencies": {
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "ws": "^1.1.5",
+ "yargs": "^14.2.0"
+ },
+ "bin": {
+ "metro-inspector-proxy": "src/cli.js"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/metro-inspector-proxy/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/metro-inspector-proxy/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "dev": true,
+ "dependencies": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/yargs": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.1"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/yargs-parser": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
+ "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "node_modules/metro-minify-uglify": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.59.0.tgz",
+ "integrity": "sha512-7IzVgCVWZMymgZ/quieg/9v5EQ8QmZWAgDc86Zp9j0Vy6tQTjUn6jlU+YAKW3mfMEjMr6iIUzCD8YklX78tFAw==",
+ "dev": true,
+ "dependencies": {
+ "uglify-es": "^3.1.9"
+ }
+ },
+ "node_modules/metro-react-native-babel-preset": {
+ "version": "0.63.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.63.0.tgz",
+ "integrity": "sha512-iTM6V/hzqTd2dg0LHtD4f/TU+d4A7MFiMPUmIYDb0OZmCq6avfcxHQTXk/ZNbAr+eRoN/owx9OIkjt/CvG4vUA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-react-native-babel-transformer": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz",
+ "integrity": "sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.0.0",
+ "babel-preset-fbjs": "^3.3.0",
+ "metro-babel-transformer": "0.59.0",
+ "metro-react-native-babel-preset": "0.59.0",
+ "metro-source-map": "0.59.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-react-native-babel-transformer/node_modules/metro-react-native-babel-preset": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz",
+ "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-resolver": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.59.0.tgz",
+ "integrity": "sha512-lbgiumnwoVosffEI96z0FGuq1ejTorHAj3QYUPmp5dFMfitRxLP7Wm/WP9l4ZZjIptxTExsJwuEff1SLRCPD9w==",
+ "dev": true,
+ "dependencies": {
+ "absolute-path": "^0.0.0"
+ }
+ },
+ "node_modules/metro-source-map": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.59.0.tgz",
+ "integrity": "sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.59.0",
+ "ob1": "0.59.0",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
+ }
+ },
+ "node_modules/metro-symbolicate": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz",
+ "integrity": "sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw==",
+ "dev": true,
+ "dependencies": {
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.59.0",
+ "source-map": "^0.5.6",
+ "through2": "^2.0.1",
+ "vlq": "^1.0.0"
+ },
+ "bin": {
+ "metro-symbolicate": "src/symbolicate.js"
+ },
+ "engines": {
+ "node": ">=8.3"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/source-map/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/metro/node_modules/@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "dev": true
+ },
+ "node_modules/metro/node_modules/@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/metro/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/metro/node_modules/async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/metro/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "node_modules/metro/node_modules/cliui/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/cliui/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/metro/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
+ }
+ },
+ "node_modules/metro/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/metro/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/metro/node_modules/jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^24.9.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/jest-util/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "dev": true,
+ "dependencies": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/metro/node_modules/jest-worker/node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/metro/node_modules/jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/metro/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "node_modules/metro/node_modules/metro-react-native-babel-preset": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz",
+ "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/mime-db": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz",
+ "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/metro/node_modules/mime-types": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz",
+ "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "~1.23.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/metro/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/metro/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/metro/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/metro/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/metro/node_modules/serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/stack-utils": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/metro/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/string-width/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/string-width/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/metro/node_modules/supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro/node_modules/throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
+ "dev": true
+ },
+ "node_modules/metro/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/node_modules/ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "dev": true,
+ "dependencies": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
+ },
+ "node_modules/metro/node_modules/yargs": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.1"
+ }
+ },
+ "node_modules/metro/node_modules/yargs-parser": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
+ "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
+ "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.50.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
+ "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.33",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
+ "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.50.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+ "dev": true,
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mini-svg-data-uri": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.3.tgz",
+ "integrity": "sha512-gSfqpMRC8IxghvMcxzzmMnWpXAChSA+vy4cia33RgerMS8Fex95akUyQZPbxJJmeBGiGmK7n/1OpUX8ksRjIdA==",
+ "dev": true,
+ "bin": {
+ "mini-svg-data-uri": "cli.js"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/moo": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz",
+ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/nan": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.1.30",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+ "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+ "dev": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "node_modules/nearley": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
+ "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^2.19.0",
+ "moo": "^0.5.0",
+ "railroad-diagrams": "^1.0.0",
+ "randexp": "0.4.6"
+ },
+ "bin": {
+ "nearley-railroad": "bin/nearley-railroad.js",
+ "nearley-test": "bin/nearley-test.js",
+ "nearley-unparse": "bin/nearley-unparse.js",
+ "nearleyc": "bin/nearleyc.js"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://nearley.js.org/#give-to-nearley"
+ }
+ },
+ "node_modules/nearley/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/nocache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
+ "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz",
+ "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "dev": true
+ },
+ "node_modules/node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/node-notifier": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
+ "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "growly": "^1.3.0",
+ "is-wsl": "^2.2.0",
+ "semver": "^7.3.2",
+ "shellwords": "^0.1.1",
+ "uuid": "^8.3.0",
+ "which": "^2.0.2"
+ }
+ },
+ "node_modules/node-notifier/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz",
+ "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==",
+ "dev": true
+ },
+ "node_modules/node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/antelle"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
+ "dev": true
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+ "dev": true
+ },
+ "node_modules/ob1": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.59.0.tgz",
+ "integrity": "sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ==",
+ "dev": true
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+ "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/open/node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/opts": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
+ "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
+ "dev": true
+ },
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/ora/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/ora/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ora/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-each-series": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
+ "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-iteration": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz",
+ "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
+ "dev": true,
+ "dependencies": {
+ "node-modules-regexp": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/plist": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
+ "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
+ "dev": true,
+ "dependencies": {
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^9.0.7"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "dev": true,
+ "dependencies": {
+ "ansi-cyan": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "arr-diff": "^1.0.1",
+ "arr-union": "^2.0.1",
+ "extend-shallow": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/plugin-error/node_modules/arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.0.1",
+ "array-slice": "^0.2.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/plugin-error/node_modules/arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/plugin-error/node_modules/extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/plugin-error/node_modules/kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.3.9",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz",
+ "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==",
+ "dev": true,
+ "dependencies": {
+ "nanoid": "^3.1.28",
+ "picocolors": "^0.2.1",
+ "source-map-js": "^0.6.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ }
+ },
+ "node_modules/postcss-url": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz",
+ "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==",
+ "dev": true,
+ "dependencies": {
+ "make-dir": "~3.1.0",
+ "mime": "~2.5.2",
+ "minimatch": "~3.0.4",
+ "xxhashjs": "~0.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz",
+ "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+ "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/pretty-format/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/pretty-format/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/pretty-ms": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
+ "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+ "dev": true,
+ "dependencies": {
+ "parse-ms": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/printj": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
+ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+ "dev": true,
+ "bin": {
+ "printj": "bin/printj.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dev": true,
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "node_modules/psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+ "dev": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz",
+ "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4.3.1",
+ "devtools-protocol": "0.0.901419",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.0",
+ "node-fetch": "2.6.1",
+ "pkg-dir": "4.2.0",
+ "progress": "2.0.1",
+ "proxy-from-env": "1.1.0",
+ "rimraf": "3.0.2",
+ "tar-fs": "2.0.0",
+ "unbzip2-stream": "1.3.3",
+ "ws": "7.4.6"
+ },
+ "engines": {
+ "node": ">=10.18.1"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/devtools-protocol": {
+ "version": "0.0.901419",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz",
+ "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==",
+ "dev": true
+ },
+ "node_modules/puppeteer-core/node_modules/node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+ "dev": true,
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
+ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/query-selector": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/query-selector/-/query-selector-1.0.9.tgz",
+ "integrity": "sha1-kX/TG3N5tT/UQeU2r2R1UuAefp4=",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/query-selector-shadow-dom": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz",
+ "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==",
+ "dev": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "dev": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
+ "node_modules/railroad-diagrams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
+ "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
+ "dev": true
+ },
+ "node_modules/randexp": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
+ "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
+ "dev": true,
+ "dependencies": {
+ "discontinuous-range": "1.0.0",
+ "ret": "~0.1.10"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/react": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz",
+ "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-d3-cloud": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/react-d3-cloud/-/react-d3-cloud-1.0.5.tgz",
+ "integrity": "sha512-zKrJY+apmhw+J1se64vFW4Cr7y4W1sSYQLjQXHc9JaxiwhBOK1bikVui1IeOy4UHbUqis0YPQUE+9BBL4O8K9g==",
+ "dependencies": {
+ "d3-cloud": "^1.2.5",
+ "d3-scale": "^3.3.0",
+ "d3-scale-chromatic": "^2.0.0",
+ "d3-selection": "^2.0.0",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.2.0",
+ "react-faux-dom": "^4.5.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-0",
+ "react-dom": "^16.8.0 || ^17.0.0-0"
+ }
+ },
+ "node_modules/react-d3-cloud/node_modules/d3-scale": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz",
+ "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==",
+ "dependencies": {
+ "d3-array": "^2.3.0",
+ "d3-format": "1 - 2",
+ "d3-interpolate": "1.2.0 - 2",
+ "d3-time": "^2.1.1",
+ "d3-time-format": "2 - 3"
+ }
+ },
+ "node_modules/react-d3-cloud/node_modules/d3-scale-chromatic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz",
+ "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==",
+ "dependencies": {
+ "d3-color": "1 - 2",
+ "d3-interpolate": "1 - 2"
+ }
+ },
+ "node_modules/react-d3-cloud/node_modules/d3-selection": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz",
+ "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA=="
+ },
+ "node_modules/react-d3-cloud/node_modules/d3-time": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz",
+ "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==",
+ "dependencies": {
+ "d3-array": "2"
+ }
+ },
+ "node_modules/react-devtools-core": {
+ "version": "4.20.1",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.20.1.tgz",
+ "integrity": "sha512-HBcLfLi2R6VxlWFF2i5lONYlr3KLh324RPFeApZ3G6GGaJrcS/qtk9M/iESw7fRTlgPHEg+A4j6e1j9oXpvi5w==",
+ "dev": true,
+ "dependencies": {
+ "shell-quote": "^1.6.1",
+ "ws": "^7"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
+ "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.15.0"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0"
+ }
+ },
+ "node_modules/react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+ },
+ "node_modules/react-faux-dom": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/react-faux-dom/-/react-faux-dom-4.5.0.tgz",
+ "integrity": "sha512-T03fyZw/He4EYPqQpK5KJ9BQXNNMMgUo5DiwWkFG5wlpMDuiiYc4Q8WfeODjl3g2S2OBqy3+0VUr44sZkqz2Sw==",
+ "dependencies": {
+ "create-react-class": "^15.6.3",
+ "hoist-non-react-statics": "^3.3.0",
+ "query-selector": "^1.0.9",
+ "style-attr": "^1.0.1"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-hot-loader": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz",
+ "integrity": "sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA==",
+ "dev": true,
+ "dependencies": {
+ "fast-levenshtein": "^2.0.6",
+ "global": "^4.3.0",
+ "hoist-non-react-statics": "^3.3.0",
+ "loader-utils": "^1.1.0",
+ "prop-types": "^15.6.1",
+ "react-lifecycles-compat": "^3.0.4",
+ "shallowequal": "^1.1.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "@types/react": "^15.0.0 || ^16.0.0 || ^17.0.0 ",
+ "react": "^15.0.0 || ^16.0.0 || ^17.0.0 ",
+ "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 "
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-hot-loader/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
+ "dev": true
+ },
+ "node_modules/react-refresh": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
+ "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-shallow-renderer": {
+ "version": "16.14.1",
+ "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz",
+ "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "react-is": "^16.12.0 || ^17.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/react-wordcloud": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/react-wordcloud/-/react-wordcloud-1.2.7.tgz",
+ "integrity": "sha512-pyXvL8Iu2J258Qk2/kAwY23dIVhNpMC3dnvbXRkw5+Ert5EkJWwnwVjs9q8CmX38NWbfCKhGmpjuumBoQEtniw==",
+ "dependencies": {
+ "d3-array": "^2.5.0",
+ "d3-cloud": "^1.2.5",
+ "d3-dispatch": "^1.0.6",
+ "d3-scale": "^3.2.1",
+ "d3-scale-chromatic": "^1.5.0",
+ "d3-selection": "1.4.2",
+ "d3-transition": "^1.3.2",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "resize-observer-polyfill": "^1.5.1",
+ "seedrandom": "^3.0.5",
+ "tippy.js": "^6.2.6"
+ },
+ "peerDependencies": {
+ "react": "^16.13.0"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdir-glob": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz",
+ "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/recursive-copy": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.13.tgz",
+ "integrity": "sha512-BjmE6R/dOImStEku+017L3Z0I6u/lA+SVr1sySWbTLjmQKDTESNmJ9WBZP8wbN5FuvqNvSYvRKA/IKQhAjqnpQ==",
+ "dev": true,
+ "dependencies": {
+ "del": "^2.2.0",
+ "errno": "^0.1.2",
+ "graceful-fs": "^4.1.4",
+ "junk": "^1.0.1",
+ "maximatch": "^0.1.0",
+ "mkdirp": "^0.5.1",
+ "pify": "^2.3.0",
+ "promise": "^7.0.1",
+ "slash": "^1.0.0"
+ }
+ },
+ "node_modules/recursive-copy/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/recursive-copy/node_modules/slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/recursive-readdir": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
+ "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "3.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
+ "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "dev": true
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+ "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+ "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
+ "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^9.0.0",
+ "regjsgen": "^0.5.2",
+ "regjsparser": "^0.7.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+ "dev": true
+ },
+ "node_modules/regjsparser": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
+ "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "node_modules/resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
+ "node_modules/resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true
+ },
+ "node_modules/responselike": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
+ "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ }
+ },
+ "node_modules/resq": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.1.tgz",
+ "integrity": "sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^2.0.1"
+ }
+ },
+ "node_modules/resq/node_modules/fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rgb2hex": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz",
+ "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==",
+ "dev": true
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz",
+ "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-clear": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-clear/-/rollup-plugin-clear-2.0.7.tgz",
+ "integrity": "sha512-Hg8NC3JcJBO1ofgyQC0IACpyKn/yhHPGZ3C7R3ubNGWUXy9JXHQrewk4J4hVcZznw6SOKayLsaNae596Rwt8Vg==",
+ "dev": true,
+ "dependencies": {
+ "rimraf": "^2.6.2"
+ }
+ },
+ "node_modules/rollup-plugin-clear/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/rollup-plugin-command": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-command/-/rollup-plugin-command-1.1.3.tgz",
+ "integrity": "sha512-9nIcP5mgVYWGU7x/6ufTgtqI4vl5vvsYs6fTTil91NX53EIPcim42FXmq1TPdZRFJbUM1ikrg05clahPxObL1g==",
+ "dev": true
+ },
+ "node_modules/rollup-plugin-livereload": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz",
+ "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==",
+ "dev": true,
+ "dependencies": {
+ "livereload": "^0.9.1"
+ },
+ "engines": {
+ "node": ">=8.3"
+ }
+ },
+ "node_modules/rollup-plugin-re": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz",
+ "integrity": "sha1-/hdHBO1ZzahMrwK9ATtYLm/apPY=",
+ "dev": true,
+ "dependencies": {
+ "magic-string": "^0.16.0",
+ "rollup-pluginutils": "^2.0.1"
+ }
+ },
+ "node_modules/rollup-plugin-re/node_modules/magic-string": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz",
+ "integrity": "sha1-lw67DacZMwEoX7GqZQ85vdgetFo=",
+ "dev": true,
+ "dependencies": {
+ "vlq": "^0.2.1"
+ }
+ },
+ "node_modules/rollup-plugin-re/node_modules/vlq": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
+ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
+ "dev": true
+ },
+ "node_modules/rollup-plugin-sass": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-1.2.9.tgz",
+ "integrity": "sha512-ShI0T6tQxvM0B/njgZ35/1RuiNZTo9LtrUYFRupNokmXbresGb6RvYnkQvWbq4a5UBIp57VJ+cjPcsJKthXV8Q==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "resolve": "^1.5.0",
+ "sass": "^1.7.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0"
+ }
+ },
+ "node_modules/rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^0.6.1"
+ }
+ },
+ "node_modules/rollup-pluginutils/node_modules/estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+ "dev": true
+ },
+ "node_modules/rst-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
+ "dev": true,
+ "dependencies": {
+ "lodash.flattendeep": "^4.4.0",
+ "nearley": "^2.7.10"
+ }
+ },
+ "node_modules/rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || >= 7.*"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "node_modules/rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "dependencies": {
+ "rx-lite": "*"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/sane": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+ "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added",
+ "dev": true,
+ "dependencies": {
+ "@cnakazawa/watch": "^1.0.3",
+ "anymatch": "^2.0.0",
+ "capture-exit": "^2.0.0",
+ "exec-sh": "^0.3.2",
+ "execa": "^1.0.0",
+ "fb-watchman": "^2.0.0",
+ "micromatch": "^3.1.4",
+ "minimist": "^1.1.1",
+ "walker": "~1.0.5"
+ },
+ "bin": {
+ "sane": "src/cli.js"
+ },
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/sane/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/sane/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sane/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.43.2",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.2.tgz",
+ "integrity": "sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
+ "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "node_modules/seedrandom": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
+ },
+ "node_modules/selenium-standalone": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-7.1.0.tgz",
+ "integrity": "sha512-Pc7U48qwB4LVy/XczBrPPXwUhEPl3XQSik8SjLfj2qzBEtZqrjyzOlnnXq4aVCdr5wH9FiFJm8LwheJbK2+/oQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^7.2.0",
+ "cross-spawn": "^7.0.3",
+ "debug": "^4.3.1",
+ "fs-extra": "^10.0.0",
+ "got": "^11.8.2",
+ "is-port-reachable": "^3.0.0",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.merge": "^4.6.2",
+ "minimist": "^1.2.5",
+ "mkdirp": "^1.0.4",
+ "progress": "2.0.3",
+ "tar-stream": "2.2.0",
+ "which": "^2.0.2",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "selenium-standalone": "bin/selenium-standalone"
+ },
+ "engines": {
+ "node": ">=12.0.0",
+ "npm": ">=6.0.0"
+ }
+ },
+ "node_modules/selenium-standalone/node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/selenium-standalone/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/selenium-standalone/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "node_modules/serialize-error": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz",
+ "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serialize-error/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "dev": true
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "dependencies": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "node_modules/shelljs": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
+ "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
+ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==",
+ "dev": true
+ },
+ "node_modules/simple-plist": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz",
+ "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==",
+ "dev": true,
+ "dependencies": {
+ "bplist-creator": "0.0.8",
+ "bplist-parser": "0.2.0",
+ "plist": "^3.0.1"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+ "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.20",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+ "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "dev": true
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "dev": true
+ },
+ "node_modules/spawn-command": {
+ "version": "0.0.2-1",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
+ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
+ "dev": true
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+ "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
+ "dev": true
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.0.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
+ "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stackframe": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz",
+ "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==",
+ "dev": true
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+ "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/stacktrace-parser/node_modules/type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/stream-buffers": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
+ "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz",
+ "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.2",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.3.1",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz",
+ "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-attr": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/style-attr/-/style-attr-1.3.0.tgz",
+ "integrity": "sha512-srFr54gzEZoy73WgYfnbxCAtNCzF0Hn5RGzK7gi/0G6ttZd9v3WZFGY4ed5ABr43dbGjPNr4T46geUxxUP9i6w=="
+ },
+ "node_modules/sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
+ "dev": true
+ },
+ "node_modules/suffix": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz",
+ "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+ "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "node_modules/table": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
+ "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.6.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
+ "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/tar-fs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
+ "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.0.0"
+ }
+ },
+ "node_modules/tar-fs/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "engines": [
+ "node >=0.8.0"
+ ],
+ "dependencies": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ }
+ },
+ "node_modules/temp/node_modules/rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true,
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
+ "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^2.20.0",
+ "source-map": "~0.7.2",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/terser/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "node_modules/throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tippy.js": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.1.tgz",
+ "integrity": "sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww==",
+ "dependencies": {
+ "@popperjs/core": "^2.8.3"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/ts-jest": {
+ "version": "26.5.6",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz",
+ "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==",
+ "dev": true,
+ "dependencies": {
+ "bs-logger": "0.x",
+ "buffer-from": "1.x",
+ "fast-json-stable-stringify": "2.x",
+ "jest-util": "^26.1.0",
+ "json5": "2.x",
+ "lodash": "4.x",
+ "make-error": "1.x",
+ "mkdirp": "1.x",
+ "semver": "7.x",
+ "yargs-parser": "20.x"
+ },
+ "bin": {
+ "ts-jest": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "peerDependencies": {
+ "jest": ">=26 <27",
+ "typescript": ">=3.8 <5.0"
+ }
+ },
+ "node_modules/ts-jest/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
+ "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
+ "dev": true,
+ "dependencies": {
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.7"
+ }
+ },
+ "node_modules/ts-node/node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+ "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "0.7.28",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
+ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0",
+ "dev": true,
+ "dependencies": {
+ "commander": "~2.13.0",
+ "source-map": "~0.6.1"
+ },
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/uglify-es/node_modules/commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+ "dev": true
+ },
+ "node_modules/uglify-es/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "dev": true
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
+ "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vlq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
+ "dev": true
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "dev": true,
+ "dependencies": {
+ "makeerror": "1.0.x"
+ }
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/webdriver": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.14.1.tgz",
+ "integrity": "sha512-YhnuVquRQBVDO4seFDSpKsT5VFTpNTK7YZIPB6MwDBsIiiXA5Lt8QJN4kBuE6zuHmRuGRFv1y1dONCxsumEtXQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "got": "^11.0.2",
+ "ky": "^0.28.5",
+ "lodash.merge": "^4.6.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/webdriver/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "node_modules/webdriverio": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.14.1.tgz",
+ "integrity": "sha512-LE3YbEkzqqpCt2lN4JIYSpfv1mOXUk2SCglUXHD1O/uNY/Z1hUM5iL0X7tW0Wg5QKvH5YYJ/YPmtqza1OrtNAg==",
+ "dev": true,
+ "dependencies": {
+ "@types/aria-query": "^4.2.1",
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/repl": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "archiver": "^5.0.0",
+ "aria-query": "^5.0.0",
+ "atob": "^2.1.2",
+ "css-shorthand-properties": "^1.1.1",
+ "css-value": "^0.0.1",
+ "devtools": "7.14.1",
+ "devtools-protocol": "^0.0.927104",
+ "fs-extra": "^10.0.0",
+ "get-port": "^5.1.1",
+ "grapheme-splitter": "^1.0.2",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.isobject": "^3.0.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.zip": "^4.2.0",
+ "minimatch": "^3.0.4",
+ "puppeteer-core": "^10.1.0",
+ "query-selector-shadow-dom": "^1.0.0",
+ "resq": "^1.9.1",
+ "rgb2hex": "0.2.5",
+ "serialize-error": "^8.0.0",
+ "webdriver": "7.14.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/webdriverio/node_modules/@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "node_modules/webdriverio/node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/webdriverio/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+ "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==",
+ "dev": true
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz",
+ "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xcode": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz",
+ "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==",
+ "dev": true,
+ "dependencies": {
+ "simple-plist": "^1.0.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/xcode/node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "dev": true,
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/xml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+ "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "node_modules/xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "dev": true,
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xml2js/node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true
+ },
+ "node_modules/xmldoc": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz",
+ "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==",
+ "dev": true,
+ "dependencies": {
+ "sax": "^1.2.1"
+ }
+ },
+ "node_modules/xpipe": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
+ "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=",
+ "dev": true
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/xxhashjs": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
+ "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
+ "dev": true,
+ "dependencies": {
+ "cuint": "^0.2.2"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yarn-install": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz",
+ "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=",
+ "dev": true,
+ "dependencies": {
+ "cac": "^3.0.3",
+ "chalk": "^1.1.3",
+ "cross-spawn": "^4.0.2"
+ },
+ "bin": {
+ "yarn-install": "bin/yarn-install.js",
+ "yarn-remove": "bin/yarn-remove.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yarn-install/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yarn-install/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yarn-install/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yarn-install/node_modules/cross-spawn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/yarn-install/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/yarn-install/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yarn-install/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/yarn-install/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/zip-a-folder": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-0.0.12.tgz",
+ "integrity": "sha512-wZGiWgp3z2TocBlzx3S5tsLgPbT39qG2uIZmn2MhYLVjhKIr2nMhg7i4iPDL4W3XvMDaOEEVU5ZB0Y/Pt6BLvA==",
+ "dev": true,
+ "dependencies": {
+ "archiver": "^3.1.1"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/archiver": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
+ "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "async": "^2.6.3",
+ "buffer-crc32": "^0.2.1",
+ "glob": "^7.1.4",
+ "readable-stream": "^3.4.0",
+ "tar-stream": "^2.1.0",
+ "zip-stream": "^2.1.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/compress-commons": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
+ "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^3.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.3.6"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/compress-commons/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/crc32-stream": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
+ "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
+ "dev": true,
+ "dependencies": {
+ "crc": "^3.4.4",
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">= 6.9.0"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/zip-a-folder/node_modules/zip-stream": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
+ "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^2.1.1",
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/zip-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz",
+ "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^4.1.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ }
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
+ "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.14.5"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.15.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+ "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz",
+ "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.15.8",
+ "@babel/generator": "^7.15.8",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-module-transforms": "^7.15.8",
+ "@babel/helpers": "^7.15.4",
+ "@babel/parser": "^7.15.8",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.6",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
+ "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.6",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+ "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz",
+ "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
+ "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.16.6",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz",
+ "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-member-expression-to-functions": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz",
+ "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "regexpu-core": "^4.7.1"
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz",
+ "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz",
+ "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
+ "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.15.4",
+ "@babel/template": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
+ "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
+ "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
+ "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
+ "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
+ "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.15.4",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-simple-access": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.6"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
+ "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz",
+ "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-wrap-function": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
+ "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
+ "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz",
+ "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
+ "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.15.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+ "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
+ "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
+ "dev": true
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz",
+ "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz",
+ "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.15.4",
+ "@babel/traverse": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+ "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
+ "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
+ "dev": true
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz",
+ "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+ }
+ },
+ "@babel/plugin-external-helpers": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.14.5.tgz",
+ "integrity": "sha512-q/B/hLX+nDGk73Xn529d7Ar4ih17J8pNBbsXafq8oXij0XfFEA/bks+u+6q5q04zO5o/qivjzui6BqzPfYShEg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz",
+ "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.15.4",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz",
+ "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-class-static-block": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz",
+ "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz",
+ "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-export-default-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.14.5.tgz",
+ "integrity": "sha512-T8KZ5abXvKMjF6JcoXjgac3ElmXf0AWzJwi2O/42Jk+HmCky3D9+i1B7NPP1FblyceqTevKeV/9szeikFoaMDg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-export-default-from": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz",
+ "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz",
+ "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz",
+ "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz",
+ "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-numeric-separator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz",
+ "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.15.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz",
+ "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.15.4"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz",
+ "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz",
+ "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-private-methods": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz",
+ "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz",
+ "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz",
+ "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-export-default-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.14.5.tgz",
+ "integrity": "sha512-snWDxjuaPEobRBnhpqEfZ8RMxDbHt8+87fiEioGuE+Uc0xAKgSD8QiuL3lF93hPVQfZFAcYwrrf+H5qUhike3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-flow": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz",
+ "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz",
+ "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz",
+ "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz",
+ "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz",
+ "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz",
+ "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz",
+ "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz",
+ "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-optimise-call-expression": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz",
+ "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.14.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz",
+ "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz",
+ "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz",
+ "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz",
+ "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz",
+ "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-flow": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz",
+ "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz",
+ "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz",
+ "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz",
+ "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz",
+ "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz",
+ "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-simple-access": "^7.15.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz",
+ "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.15.4",
+ "@babel/helper-module-transforms": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-identifier": "^7.14.9",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz",
+ "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz",
+ "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz",
+ "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-object-assign": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz",
+ "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz",
+ "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz",
+ "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz",
+ "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.15.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz",
+ "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz",
+ "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-jsx": "^7.14.5",
+ "@babel/types": "^7.14.9"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-development": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz",
+ "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-transform-react-jsx": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.14.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.9.tgz",
+ "integrity": "sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz",
+ "integrity": "sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz",
+ "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz",
+ "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.2"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz",
+ "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz",
+ "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.5",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz",
+ "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz",
+ "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz",
+ "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz",
+ "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz",
+ "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz",
+ "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-typescript": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz",
+ "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz",
+ "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.15.8",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz",
+ "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.15.0",
+ "@babel/helper-compilation-targets": "^7.15.4",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4",
+ "@babel/plugin-proposal-async-generator-functions": "^7.15.8",
+ "@babel/plugin-proposal-class-properties": "^7.14.5",
+ "@babel/plugin-proposal-class-static-block": "^7.15.4",
+ "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+ "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+ "@babel/plugin-proposal-json-strings": "^7.14.5",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+ "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+ "@babel/plugin-proposal-object-rest-spread": "^7.15.6",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+ "@babel/plugin-proposal-private-methods": "^7.14.5",
+ "@babel/plugin-proposal-private-property-in-object": "^7.15.4",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-transform-arrow-functions": "^7.14.5",
+ "@babel/plugin-transform-async-to-generator": "^7.14.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+ "@babel/plugin-transform-block-scoping": "^7.15.3",
+ "@babel/plugin-transform-classes": "^7.15.4",
+ "@babel/plugin-transform-computed-properties": "^7.14.5",
+ "@babel/plugin-transform-destructuring": "^7.14.7",
+ "@babel/plugin-transform-dotall-regex": "^7.14.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+ "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+ "@babel/plugin-transform-for-of": "^7.15.4",
+ "@babel/plugin-transform-function-name": "^7.14.5",
+ "@babel/plugin-transform-literals": "^7.14.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+ "@babel/plugin-transform-modules-amd": "^7.14.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.15.4",
+ "@babel/plugin-transform-modules-systemjs": "^7.15.4",
+ "@babel/plugin-transform-modules-umd": "^7.14.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9",
+ "@babel/plugin-transform-new-target": "^7.14.5",
+ "@babel/plugin-transform-object-super": "^7.14.5",
+ "@babel/plugin-transform-parameters": "^7.15.4",
+ "@babel/plugin-transform-property-literals": "^7.14.5",
+ "@babel/plugin-transform-regenerator": "^7.14.5",
+ "@babel/plugin-transform-reserved-words": "^7.14.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+ "@babel/plugin-transform-spread": "^7.15.8",
+ "@babel/plugin-transform-sticky-regex": "^7.14.5",
+ "@babel/plugin-transform-template-literals": "^7.14.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+ "@babel/plugin-transform-unicode-regex": "^7.14.5",
+ "@babel/preset-modules": "^0.1.4",
+ "@babel/types": "^7.15.6",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.5",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
+ "core-js-compat": "^3.16.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
+ "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ }
+ },
+ "@babel/preset-react": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz",
+ "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "@babel/plugin-transform-react-display-name": "^7.14.5",
+ "@babel/plugin-transform-react-jsx": "^7.14.5",
+ "@babel/plugin-transform-react-jsx-development": "^7.14.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.14.5"
+ }
+ },
+ "@babel/register": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz",
+ "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "find-cache-dir": "^2.0.0",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.0",
+ "source-map-support": "^0.5.16"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
+ "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz",
+ "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==",
+ "dev": true,
+ "requires": {
+ "core-js-pure": "^3.16.0",
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+ "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
+ "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/generator": "^7.15.4",
+ "@babel/helper-function-name": "^7.15.4",
+ "@babel/helper-hoist-variables": "^7.15.4",
+ "@babel/helper-split-export-declaration": "^7.15.4",
+ "@babel/parser": "^7.15.4",
+ "@babel/types": "^7.15.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.15.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
+ "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.9",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "@cnakazawa/watch": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
+ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
+ "dev": true,
+ "requires": {
+ "exec-sh": "^0.3.2",
+ "minimist": "^1.2.0"
+ }
+ },
+ "@eslint/eslintrc": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+ "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^13.9.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+ "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ }
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
+ "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "dev": true
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "dev": true
+ },
+ "@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
+ "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "dev": true
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@humanwhocodes/config-array": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+ "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+ "dev": true,
+ "requires": {
+ "@humanwhocodes/object-schema": "^1.2.0",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.4"
+ }
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
+ "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
+ "dev": true
+ },
+ "@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true
+ },
+ "@jest/console": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
+ "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/core": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
+ "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^26.6.2",
+ "@jest/reporters": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.4",
+ "jest-changed-files": "^26.6.2",
+ "jest-config": "^26.6.3",
+ "jest-haste-map": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-resolve": "^26.6.2",
+ "jest-resolve-dependencies": "^26.6.3",
+ "jest-runner": "^26.6.3",
+ "jest-runtime": "^26.6.3",
+ "jest-snapshot": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "jest-watcher": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "p-each-series": "^2.1.0",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/environment": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
+ "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
+ "dev": true,
+ "requires": {
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "jest-mock": "^26.6.2"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
+ "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "@sinonjs/fake-timers": "^6.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^26.6.2",
+ "jest-mock": "^26.6.2",
+ "jest-util": "^26.6.2"
+ }
+ },
+ "@jest/globals": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
+ "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "expect": "^26.6.2"
+ }
+ },
+ "@jest/reporters": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
+ "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
+ "dev": true,
+ "requires": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.4",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^4.0.3",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.0.2",
+ "jest-haste-map": "^26.6.2",
+ "jest-resolve": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-worker": "^26.6.2",
+ "node-notifier": "^8.0.0",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^7.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/source-map": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
+ "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.4",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/test-result": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
+ "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
+ "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^26.6.2",
+ "graceful-fs": "^4.2.4",
+ "jest-haste-map": "^26.6.2",
+ "jest-runner": "^26.6.3",
+ "jest-runtime": "^26.6.3"
+ }
+ },
+ "@jest/transform": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
+ "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^26.6.2",
+ "babel-plugin-istanbul": "^6.0.0",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.4",
+ "jest-haste-map": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-util": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "pirates": "^4.0.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/types": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
+ "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@mendix/pluggable-widgets-tools": {
+ "version": "9.5.4",
+ "resolved": "https://registry.npmjs.org/@mendix/pluggable-widgets-tools/-/pluggable-widgets-tools-9.5.4.tgz",
+ "integrity": "sha512-FMKBdLkR2aisE3Ip+i5nL0392nZYsY6wcluga4uHuyF820tN1HJLcp9VVVtWtsvs6s807NW7Pf2f1wzlLJNmIg==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.12.3",
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
+ "@babel/preset-env": "^7.12.1",
+ "@babel/preset-react": "^7.12.1",
+ "@rollup/plugin-alias": "^3.1.5",
+ "@rollup/plugin-babel": "^5.3.0",
+ "@rollup/plugin-commonjs": "^20.0.0",
+ "@rollup/plugin-image": "^2.1.0",
+ "@rollup/plugin-json": "^4.1.0",
+ "@rollup/plugin-node-resolve": "^13.0.4",
+ "@rollup/plugin-typescript": "^8.2.5",
+ "@rollup/plugin-url": "^6.1.0",
+ "@testing-library/dom": "^8.1.0",
+ "@testing-library/jest-dom": "^5.14.1",
+ "@testing-library/react": "^12.0.0",
+ "@testing-library/user-event": "^13.2.1",
+ "@types/testing-library__jest-dom": "^5.14.1",
+ "@typescript-eslint/eslint-plugin": "^4.15.2",
+ "@typescript-eslint/parser": "^4.15.2",
+ "@wdio/cli": "^7.5.3",
+ "@wdio/jasmine-framework": "^7.5.3",
+ "@wdio/local-runner": "^7.5.5",
+ "@wdio/selenium-standalone-service": "^7.5.3",
+ "@wdio/spec-reporter": "^7.5.3",
+ "@wdio/sync": "^7.5.3",
+ "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3",
+ "babel-eslint": "^10.1.0",
+ "babel-jest": "^26.6.1",
+ "big.js": "^6.0.2",
+ "colors": "^1.4.0",
+ "concurrently": "^5.3.0",
+ "core-js": "^3.6.5",
+ "dotenv": "^8.2.0",
+ "enzyme": "^3.11.0",
+ "enzyme-to-json": "^3.6.1",
+ "eslint": "^7.20.0",
+ "eslint-config-prettier": "^8.0.0",
+ "eslint-plugin-jest": "^24.1.5",
+ "eslint-plugin-prettier": "^3.3.1",
+ "eslint-plugin-promise": "^4.3.1",
+ "eslint-plugin-react": "^7.22.0",
+ "eslint-plugin-react-hooks": "^4.2.0",
+ "fast-glob": "^2.2.7",
+ "find-free-port": "^2.0.0",
+ "fs-extra": "^9.0.1",
+ "identity-obj-proxy": "^3.0.0",
+ "jasmine": "^3.6.2",
+ "jasmine-core": "^3.6.0",
+ "jest": "^26.6.1",
+ "jest-junit": "^12.0.0",
+ "jest-react-hooks-shallow": "^1.4.1",
+ "jest-svg-transformer": "^1.0.0",
+ "mendix": "^9.5.25874",
+ "metro-react-native-babel-preset": "~0.63.0",
+ "node-fetch": "^2.6.1",
+ "postcss": "^8.1.10",
+ "postcss-url": "^10.1.0",
+ "prettier": "^2.2.1",
+ "react": "~17.0.1",
+ "react-dom": "~17.0.1",
+ "react-hot-loader": "^4.13.0",
+ "react-native": "0.63.3",
+ "react-test-renderer": "~17.0.1",
+ "recursive-copy": "^2.0.11",
+ "resolve": "^1.19.0",
+ "rollup": "^2.56.2",
+ "rollup-plugin-clear": "^2.0.7",
+ "rollup-plugin-command": "^1.1.3",
+ "rollup-plugin-livereload": "^2.0.0",
+ "rollup-plugin-re": "^1.0.7",
+ "rollup-plugin-sass": "^1.2.6",
+ "rollup-plugin-terser": "^7.0.2",
+ "semver": "^7.3.2",
+ "shelljs": "^0.8.4",
+ "ts-jest": "^26.4.3",
+ "ts-node": "^9.0.0",
+ "typescript": "~4.3.5",
+ "webdriverio": "^7.5.3",
+ "xml2js": "^0.4.23",
+ "zip-a-folder": "^0.0.12"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@wojtekmaj/enzyme-adapter-react-17": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.3.tgz",
+ "integrity": "sha512-Kp1ZJxtHkKEnUksaWrcMABNTOgL4wOt8VI6k2xOek2aH9PtZcWRXJNUEgnKrdJrqg5UqIjRslbVF9uUqwQJtFg==",
+ "dev": true,
+ "requires": {
+ "@wojtekmaj/enzyme-adapter-utils": "^0.1.1",
+ "enzyme-shallow-equal": "^1.0.0",
+ "has": "^1.0.0",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.0",
+ "react-is": "^17.0.2",
+ "react-test-renderer": "^17.0.0"
+ }
+ },
+ "@wojtekmaj/enzyme-adapter-utils": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz",
+ "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==",
+ "dev": true,
+ "requires": {
+ "function.prototype.name": "^1.1.0",
+ "has": "^1.0.0",
+ "object.assign": "^4.1.0",
+ "object.fromentries": "^2.0.0",
+ "prop-types": "^15.7.0"
+ }
+ },
+ "ansi-escapes": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz",
+ "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "big.js": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.1.1.tgz",
+ "integrity": "sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
+ "dev": true
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz",
+ "integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ }
+ }
+ },
+ "promise": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
+ "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
+ "dev": true,
+ "requires": {
+ "asap": "~2.0.6"
+ }
+ },
+ "react": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "react-dom": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "scheduler": "^0.20.2"
+ }
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "react-native": {
+ "version": "0.63.3",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.3.tgz",
+ "integrity": "sha512-71wq13uNo5W8QVQnFlnzZ3AD+XgUBYGhpsxysQFW/hJ8GAt/J5o+Bvhy81FXichp6IBDJDh/JgfHH2gNji8dFA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.0.0",
+ "@react-native-community/cli": "^4.10.0",
+ "@react-native-community/cli-platform-android": "^4.10.0",
+ "@react-native-community/cli-platform-ios": "^4.10.0",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "base64-js": "^1.1.2",
+ "event-target-shim": "^5.0.1",
+ "fbjs": "^1.0.0",
+ "fbjs-scripts": "^1.1.0",
+ "hermes-engine": "~0.5.0",
+ "invariant": "^2.2.4",
+ "jsc-android": "^245459.0.0",
+ "metro-babel-register": "0.59.0",
+ "metro-react-native-babel-transformer": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^24.9.0",
+ "promise": "^8.0.3",
+ "prop-types": "^15.7.2",
+ "react-devtools-core": "^4.6.0",
+ "react-refresh": "^0.4.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.19.1",
+ "stacktrace-parser": "^0.1.3",
+ "use-subscription": "^1.0.0",
+ "whatwg-fetch": "^3.0.0"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
+ "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^3.0.0"
+ }
+ },
+ "@react-native-community/cli": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-4.14.0.tgz",
+ "integrity": "sha512-EYJKBuxFxAu/iwNUfwDq41FjORpvSh1wvQ3qsHjzcR5uaGlWEOJrd3uNJDuKBAS0TVvbEesLF9NEXipjyRVr4Q==",
+ "dev": true,
+ "requires": {
+ "@hapi/joi": "^15.0.3",
+ "@react-native-community/cli-debugger-ui": "^4.13.1",
+ "@react-native-community/cli-hermes": "^4.13.0",
+ "@react-native-community/cli-server-api": "^4.13.1",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "@react-native-community/cli-types": "^4.10.1",
+ "chalk": "^3.0.0",
+ "command-exists": "^1.2.8",
+ "commander": "^2.19.0",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^3.2.0",
+ "envinfo": "^7.7.2",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.3",
+ "inquirer": "^3.0.6",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.15",
+ "metro": "^0.59.0",
+ "metro-config": "^0.59.0",
+ "metro-core": "^0.59.0",
+ "metro-react-native-babel-transformer": "^0.59.0",
+ "metro-resolver": "^0.59.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "node-stream-zip": "^1.9.1",
+ "ora": "^3.4.0",
+ "pretty-format": "^25.2.0",
+ "semver": "^6.3.0",
+ "serve-static": "^1.13.1",
+ "strip-ansi": "^5.2.0",
+ "sudo-prompt": "^9.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "pretty-format": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
+ "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^25.5.0",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^16.12.0"
+ }
+ }
+ }
+ },
+ "@types/yargs": {
+ "version": "15.0.14",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
+ "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "react-native": {
+ "version": "0.63.4",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.63.4.tgz",
+ "integrity": "sha512-I4kM8kYO2mWEYUFITMcpRulcy4/jd+j9T6PbIzR0FuMcz/xwd+JwHoLPa1HmCesvR1RDOw9o4D+OFLwuXXfmGw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/runtime": "^7.0.0",
+ "@react-native-community/cli": "^4.10.0",
+ "@react-native-community/cli-platform-android": "^4.10.0",
+ "@react-native-community/cli-platform-ios": "^4.10.0",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "base64-js": "^1.1.2",
+ "event-target-shim": "^5.0.1",
+ "fbjs": "^1.0.0",
+ "fbjs-scripts": "^1.1.0",
+ "hermes-engine": "~0.5.0",
+ "invariant": "^2.2.4",
+ "jsc-android": "^245459.0.0",
+ "metro-babel-register": "0.59.0",
+ "metro-react-native-babel-transformer": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^24.9.0",
+ "promise": "^8.0.3",
+ "prop-types": "^15.7.2",
+ "react-devtools-core": "^4.6.0",
+ "react-refresh": "^0.4.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.19.1",
+ "stacktrace-parser": "^0.1.3",
+ "use-subscription": "^1.0.0",
+ "whatwg-fetch": "^3.0.0"
+ }
+ },
+ "scheduler": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
+ "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "use-subscription": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz",
+ "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ }
+ }
+ },
+ "react-test-renderer": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
+ "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "react-is": "^17.0.2",
+ "react-shallow-renderer": "^16.13.1",
+ "scheduler": "^0.20.2"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "string-width": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ }
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@popperjs/core": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
+ "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA=="
+ },
+ "@react-native-community/cli-debugger-ui": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.13.1.tgz",
+ "integrity": "sha512-UFnkg5RTq3s2X15fSkrWY9+5BKOFjihNSnJjTV2H5PtTUFbd55qnxxPw8CxSfK0bXb1IrSvCESprk2LEpqr5cg==",
+ "dev": true,
+ "requires": {
+ "serve-static": "^1.13.1"
+ }
+ },
+ "@react-native-community/cli-hermes": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz",
+ "integrity": "sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ==",
+ "dev": true,
+ "requires": {
+ "@react-native-community/cli-platform-android": "^4.13.0",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "hermes-profile-transformer": "^0.0.6",
+ "ip": "^1.1.5"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@react-native-community/cli-platform-android": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz",
+ "integrity": "sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA==",
+ "dev": true,
+ "requires": {
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "execa": "^1.0.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "jetifier": "^1.6.2",
+ "lodash": "^4.17.15",
+ "logkitty": "^0.7.1",
+ "slash": "^3.0.0",
+ "xmldoc": "^1.1.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@react-native-community/cli-platform-ios": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz",
+ "integrity": "sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA==",
+ "dev": true,
+ "requires": {
+ "@react-native-community/cli-tools": "^4.13.0",
+ "chalk": "^3.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "plist": "^3.0.1",
+ "xcode": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@react-native-community/cli-server-api": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-4.13.1.tgz",
+ "integrity": "sha512-vQzsFKD9CjHthA2ehTQX8c7uIzlI9A7ejaIow1I9RlEnLraPH2QqVDmzIdbdh5Od47UPbRzamCgAP8Bnqv3qwQ==",
+ "dev": true,
+ "requires": {
+ "@react-native-community/cli-debugger-ui": "^4.13.1",
+ "@react-native-community/cli-tools": "^4.13.0",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "errorhandler": "^1.5.0",
+ "nocache": "^2.1.0",
+ "pretty-format": "^25.1.0",
+ "serve-static": "^1.13.1",
+ "ws": "^1.1.0"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
+ "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^3.0.0"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
+ "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^25.5.0",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^16.12.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "dev": true,
+ "requires": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
+ }
+ }
+ },
+ "@react-native-community/cli-tools": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz",
+ "integrity": "sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "shell-quote": "1.6.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@react-native-community/cli-types": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz",
+ "integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ==",
+ "dev": true
+ },
+ "@rollup/plugin-alias": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz",
+ "integrity": "sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==",
+ "dev": true,
+ "requires": {
+ "slash": "^3.0.0"
+ }
+ },
+ "@rollup/plugin-babel": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz",
+ "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ }
+ },
+ "@rollup/plugin-commonjs": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz",
+ "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.1",
+ "glob": "^7.1.6",
+ "is-reference": "^1.2.1",
+ "magic-string": "^0.25.7",
+ "resolve": "^1.17.0"
+ }
+ },
+ "@rollup/plugin-image": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-2.1.1.tgz",
+ "integrity": "sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "mini-svg-data-uri": "^1.2.3"
+ }
+ },
+ "@rollup/plugin-json": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
+ "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.0.8"
+ }
+ },
+ "@rollup/plugin-node-resolve": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz",
+ "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "@types/resolve": "1.17.1",
+ "builtin-modules": "^3.1.0",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.19.0"
+ }
+ },
+ "@rollup/plugin-typescript": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz",
+ "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "resolve": "^1.17.0"
+ }
+ },
+ "@rollup/plugin-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-url/-/plugin-url-6.1.0.tgz",
+ "integrity": "sha512-FJNWBnBB7nLzbcaGmu1no+U/LlRR67TtgfRFP+VEKSrWlDTE6n9jMns/N4Q/VL6l4x6kTHQX4HQfwTcldaAfHQ==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "make-dir": "^3.1.0",
+ "mime": "^2.4.6"
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "dev": true
+ }
+ }
+ },
+ "@sindresorhus/is": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
+ "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==",
+ "dev": true
+ },
+ "@sinonjs/commons": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "@sinonjs/fake-timers": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
+ "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^2.0.0"
+ }
+ },
+ "@testing-library/dom": {
+ "version": "8.10.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.10.1.tgz",
+ "integrity": "sha512-rab7vpf1uGig5efWwsCOn9j4/doy+W3VBoUyzX7C4y77u0wAckwc7R8nyH6e2rw0rRzKJR+gWPiAg8zhiFbxWQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^4.2.0",
+ "aria-query": "^5.0.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.4.4",
+ "pretty-format": "^27.0.2"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ }
+ },
+ "@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true
+ }
+ }
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@testing-library/jest-dom": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz",
+ "integrity": "sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.9.2",
+ "@types/testing-library__jest-dom": "^5.9.1",
+ "aria-query": "^4.2.2",
+ "chalk": "^3.0.0",
+ "css": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.5.6",
+ "lodash": "^4.17.15",
+ "redent": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.10.2",
+ "@babel/runtime-corejs3": "^7.10.2"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@testing-library/react": {
+ "version": "12.1.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.2.tgz",
+ "integrity": "sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.12.5",
+ "@testing-library/dom": "^8.0.0"
+ }
+ },
+ "@testing-library/user-event": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
+ "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.12.5"
+ }
+ },
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true
+ },
+ "@types/aria-query": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
+ "dev": true
+ },
+ "@types/babel__core": {
+ "version": "7.1.16",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz",
+ "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz",
+ "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__template": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+ "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
+ "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "@types/big.js": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.1.2.tgz",
+ "integrity": "sha512-h24JIZ52rvSvi2jkpYDk2yLH99VzZoCJiSfDWwjst7TwJVuXN61XVCUlPCzRl7mxKEMsGf8z42Q+J4TZwU3z2w==",
+ "dev": true
+ },
+ "@types/cacheable-request": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz",
+ "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==",
+ "dev": true,
+ "requires": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "*",
+ "@types/node": "*",
+ "@types/responselike": "*"
+ }
+ },
+ "@types/cheerio": {
+ "version": "0.22.30",
+ "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz",
+ "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/d3": {
+ "version": "3.5.46",
+ "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.46.tgz",
+ "integrity": "sha512-jNHfiGd41+JUV43LTMzQNidyp4Hn0XfhoSmy8baE0d/N5pGYpD+yX03JacY/MH+smFxYOQGXlz4HxkRZOuRNOQ=="
+ },
+ "@types/d3-cloud": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/d3-cloud/-/d3-cloud-1.2.5.tgz",
+ "integrity": "sha512-vEIER9DsEBUOdpRiwCh3n1qE+cV6h4e1LhxhY2sLt+m8LPNAIkOOhTlqk0JDiBwD+ZPM8ynFAOU3AuPuVYBFBA==",
+ "requires": {
+ "@types/d3": "^3"
+ }
+ },
+ "@types/diff": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.1.tgz",
+ "integrity": "sha512-XIpxU6Qdvp1ZE6Kr3yrkv1qgUab0fyf4mHYvW8N3Bx3PCsbN6or1q9/q72cv5jIFWolaGH08U9XyYoLLIykyKQ==",
+ "dev": true
+ },
+ "@types/easy-table": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz",
+ "integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==",
+ "dev": true
+ },
+ "@types/ejs": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz",
+ "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==",
+ "dev": true
+ },
+ "@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "dev": true
+ },
+ "@types/fibers": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@types/fibers/-/fibers-3.1.1.tgz",
+ "integrity": "sha512-yHoUi46uika0snoTpNcVqUSvgbRndaIps4TUCotrXjtc0DHDoPQckmyXEZ2bX3e4mpJmyEW3hRhCwQa/ISCPaA==",
+ "dev": true
+ },
+ "@types/fs-extra": {
+ "version": "9.0.13",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
+ "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/graceful-fs": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
+ "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/http-cache-semantics": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
+ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
+ "dev": true
+ },
+ "@types/inquirer": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz",
+ "integrity": "sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ==",
+ "dev": true,
+ "requires": {
+ "@types/through": "*",
+ "rxjs": "^7.2.0"
+ },
+ "dependencies": {
+ "rxjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz",
+ "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==",
+ "dev": true,
+ "requires": {
+ "tslib": "~2.1.0"
+ }
+ },
+ "tslib": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "dev": true
+ }
+ }
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
+ "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
+ "dev": true
+ },
+ "@types/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+ "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/jasmine": {
+ "version": "3.6.9",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.9.tgz",
+ "integrity": "sha512-B53NIwMj/AO0O+xfSWLYmKB0Mo6TYxfv2Mk8/c1T2w/e38t55iaPR6p7pHXTTtqfTmevPK3i8T1YweYFTZlxDw==",
+ "dev": true
+ },
+ "@types/jest": {
+ "version": "27.0.2",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz",
+ "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==",
+ "dev": true,
+ "requires": {
+ "jest-diff": "^27.0.0",
+ "pretty-format": "^27.0.0"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ }
+ },
+ "@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "diff-sequences": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "jest-diff": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+ "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.0.6",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
+ }
+ },
+ "jest-get-type": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+ "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true
+ }
+ }
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
+ "dev": true
+ },
+ "@types/keyv": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
+ "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/lodash": {
+ "version": "4.14.175",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz",
+ "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==",
+ "dev": true
+ },
+ "@types/lodash.flattendeep": {
+ "version": "4.4.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.6.tgz",
+ "integrity": "sha512-uLm2MaRVlqJSGsMK0RZpP5T3KqReq+9WbYDHCUhBhp98v56hMG/Yht52bsoTSui9xz2mUvQ9NfG3LrNGDL92Ng==",
+ "dev": true,
+ "requires": {
+ "@types/lodash": "*"
+ }
+ },
+ "@types/lodash.pickby": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.6.tgz",
+ "integrity": "sha512-NFa13XxlMd9eFi0UFZFWIztpMpXhozbijrx3Yb1viYZphT7jyopIFVoIRF4eYMjruWNEG1rnyrRmg/8ej9T8Iw==",
+ "dev": true,
+ "requires": {
+ "@types/lodash": "*"
+ }
+ },
+ "@types/lodash.union": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.6.tgz",
+ "integrity": "sha512-Wu0ZEVNcyCz8eAn6TlUbYWZoGbH9E+iOHxAZbwUoCEXdUiy6qpcz5o44mMXViM4vlPLLCPlkAubEP1gokoSZaw==",
+ "dev": true,
+ "requires": {
+ "@types/lodash": "*"
+ }
+ },
+ "@types/node": {
+ "version": "16.10.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz",
+ "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==",
+ "dev": true
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "@types/object-inspect": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.1.tgz",
+ "integrity": "sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==",
+ "dev": true
+ },
+ "@types/prettier": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz",
+ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==",
+ "dev": true
+ },
+ "@types/prop-types": {
+ "version": "15.7.4",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
+ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==",
+ "dev": true
+ },
+ "@types/puppeteer": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.4.tgz",
+ "integrity": "sha512-3Nau+qi69CN55VwZb0ATtdUAlYlqOOQ3OfQfq0Hqgc4JMFXiQT/XInlwQ9g6LbicDslE6loIFsXFklGh5XmI6Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/react": {
+ "version": "17.0.30",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.30.tgz",
+ "integrity": "sha512-3Dt/A8gd3TCXi2aRe84y7cK1K8G+N9CZRDG8kDGguOKa0kf/ZkSwTmVIDPsm/KbQOVMaDJXwhBtuOXxqwdpWVg==",
+ "dev": true,
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/react-native": {
+ "version": "0.64.16",
+ "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.64.16.tgz",
+ "integrity": "sha512-5XMYf+QfYICgvDtLI5xBxNHcApuIOhfKqLiLWeBVusgLYCIVSzlaCWUgbSsn39IXsVDPMFJQ1g/AIFWwg6PxBA==",
+ "dev": true,
+ "requires": {
+ "@types/react": "*"
+ }
+ },
+ "@types/recursive-readdir": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.0.tgz",
+ "integrity": "sha512-HGk753KRu2N4mWduovY4BLjYq4jTOL29gV2OfGdGxHcPSWGFkC5RRIdk+VTs5XmYd7MVAD+JwKrcb5+5Y7FOCg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/resolve": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
+ "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/responselike": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
+ "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "dev": true
+ },
+ "@types/selenium-standalone": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz",
+ "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/stack-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+ "dev": true
+ },
+ "@types/stream-buffers": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz",
+ "integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==",
+ "dev": true
+ },
+ "@types/testing-library__jest-dom": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz",
+ "integrity": "sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw==",
+ "dev": true,
+ "requires": {
+ "@types/jest": "*"
+ }
+ },
+ "@types/through": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz",
+ "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/which": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz",
+ "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==",
+ "dev": true
+ },
+ "@types/yargs": {
+ "version": "15.0.14",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
+ "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "20.2.1",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
+ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
+ "dev": true
+ },
+ "@types/yauzl": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
+ "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
+ "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "4.33.0",
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "debug": "^4.3.1",
+ "functional-red-black-tree": "^1.0.1",
+ "ignore": "^5.1.8",
+ "regexpp": "^3.1.0",
+ "semver": "^7.3.5",
+ "tsutils": "^3.21.0"
+ }
+ },
+ "@typescript-eslint/experimental-utils": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
+ "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.7",
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/typescript-estree": "4.33.0",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0"
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
+ "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "4.33.0",
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/typescript-estree": "4.33.0",
+ "debug": "^4.3.1"
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
+ "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/visitor-keys": "4.33.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
+ "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
+ "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "4.33.0",
+ "@typescript-eslint/visitor-keys": "4.33.0",
+ "debug": "^4.3.1",
+ "globby": "^11.0.3",
+ "is-glob": "^4.0.1",
+ "semver": "^7.3.5",
+ "tsutils": "^3.21.0"
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
+ "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "4.33.0",
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/cli": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.14.1.tgz",
+ "integrity": "sha512-ydFsNlimP9W77NXRAYCn8xVtnS7/08UcaQT0iH0iCaaw+h9JJH4IIFhzIcPojG78g1ojEfBsQOqvD54elJpwzw==",
+ "dev": true,
+ "requires": {
+ "@types/ejs": "^3.0.5",
+ "@types/fs-extra": "^9.0.4",
+ "@types/inquirer": "^8.1.2",
+ "@types/lodash.flattendeep": "^4.4.6",
+ "@types/lodash.pickby": "^4.6.6",
+ "@types/lodash.union": "^4.6.6",
+ "@types/node": "^15.12.5",
+ "@types/recursive-readdir": "^2.2.0",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "async-exit-hook": "^2.0.1",
+ "chalk": "^4.0.0",
+ "chokidar": "^3.0.0",
+ "cli-spinners": "^2.1.0",
+ "ejs": "^3.0.1",
+ "fs-extra": "^10.0.0",
+ "inquirer": "8.1.5",
+ "lodash.flattendeep": "^4.4.0",
+ "lodash.pickby": "^4.6.0",
+ "lodash.union": "^4.6.0",
+ "mkdirp": "^1.0.4",
+ "recursive-readdir": "^2.2.2",
+ "webdriverio": "7.14.1",
+ "yargs": "^17.0.0",
+ "yarn-install": "^1.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+ "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/config": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.14.1.tgz",
+ "integrity": "sha512-Moa5ea/0so50OX+xm4sX9ty9vbVcIowSnm/SINayzg+waAAVbjHi10hZke8TaTsQ/kmZGeJv6Qjq8PTOZeaNCw==",
+ "dev": true,
+ "requires": {
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "deepmerge": "^4.0.0",
+ "glob": "^7.1.2"
+ }
+ },
+ "@wdio/jasmine-framework": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/jasmine-framework/-/jasmine-framework-7.14.1.tgz",
+ "integrity": "sha512-+IgAhy+aznd3uaLSVs3axG12ondeU80blBvVwk8eVJyK6VhOrAp9T7F9zMgYUyskFuzR7B3upaEVbiKlEUAn3A==",
+ "dev": true,
+ "requires": {
+ "@types/jasmine": "3.6.9",
+ "@types/node": "^15.12.5",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "expect-webdriverio": "^3.0.0",
+ "jasmine": "3.9.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "jasmine": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.9.0.tgz",
+ "integrity": "sha512-JgtzteG7xnqZZ51fg7N2/wiQmXon09szkALcRMTgCMX4u/m17gVJFjObnvw5FXkZOWuweHPaPRVB6DI2uN0wVA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.6",
+ "jasmine-core": "~3.9.0"
+ }
+ },
+ "jasmine-core": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.9.0.tgz",
+ "integrity": "sha512-Tv3kVbPCGVrjsnHBZ38NsPU3sDOtNa0XmbG2baiyJqdb5/SPpDO6GVwJYtUryl6KB4q1Ssckwg612ES9Z0dreQ==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/local-runner": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.14.1.tgz",
+ "integrity": "sha512-q/BXKN5hld1MpcABGTkurVKuNWy5GJNJvMamt0Fi5SLFDrTtndxaKFw9aciJiDqkJGCREVjYOOdMnsY+UmMKdg==",
+ "dev": true,
+ "requires": {
+ "@types/stream-buffers": "^3.0.3",
+ "@wdio/logger": "7.7.0",
+ "@wdio/repl": "7.14.1",
+ "@wdio/runner": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "async-exit-hook": "^2.0.1",
+ "split2": "^3.2.2",
+ "stream-buffers": "^3.0.2"
+ }
+ },
+ "@wdio/logger": {
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.7.0.tgz",
+ "integrity": "sha512-XX/OkC8NlvsBdhKsb9j7ZbuQtF/Vuo0xf38PXdqYtVezOrYbDuba0hPG++g/IGNuAF34ZbSi+49cvz4u5w92kQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "loglevel": "^1.6.0",
+ "loglevel-plugin-prefix": "^0.8.4",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@wdio/protocols": {
+ "version": "7.13.2",
+ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.13.2.tgz",
+ "integrity": "sha512-GUbYbV2IjPlPhlz457nMD6C0GA9yPfVtZQAwgqaKXf9yR2cuNGHHkidWivfXJNG3zws2uFm/9I1+K9OaYIKVkQ==",
+ "dev": true
+ },
+ "@wdio/repl": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.14.1.tgz",
+ "integrity": "sha512-nD1RVihoEZaQ71eMyiPWMVUct40Wf8cp9Q6PZVn4MlIatRqB+X26C98qw6Bcjzfz72nEcmfkbN3tZpf9pY4saw==",
+ "dev": true,
+ "requires": {
+ "@wdio/utils": "7.14.1"
+ }
+ },
+ "@wdio/reporter": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.14.1.tgz",
+ "integrity": "sha512-x/rV+aTTYf0Kj4Ti/6Yq/XEiA9k3StM6EnkMhaA3S/J6TeuQ8ZHZf6T4Lu/Izafg8F25ky0yH98HxZi2b2Fw1g==",
+ "dev": true,
+ "requires": {
+ "@types/diff": "^5.0.0",
+ "@types/node": "^15.12.5",
+ "@types/object-inspect": "^1.8.0",
+ "@types/supports-color": "^8.1.0",
+ "@wdio/types": "7.14.1",
+ "diff": "^5.0.0",
+ "fs-extra": "^10.0.0",
+ "object-inspect": "^1.10.3",
+ "supports-color": "8.1.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/runner": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.14.1.tgz",
+ "integrity": "sha512-wMnv4yQX24/kcINUPq+OcGWAlCL5NldMi45zzt2iOuCeMNEv/Scchahr0gNZ1Mc0zubyCGDzrERYsYHmYAK3Dw==",
+ "dev": true,
+ "requires": {
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "deepmerge": "^4.0.0",
+ "gaze": "^1.1.2",
+ "webdriver": "7.14.1",
+ "webdriverio": "7.14.1"
+ }
+ },
+ "@wdio/selenium-standalone-service": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.14.1.tgz",
+ "integrity": "sha512-jciVimPFTopX/bnkU+8xPJGKFfOsqByLvXgTwJwc8jxHmK6MfkIHH8BO2Mij6FhycHvg17dH4panASDk6m10TA==",
+ "dev": true,
+ "requires": {
+ "@types/fs-extra": "^9.0.1",
+ "@types/node": "^15.12.5",
+ "@types/selenium-standalone": "^7.0.0",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "fs-extra": "^10.0.0",
+ "selenium-standalone": "^7.0.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/spec-reporter": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.14.1.tgz",
+ "integrity": "sha512-vViWdv2ExsgyN04QZ0w+Kj1Qi03/WR2kriOJCrGmCVZFXpZKFFOscf6irLeGL6zMRy6k86mf+AwFxV6PZB9K/w==",
+ "dev": true,
+ "requires": {
+ "@types/easy-table": "^0.0.33",
+ "@wdio/reporter": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "chalk": "^4.0.0",
+ "easy-table": "^1.1.1",
+ "pretty-ms": "^7.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@wdio/sync": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-7.14.1.tgz",
+ "integrity": "sha512-lFRgV5G9X7UqrLAVbEielbYnKiHFcaQ66Xl+Ek+EqvTLL1HfII5kt0AkjfwMcybCbDqCYaI4unzjvfYkfvyvig==",
+ "dev": true,
+ "requires": {
+ "@types/fibers": "^3.1.0",
+ "@types/puppeteer": "^5.4.0",
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "fibers": "^5.0.0",
+ "webdriverio": "7.14.1"
+ }
+ },
+ "@wdio/types": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.14.1.tgz",
+ "integrity": "sha512-W1ctBarjFuLz7wub6wNFd3sWfaENf1+thQL2YQW/cgFuTvhyK5hhUPoP2Q1suXBDE+qs90wWwx4z8XwDC6S8OA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^15.12.5",
+ "got": "^11.8.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ }
+ }
+ },
+ "@wdio/utils": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.14.1.tgz",
+ "integrity": "sha512-2LMjTiCccohUKGaHWpodIz9eF+5HApT4NVFJjWYqGQFAUrLaBrSocie7NW5+moYolY5dESYSNVB6qJlSdMbQlA==",
+ "dev": true,
+ "requires": {
+ "@wdio/logger": "7.7.0",
+ "@wdio/types": "7.14.1",
+ "p-iteration": "^1.1.8"
+ }
+ },
+ "abab": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
+ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
+ "dev": true
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dev": true,
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
+ },
+ "absolute-path": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
+ "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "anser": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
+ "dev": true
+ },
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ }
+ },
+ "ansi-fragments": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+ "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "dev": true,
+ "requires": {
+ "colorette": "^1.0.7",
+ "slice-ansi": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "archiver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz",
+ "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.0",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.0.0",
+ "tar-stream": "^2.2.0",
+ "zip-stream": "^4.1.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+ "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
+ "dev": true
+ }
+ }
+ },
+ "archiver-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "aria-query": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz",
+ "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "is-string": "^1.0.7"
+ }
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "array.prototype.filter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz",
+ "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ }
+ },
+ "array.prototype.flat": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
+ "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ }
+ },
+ "array.prototype.flatmap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz",
+ "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0"
+ }
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
+ "async-exit-hook": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "babel-eslint": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "babel-jest": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
+ "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
+ "dev": true,
+ "requires": {
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/babel__core": "^7.1.7",
+ "babel-plugin-istanbul": "^6.0.0",
+ "babel-preset-jest": "^26.6.2",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz",
+ "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^4.0.0",
+ "test-exclude": "^6.0.0"
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
+ "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ }
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz",
+ "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "semver": "^6.1.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
+ "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "core-js-compat": "^3.16.2"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz",
+ "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.2.2"
+ }
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "7.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
+ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==",
+ "dev": true
+ },
+ "babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ }
+ },
+ "babel-preset-fbjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz",
+ "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-syntax-class-properties": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-super": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-property-literals": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+ }
+ },
+ "babel-preset-jest": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
+ "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-jest-hoist": "^26.6.2",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "big-integer": {
+ "version": "1.6.50",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz",
+ "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==",
+ "dev": true
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "bplist-creator": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
+ "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
+ "dev": true,
+ "requires": {
+ "stream-buffers": "~2.2.0"
+ },
+ "dependencies": {
+ "stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
+ "dev": true
+ }
+ }
+ },
+ "bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dev": true,
+ "requires": {
+ "big-integer": "^1.6.44"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true
+ },
+ "browserslist": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz",
+ "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001265",
+ "electron-to-chromium": "^1.3.867",
+ "escalade": "^3.1.1",
+ "node-releases": "^2.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "dev": true,
+ "requires": {
+ "fast-json-stable-stringify": "2.x"
+ }
+ },
+ "bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "requires": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cac": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz",
+ "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^3.0.0",
+ "chalk": "^1.1.3",
+ "indent-string": "^3.0.0",
+ "minimist": "^1.2.0",
+ "read-pkg-up": "^1.0.1",
+ "suffix": "^0.1.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true
+ },
+ "cacheable-request": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
+ "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true
+ }
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz",
+ "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001267",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz",
+ "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==",
+ "dev": true
+ },
+ "capture-exit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
+ "dev": true,
+ "requires": {
+ "rsvp": "^4.8.4"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "dev": true,
+ "requires": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "dev": true
+ }
+ }
+ },
+ "cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+ "dev": true,
+ "requires": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+ "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "chrome-launcher": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.1.tgz",
+ "integrity": "sha512-iQ4s61NkIyaozsE2VKg1Vu3YGdD3JGw+fBBrt3FYJi7uflO9TvlTLW4MUq0fq3EKGhzB/QHPd5AsLb14+9++JQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ }
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
+ "cjs-module-lexer": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
+ "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
+ "dev": true
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "classnames": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
+ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ },
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "collect-v8-coverage": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true
+ },
+ "colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "dev": true
+ },
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compress-commons": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz",
+ "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.2",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.43.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "concurrently": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
+ "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "date-fns": "^2.0.1",
+ "lodash": "^4.17.15",
+ "read-pkg": "^4.0.1",
+ "rxjs": "^6.5.2",
+ "spawn-command": "^0.0.2-1",
+ "supports-color": "^6.1.0",
+ "tree-kill": "^1.2.2",
+ "yargs": "^13.3.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+ "dev": true,
+ "requires": {
+ "normalize-package-data": "^2.3.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0"
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz",
+ "integrity": "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==",
+ "dev": true
+ },
+ "core-js-compat": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz",
+ "integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.17.3",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.18.3",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz",
+ "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
+ "crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.1.0"
+ }
+ },
+ "crc-32": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
+ "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
+ "dev": true,
+ "requires": {
+ "exit-on-epipe": "~1.0.1",
+ "printj": "~1.1.0"
+ }
+ },
+ "crc32-stream": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz",
+ "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==",
+ "dev": true,
+ "requires": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "create-react-class": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
+ "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+ "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0"
+ }
+ }
+ }
+ },
+ "css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ }
+ },
+ "css-shorthand-properties": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz",
+ "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==",
+ "dev": true
+ },
+ "css-value": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz",
+ "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=",
+ "dev": true
+ },
+ "css-what": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
+ "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
+ "dev": true
+ },
+ "css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=",
+ "dev": true
+ },
+ "cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "requires": {
+ "cssom": "~0.3.6"
+ },
+ "dependencies": {
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ }
+ }
+ },
+ "csstype": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz",
+ "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==",
+ "dev": true
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "requires": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "d3-cloud": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/d3-cloud/-/d3-cloud-1.2.5.tgz",
+ "integrity": "sha512-4s2hXZgvs0CoUIw31oBAGrHt9Kt/7P9Ik5HIVzISFiWkD0Ga2VLAuO/emO/z1tYIpE7KG2smB4PhMPfFMJpahw==",
+ "requires": {
+ "d3-dispatch": "^1.0.3"
+ }
+ },
+ "d3-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
+ },
+ "d3-dispatch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
+ "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
+ },
+ "d3-ease": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
+ "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
+ },
+ "d3-format": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
+ "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
+ },
+ "d3-interpolate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
+ "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
+ "requires": {
+ "d3-color": "1 - 2"
+ }
+ },
+ "d3-scale": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.4.tgz",
+ "integrity": "sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA==",
+ "requires": {
+ "d3-array": "^2.3.0",
+ "d3-format": "1 - 2",
+ "d3-interpolate": "1.2.0 - 2",
+ "d3-time": "1 - 2",
+ "d3-time-format": "2 - 3"
+ }
+ },
+ "d3-scale-chromatic": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz",
+ "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==",
+ "requires": {
+ "d3-color": "1",
+ "d3-interpolate": "1"
+ },
+ "dependencies": {
+ "d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "requires": {
+ "d3-color": "1"
+ }
+ }
+ }
+ },
+ "d3-selection": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz",
+ "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="
+ },
+ "d3-time": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.0.0.tgz",
+ "integrity": "sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q=="
+ },
+ "d3-time-format": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
+ "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
+ "requires": {
+ "d3-time": "1 - 2"
+ }
+ },
+ "d3-timer": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+ },
+ "d3-transition": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz",
+ "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==",
+ "requires": {
+ "d3-color": "1",
+ "d3-dispatch": "1",
+ "d3-ease": "1",
+ "d3-interpolate": "1",
+ "d3-selection": "^1.1.0",
+ "d3-timer": "1"
+ },
+ "dependencies": {
+ "d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "requires": {
+ "d3-color": "1"
+ }
+ }
+ }
+ },
+ "data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ }
+ },
+ "date-fns": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
+ "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==",
+ "dev": true
+ },
+ "dayjs": {
+ "version": "1.10.7",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz",
+ "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decimal.js": {
+ "version": "10.3.1",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
+ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^3.1.0"
+ },
+ "dependencies": {
+ "mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true
+ }
+ }
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "^5.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "rimraf": "^2.2.8"
+ },
+ "dependencies": {
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "denodeify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+ "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true
+ },
+ "devtools": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.14.1.tgz",
+ "integrity": "sha512-NpGjos9SMOZeDXnlmxKBVrbxJuPqFgLDUX/g9IlMtsjUKFq+ePcDNxTr1gRLax+boinc5UoFYPEpeFUKbBzR4Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "chrome-launcher": "^0.14.0",
+ "edge-paths": "^2.1.0",
+ "puppeteer-core": "^10.1.0",
+ "query-selector-shadow-dom": "^1.0.0",
+ "ua-parser-js": "^0.7.21",
+ "uuid": "^8.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ }
+ }
+ },
+ "devtools-protocol": {
+ "version": "0.0.927104",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.927104.tgz",
+ "integrity": "sha512-5jfffjSuTOv0Lz53wTNNTcCUV8rv7d82AhYcapj28bC2B5tDxEZzVb7k51cNxZP2KHw24QE+sW7ZuSeD9NfMpA==",
+ "dev": true
+ },
+ "diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "dev": true
+ },
+ "diff-sequences": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
+ "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
+ "dev": true
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "discontinuous-range": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
+ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-accessibility-api": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz",
+ "integrity": "sha512-+KPF4o71fl6NrdnqIrJc6m44NA+Rhf1h7In2MRznejSQasWkjqmHOBUlk+pXJ77cVOSYyZeNHFwn/sjotB6+Sw==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true
+ },
+ "domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "dev": true,
+ "requires": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true
+ }
+ }
+ },
+ "domhandler": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+ "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "dev": true
+ },
+ "easy-table": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz",
+ "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1",
+ "wcwidth": "^1.0.1"
+ }
+ },
+ "edge-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz",
+ "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==",
+ "dev": true,
+ "requires": {
+ "@types/which": "^1.3.2",
+ "which": "^2.0.2"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "ejs": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
+ "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
+ "dev": true,
+ "requires": {
+ "jake": "^10.6.1"
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.868",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.868.tgz",
+ "integrity": "sha512-kZYCHqwJ1ctGrYDlOcWQH+/AftAm/KD4lEnLDNwS0kKwx1x6dU4zv+GuDjsPPOGn/2TjnKBaZjDyjXaoix0q/A==",
+ "dev": true
+ },
+ "emittery": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
+ "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "^0.6.2"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "envinfo": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
+ "dev": true
+ },
+ "enzyme": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
+ "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
+ "dev": true,
+ "requires": {
+ "array.prototype.flat": "^1.2.3",
+ "cheerio": "^1.0.0-rc.3",
+ "enzyme-shallow-equal": "^1.0.1",
+ "function.prototype.name": "^1.1.2",
+ "has": "^1.0.3",
+ "html-element-map": "^1.2.0",
+ "is-boolean-object": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-number-object": "^1.0.4",
+ "is-regex": "^1.0.5",
+ "is-string": "^1.0.5",
+ "is-subset": "^0.1.1",
+ "lodash.escape": "^4.0.1",
+ "lodash.isequal": "^4.5.0",
+ "object-inspect": "^1.7.0",
+ "object-is": "^1.0.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.1",
+ "object.values": "^1.1.1",
+ "raf": "^3.4.1",
+ "rst-selector-parser": "^2.2.3",
+ "string.prototype.trim": "^1.2.1"
+ }
+ },
+ "enzyme-shallow-equal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz",
+ "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3",
+ "object-is": "^1.1.2"
+ }
+ },
+ "enzyme-to-json": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz",
+ "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==",
+ "dev": true,
+ "requires": {
+ "@types/cheerio": "^0.22.22",
+ "lodash": "^4.17.21",
+ "react-is": "^16.12.0"
+ }
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
+ "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
+ "dev": true,
+ "requires": {
+ "stackframe": "^1.1.1"
+ }
+ },
+ "errorhandler": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
+ "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
+ }
+ },
+ "es-abstract": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
+ "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.2",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.1",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.1",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.1",
+ "object-inspect": "^1.11.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ }
+ },
+ "es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "dev": true,
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "7.32.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+ "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.12.11",
+ "@eslint/eslintrc": "^0.4.3",
+ "@humanwhocodes/config-array": "^0.5.0",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "enquirer": "^2.3.5",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.1",
+ "esquery": "^1.4.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.1.2",
+ "globals": "^13.6.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "progress": "^2.0.0",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
+ "table": "^6.0.9",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+ "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true
+ },
+ "globals": {
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+ "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "requires": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
+ "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-plugin-jest": {
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz",
+ "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "^4.0.1"
+ }
+ },
+ "eslint-plugin-prettier": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz",
+ "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz",
+ "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "7.26.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
+ "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.3",
+ "array.prototype.flatmap": "^1.2.4",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.2.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.0.4",
+ "object.entries": "^1.1.4",
+ "object.fromentries": "^2.0.4",
+ "object.hasown": "^1.0.0",
+ "object.values": "^1.1.4",
+ "prop-types": "^15.7.2",
+ "resolve": "^2.0.0-next.3",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.5"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "2.0.0-next.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-react-hooks": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz",
+ "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+ "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^1.3.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "dev": true
+ },
+ "eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+ "dev": true
+ },
+ "exec-sh": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
+ "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ }
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "exit-on-epipe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+ "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "expect": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
+ "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "ansi-styles": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-regex-util": "^26.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
+ "expect-webdriverio": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.1.4.tgz",
+ "integrity": "sha512-65FTS3bmxcIp0cq6fLb/72TrCQXBCpwPLC7SwMWdpPlLq461mXcK1BPKJJjnIC587aXSKD+3E4hvnlCtwDmXfg==",
+ "dev": true,
+ "requires": {
+ "expect": "^27.0.2",
+ "jest-matcher-utils": "^27.0.2"
+ },
+ "dependencies": {
+ "@jest/types": {
+ "version": "27.2.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+ "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ }
+ },
+ "@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ }
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "diff-sequences": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
+ "dev": true
+ },
+ "expect": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
+ "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^27.2.5",
+ "ansi-styles": "^5.0.0",
+ "jest-get-type": "^27.3.1",
+ "jest-matcher-utils": "^27.3.1",
+ "jest-message-util": "^27.3.1",
+ "jest-regex-util": "^27.0.6"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "jest-diff": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+ "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.0.6",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
+ }
+ },
+ "jest-get-type": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+ "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
+ "dev": true
+ },
+ "jest-matcher-utils": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
+ "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.3.1",
+ "jest-get-type": "^27.3.1",
+ "pretty-format": "^27.3.1"
+ }
+ },
+ "jest-message-util": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
+ "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.2.5",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.3.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ }
+ },
+ "jest-regex-util": {
+ "version": "27.0.6",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz",
+ "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+ "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^27.2.5",
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ }
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"requires": {
- "@jest/console": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/istanbul-lib-coverage": "^2.0.0"
+ "is-descriptor": "^1.0.0"
}
},
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
+ "is-extendable": "^0.1.0"
}
},
- "@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
+ "kind-of": "^6.0.0"
}
},
- "@types/stack-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
- "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
- "dev": true
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
},
- "@types/yargs": {
- "version": "13.0.11",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz",
- "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==",
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
- "@types/yargs-parser": "*"
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "requires": {
+ "@types/yauzl": "^2.9.1",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ }
+ },
+ "fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "dev": true,
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
+ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
}
},
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
},
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
- "lodash": "^4.17.14"
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
}
},
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
},
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fb-watchman": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
+ "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "dev": true,
+ "requires": {
+ "bser": "2.1.1"
+ }
+ },
+ "fbjs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
+ "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.1",
+ "fbjs-css-vars": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "dev": true
+ }
+ }
+ },
+ "fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==",
+ "dev": true
+ },
+ "fbjs-scripts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz",
+ "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.0.0",
+ "ansi-colors": "^1.0.1",
+ "babel-preset-fbjs": "^3.2.0",
+ "core-js": "^2.4.1",
+ "cross-spawn": "^5.1.0",
+ "fancy-log": "^1.3.2",
+ "object-assign": "^4.0.1",
+ "plugin-error": "^0.1.2",
+ "semver": "^5.1.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- }
+ "ansi-wrap": "^0.1.0"
}
},
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "dev": true
+ },
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@@ -12679,2761 +31443,4051 @@
"which": "^1.2.9"
}
},
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
}
},
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "shebang-regex": "^1.0.0"
}
},
- "fs-extra": {
+ "shebang-regex": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
- "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "fibers": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fibers/-/fibers-5.0.0.tgz",
+ "integrity": "sha512-UpGv/YAZp7mhKHxDvC1tColrroGRX90sSvh8RMZV9leo+e5+EkRVgCEZPlmXeo3BUNQTZxUaVdLskq1Q2FyCPg==",
+ "dev": true,
+ "requires": {
+ "detect-libc": "^1.0.3"
+ }
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
+ "filelist": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
+ "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0"
+ "ms": "2.0.0"
}
},
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
- "optional": true
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
- },
- "get-stream": {
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "locate-path": "^3.0.0"
}
},
- "jest-haste-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
- "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0",
- "anymatch": "^2.0.0",
- "fb-watchman": "^2.0.0",
- "fsevents": "^1.2.7",
- "graceful-fs": "^4.1.15",
- "invariant": "^2.2.4",
- "jest-serializer": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-worker": "^24.9.0",
- "micromatch": "^3.1.10",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
}
},
- "jest-message-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
- "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/stack-utils": "^1.0.1",
- "chalk": "^2.0.1",
- "micromatch": "^3.1.10",
- "slash": "^2.0.0",
- "stack-utils": "^1.0.1"
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
}
},
- "jest-mock": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
- "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0"
+ "p-limit": "^2.0.0"
}
},
- "jest-serializer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
- "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
- "jest-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
- "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
- "dev": true,
- "requires": {
- "@jest/console": "^24.9.0",
- "@jest/fake-timers": "^24.9.0",
- "@jest/source-map": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "callsites": "^3.0.0",
- "chalk": "^2.0.1",
- "graceful-fs": "^4.1.15",
- "is-ci": "^2.0.0",
- "mkdirp": "^0.5.1",
- "slash": "^2.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "dev": true,
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- }
- }
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
},
- "jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.6"
+ "find-up": "^3.0.0"
}
},
- "load-json-file": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "find-free-port": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-free-port/-/find-free-port-2.0.0.tgz",
+ "integrity": "sha1-SyLl9leesaOMQaxryz7+0bbamxs=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
+ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- }
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "functions-have-names": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz",
+ "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==",
+ "dev": true
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true
+ },
+ "get-port": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
+ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dev": true,
+ "requires": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+ "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.1.1",
+ "ignore": "^5.1.4",
+ "merge2": "^1.3.0",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
},
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "fast-glob": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+ "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
"dev": true,
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
}
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ }
+ }
+ },
+ "globule": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz",
+ "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==",
+ "dev": true,
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
- },
- "merge-stream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
- "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ }
+ }
+ },
+ "got": {
+ "version": "11.8.2",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz",
+ "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.1",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
+ "dev": true
+ },
+ "grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "dev": true
+ },
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+ "dev": true,
+ "optional": true
+ },
+ "harmony-reflect": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
+ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ }
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "readable-stream": "^2.0.1"
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
- "metro-react-native-babel-preset": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz",
- "integrity": "sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA==",
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.0.0",
- "@babel/plugin-syntax-dynamic-import": "^7.0.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.2.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-object-assign": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-regenerator": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.0.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "react-refresh": "^0.4.0"
+ "is-buffer": "^1.1.5"
}
- },
- "mime-db": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz",
- "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=",
+ }
+ }
+ },
+ "hermes-engine": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz",
+ "integrity": "sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg==",
+ "dev": true
+ },
+ "hermes-profile-transformer": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
+ "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true
+ }
+ }
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "html-element-map": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz",
+ "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==",
+ "dev": true,
+ "requires": {
+ "array.prototype.filter": "^1.0.0",
+ "call-bind": "^1.0.2"
+ }
+ },
+ "html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.5"
+ }
+ },
+ "html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "requires": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
+ "requires": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "identity-obj-proxy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
+ "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=",
+ "dev": true,
+ "requires": {
+ "harmony-reflect": "^1.4.6"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.1.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "dev": true
+ },
+ "image-size": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
+ "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
- },
- "mime-types": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz",
- "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
- "dev": true,
- "requires": {
- "mime-db": "~1.23.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ }
+ }
+ },
+ "import-local": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz",
+ "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz",
+ "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.1",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.21",
+ "mute-stream": "0.0.8",
+ "ora": "^5.4.1",
+ "run-async": "^2.4.0",
+ "rxjs": "^7.2.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
+ "color-convert": "^2.0.1"
}
},
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "p-try": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "color-name": "~1.1.4"
}
},
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "rxjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz",
+ "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==",
"dev": true,
"requires": {
- "pify": "^2.0.0"
+ "tslib": "~2.1.0"
}
},
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "has-flag": "^4.0.0"
}
},
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "tslib": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "dev": true
+ }
+ }
+ },
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "is-buffer": "^1.1.5"
}
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz",
+ "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "is-buffer": "^1.1.5"
}
- },
- "serialize-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
- "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true
+ },
+ "is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "dev": true
+ },
+ "is-negative-zero": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-number-object": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
+ "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-port-reachable": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz",
+ "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==",
+ "dev": true
+ },
+ "is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true
+ },
+ "is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "*"
+ }
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-weakref": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
+ "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "dev": true,
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
}
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ }
+ }
+ },
+ "istanbul-lib-coverage": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz",
+ "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
- },
- "stack-utils": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz",
- "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ }
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "throat": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
- "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- }
- }
- },
- "write-file-atomic": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
- "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "slide": "^1.1.5"
- }
- },
- "ws": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
- "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
- "dev": true,
- "requires": {
- "options": ">=0.0.5",
- "ultron": "1.0.x"
- }
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
- "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
+ "has-flag": "^4.0.0"
}
}
}
},
- "metro-babel-register": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.56.4.tgz",
- "integrity": "sha512-Phm6hMluOWYqfykftjJ1jsTpWvbgb49AC/1taxEctxUdRCZlFgZwBleJZAhQYxJD5J+ikFkEbHDzePEXb29KVA==",
+ "istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
"requires": {
- "@babel/core": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/register": "^7.0.0",
- "core-js": "^2.2.2",
- "escape-string-regexp": "^1.0.5"
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
},
"dependencies": {
- "core-js": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
- "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
- "metro-babel-transformer": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.56.4.tgz",
- "integrity": "sha512-IOi4ILgZvaX7GCGHBJp79paNVOq5QxhhbyqAdEJgDP8bHfl/OVHoVKSypfrsMSKSiBrqxhIjyc4XjkXsQtkx5g==",
+ "istanbul-reports": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz",
+ "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==",
"dev": true,
"requires": {
- "@babel/core": "^7.0.0",
- "metro-source-map": "^0.56.4"
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ }
+ },
+ "jake": {
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
+ "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
+ "dev": true,
+ "requires": {
+ "async": "0.9.x",
+ "chalk": "^2.4.2",
+ "filelist": "^1.0.1",
+ "minimatch": "^3.0.4"
+ }
+ },
+ "jasmine": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.10.0.tgz",
+ "integrity": "sha512-2Y42VsC+3CQCTzTwJezOvji4qLORmKIE0kwowWC+934Krn6ZXNQYljiwK5st9V3PVx96BSiDYXSB60VVah3IlQ==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.6",
+ "jasmine-core": "~3.10.0"
+ }
+ },
+ "jasmine-core": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.10.0.tgz",
+ "integrity": "sha512-XWGaJ25RUdOQnjGiLoQa9QG/R4u1e9Bk4uhLdn9F4JCBco84L4SKM52bxci4vWTSUzhmhuHNAkAHFN/6Cox9wQ==",
+ "dev": true
+ },
+ "jest": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
+ "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
+ "dev": true,
+ "requires": {
+ "@jest/core": "^26.6.3",
+ "import-local": "^3.0.2",
+ "jest-cli": "^26.6.3"
}
},
- "metro-cache": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.56.4.tgz",
- "integrity": "sha512-d1hiUSKwtRsuMxUhHVJ3tjK2BbpUlJGvTyMWohK8Wxx+0GbnWRWWFcI4vlCzlZfoK0VtZK2MJEl5t7Du1mIniQ==",
+ "jest-changed-files": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
+ "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
"dev": true,
"requires": {
- "jest-serializer": "^24.4.0",
- "metro-core": "^0.56.4",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4"
+ "@jest/types": "^26.6.2",
+ "execa": "^4.0.0",
+ "throat": "^5.0.0"
},
"dependencies": {
- "jest-serializer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
- "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
}
},
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "path-key": "^3.0.0"
}
}
}
},
- "metro-config": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.56.4.tgz",
- "integrity": "sha512-O85QDHwWdMn/8ERe13y4a6vbZL0AHyO8atTvL+9BCulLEO+FQBi1iJjr3+ViLa8cf0m5dRftDsa7P47m5euk4A==",
+ "jest-cli": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
+ "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
"dev": true,
"requires": {
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^24.7.0",
- "metro": "^0.56.4",
- "metro-cache": "^0.56.4",
- "metro-core": "^0.56.4",
- "pretty-format": "^24.7.0"
+ "@jest/core": "^26.6.3",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.4",
+ "import-local": "^3.0.2",
+ "is-ci": "^2.0.0",
+ "jest-config": "^26.6.3",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "prompts": "^2.0.1",
+ "yargs": "^15.4.1"
},
"dependencies": {
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
+ "color-convert": "^2.0.1"
}
},
- "@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "@types/yargs": {
- "version": "13.0.11",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz",
- "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "@types/yargs-parser": "*"
+ "color-name": "~1.1.4"
}
},
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "jest-get-type": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
- "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "jest-validate": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
- "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "camelcase": "^5.3.1",
- "chalk": "^2.0.1",
- "jest-get-type": "^24.9.0",
- "leven": "^3.1.0",
- "pretty-format": "^24.9.0"
- }
- },
- "pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
+ "has-flag": "^4.0.0"
}
}
}
},
- "metro-core": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.56.4.tgz",
- "integrity": "sha512-hMzkBdgPt5Zm9nr/1KtIT+A6H7TNiLVCEGG5OiAXj8gTRsA2yy7wAdQpwy0xbE+zi88t/pLOzXpd3ClG/YxyWg==",
+ "jest-config": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
+ "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
"dev": true,
"requires": {
- "jest-haste-map": "^24.7.1",
- "lodash.throttle": "^4.1.1",
- "metro-resolver": "^0.56.4",
- "wordwrap": "^1.0.0"
+ "@babel/core": "^7.1.0",
+ "@jest/test-sequencer": "^26.6.3",
+ "@jest/types": "^26.6.2",
+ "babel-jest": "^26.6.3",
+ "chalk": "^4.0.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.4",
+ "jest-environment-jsdom": "^26.6.2",
+ "jest-environment-node": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "jest-jasmine2": "^26.6.3",
+ "jest-regex-util": "^26.0.0",
+ "jest-resolve": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "pretty-format": "^26.6.2"
},
"dependencies": {
- "@jest/console": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
- "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
- "dev": true,
- "requires": {
- "@jest/source-map": "^24.9.0",
- "chalk": "^2.0.1",
- "slash": "^2.0.0"
- }
- },
- "@jest/fake-timers": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
- "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "jest-message-util": "^24.9.0",
- "jest-mock": "^24.9.0"
- }
- },
- "@jest/source-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
- "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.1.15",
- "source-map": "^0.6.0"
- }
- },
- "@jest/test-result": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
- "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@jest/console": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/istanbul-lib-coverage": "^2.0.0"
+ "color-convert": "^2.0.1"
}
},
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
+ "color-name": "~1.1.4"
}
},
- "@types/stack-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
- "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "@types/yargs": {
- "version": "13.0.11",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz",
- "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "optional": true
- },
- "jest-haste-map": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
- "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-diff": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
+ "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0",
- "anymatch": "^2.0.0",
- "fb-watchman": "^2.0.0",
- "fsevents": "^1.2.7",
- "graceful-fs": "^4.1.15",
- "invariant": "^2.2.4",
- "jest-serializer": "^24.9.0",
- "jest-util": "^24.9.0",
- "jest-worker": "^24.9.0",
- "micromatch": "^3.1.10",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
+ "color-convert": "^2.0.1"
}
},
- "jest-message-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
- "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "@types/stack-utils": "^1.0.1",
- "chalk": "^2.0.1",
- "micromatch": "^3.1.10",
- "slash": "^2.0.0",
- "stack-utils": "^1.0.1"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "jest-mock": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
- "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0"
+ "color-name": "~1.1.4"
}
},
- "jest-serializer": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
- "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "jest-util": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
- "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "@jest/console": "^24.9.0",
- "@jest/fake-timers": "^24.9.0",
- "@jest/source-map": "^24.9.0",
- "@jest/test-result": "^24.9.0",
- "@jest/types": "^24.9.0",
- "callsites": "^3.0.0",
- "chalk": "^2.0.1",
- "graceful-fs": "^4.1.15",
- "is-ci": "^2.0.0",
- "mkdirp": "^0.5.1",
- "slash": "^2.0.0",
- "source-map": "^0.6.0"
+ "has-flag": "^4.0.0"
}
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ }
+ }
+ },
+ "jest-docblock": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
+ "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
+ "dev": true,
+ "requires": {
+ "detect-newline": "^3.0.0"
+ }
+ },
+ "jest-each": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
+ "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "jest-util": "^26.6.2",
+ "pretty-format": "^26.6.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
+ "color-convert": "^2.0.1"
}
},
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "stack-utils": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz",
- "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "escape-string-regexp": "^2.0.0"
+ "color-name": "~1.1.4"
}
},
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
"supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
}
}
},
- "metro-inspector-proxy": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.56.4.tgz",
- "integrity": "sha512-E1S3MO25mWKmcLn1UQuCDiS0hf9P2Fwq8sEAX5lBLoZbehepNH+4xJ3xXSY51JX4dozBrE8GGoKL4ll3II40LA==",
+ "jest-environment-jsdom": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
+ "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
"dev": true,
"requires": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "rxjs": "^5.4.3",
- "ws": "^1.1.5",
- "yargs": "^9.0.0"
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "jest-mock": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jsdom": "^16.4.0"
+ }
+ },
+ "jest-environment-node": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
+ "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "jest-mock": "^26.6.2",
+ "jest-util": "^26.6.2"
+ }
+ },
+ "jest-get-type": {
+ "version": "26.3.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
+ "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+ "dev": true
+ },
+ "jest-haste-map": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
+ "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^26.6.2",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^2.1.2",
+ "graceful-fs": "^4.2.4",
+ "jest-regex-util": "^26.0.0",
+ "jest-serializer": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-worker": "^26.6.2",
+ "micromatch": "^4.0.2",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
+ "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@jest/environment": "^26.6.2",
+ "@jest/source-map": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^26.6.2",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^26.6.2",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-runtime": "^26.6.3",
+ "jest-snapshot": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "pretty-format": "^26.6.2",
+ "throat": "^5.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- }
- }
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "color-convert": "^2.0.1"
}
},
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "color-name": "~1.1.4"
}
},
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "has-flag": "^4.0.0"
}
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ }
+ }
+ },
+ "jest-junit": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-12.3.0.tgz",
+ "integrity": "sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^1.0.4",
+ "strip-ansi": "^5.2.0",
+ "uuid": "^8.3.2",
+ "xml": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
- "pify": "^2.0.0"
+ "ansi-regex": "^4.1.0"
}
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ }
+ }
+ },
+ "jest-leak-detector": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
+ "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
+ "dev": true,
+ "requires": {
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
+ "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "pretty-format": "^26.6.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "color-convert": "^2.0.1"
}
},
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "rxjs": {
- "version": "5.5.12",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
- "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "symbol-observable": "1.0.1"
+ "color-name": "~1.1.4"
}
},
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
+ "has-flag": "^4.0.0"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ }
+ }
+ },
+ "jest-message-util": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
+ "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/types": "^26.6.2",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "micromatch": "^4.0.2",
+ "pretty-format": "^26.6.2",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "color-convert": "^2.0.1"
}
},
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "ws": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
- "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "options": ">=0.0.5",
- "ultron": "1.0.x"
+ "color-name": "~1.1.4"
}
},
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "yargs": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
- "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
+ "has-flag": "^4.0.0"
}
}
}
},
- "metro-minify-uglify": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.56.4.tgz",
- "integrity": "sha512-BHgj7+BKEK2pHvWHUR730bIrsZwl8DPtr49x9L0j2grPZ5/UROWXzEr8VZgIss7fl64t845uu1HXNNyuSj2EhA==",
+ "jest-mock": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
+ "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
"dev": true,
"requires": {
- "uglify-es": "^3.1.9"
+ "@jest/types": "^26.6.2",
+ "@types/node": "*"
}
},
- "metro-react-native-babel-preset": {
- "version": "0.61.0",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.61.0.tgz",
- "integrity": "sha512-k0j2K70YadKFFayFOtw9sbaB38LdkkJLluwqHvyl9CRAa3m7cWQ6pZbakCPrp3OWyo7dJWbP70ybOvjoDv2jwQ==",
+ "jest-pnp-resolver": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
+ "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
+ "dev": true,
+ "requires": {}
+ },
+ "jest-react-hooks-shallow": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/jest-react-hooks-shallow/-/jest-react-hooks-shallow-1.5.1.tgz",
+ "integrity": "sha512-tyIUh2aKLTGPxbc6aK54pymvvRlX8eGNn3GzXefXAX5BkUwj4geS1pPJijmYeCELbn8+BUP9uS9+6OG5ElVI5Q==",
"dev": true,
"requires": {
- "@babel/core": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.0.0",
- "@babel/plugin-syntax-dynamic-import": "^7.0.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.2.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-object-assign": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-regenerator": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.5.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "react-refresh": "^0.4.0"
+ "react": "^16.8.0"
}
},
- "metro-react-native-babel-transformer": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.4.tgz",
- "integrity": "sha512-ng74eutuy1nyGI9+TDzzVAVfEmNPDlapV4msTQMKPi4EFqo/fBn7Ct33ME9l5E51pQBBnxt/UwcpTvd13b29kQ==",
+ "jest-regex-util": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
+ "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
+ "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
"dev": true,
"requires": {
- "@babel/core": "^7.0.0",
- "babel-preset-fbjs": "^3.1.2",
- "metro-babel-transformer": "^0.56.4",
- "metro-react-native-babel-preset": "^0.56.4",
- "metro-source-map": "^0.56.4"
+ "@jest/types": "^26.6.2",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^26.6.2",
+ "read-pkg-up": "^7.0.1",
+ "resolve": "^1.18.1",
+ "slash": "^3.0.0"
},
"dependencies": {
- "metro-react-native-babel-preset": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz",
- "integrity": "sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.0.0",
- "@babel/plugin-syntax-dynamic-import": "^7.0.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.2.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-object-assign": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-regenerator": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.0.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "react-refresh": "^0.4.0"
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
}
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
}
}
},
- "metro-resolver": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.56.4.tgz",
- "integrity": "sha512-Ug4ulVfpkKZ1Wu7mdYj9XLGuOqZTuWCqEhyx3siKTc/2eBwKZQXmiNo5d/IxWNvmwL/87Abeb724I6CMzMfjiQ==",
- "dev": true,
- "requires": {
- "absolute-path": "^0.0.0"
- }
- },
- "metro-source-map": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.56.4.tgz",
- "integrity": "sha512-f1P9/rpFmG3Z0Jatiw2zvLItx1TwR7mXTSDj4qLDCWeVMB3kEXAr3R0ucumTW8c6HfpJljeRBWzYFXF33fd81g==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "invariant": "^2.2.4",
- "metro-symbolicate": "^0.56.4",
- "ob1": "^0.56.4",
- "source-map": "^0.5.6",
- "vlq": "^1.0.0"
- }
- },
- "metro-symbolicate": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.56.4.tgz",
- "integrity": "sha512-8mCNNn6zV5FFKCIcRgI7736Xl+owgvYuy8qanPxZN36f7utiWRYeB+PirEBPcglBk4qQvoy2lT6oPULNXZQbbQ==",
- "dev": true,
- "requires": {
- "invariant": "^2.2.4",
- "metro-source-map": "^0.56.4",
- "source-map": "^0.5.6",
- "through2": "^2.0.1",
- "vlq": "^1.0.0"
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "jest-resolve-dependencies": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
+ "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
"dev": true,
"requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
+ "@jest/types": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-snapshot": "^26.6.2"
}
},
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "jest-runner": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
+ "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
"dev": true,
"requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
+ "@jest/console": "^26.6.2",
+ "@jest/environment": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.7.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.4",
+ "jest-config": "^26.6.3",
+ "jest-docblock": "^26.0.0",
+ "jest-haste-map": "^26.6.2",
+ "jest-leak-detector": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-resolve": "^26.6.2",
+ "jest-runtime": "^26.6.3",
+ "jest-util": "^26.6.2",
+ "jest-worker": "^26.6.2",
+ "source-map-support": "^0.5.6",
+ "throat": "^5.0.0"
},
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
- },
- "mime-db": {
- "version": "1.46.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
- "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.29",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
- "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
- "dev": true,
- "requires": {
- "mime-db": "1.46.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true
- },
- "min-document": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
- "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
- "dev": true,
- "requires": {
- "dom-walk": "^0.1.0"
- }
- },
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "jest-runtime": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
+ "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "@jest/console": "^26.6.2",
+ "@jest/environment": "^26.6.2",
+ "@jest/fake-timers": "^26.6.2",
+ "@jest/globals": "^26.6.2",
+ "@jest/source-map": "^26.6.2",
+ "@jest/test-result": "^26.6.2",
+ "@jest/transform": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^0.6.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.4",
+ "jest-config": "^26.6.3",
+ "jest-haste-map": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-mock": "^26.6.2",
+ "jest-regex-util": "^26.0.0",
+ "jest-resolve": "^26.6.2",
+ "jest-snapshot": "^26.6.2",
+ "jest-util": "^26.6.2",
+ "jest-validate": "^26.6.2",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0",
+ "yargs": "^15.4.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- },
- "minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
+ "jest-serializer": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
+ "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
"dev": true,
"requires": {
- "yallist": "^4.0.0"
+ "@types/node": "*",
+ "graceful-fs": "^4.2.4"
}
},
- "minipass-collect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
- "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "jest-snapshot": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
+ "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
"dev": true,
"requires": {
- "minipass": "^3.0.0"
+ "@babel/types": "^7.0.0",
+ "@jest/types": "^26.6.2",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^26.6.2",
+ "graceful-fs": "^4.2.4",
+ "jest-diff": "^26.6.2",
+ "jest-get-type": "^26.3.0",
+ "jest-haste-map": "^26.6.2",
+ "jest-matcher-utils": "^26.6.2",
+ "jest-message-util": "^26.6.2",
+ "jest-resolve": "^26.6.2",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^26.6.2",
+ "semver": "^7.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "minipass-flush": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
- "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "jest-svg-transformer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/jest-svg-transformer/-/jest-svg-transformer-1.0.0.tgz",
+ "integrity": "sha1-44iEykzYsilc36KgskZnkgw6im0=",
"dev": true,
- "requires": {
- "minipass": "^3.0.0"
- }
+ "requires": {}
},
- "minipass-pipeline": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "jest-util": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
+ "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
"dev": true,
"requires": {
- "minipass": "^3.0.0"
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.4",
+ "is-ci": "^2.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "jest-validate": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
+ "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
"dev": true,
"requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
+ "@jest/types": "^26.6.2",
+ "camelcase": "^6.0.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^26.6.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "camelcase": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "mississippi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
- "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "jest-watcher": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
+ "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
"dev": true,
"requires": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^3.0.0",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
+ "@jest/test-result": "^26.6.2",
+ "@jest/types": "^26.6.2",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^26.6.2",
+ "string-length": "^4.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
"dev": true,
"requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
},
"dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "has-flag": "^4.0.0"
}
}
}
},
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "jetifier": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz",
+ "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==",
"dev": true
},
- "moo": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz",
- "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==",
- "dev": true
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
- "morgan": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
- "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"requires": {
- "basic-auth": "~2.0.1",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
- },
- "dependencies": {
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true
- }
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
}
},
- "move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "jsc-android": {
+ "version": "245459.0.0",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz",
+ "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==",
+ "dev": true
+ },
+ "jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
"dev": true,
"requires": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
},
"dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "acorn": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+ "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+ "dev": true
+ },
+ "form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
}
},
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
}
}
}
},
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true
},
- "multicast-dns": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
- "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
- "dev": true,
- "requires": {
- "dns-packet": "^1.3.1",
- "thunky": "^1.0.2"
- }
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
},
- "multicast-dns-service-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
- "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
- "mute-stdout": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
- "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "jsonify": "~0.0.0"
}
},
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "nearley": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
- "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
+ "json5": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+ "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
"dev": true,
"requires": {
- "commander": "^2.19.0",
- "moo": "^0.5.0",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6"
+ "minimist": "^1.2.5"
+ }
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
},
"dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true
}
}
},
- "negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "jsx-ast-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz",
+ "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.3",
+ "object.assign": "^4.1.2"
+ }
},
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+ "junk": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz",
+ "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=",
"dev": true
},
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
+ "keyv": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
+ "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
},
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
- "node-forge": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
- "dev": true
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
},
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true
},
- "node-libs-browser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "dev": true,
- "requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
- },
- "dependencies": {
- "buffer": {
- "version": "4.9.2",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "node-modules-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
- "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "ky": {
+ "version": "0.28.6",
+ "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.6.tgz",
+ "integrity": "sha512-EjxET5qSsaLUj1BSFtxPjEtRgF5JOhdroPwMNJFH/VvzruWQFBmh6W7GtqjBR56UZw4dBFTKLvx9nDxxnFXc7w==",
"dev": true
},
- "node-notifier": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
- "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
- "optional": true,
"requires": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
+ "readable-stream": "^2.0.5"
},
"dependencies": {
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
- "optional": true
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
},
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
- "isexe": "^2.0.0"
+ "safe-buffer": "~5.1.0"
}
}
}
},
- "node-releases": {
- "version": "1.1.71",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
- "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==",
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true
},
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lighthouse-logger": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz",
+ "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
},
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
}
},
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
- "normalize-url": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
- "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
+ "livereload": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
+ "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^3.5.0",
+ "livereload-js": "^3.3.1",
+ "opts": ">= 1.2.0",
+ "ws": "^7.4.3"
+ }
+ },
+ "livereload-js": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz",
+ "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==",
"dev": true
},
- "now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "once": "^1.3.2"
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
}
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
},
"dependencies": {
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
}
}
},
- "nth-check": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "boolbase": "^1.0.0"
+ "p-locate": "^4.1.0"
}
},
- "nullthrows": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
- "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
"dev": true
},
- "nwsapi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+ "lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
"dev": true
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=",
"dev": true
},
- "ob1": {
- "version": "0.56.4",
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.56.4.tgz",
- "integrity": "sha512-URgFof9z2wotiYFsqlydXtQfGV81gvBI2ODy64xfd3vPo+AYom5PVDX4t4zn23t/O+S2IxqApSQM8uJAybmz7w==",
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
"dev": true
},
- "object-assign": {
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "dev": true
+ },
+ "lodash.isobject": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
+ "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lodash.pickby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
+ "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=",
+ "dev": true
+ },
+ "lodash.throttle": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
+ "dev": true
},
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+ "dev": true
+ },
+ "lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "dev": true
+ },
+ "lodash.zip": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
+ "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
"requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
},
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "color-convert": "^2.0.1"
}
},
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
}
}
}
},
- "object-inspect": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
- "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw=="
- },
- "object-is": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "logkitty": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
+ "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
"dev": true,
"requires": {
- "isobject": "^3.0.0"
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^15.1.0"
}
},
- "object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
+ "loglevel": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
+ "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+ "dev": true
},
- "object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
- "dev": true,
- "requires": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- }
+ "loglevel-plugin-prefix": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz",
+ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
+ "dev": true
},
- "object.entries": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz",
- "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==",
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1",
- "has": "^1.0.3"
+ "js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "object.fromentries": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz",
- "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "has": "^1.0.3"
- }
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
},
- "object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
+ "yallist": "^4.0.0"
}
},
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
+ "lz-string": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
+ "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=",
+ "dev": true
},
- "object.reduce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
- "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
+ "magic-string": {
+ "version": "0.25.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+ "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
+ "sourcemap-codec": "^1.4.4"
}
},
- "object.values": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
- "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "has": "^1.0.3"
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
- "obuf": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
- "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
"dev": true,
"requires": {
- "ee-first": "1.1.1"
+ "tmpl": "1.0.x"
}
},
- "on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
},
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
- "mimic-fn": "^2.1.0"
+ "object-visit": "^1.0.0"
}
},
- "open": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
- "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
- "dev": true,
- "requires": {
- "is-wsl": "^1.1.0"
- },
- "dependencies": {
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- }
- }
+ "marky": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz",
+ "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==",
+ "dev": true
},
- "opn": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
- "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "maximatch": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
+ "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=",
"dev": true,
"requires": {
- "is-wsl": "^1.1.0"
+ "array-differ": "^1.0.0",
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "minimatch": "^3.0.0"
},
"dependencies": {
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
}
}
},
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "mendix": {
+ "version": "9.6.27784",
+ "resolved": "https://registry.npmjs.org/mendix/-/mendix-9.6.27784.tgz",
+ "integrity": "sha512-2dSAQKSdH9eVg21FCprBMaOnLQBjCPetze82iqiyUwbkN+xGFWvv0akaEFnOx/gkfh+fw8W+hP51cD9YEpsM5w==",
"dev": true,
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
+ "@types/big.js": "^6.0.0",
+ "@types/react": "~17.0.0",
+ "@types/react-native": "~0.64.10"
}
},
- "options": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
- "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
- "ora": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
- "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "metro": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.59.0.tgz",
+ "integrity": "sha512-OpVgYXyuTvouusFZQJ/UYKEbwfLmialrSCUUTGTFaBor6UMUHZgXPYtK86LzesgMqRc8aiuTQVO78iKW2Iz3wg==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-spinners": "^2.0.0",
- "log-symbols": "^2.2.0",
- "strip-ansi": "^5.2.0",
- "wcwidth": "^1.0.1"
+ "@babel/code-frame": "^7.0.0",
+ "@babel/core": "^7.0.0",
+ "@babel/generator": "^7.5.0",
+ "@babel/parser": "^7.0.0",
+ "@babel/plugin-external-helpers": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "absolute-path": "^0.0.0",
+ "async": "^2.4.0",
+ "babel-preset-fbjs": "^3.3.0",
+ "buffer-crc32": "^0.2.13",
+ "chalk": "^2.4.1",
+ "ci-info": "^2.0.0",
+ "concat-stream": "^1.6.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "denodeify": "^1.2.1",
+ "error-stack-parser": "^2.0.6",
+ "eventemitter3": "^3.0.0",
+ "fbjs": "^1.0.0",
+ "fs-extra": "^1.0.0",
+ "graceful-fs": "^4.1.3",
+ "image-size": "^0.6.0",
+ "invariant": "^2.2.4",
+ "jest-haste-map": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "json-stable-stringify": "^1.0.1",
+ "lodash.throttle": "^4.1.1",
+ "merge-stream": "^1.0.1",
+ "metro-babel-register": "0.59.0",
+ "metro-babel-transformer": "0.59.0",
+ "metro-cache": "0.59.0",
+ "metro-config": "0.59.0",
+ "metro-core": "0.59.0",
+ "metro-inspector-proxy": "0.59.0",
+ "metro-minify-uglify": "0.59.0",
+ "metro-react-native-babel-preset": "0.59.0",
+ "metro-resolver": "0.59.0",
+ "metro-source-map": "0.59.0",
+ "metro-symbolicate": "0.59.0",
+ "mime-types": "2.1.11",
+ "mkdirp": "^0.5.1",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "resolve": "^1.5.0",
+ "rimraf": "^2.5.4",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "strip-ansi": "^4.0.0",
+ "temp": "0.8.3",
+ "throat": "^4.1.0",
+ "wordwrap": "^1.0.0",
+ "ws": "^1.1.5",
+ "xpipe": "^1.0.5",
+ "yargs": "^14.2.0"
},
"dependencies": {
+ "@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "dev": true,
+ "requires": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
+ },
+ "@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ }
+ },
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "dev": true
+ },
+ "@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
}
},
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
+ "optional": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
}
},
- "restore-cursor": {
+ "is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
"dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
- "original": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
- "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
- "dev": true,
- "requires": {
- "url-parse": "^1.4.3"
- }
- },
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "p-cancelable": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.0.tgz",
- "integrity": "sha512-HAZyB3ZodPo+BDpb4/Iu7Jv4P6cSazBz9ZM0ChhEXp70scx834aWCEjQRwgt41UzzejUAPdbqqONfRWTPYrPAQ==",
- "dev": true
- },
- "p-defer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
- "dev": true
- },
- "p-each-series": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
- "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
- "dev": true
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "p-retry": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
- "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
- "dev": true,
- "requires": {
- "retry": "^0.12.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "parallel-transform": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
- "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
- "dev": true,
- "requires": {
- "cyclist": "^1.0.1",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
- "requires": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "parse-ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
- "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
- "dev": true
- },
- "parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true
- },
- "parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
- "dev": true
- },
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
- "dev": true,
- "requires": {
- "parse5": "^6.0.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
- "dev": true,
- "requires": {
- "path-root-regex": "^0.1.0"
- }
- },
- "path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
- "dev": true
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ }
+ },
+ "jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ }
+ },
+ "jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0"
+ }
+ },
+ "jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
"dev": true
- }
- }
- },
- "pbkdf2": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
- "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
- "dev": true
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
- "dev": true
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pirates": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
- "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
- "dev": true,
- "requires": {
- "node-modules-regexp": "^1.0.0"
- }
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "plist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz",
- "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==",
- "dev": true,
- "requires": {
- "base64-js": "^1.5.1",
- "xmlbuilder": "^9.0.7",
- "xmldom": "^0.5.0"
- }
- },
- "plugin-error": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
- "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
- "dev": true,
- "requires": {
- "ansi-colors": "^1.0.1",
- "arr-diff": "^4.0.0",
- "arr-union": "^3.1.0",
- "extend-shallow": "^3.0.2"
- }
- },
- "portfinder": {
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
- "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
- "dev": true,
- "requires": {
- "async": "^2.6.2",
- "debug": "^3.1.1",
- "mkdirp": "^0.5.5"
- },
- "dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ },
+ "jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
"dev": true,
"requires": {
- "lodash": "^4.17.14"
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ }
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "metro-react-native-babel-preset": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz",
+ "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "mime-db": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz",
+ "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz",
+ "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "mime-db": "~1.23.0"
}
},
"mkdirp": {
@@ -15446,1080 +35500,791 @@
}
},
"ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- }
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "postcss": {
- "version": "7.0.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
- "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "remove-trailing-separator": "^1.0.1"
}
- }
- }
- },
- "postcss-modules-extract-imports": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
- "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.5"
- }
- },
- "postcss-modules-local-by-default": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
- "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
- "dev": true,
- "requires": {
- "icss-utils": "^4.1.1",
- "postcss": "^7.0.32",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-modules-scope": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
- "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^6.0.0"
- }
- },
- "postcss-modules-values": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
- "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
- "dev": true,
- "requires": {
- "icss-utils": "^4.0.0",
- "postcss": "^7.0.6"
- }
- },
- "postcss-selector-parser": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
- "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
- "dev": true,
- "requires": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1",
- "util-deprecate": "^1.0.2"
- }
- },
- "postcss-value-parser": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
- "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "prettier": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
- "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "dev": true,
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "color-convert": "^2.0.1"
+ "p-limit": "^2.0.0"
}
},
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"requires": {
- "color-name": "~1.1.4"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
"dev": true
},
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"dev": true
- }
- }
- },
- "pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
- "dev": true
- },
- "pretty-ms": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-6.0.1.tgz",
- "integrity": "sha512-ke4njoVmlotekHlHyCZ3wI/c5AMT8peuHs8rKJqekj/oR5G8lND2dVpicFlUz5cbZgE290vvkMuDwfj/OcW1kw==",
- "dev": true,
- "requires": {
- "parse-ms": "^2.1.0"
- }
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "dev": true,
- "requires": {
- "asap": "~2.0.3"
+ },
+ "stack-utils": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "ws": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+ "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+ "dev": true,
+ "requires": {
+ "options": ">=0.0.5",
+ "ultron": "1.0.x"
+ }
+ },
+ "yargs": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
+ "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
}
},
- "promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
- "dev": true
- },
- "prompts": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
- "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+ "metro-babel-register": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.59.0.tgz",
+ "integrity": "sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg==",
"dev": true,
"requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
- "prop-types-exact": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz",
- "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==",
- "requires": {
- "has": "^1.0.3",
- "object.assign": "^4.1.0",
- "reflect.ownkeys": "^0.2.0"
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "escape-string-regexp": "^1.0.5"
}
},
- "proxy-addr": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
- "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+ "metro-babel-transformer": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz",
+ "integrity": "sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w==",
"dev": true,
"requires": {
- "forwarded": "~0.1.2",
- "ipaddr.js": "1.9.1"
+ "@babel/core": "^7.0.0",
+ "metro-source-map": "0.59.0"
}
},
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "dev": true
- },
- "public-encrypt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "metro-cache": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.59.0.tgz",
+ "integrity": "sha512-ryWNkSnpyADfRpHGb8BRhQ3+k8bdT/bsxMH2O0ntlZYZ188d8nnYWmxbRvFmEzToJxe/ol4uDw0tJFAaQsN8KA==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "jest-serializer": "^24.9.0",
+ "metro-core": "0.59.0",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4"
},
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
"dev": true
- }
- }
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- },
- "dependencies": {
- "pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "glob": "^7.1.3"
}
}
}
},
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- },
- "query-selector": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/query-selector/-/query-selector-1.0.9.tgz",
- "integrity": "sha1-kX/TG3N5tT/UQeU2r2R1UuAefp4="
- },
- "querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "dev": true
- },
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
- },
- "querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true
- },
- "raf": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
- "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
- "dev": true,
- "requires": {
- "performance-now": "^2.1.0"
- }
- },
- "railroad-diagrams": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
- "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
- "dev": true
- },
- "randexp": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
- "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
- "dev": true,
- "requires": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
- }
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true
- },
- "raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "metro-config": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.59.0.tgz",
+ "integrity": "sha512-MDsknFG9vZ4Nb5VR6OUDmGHaWz6oZg/FtE3up1zVBKPVRTXE1Z+k7zypnPtMXjMh3WHs/Sy4+wU1xnceE/zdnA==",
"dev": true,
"requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "cosmiconfig": "^5.0.5",
+ "jest-validate": "^24.9.0",
+ "metro": "0.59.0",
+ "metro-cache": "0.59.0",
+ "metro-core": "0.59.0"
},
"dependencies": {
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "jest-get-type": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
+ "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
"dev": true
},
- "http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "jest-validate": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
+ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
"dev": true,
"requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
}
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
}
}
},
- "raw-loader": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz",
- "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "schema-utils": "^2.0.1"
- }
- },
- "react": {
- "version": "16.9.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz",
- "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==",
+ "metro-core": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.59.0.tgz",
+ "integrity": "sha512-kb5LKvV5r2pqMEzGyTid8ai2mIjW13NMduQ8oBmfha7/EPTATcTQ//s+bkhAs1toQD8vqVvjAb0cPNjWQEmcmQ==",
"dev": true,
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2"
- }
- },
- "react-d3-cloud": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/react-d3-cloud/-/react-d3-cloud-0.7.0.tgz",
- "integrity": "sha512-Zx8WaHDLFqnwvo2JXwFOOzPMJiPWxmJrVfh7qS9b6Y0ltsy9G8taDBgAk3jDOYNxe32akbIIqWIJwuICES2XEw==",
- "requires": {
- "d3-cloud": "^1.2.5",
- "d3-scale": "^2.1.2",
- "d3-scale-chromatic": "^1.3.3",
- "d3-selection": "^1.3.2",
- "enzyme-adapter-react-16": "^1.6.0",
- "react-faux-dom": "^4.2.0"
+ "jest-haste-map": "^24.9.0",
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.59.0",
+ "wordwrap": "^1.0.0"
},
"dependencies": {
- "d3-array": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
- "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
- },
- "d3-color": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
- "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ "@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "dev": true,
+ "requires": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ }
},
- "d3-format": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz",
- "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ=="
+ "@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
},
- "d3-interpolate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
- "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "dev": true,
"requires": {
- "d3-color": "1"
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
}
},
- "d3-scale": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz",
- "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==",
+ "@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "dev": true,
"requires": {
- "d3-array": "^1.2.0",
- "d3-collection": "1",
- "d3-format": "1",
- "d3-interpolate": "1",
- "d3-time": "1",
- "d3-time-format": "2"
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
}
},
- "d3-time": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
- "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
},
- "d3-time-format": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
- "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
+ "@types/istanbul-reports": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
+ "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "dev": true,
"requires": {
- "d3-time": "1"
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
}
- }
- }
- },
- "react-devtools-core": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz",
- "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==",
- "dev": true,
- "requires": {
- "shell-quote": "^1.6.1",
- "ws": "^3.3.1"
- },
- "dependencies": {
- "ultron": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
- "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
+ },
+ "@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
"dev": true
},
- "ws": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
- "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "@types/yargs": {
+ "version": "13.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz",
+ "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==",
"dev": true,
"requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0",
- "ultron": "~1.1.0"
+ "@types/yargs-parser": "*"
}
- }
- }
- },
- "react-dom": {
- "version": "16.9.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
- "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.15.0"
- }
- },
- "react-faux-dom": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/react-faux-dom/-/react-faux-dom-4.5.0.tgz",
- "integrity": "sha512-T03fyZw/He4EYPqQpK5KJ9BQXNNMMgUo5DiwWkFG5wlpMDuiiYc4Q8WfeODjl3g2S2OBqy3+0VUr44sZkqz2Sw==",
- "requires": {
- "create-react-class": "^15.6.3",
- "hoist-non-react-statics": "^3.3.0",
- "query-selector": "^1.0.9",
- "style-attr": "^1.0.1"
- }
- },
- "react-hot-loader": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz",
- "integrity": "sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA==",
- "dev": true,
- "requires": {
- "fast-levenshtein": "^2.0.6",
- "global": "^4.3.0",
- "hoist-non-react-statics": "^3.3.0",
- "loader-utils": "^1.1.0",
- "prop-types": "^15.6.1",
- "react-lifecycles-compat": "^3.0.4",
- "shallowequal": "^1.1.0",
- "source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true
- }
- }
- },
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "react-lifecycles-compat": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
- "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
- "dev": true
- },
- "react-native": {
- "version": "0.61.5",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.61.5.tgz",
- "integrity": "sha512-MXqE3NoGO0T3dUKIKkIppijBhRRMpfN6ANbhMXHDuyfA+fSilRWgCwYgR/YNCC7ntECoJYikKaNTUBB0DeQy6Q==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.0.0",
- "@react-native-community/cli": "^3.0.0",
- "@react-native-community/cli-platform-android": "^3.0.0",
- "@react-native-community/cli-platform-ios": "^3.0.0",
- "abort-controller": "^3.0.0",
- "art": "^0.10.0",
- "base64-js": "^1.1.2",
- "connect": "^3.6.5",
- "create-react-class": "^15.6.3",
- "escape-string-regexp": "^1.0.5",
- "event-target-shim": "^5.0.1",
- "fbjs": "^1.0.0",
- "fbjs-scripts": "^1.1.0",
- "hermes-engine": "^0.2.1",
- "invariant": "^2.2.4",
- "jsc-android": "^245459.0.0",
- "metro-babel-register": "^0.56.0",
- "metro-react-native-babel-transformer": "^0.56.0",
- "metro-source-map": "^0.56.0",
- "nullthrows": "^1.1.0",
- "pretty-format": "^24.7.0",
- "promise": "^7.1.1",
- "prop-types": "^15.7.2",
- "react-devtools-core": "^3.6.3",
- "react-refresh": "^0.4.0",
- "regenerator-runtime": "^0.13.2",
- "scheduler": "0.15.0",
- "stacktrace-parser": "^0.1.3",
- "whatwg-fetch": "^3.0.0"
- },
- "dependencies": {
- "@jest/types": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
- "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^15.0.0",
- "chalk": "^3.0.0"
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
},
"dependencies": {
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "is-extendable": "^0.1.0"
}
}
}
},
- "@react-native-community/cli": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-3.2.1.tgz",
- "integrity": "sha512-bZ/bfZ+9r1gQSxp6t7+00DcpC6vmbVYSvzUCFM/yo5k8bhsDdcy8aocscIaXXVGG+v9Edri/Q7hH9ks7L18/Rg==",
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
+ "optional": true,
"requires": {
- "@hapi/joi": "^15.0.3",
- "@react-native-community/cli-debugger-ui": "^3.0.0",
- "@react-native-community/cli-tools": "^3.0.0",
- "@react-native-community/cli-types": "^3.0.0",
- "chalk": "^2.4.2",
- "command-exists": "^1.2.8",
- "commander": "^2.19.0",
- "compression": "^1.7.1",
- "connect": "^3.6.5",
- "cosmiconfig": "^5.1.0",
- "deepmerge": "^3.2.0",
- "didyoumean": "^1.2.1",
- "envinfo": "^7.1.0",
- "errorhandler": "^1.5.0",
- "execa": "^1.0.0",
- "find-up": "^4.1.0",
- "fs-extra": "^7.0.1",
- "glob": "^7.1.1",
- "graceful-fs": "^4.1.3",
- "inquirer": "^3.0.6",
- "lodash": "^4.17.5",
- "metro": "^0.56.0",
- "metro-config": "^0.56.0",
- "metro-core": "^0.56.0",
- "metro-react-native-babel-transformer": "^0.56.0",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "morgan": "^1.9.0",
- "node-notifier": "^5.2.1",
- "open": "^6.2.0",
- "ora": "^3.4.0",
- "plist": "^3.0.0",
- "pretty-format": "^25.1.0",
- "semver": "^6.3.0",
- "serve-static": "^1.13.1",
- "shell-quote": "1.6.1",
- "strip-ansi": "^5.2.0",
- "sudo-prompt": "^9.0.0",
- "wcwidth": "^1.0.1",
- "ws": "^1.1.0"
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "pretty-format": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
- "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "@jest/types": "^25.5.0",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^16.12.0"
+ "is-buffer": "^1.1.5"
}
}
}
},
- "@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
+ "jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
}
},
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
"dev": true,
"requires": {
- "color-convert": "^2.0.1"
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
}
},
- "chardet": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
- "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
- "dev": true
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
"dev": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "@jest/types": "^24.9.0"
}
},
- "cli-width": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
- "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
"dev": true
},
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
"dev": true,
"requires": {
- "color-name": "~1.1.4"
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
}
},
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "deepmerge": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
- "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
- "dev": true
- },
- "external-editor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
- "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
"dev": true,
"requires": {
- "chardet": "^0.4.0",
- "iconv-lite": "^0.4.17",
- "tmp": "^0.0.33"
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
}
},
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
}
},
- "fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "minimist": "^1.2.5"
}
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "inquirer": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
- "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^2.0.4",
- "figures": "^2.0.0",
- "lodash": "^4.3.0",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rx-lite": "^4.0.8",
- "rx-lite-aggregates": "^4.0.8",
- "string-width": "^2.1.0",
- "strip-ansi": "^4.0.0",
- "through": "^2.3.6"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
+ "remove-trailing-separator": "^1.0.1"
}
},
- "is-fullwidth-code-point": {
+ "slash": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"dev": true
},
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
+ "stack-utils": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
+ "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ }
},
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "has-flag": "^3.0.0"
}
},
- "mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "metro-inspector-proxy": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.59.0.tgz",
+ "integrity": "sha512-hPeAuQcofTOH0F+2GEZqWkvkVY1/skezSSlMocDQDaqds+Kw6JgdA7FlZXxnKmQ/jYrWUzff/pl8SUCDwuYthQ==",
+ "dev": true,
+ "requires": {
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "ws": "^1.1.5",
+ "yargs": "^14.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
- "node-notifier": {
- "version": "5.4.5",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz",
- "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==",
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
- "growly": "^1.3.0",
- "is-wsl": "^1.1.0",
- "semver": "^5.5.0",
- "shellwords": "^0.1.1",
- "which": "^1.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
}
},
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "locate-path": "^3.0.0"
}
},
- "pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "dependencies": {
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- }
- },
- "@types/yargs": {
- "version": "13.0.11",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz",
- "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- }
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
}
},
- "restore-cursor": {
+ "ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
+ "p-limit": "^2.0.0"
}
},
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
+ "emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
+ "strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
@@ -16529,23 +36294,6 @@
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- }
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
}
},
"ws": {
@@ -16557,2005 +36305,1700 @@
"options": ">=0.0.5",
"ultron": "1.0.x"
}
+ },
+ "yargs": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
+ "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
}
}
},
- "react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
- "dev": true
- },
- "react-test-renderer": {
- "version": "16.9.0",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz",
- "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==",
- "requires": {
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "react-is": "^16.9.0",
- "scheduler": "^0.15.0"
- }
- },
- "react-wordcloud": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/react-wordcloud/-/react-wordcloud-1.2.7.tgz",
- "integrity": "sha512-pyXvL8Iu2J258Qk2/kAwY23dIVhNpMC3dnvbXRkw5+Ert5EkJWwnwVjs9q8CmX38NWbfCKhGmpjuumBoQEtniw==",
+ "metro-minify-uglify": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.59.0.tgz",
+ "integrity": "sha512-7IzVgCVWZMymgZ/quieg/9v5EQ8QmZWAgDc86Zp9j0Vy6tQTjUn6jlU+YAKW3mfMEjMr6iIUzCD8YklX78tFAw==",
+ "dev": true,
"requires": {
- "d3-array": "^2.5.0",
- "d3-cloud": "^1.2.5",
- "d3-dispatch": "^1.0.6",
- "d3-scale": "^3.2.1",
- "d3-scale-chromatic": "^1.5.0",
- "d3-selection": "1.4.2",
- "d3-transition": "^1.3.2",
- "lodash.clonedeep": "^4.5.0",
- "lodash.debounce": "^4.0.8",
- "resize-observer-polyfill": "^1.5.1",
- "seedrandom": "^3.0.5",
- "tippy.js": "^6.2.6"
+ "uglify-es": "^3.1.9"
}
},
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "metro-react-native-babel-preset": {
+ "version": "0.63.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.63.0.tgz",
+ "integrity": "sha512-iTM6V/hzqTd2dg0LHtD4f/TU+d4A7MFiMPUmIYDb0OZmCq6avfcxHQTXk/ZNbAr+eRoN/owx9OIkjt/CvG4vUA==",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
}
},
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "metro-react-native-babel-transformer": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz",
+ "integrity": "sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ==",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "@babel/core": "^7.0.0",
+ "babel-preset-fbjs": "^3.3.0",
+ "metro-babel-transformer": "0.59.0",
+ "metro-react-native-babel-preset": "0.59.0",
+ "metro-source-map": "0.59.0"
},
"dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "metro-react-native-babel-preset": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz",
+ "integrity": "sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg==",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0"
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-assign": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
}
}
}
},
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "metro-resolver": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.59.0.tgz",
+ "integrity": "sha512-lbgiumnwoVosffEI96z0FGuq1ejTorHAj3QYUPmp5dFMfitRxLP7Wm/WP9l4ZZjIptxTExsJwuEff1SLRCPD9w==",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "absolute-path": "^0.0.0"
}
},
- "readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "metro-source-map": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.59.0.tgz",
+ "integrity": "sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.59.0",
+ "ob1": "0.59.0",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
}
},
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "metro-symbolicate": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz",
+ "integrity": "sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw==",
"dev": true,
"requires": {
- "resolve": "^1.1.6"
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.59.0",
+ "source-map": "^0.5.6",
+ "through2": "^2.0.1",
+ "vlq": "^1.0.0"
}
},
- "reflect.ownkeys": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz",
- "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA="
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "regenerate-unicode-properties": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
- "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
+ "micromatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"requires": {
- "regenerate": "^1.4.0"
+ "braces": "^3.0.1",
+ "picomatch": "^2.2.3"
}
},
- "regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
+ "mime": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
+ "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
"dev": true
},
- "regenerator-transform": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
- "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
+ "mime-db": {
+ "version": "1.50.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
+ "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
+ "dev": true
},
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "mime-types": {
+ "version": "2.1.33",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
+ "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
+ "mime-db": "1.50.0"
}
},
- "regexp.prototype.flags": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
- "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true
+ },
+ "min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
"dev": true,
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "dom-walk": "^0.1.0"
}
},
- "regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"dev": true
},
- "regexpu-core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
- "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
+ "mini-svg-data-uri": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.3.tgz",
+ "integrity": "sha512-gSfqpMRC8IxghvMcxzzmMnWpXAChSA+vy4cia33RgerMS8Fex95akUyQZPbxJJmeBGiGmK7n/1OpUX8ksRjIdA==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
- "regenerate": "^1.4.0",
- "regenerate-unicode-properties": "^8.2.0",
- "regjsgen": "^0.5.1",
- "regjsparser": "^0.6.4",
- "unicode-match-property-ecmascript": "^1.0.4",
- "unicode-match-property-value-ecmascript": "^1.2.0"
+ "brace-expansion": "^1.1.7"
}
},
- "regjsgen": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
- "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
- "regjsparser": {
- "version": "0.6.9",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz",
- "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==",
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
"dev": true,
"requires": {
- "jsesc": "~0.5.0"
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
},
"dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
}
}
},
- "remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
- }
- },
- "remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
- "dev": true,
- "requires": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true
},
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "moo": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz",
+ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==",
"dev": true
},
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
- "replace-homedir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- }
- }
+ "nan": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
+ "dev": true,
+ "optional": true
},
- "request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
+ "nanoid": {
+ "version": "3.1.30",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+ "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
- "lodash": "^4.17.19"
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
}
},
- "request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "nearley": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
+ "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
"dev": true,
"requires": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
+ "commander": "^2.19.0",
+ "moo": "^0.5.0",
+ "railroad-diagrams": "^1.0.0",
+ "randexp": "0.4.6"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ }
}
},
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
"dev": true
},
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
- "resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ "nocache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
+ "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==",
+ "dev": true
},
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "node-fetch": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz",
+ "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==",
"dev": true,
"requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "whatwg-url": "^5.0.0"
+ },
+ "dependencies": {
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true
+ },
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "dev": true,
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ }
}
},
- "resolve-alpn": {
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "dev": true
+ },
+ "node-modules-regexp": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz",
- "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
"dev": true
},
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "node-notifier": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
+ "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
"dev": true,
+ "optional": true,
"requires": {
- "resolve-from": "^5.0.0"
+ "growly": "^1.3.0",
+ "is-wsl": "^2.2.0",
+ "semver": "^7.3.2",
+ "shellwords": "^0.1.1",
+ "uuid": "^8.3.0",
+ "which": "^2.0.2"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
}
},
- "resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- }
+ "node-releases": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz",
+ "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==",
+ "dev": true
},
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
"dev": true
},
- "resolve-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
- "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
- "value-or-function": "^3.0.0"
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
- "responselike": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
- "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
- "dev": true,
- "requires": {
- "lowercase-keys": "^2.0.0"
- }
+ "normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true
},
- "resq": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.0.tgz",
- "integrity": "sha512-hCUd0xMalqtPDz4jXIqs0M5Wnv/LZXN8h7unFOo4/nvExT9dDPbhwd3udRxLlp0HgBnHcV009UlduE9NZi7A6w==",
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1"
+ "path-key": "^2.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ }
}
},
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "nth-check": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
+ "boolbase": "^1.0.0"
}
},
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
"dev": true
},
- "retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+ "nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
"dev": true
},
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "ob1": {
+ "version": "0.59.0",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.59.0.tgz",
+ "integrity": "sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ==",
"dev": true
},
- "rgb2hex": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.1.10.tgz",
- "integrity": "sha512-vKz+kzolWbL3rke/xeTE2+6vHmZnNxGyDnaVW4OckntAIcc7DcZzWkQSfxMDwqHS8vhgySnIFyBUH7lIk6PxvQ==",
- "dev": true
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
}
},
- "ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
+ "object-inspect": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+ "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "dev": true
},
- "rst-selector-parser": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
- "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dev": true,
"requires": {
- "lodash.flattendeep": "^4.4.0",
- "nearley": "^2.7.10"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
- "rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
- "dev": true
- },
- "run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true
},
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
- "queue-microtask": "^1.2.2"
+ "isobject": "^3.0.0"
}
},
- "run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
"dev": true,
"requires": {
- "aproba": "^1.1.1"
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
}
},
- "rx-lite": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
- "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
- "dev": true
- },
- "rx-lite-aggregates": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
- "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "object.entries": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"requires": {
- "rx-lite": "*"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "object.fromentries": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex": {
+ "object.hasown": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
"dev": true,
"requires": {
- "ret": "~0.1.10"
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "sane": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
- "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
+ "isobject": "^3.0.1"
}
},
- "sass": {
- "version": "1.32.8",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz",
- "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==",
+ "object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
"dev": true,
"requires": {
- "chokidar": ">=2.0.0 <4.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "sass-loader": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.3.tgz",
- "integrity": "sha512-fOwsP98ac1VMme+V3+o0HaaMHp8Q/C9P+MUazLFVi3Jl7ORGHQXL1XeRZt3zLSGZQQPC8xE42Y2WptItvGjDQg==",
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"dev": true,
"requires": {
- "klona": "^1.1.2",
- "loader-utils": "^2.0.0",
- "neo-async": "^2.6.2",
- "schema-utils": "^2.7.0",
- "semver": "^7.3.2"
- },
- "dependencies": {
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
- "dev": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- }
+ "ee-first": "1.1.1"
}
},
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true
},
- "saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
- "xmlchars": "^2.2.0"
+ "wrappy": "1"
}
},
- "scheduler": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
- "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "mimic-fn": "^2.1.0"
}
},
- "schema-utils": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
- "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
"dev": true,
"requires": {
- "@types/json-schema": "^7.0.5",
- "ajv": "^6.12.4",
- "ajv-keywords": "^3.5.2"
+ "is-wsl": "^1.1.0"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ }
}
},
- "seedrandom": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
- "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
},
- "select-hose": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
- "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
"dev": true
},
- "selenium-standalone": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.23.0.tgz",
- "integrity": "sha512-6dVLSEvbixd/MRSEmrcRQD8dmABrzNsxRqroKFQY+RVzm1JVPgGHIlo6qJzG6akfjc2V8SadHslE6lN4BFVM3w==",
+ "opts": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
+ "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
+ "dev": true
+ },
+ "ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
"dev": true,
"requires": {
- "commander": "^2.20.3",
- "cross-spawn": "^7.0.3",
- "debug": "^4.3.1",
- "got": "^11.8.0",
- "lodash.mapvalues": "^4.6.0",
- "lodash.merge": "^4.6.2",
- "minimist": "^1.2.5",
- "mkdirp": "^1.0.4",
- "progress": "2.0.3",
- "tar-stream": "2.1.4",
- "which": "^2.0.2",
- "yauzl": "^2.10.0"
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
},
"dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "color-convert": "^2.0.1"
}
},
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "ms": "2.1.2"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "color-name": "~1.1.4"
}
},
- "tar-stream": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz",
- "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==",
- "dev": true,
- "requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- }
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "has-flag": "^4.0.0"
}
}
}
},
- "selfsigned": {
- "version": "1.10.8",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
- "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
- "dev": true,
- "requires": {
- "node-forge": "^0.10.0"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
},
- "semver-greatest-satisfied-range": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
- "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
- "dev": true,
- "requires": {
- "sver-compat": "^1.5.0"
- }
+ "p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true
},
- "send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- }
- }
+ "p-each-series": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
+ "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
+ "dev": true
},
- "serialize-error": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz",
- "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==",
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-iteration": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz",
+ "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
- "type-fest": "^0.8.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
+ "p-try": "^2.0.0"
}
},
- "serialize-javascript": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
- "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "randombytes": "^2.1.0"
+ "p-limit": "^2.2.0"
}
},
- "serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "dependencies": {
- "http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- }
+ "callsites": "^3.0.0"
}
},
- "serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
+ "error-ex": "^1.2.0"
}
},
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"dev": true
},
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
"dev": true
},
- "setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
},
- "sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "parse5": "^6.0.1"
}
},
- "shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"dev": true
},
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
},
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
- "shell-quote": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
- "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
- "dev": true,
- "requires": {
- "array-filter": "~0.0.0",
- "array-map": "~0.0.0",
- "array-reduce": "~0.0.0",
- "jsonify": "~0.0.0"
- },
- "dependencies": {
- "array-filter": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
- "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
- "dev": true
- }
- }
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
},
- "shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
},
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
- "simple-plist": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz",
- "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==",
- "dev": true,
- "requires": {
- "bplist-creator": "0.0.8",
- "bplist-parser": "0.2.0",
- "plist": "^3.0.1"
- }
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
},
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
- "slice-ansi": {
+ "performance-now": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- }
- }
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
},
- "slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "pinkie": "^2.0.0"
}
},
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
"dev": true,
"requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
+ "node-modules-regexp": "^1.0.0"
}
},
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
+ "find-up": "^4.0.0"
}
},
- "sockjs": {
- "version": "0.3.21",
- "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz",
- "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==",
+ "plist": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
+ "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
"dev": true,
"requires": {
- "faye-websocket": "^0.11.3",
- "uuid": "^3.4.0",
- "websocket-driver": "^0.7.4"
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^9.0.7"
}
},
- "sockjs-client": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz",
- "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==",
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
"dev": true,
"requires": {
- "debug": "^3.2.6",
- "eventsource": "^1.0.7",
- "faye-websocket": "^0.11.3",
- "inherits": "^2.0.4",
- "json3": "^3.3.3",
- "url-parse": "^1.5.1"
+ "ansi-cyan": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "arr-diff": "^1.0.1",
+ "arr-union": "^2.0.1",
+ "extend-shallow": "^1.1.2"
},
"dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "arr-flatten": "^1.0.1",
+ "array-slice": "^0.2.3"
}
},
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
"dev": true
- }
- }
- },
- "source-list-map": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-loader": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz",
- "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==",
- "dev": true,
- "requires": {
- "async": "^2.5.0",
- "loader-utils": "^1.1.0"
- },
- "dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
"dev": true,
"requires": {
- "lodash": "^4.17.14"
+ "kind-of": "^1.1.0"
}
+ },
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true
}
}
},
- "source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
},
- "source-map-support": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "postcss": {
+ "version": "8.3.9",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz",
+ "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "nanoid": "^3.1.28",
+ "picocolors": "^0.2.1",
+ "source-map-js": "^0.6.2"
},
"dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
"dev": true
}
}
},
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "sparkles": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
- "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
- "dev": true
- },
- "spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "postcss-url": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz",
+ "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==",
"dev": true,
"requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "make-dir": "~3.1.0",
+ "mime": "~2.5.2",
+ "minimatch": "~3.0.4",
+ "xxhashjs": "~0.2.2"
}
},
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
- "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
+ "prettier": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz",
+ "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
"dev": true
},
- "spdy": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
- "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
- "dev": true,
- "requires": {
- "debug": "^4.1.0",
- "handle-thing": "^2.0.0",
- "http-deceiver": "^1.2.7",
- "select-hose": "^2.0.0",
- "spdy-transport": "^3.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
}
},
- "spdy-transport": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
- "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "pretty-format": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+ "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
"dev": true,
"requires": {
- "debug": "^4.1.0",
- "detect-node": "^2.0.4",
- "hpack.js": "^2.1.6",
- "obuf": "^1.1.2",
- "readable-stream": "^3.0.6",
- "wbuf": "^1.7.3"
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
},
"dependencies": {
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "ms": "2.1.2"
+ "color-convert": "^2.0.1"
}
},
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "color-name": "~1.1.4"
}
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
}
}
},
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "pretty-ms": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
+ "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.0"
+ "parse-ms": "^2.1.0"
}
},
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "printj": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
+ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
"dev": true
},
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "ssri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
- "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
- "dev": true,
- "requires": {
- "minipass": "^3.1.1"
- }
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
},
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
- "stack-utils": {
+ "progress": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"dev": true,
"requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
+ "asap": "~2.0.3"
}
},
- "stacktrace-parser": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
- "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"dev": true,
"requires": {
- "type-fest": "^0.7.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
- "dev": true
- }
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
}
},
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
+ "prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
}
},
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
- "stream-browserify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
- "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
},
- "stream-buffers": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
- "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
+ "psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
"dev": true
},
- "stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
"end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
+ "once": "^1.3.1"
}
},
- "stream-exhaust": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
- "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
- "stream-http": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dev": true,
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
+ "puppeteer-core": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz",
+ "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4.3.1",
+ "devtools-protocol": "0.0.901419",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.0",
+ "node-fetch": "2.6.1",
+ "pkg-dir": "4.2.0",
+ "progress": "2.0.1",
+ "proxy-from-env": "1.1.0",
+ "rimraf": "3.0.2",
+ "tar-fs": "2.0.0",
+ "unbzip2-stream": "1.3.3",
+ "ws": "7.4.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "devtools-protocol": {
+ "version": "0.0.901419",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz",
+ "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==",
+ "dev": true
+ },
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
+ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
+ "dev": true
+ },
+ "ws": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "dev": true,
+ "requires": {}
+ }
}
},
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "query-selector": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/query-selector/-/query-selector-1.0.9.tgz",
+ "integrity": "sha1-kX/TG3N5tT/UQeU2r2R1UuAefp4="
+ },
+ "query-selector-shadow-dom": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz",
+ "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==",
"dev": true
},
- "string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
},
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
+ "quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true
},
- "string.prototype.matchall": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz",
- "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==",
+ "raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"dev": true,
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "has-symbols": "^1.0.1",
- "internal-slot": "^1.0.3",
- "regexp.prototype.flags": "^1.3.1",
- "side-channel": "^1.0.4"
+ "performance-now": "^2.1.0"
}
},
- "string.prototype.trim": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz",
- "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==",
+ "railroad-diagrams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
+ "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
+ "dev": true
+ },
+ "randexp": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
+ "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
"dev": true,
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2"
+ "discontinuous-range": "1.0.0",
+ "ret": "~0.1.10"
}
},
- "string.prototype.trimend": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "safe-buffer": "^5.1.0"
}
},
- "string.prototype.trimstart": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true
+ },
+ "react": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz",
+ "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==",
"requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2"
}
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
+ "react-d3-cloud": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/react-d3-cloud/-/react-d3-cloud-1.0.5.tgz",
+ "integrity": "sha512-zKrJY+apmhw+J1se64vFW4Cr7y4W1sSYQLjQXHc9JaxiwhBOK1bikVui1IeOy4UHbUqis0YPQUE+9BBL4O8K9g==",
"requires": {
- "safe-buffer": "~5.1.0"
+ "d3-cloud": "^1.2.5",
+ "d3-scale": "^3.3.0",
+ "d3-scale-chromatic": "^2.0.0",
+ "d3-selection": "^2.0.0",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.2.0",
+ "react-faux-dom": "^4.5.0"
+ },
+ "dependencies": {
+ "d3-scale": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz",
+ "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==",
+ "requires": {
+ "d3-array": "^2.3.0",
+ "d3-format": "1 - 2",
+ "d3-interpolate": "1.2.0 - 2",
+ "d3-time": "^2.1.1",
+ "d3-time-format": "2 - 3"
+ }
+ },
+ "d3-scale-chromatic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz",
+ "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==",
+ "requires": {
+ "d3-color": "1 - 2",
+ "d3-interpolate": "1 - 2"
+ }
+ },
+ "d3-selection": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz",
+ "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA=="
+ },
+ "d3-time": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz",
+ "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==",
+ "requires": {
+ "d3-array": "2"
+ }
+ }
}
},
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "react-devtools-core": {
+ "version": "4.20.1",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.20.1.tgz",
+ "integrity": "sha512-HBcLfLi2R6VxlWFF2i5lONYlr3KLh324RPFeApZ3G6GGaJrcS/qtk9M/iESw7fRTlgPHEg+A4j6e1j9oXpvi5w==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.0"
+ "shell-quote": "^1.6.1",
+ "ws": "^7"
}
},
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
+ "react-dom": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
+ "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
+ "peer": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.15.0"
}
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
+ "react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
},
- "style-attr": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/style-attr/-/style-attr-1.3.0.tgz",
- "integrity": "sha512-srFr54gzEZoy73WgYfnbxCAtNCzF0Hn5RGzK7gi/0G6ttZd9v3WZFGY4ed5ABr43dbGjPNr4T46geUxxUP9i6w=="
+ "react-faux-dom": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/react-faux-dom/-/react-faux-dom-4.5.0.tgz",
+ "integrity": "sha512-T03fyZw/He4EYPqQpK5KJ9BQXNNMMgUo5DiwWkFG5wlpMDuiiYc4Q8WfeODjl3g2S2OBqy3+0VUr44sZkqz2Sw==",
+ "requires": {
+ "create-react-class": "^15.6.3",
+ "hoist-non-react-statics": "^3.3.0",
+ "query-selector": "^1.0.9",
+ "style-attr": "^1.0.1"
+ }
},
- "style-loader": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
- "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
+ "react-hot-loader": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz",
+ "integrity": "sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA==",
"dev": true,
"requires": {
+ "fast-levenshtein": "^2.0.6",
+ "global": "^4.3.0",
+ "hoist-non-react-statics": "^3.3.0",
"loader-utils": "^1.1.0",
- "schema-utils": "^1.0.0"
+ "prop-types": "^15.6.1",
+ "react-lifecycles-compat": "^3.0.4",
+ "shallowequal": "^1.1.0",
+ "source-map": "^0.7.3"
},
"dependencies": {
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true
}
}
},
- "sudo-prompt": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
- "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
"dev": true
},
- "suffix": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz",
- "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=",
+ "react-refresh": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
+ "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
"dev": true
},
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "react-shallow-renderer": {
+ "version": "16.14.1",
+ "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz",
+ "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "object-assign": "^4.1.1",
+ "react-is": "^16.12.0 || ^17.0.0"
}
},
- "supports-hyperlinks": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz",
- "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==",
+ "react-wordcloud": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/react-wordcloud/-/react-wordcloud-1.2.7.tgz",
+ "integrity": "sha512-pyXvL8Iu2J258Qk2/kAwY23dIVhNpMC3dnvbXRkw5+Ert5EkJWwnwVjs9q8CmX38NWbfCKhGmpjuumBoQEtniw==",
+ "requires": {
+ "d3-array": "^2.5.0",
+ "d3-cloud": "^1.2.5",
+ "d3-dispatch": "^1.0.6",
+ "d3-scale": "^3.2.1",
+ "d3-scale-chromatic": "^1.5.0",
+ "d3-selection": "1.4.2",
+ "d3-transition": "^1.3.2",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "resize-observer-polyfill": "^1.5.1",
+ "seedrandom": "^3.0.5",
+ "tippy.js": "^6.2.6"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
},
"dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "has-flag": "^4.0.0"
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
}
}
}
},
- "sver-compat": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
- "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
- "dev": true,
- "requires": {
- "es6-iterator": "^2.0.1",
- "es6-symbol": "^3.1.1"
- }
- },
- "symbol-observable": {
+ "read-pkg-up": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
- "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
- "dev": true
- },
- "symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "table": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
- "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "ajv": "^6.10.2",
- "lodash": "^4.17.14",
- "slice-ansi": "^2.1.0",
- "string-width": "^3.0.0"
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "pinkie-promise": "^2.0.0"
}
}
}
},
- "tapable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
- "dev": true
- },
- "tar": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
- "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
- "dev": true,
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- }
- },
- "tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
"inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
}
},
- "temp": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
- "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "readdir-glob": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz",
+ "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==",
"dev": true,
"requires": {
- "os-tmpdir": "^1.0.0",
- "rimraf": "~2.2.6"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
- "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
- "dev": true
- }
+ "minimatch": "^3.0.4"
}
},
- "terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"requires": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
+ "picomatch": "^2.2.1"
}
},
- "terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"dev": true,
"requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "resolve": "^1.1.6"
}
},
- "terser-webpack-plugin": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
- "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+ "recursive-copy": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.13.tgz",
+ "integrity": "sha512-BjmE6R/dOImStEku+017L3Z0I6u/lA+SVr1sySWbTLjmQKDTESNmJ9WBZP8wbN5FuvqNvSYvRKA/IKQhAjqnpQ==",
"dev": true,
"requires": {
- "cacache": "^12.0.2",
- "find-cache-dir": "^2.1.0",
- "is-wsl": "^1.1.0",
- "schema-utils": "^1.0.0",
- "serialize-javascript": "^4.0.0",
- "source-map": "^0.6.1",
- "terser": "^4.1.2",
- "webpack-sources": "^1.4.0",
- "worker-farm": "^1.7.0"
+ "del": "^2.2.0",
+ "errno": "^0.1.2",
+ "graceful-fs": "^4.1.4",
+ "junk": "^1.0.1",
+ "maximatch": "^0.1.0",
+ "mkdirp": "^0.5.1",
+ "pify": "^2.3.0",
+ "promise": "^7.0.1",
+ "slash": "^1.0.0"
},
"dependencies": {
- "cacache": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
- "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
- "figgy-pudding": "^3.5.1",
- "glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
- }
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
- }
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
@@ -18565,1822 +38008,2215 @@
"minimist": "^1.2.5"
}
},
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "schema-utils": {
+ "slash": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
- },
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "ssri": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1"
- }
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
"dev": true
}
}
},
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "recursive-readdir": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
+ "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "dev": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "requires": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
+ "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+ "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+ "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
+ "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^9.0.0",
+ "regjsgen": "^0.5.2",
+ "regjsparser": "^0.7.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.0.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
+ "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
"dev": true,
"requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
}
},
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
- "throat": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
- "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+ "repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
"dev": true
},
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
+ "resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
"dev": true,
"requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
}
},
- "through2-filter": {
+ "resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
- "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
"requires": {
- "through2": "~2.0.0",
- "xtend": "~4.0.0"
+ "resolve-from": "^5.0.0"
}
},
- "thunky": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
- "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
- "time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true
},
- "timers-browserify": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
- "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "responselike": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
+ "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
"dev": true,
"requires": {
- "setimmediate": "^1.0.4"
+ "lowercase-keys": "^2.0.0"
}
},
- "tippy.js": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.1.tgz",
- "integrity": "sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww==",
+ "resq": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.1.tgz",
+ "integrity": "sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA==",
+ "dev": true,
"requires": {
- "@popperjs/core": "^2.8.3"
+ "fast-deep-equal": "^2.0.1"
+ },
+ "dependencies": {
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ }
}
},
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
"requires": {
- "os-tmpdir": "~1.0.2"
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
}
},
- "tmpl": {
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true
},
- "to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
+ "rgb2hex": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz",
+ "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"requires": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
+ "glob": "^7.1.3"
}
},
- "to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
- "dev": true
+ "rollup": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz",
+ "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
},
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "rollup-plugin-clear": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-clear/-/rollup-plugin-clear-2.0.7.tgz",
+ "integrity": "sha512-Hg8NC3JcJBO1ofgyQC0IACpyKn/yhHPGZ3C7R3ubNGWUXy9JXHQrewk4J4hVcZznw6SOKayLsaNae596Rwt8Vg==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^2.6.2"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "rollup-plugin-command": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-command/-/rollup-plugin-command-1.1.3.tgz",
+ "integrity": "sha512-9nIcP5mgVYWGU7x/6ufTgtqI4vl5vvsYs6fTTil91NX53EIPcim42FXmq1TPdZRFJbUM1ikrg05clahPxObL1g==",
"dev": true
},
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "rollup-plugin-livereload": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz",
+ "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "livereload": "^0.9.1"
+ }
+ },
+ "rollup-plugin-re": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz",
+ "integrity": "sha1-/hdHBO1ZzahMrwK9ATtYLm/apPY=",
+ "dev": true,
+ "requires": {
+ "magic-string": "^0.16.0",
+ "rollup-pluginutils": "^2.0.1"
},
"dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "magic-string": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz",
+ "integrity": "sha1-lw67DacZMwEoX7GqZQ85vdgetFo=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "vlq": "^0.2.1"
}
+ },
+ "vlq": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
+ "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
+ "dev": true
}
}
},
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "rollup-plugin-sass": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-1.2.9.tgz",
+ "integrity": "sha512-ShI0T6tQxvM0B/njgZ35/1RuiNZTo9LtrUYFRupNokmXbresGb6RvYnkQvWbq4a5UBIp57VJ+cjPcsJKthXV8Q==",
"dev": true,
"requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
+ "@rollup/pluginutils": "^3.1.0",
+ "resolve": "^1.5.0",
+ "sass": "^1.7.2"
}
},
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
}
},
- "to-string-loader": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/to-string-loader/-/to-string-loader-1.1.6.tgz",
- "integrity": "sha512-VNg62//PS1WfNwrK3n7t6wtK5Vdtx/qeYLLEioW46VMlYUwAYT6wnfB+OwS2FMTCalIHu0tk79D3RXX8ttmZTQ==",
+ "rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
"dev": true,
"requires": {
- "loader-utils": "^1.0.0"
+ "estree-walker": "^0.6.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+ "dev": true
+ }
}
},
- "to-through": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
- "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
+ "rst-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
"dev": true,
"requires": {
- "through2": "^2.0.3"
+ "lodash.flattendeep": "^4.4.0",
+ "nearley": "^2.7.10"
}
},
- "toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
"dev": true
},
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "*"
}
},
- "tr46": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
- "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
+ "rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"requires": {
- "punycode": "^2.1.1"
+ "tslib": "^1.9.0"
}
},
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
- "ts-jest": {
- "version": "26.5.4",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.4.tgz",
- "integrity": "sha512-I5Qsddo+VTm94SukBJ4cPimOoFZsYTeElR2xy6H2TOVs+NsvgYglW8KuQgKoApOKuaU/Ix/vrF9ebFZlb5D2Pg==",
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
- "bs-logger": "0.x",
- "buffer-from": "1.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^26.1.0",
- "json5": "2.x",
- "lodash": "4.x",
- "make-error": "1.x",
- "mkdirp": "1.x",
- "semver": "7.x",
- "yargs-parser": "20.x"
- },
- "dependencies": {
- "yargs-parser": {
- "version": "20.2.7",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
- "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==",
- "dev": true
- }
+ "ret": "~0.1.10"
}
},
- "ts-loader": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz",
- "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==",
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sane": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
"dev": true,
"requires": {
- "chalk": "^2.3.0",
- "enhanced-resolve": "^4.0.0",
- "loader-utils": "^1.0.2",
- "micromatch": "^4.0.0",
- "semver": "^6.0.0"
+ "@cnakazawa/watch": "^1.0.3",
+ "anymatch": "^2.0.0",
+ "capture-exit": "^2.0.0",
+ "exec-sh": "^0.3.2",
+ "execa": "^1.0.0",
+ "fb-watchman": "^2.0.0",
+ "micromatch": "^3.1.4",
+ "minimist": "^1.1.1",
+ "walker": "~1.0.5"
},
"dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
"requires": {
- "fill-range": "^7.0.1"
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
- "to-regex-range": "^5.0.1"
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
}
},
"is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
},
"micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.0.5"
+ "remove-trailing-separator": "^1.0.1"
}
},
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
"to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
- "is-number": "^7.0.0"
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
}
}
}
},
- "ts-node": {
- "version": "8.10.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
- "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
+ "sass": {
+ "version": "1.43.2",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.2.tgz",
+ "integrity": "sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ==",
"dev": true,
"requires": {
- "arg": "^4.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.17",
- "yn": "3.1.1"
+ "chokidar": ">=3.0.0 <4.0.0"
}
},
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
"dev": true,
"requires": {
- "tslib": "^1.8.1"
+ "xmlchars": "^2.2.0"
}
},
- "tty-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
+ "scheduler": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
+ "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
+ "peer": true,
"requires": {
- "safe-buffer": "^5.0.1"
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
}
},
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
- "type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
- "dev": true
+ "seedrandom": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
},
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "selenium-standalone": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-7.1.0.tgz",
+ "integrity": "sha512-Pc7U48qwB4LVy/XczBrPPXwUhEPl3XQSik8SjLfj2qzBEtZqrjyzOlnnXq4aVCdr5wH9FiFJm8LwheJbK2+/oQ==",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2"
+ "commander": "^7.2.0",
+ "cross-spawn": "^7.0.3",
+ "debug": "^4.3.1",
+ "fs-extra": "^10.0.0",
+ "got": "^11.8.2",
+ "is-port-reachable": "^3.0.0",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.merge": "^4.6.2",
+ "minimist": "^1.2.5",
+ "mkdirp": "^1.0.4",
+ "progress": "2.0.3",
+ "tar-stream": "2.2.0",
+ "which": "^2.0.2",
+ "yauzl": "^2.10.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
}
},
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "lru-cache": "^6.0.0"
}
},
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"dev": true,
"requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "typescript": {
- "version": "3.9.9",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
- "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
- "dev": true
- },
- "ua-parser-js": {
- "version": "0.7.26",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.26.tgz",
- "integrity": "sha512-VwIvGlFNmpKbjzRt51jpbbFTrKIEgGHxIwA8Y69K1Bqc6bTIV7TaGGABOkghSFQWsLmcRB4drGvpfv9z2szqoQ==",
- "dev": true
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
+ }
},
- "uglify-es": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "serialize-error": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz",
+ "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==",
"dev": true,
"requires": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
+ "type-fest": "^0.20.2"
},
"dependencies": {
- "commander": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
}
}
},
- "ultron": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
- "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
- "dev": true
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
},
- "unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "dev": true,
"requires": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
- "which-boxed-primitive": "^1.0.2"
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
}
},
- "unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
- "undertaker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
- "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
"dev": true,
"requires": {
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "bach": "^1.0.0",
- "collection-map": "^1.0.0",
- "es6-weak-map": "^2.0.1",
- "fast-levenshtein": "^1.0.0",
- "last-run": "^1.1.0",
- "object.defaults": "^1.0.0",
- "object.reduce": "^1.0.0",
- "undertaker-registry": "^1.0.0"
- },
- "dependencies": {
- "fast-levenshtein": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
- "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=",
- "dev": true
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
}
}
},
- "undertaker-registry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
- "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
"dev": true
},
- "unicode-canonical-property-names-ecmascript": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
- "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
"dev": true
},
- "unicode-match-property-ecmascript": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
- "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
"requires": {
- "unicode-canonical-property-names-ecmascript": "^1.0.4",
- "unicode-property-aliases-ecmascript": "^1.0.4"
+ "kind-of": "^6.0.2"
}
},
- "unicode-match-property-value-ecmascript": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
- "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
- "dev": true
- },
- "unicode-property-aliases-ecmascript": {
+ "shallowequal": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
- "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
"dev": true
},
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
+ "shebang-regex": "^3.0.0"
}
},
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
- "unique-filename": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
"dev": true,
"requires": {
- "unique-slug": "^2.0.0"
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
}
},
- "unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "shelljs": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
+ "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
"dev": true,
"requires": {
- "imurmurhash": "^0.1.4"
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
}
},
- "unique-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
- "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "dev": true,
+ "optional": true
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"requires": {
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "through2-filter": "^3.0.0"
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
}
},
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "signal-exit": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
+ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==",
"dev": true
},
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "simple-plist": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz",
+ "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==",
+ "dev": true,
+ "requires": {
+ "bplist-creator": "0.0.8",
+ "bplist-parser": "0.2.0",
+ "plist": "^3.0.1"
+ }
+ },
+ "sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"dev": true
},
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
"requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
},
"dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
}
},
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
}
},
- "upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "url": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
"dev": true,
"requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
},
"dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
- "dev": true
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
}
}
},
- "url-loader": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
- "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
"dev": true,
"requires": {
- "loader-utils": "^1.1.0",
- "mime": "^2.0.3",
- "schema-utils": "^1.0.0"
+ "kind-of": "^3.2.0"
},
"dependencies": {
- "mime": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
- "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
- "dev": true
- },
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
+ "is-buffer": "^1.1.5"
}
}
}
},
- "url-parse": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
- "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+ "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
"dev": true,
"requires": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
}
},
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
- "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "source-map-support": {
+ "version": "0.5.20",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+ "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
"dev": true,
"requires": {
- "inherits": "2.0.3"
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
},
"dependencies": {
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
"dev": true
},
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true
},
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "spawn-command": {
+ "version": "0.0.2-1",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
+ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
"dev": true
},
- "v8-compile-cache": {
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"dev": true
},
- "v8-to-istanbul": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz",
- "integrity": "sha512-p0BB09E5FRjx0ELN6RgusIPsSPhtgexSRcKETybEs6IGOTXJSZqfwxp7r//55nnu0f1AxltY5VvdVqy2vZf9AA==",
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "spdx-license-ids": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+ "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
"dev": true,
"requires": {
- "homedir-polyfill": "^1.0.1"
+ "extend-shallow": "^3.0.0"
}
},
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "readable-stream": "^3.0.0"
}
},
- "value-or-function": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
- "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
- "dev": true
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "stack-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
+ "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "escape-string-regexp": "^2.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true
+ }
}
},
- "vinyl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
- "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+ "stackframe": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz",
+ "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==",
+ "dev": true
+ },
+ "stacktrace-parser": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+ "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
"dev": true,
"requires": {
- "clone": "^2.1.1",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
+ "type-fest": "^0.7.1"
},
"dependencies": {
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
"dev": true
}
}
},
- "vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "dev": true,
- "requires": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- }
- },
- "vinyl-sourcemap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
- "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
- "append-buffer": "^1.0.2",
- "convert-source-map": "^1.5.0",
- "graceful-fs": "^4.1.6",
- "normalize-path": "^2.1.1",
- "now-and-later": "^2.0.0",
- "remove-bom-buffer": "^3.0.0",
- "vinyl": "^2.0.0"
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
},
"dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "remove-trailing-separator": "^1.0.1"
+ "is-descriptor": "^0.1.0"
}
}
}
},
- "vlq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
- "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"dev": true
},
- "vm-browserify": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "stream-buffers": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
+ "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
"dev": true
},
- "w3c-hr-time": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"requires": {
- "browser-process-hrtime": "^1.0.0"
+ "safe-buffer": "~5.2.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
}
},
- "w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
"dev": true,
"requires": {
- "xml-name-validator": "^3.0.0"
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
}
},
- "walker": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
- "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "makeerror": "1.0.x"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
- "watchpack": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
- "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+ "string.prototype.matchall": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz",
+ "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==",
"dev": true,
"requires": {
- "chokidar": "^3.4.1",
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0",
- "watchpack-chokidar2": "^2.0.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1",
+ "get-intrinsic": "^1.1.1",
+ "has-symbols": "^1.0.2",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.3.1",
+ "side-channel": "^1.0.4"
}
},
- "watchpack-chokidar2": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
- "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+ "string.prototype.trim": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz",
+ "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==",
"dev": true,
- "optional": true,
"requires": {
- "chokidar": "^2.1.8"
- },
- "dependencies": {
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "optional": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
- "optional": true
- }
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
}
},
- "wbuf": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
- "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
"dev": true,
"requires": {
- "minimalistic-assert": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
"dev": true,
"requires": {
- "defaults": "^1.0.3"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
}
},
- "webdriver": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-5.23.0.tgz",
- "integrity": "sha512-r7IrbZ2SuTIRyWV8mv4a4hZoFcT9Qt4MznOkdRWPE1sPpZ8lyLZsIEjKCEbHelOzPwURqk+biwGrm4z2OZRAiw==",
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "@types/request": "^2.48.4",
- "@wdio/config": "5.22.4",
- "@wdio/logger": "5.16.10",
- "@wdio/protocols": "5.22.1",
- "@wdio/utils": "5.23.0",
- "lodash.merge": "^4.6.1",
- "request": "^2.83.0"
+ "ansi-regex": "^5.0.1"
}
},
- "webdriverio": {
- "version": "5.23.0",
- "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-5.23.0.tgz",
- "integrity": "sha512-hxt6Nuu2bBrTsVk7GfoFRTh63l4fRVXlK9U30RtPbHoWO5tcFdyUz2UTgeHEZ54ea1DQEVPfsgFiLnJULkWp1Q==",
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "@wdio/config": "5.22.4",
- "@wdio/logger": "5.16.10",
- "@wdio/repl": "5.23.0",
- "@wdio/utils": "5.23.0",
- "archiver": "^3.0.0",
- "css-value": "^0.0.1",
- "grapheme-splitter": "^1.0.2",
- "lodash.clonedeep": "^4.5.0",
- "lodash.isobject": "^3.0.2",
- "lodash.isplainobject": "^4.0.6",
- "lodash.zip": "^4.2.0",
- "resq": "^1.6.0",
- "rgb2hex": "^0.1.0",
- "serialize-error": "^5.0.0",
- "webdriver": "5.23.0"
+ "is-utf8": "^0.2.0"
}
},
- "webidl-conversions": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
- "webpack": {
- "version": "4.46.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
- "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.9.0",
- "@webassemblyjs/helper-module-context": "1.9.0",
- "@webassemblyjs/wasm-edit": "1.9.0",
- "@webassemblyjs/wasm-parser": "1.9.0",
- "acorn": "^6.4.1",
- "ajv": "^6.10.2",
- "ajv-keywords": "^3.4.1",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^4.5.0",
- "eslint-scope": "^4.0.3",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^2.4.0",
- "loader-utils": "^1.2.3",
- "memory-fs": "^0.4.1",
- "micromatch": "^3.1.10",
- "mkdirp": "^0.5.3",
- "neo-async": "^2.6.1",
- "node-libs-browser": "^2.2.1",
- "schema-utils": "^1.0.0",
- "tapable": "^1.1.3",
- "terser-webpack-plugin": "^1.4.3",
- "watchpack": "^1.7.4",
- "webpack-sources": "^1.4.1"
- },
- "dependencies": {
- "acorn": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "dev": true
- },
- "eslint-scope": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
- "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
- "memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
- "dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
- }
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "requires": {
+ "min-indent": "^1.0.0"
}
},
- "webpack-cli": {
- "version": "3.3.12",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
- "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "style-attr": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/style-attr/-/style-attr-1.3.0.tgz",
+ "integrity": "sha512-srFr54gzEZoy73WgYfnbxCAtNCzF0Hn5RGzK7gi/0G6ttZd9v3WZFGY4ed5ABr43dbGjPNr4T46geUxxUP9i6w=="
+ },
+ "sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
+ "dev": true
+ },
+ "suffix": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz",
+ "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "cross-spawn": "^6.0.5",
- "enhanced-resolve": "^4.1.1",
- "findup-sync": "^3.0.0",
- "global-modules": "^2.0.0",
- "import-local": "^2.0.0",
- "interpret": "^1.4.0",
- "loader-utils": "^1.4.0",
- "supports-color": "^6.1.0",
- "v8-compile-cache": "^2.1.1",
- "yargs": "^13.3.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "dev": true,
- "requires": {
- "global-prefix": "^3.0.0"
- }
- },
- "global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
- "dev": true,
- "requires": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
- }
- },
- "import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
- "dev": true,
- "requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-hyperlinks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+ "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "has-flag": "^4.0.0"
}
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ }
+ }
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
+ "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^8.0.1",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.6.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
+ "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
}
},
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- },
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ }
+ }
+ },
+ "tar-fs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
+ "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "resolve-from": "^3.0.0"
+ "minimist": "^1.2.5"
}
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "requires": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
"dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ }
+ }
+ },
+ "terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ }
+ },
+ "terser": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
+ "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.7.2",
+ "source-map-support": "~0.5.20"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ }
+ }
+ },
+ "test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "requires": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "safe-buffer": "~5.1.0"
}
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ }
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ },
+ "tippy.js": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.1.tgz",
+ "integrity": "sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww==",
+ "requires": {
+ "@popperjs/core": "^2.8.3"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
+ "is-buffer": "^1.1.5"
}
- },
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "dev": true
+ },
+ "tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.1"
+ }
+ },
+ "tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true
+ },
+ "ts-jest": {
+ "version": "26.5.6",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz",
+ "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==",
+ "dev": true,
+ "requires": {
+ "bs-logger": "0.x",
+ "buffer-from": "1.x",
+ "fast-json-stable-stringify": "2.x",
+ "jest-util": "^26.1.0",
+ "json5": "2.x",
+ "lodash": "4.x",
+ "make-error": "1.x",
+ "mkdirp": "1.x",
+ "semver": "7.x",
+ "yargs-parser": "20.x"
+ },
+ "dependencies": {
"yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true
}
}
},
- "webpack-dev-middleware": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
- "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+ "ts-node": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
+ "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
"dev": true,
"requires": {
- "memory-fs": "^0.4.1",
- "mime": "^2.4.4",
- "mkdirp": "^0.5.1",
- "range-parser": "^1.2.1",
- "webpack-log": "^2.0.0"
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
},
"dependencies": {
- "memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
- "dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- }
- },
- "mime": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
- "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "typescript": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+ "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+ "dev": true
+ },
+ "ua-parser-js": {
+ "version": "0.7.28",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
+ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==",
+ "dev": true
+ },
+ "uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.13.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
"dev": true
},
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
}
}
},
- "webpack-dev-server": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz",
- "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==",
+ "ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "dev": true
+ },
+ "unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "unbzip2-stream": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
- "ansi-html": "0.0.7",
- "bonjour": "^3.5.0",
- "chokidar": "^2.1.8",
- "compression": "^1.7.4",
- "connect-history-api-fallback": "^1.6.0",
- "debug": "^4.1.1",
- "del": "^4.1.1",
- "express": "^4.17.1",
- "html-entities": "^1.3.1",
- "http-proxy-middleware": "0.19.1",
- "import-local": "^2.0.0",
- "internal-ip": "^4.3.0",
- "ip": "^1.1.5",
- "is-absolute-url": "^3.0.3",
- "killable": "^1.0.1",
- "loglevel": "^1.6.8",
- "opn": "^5.5.0",
- "p-retry": "^3.0.1",
- "portfinder": "^1.0.26",
- "schema-utils": "^1.0.0",
- "selfsigned": "^1.10.8",
- "semver": "^6.3.0",
- "serve-index": "^1.9.1",
- "sockjs": "^0.3.21",
- "sockjs-client": "^1.5.0",
- "spdy": "^4.0.2",
- "strip-ansi": "^3.0.1",
- "supports-color": "^6.1.0",
- "url": "^0.11.0",
- "webpack-dev-middleware": "^3.7.2",
- "webpack-log": "^2.0.0",
- "ws": "^6.2.1",
- "yargs": "^13.3.2"
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "isarray": "1.0.0"
}
}
}
},
- "debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "dev": true,
- "optional": true
- },
- "import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
- "dev": true,
- "requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- },
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- }
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- },
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
"dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "ws": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
- "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
- "dev": true,
- "requires": {
- "async-limiter": "~1.0.0"
- }
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
}
}
},
- "webpack-log": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
- "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true
+ },
+ "v8-to-istanbul": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
+ "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
"dev": true,
"requires": {
- "ansi-colors": "^3.0.0",
- "uuid": "^3.3.2"
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
},
"dependencies": {
- "ansi-colors": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
- "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
}
},
- "webpack-merge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
- "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
- "lodash": "^4.17.15"
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "webpack-sources": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
- "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "vlq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
+ "dev": true
+ },
+ "w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
"dev": true,
"requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "requires": {
+ "xml-name-validator": "^3.0.0"
+ }
+ },
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "dev": true,
+ "requires": {
+ "makeerror": "1.0.x"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webdriver": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.14.1.tgz",
+ "integrity": "sha512-YhnuVquRQBVDO4seFDSpKsT5VFTpNTK7YZIPB6MwDBsIiiXA5Lt8QJN4kBuE6zuHmRuGRFv1y1dONCxsumEtXQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "got": "^11.0.2",
+ "ky": "^0.28.5",
+ "lodash.merge": "^4.6.1"
},
"dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
"dev": true
}
}
},
- "websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "dev": true,
- "requires": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
+ "webdriverio": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.14.1.tgz",
+ "integrity": "sha512-LE3YbEkzqqpCt2lN4JIYSpfv1mOXUk2SCglUXHD1O/uNY/Z1hUM5iL0X7tW0Wg5QKvH5YYJ/YPmtqza1OrtNAg==",
+ "dev": true,
+ "requires": {
+ "@types/aria-query": "^4.2.1",
+ "@types/node": "^15.12.5",
+ "@wdio/config": "7.14.1",
+ "@wdio/logger": "7.7.0",
+ "@wdio/protocols": "7.13.2",
+ "@wdio/repl": "7.14.1",
+ "@wdio/types": "7.14.1",
+ "@wdio/utils": "7.14.1",
+ "archiver": "^5.0.0",
+ "aria-query": "^5.0.0",
+ "atob": "^2.1.2",
+ "css-shorthand-properties": "^1.1.1",
+ "css-value": "^0.0.1",
+ "devtools": "7.14.1",
+ "devtools-protocol": "^0.0.927104",
+ "fs-extra": "^10.0.0",
+ "get-port": "^5.1.1",
+ "grapheme-splitter": "^1.0.2",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.isobject": "^3.0.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.zip": "^4.2.0",
+ "minimatch": "^3.0.4",
+ "puppeteer-core": "^10.1.0",
+ "query-selector-shadow-dom": "^1.0.0",
+ "resq": "^1.9.1",
+ "rgb2hex": "0.2.5",
+ "serialize-error": "^8.0.0",
+ "webdriver": "7.14.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "15.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+ "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
}
},
- "websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
"dev": true
},
"whatwg-encoding": {
@@ -20405,13 +40241,13 @@
"dev": true
},
"whatwg-url": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz",
- "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
"dev": true,
"requires": {
"lodash": "^4.7.0",
- "tr46": "^2.0.2",
+ "tr46": "^2.1.0",
"webidl-conversions": "^6.1.0"
}
},
@@ -20428,6 +40264,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
"requires": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -20454,15 +40291,6 @@
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
- "worker-farm": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
- "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
- "dev": true,
- "requires": {
- "errno": "~0.1.7"
- }
- },
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -20520,26 +40348,6 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
- "write": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
- "dev": true,
- "requires": {
- "mkdirp": "^0.5.1"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- }
- }
- },
"write-file-atomic": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
@@ -20553,10 +40361,11 @@
}
},
"ws": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
- "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
- "dev": true
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz",
+ "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==",
+ "dev": true,
+ "requires": {}
},
"xcode": {
"version": "2.1.0",
@@ -20566,6 +40375,14 @@
"requires": {
"simple-plist": "^1.0.0",
"uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
+ }
}
},
"xml": {
@@ -20619,12 +40436,6 @@
"sax": "^1.2.1"
}
},
- "xmldom": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz",
- "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==",
- "dev": true
- },
"xpipe": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
@@ -20637,10 +40448,19 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
},
+ "xxhashjs": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
+ "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
+ "dev": true,
+ "requires": {
+ "cuint": "^0.2.2"
+ }
+ },
"y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
@@ -20714,6 +40534,26 @@
"supports-color": "^2.0.0"
}
},
+ "cross-spawn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -20728,6 +40568,12 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
}
}
},
@@ -20741,50 +40587,116 @@
"fd-slicer": "~1.1.0"
}
},
- "yazl": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
- "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3"
- }
- },
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true
},
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- },
- "zip-stream": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
- "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
+ "zip-a-folder": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-0.0.12.tgz",
+ "integrity": "sha512-wZGiWgp3z2TocBlzx3S5tsLgPbT39qG2uIZmn2MhYLVjhKIr2nMhg7i4iPDL4W3XvMDaOEEVU5ZB0Y/Pt6BLvA==",
"dev": true,
"requires": {
- "archiver-utils": "^2.1.0",
- "compress-commons": "^2.1.1",
- "readable-stream": "^3.4.0"
+ "archiver": "^3.1.1"
},
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "archiver": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
+ "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "^2.1.0",
+ "async": "^2.6.3",
+ "buffer-crc32": "^0.2.1",
+ "glob": "^7.1.4",
+ "readable-stream": "^3.4.0",
+ "tar-stream": "^2.1.0",
+ "zip-stream": "^2.1.2"
+ }
+ },
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "compress-commons": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
+ "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^3.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.3.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ }
+ }
+ },
+ "crc32-stream": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
+ "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
+ "dev": true,
+ "requires": {
+ "crc": "^3.4.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "zip-stream": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
+ "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^2.1.1",
+ "readable-stream": "^3.4.0"
}
}
}
+ },
+ "zip-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz",
+ "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^4.1.0",
+ "readable-stream": "^3.6.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index b963ca1..318b402 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
"name": "wordcloud",
"widgetName": "WordCloud",
- "version": "1.0.0",
+ "version": "1.0.1",
"description": "Show word cloud based on react-d3-cloud",
"copyright": "2021 Objectivity",
- "author": "Bartosz Hetmanski",
+ "author": "Tomasz Macisowicz",
"config": {
"projectPath": "../..//",
"mendixHost": "http://localhost:8080",
@@ -22,11 +22,13 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@mendix/pluggable-widgets-tools": "^8.14.0"
+ "@mendix/pluggable-widgets-tools": "^9.5.4",
+ "@types/node": "^16.10.9"
},
"dependencies": {
- "classnames": "^2.2.6",
- "react-d3-cloud": "^0.7.0",
+ "@types/d3-cloud": "^1.2.5",
+ "classnames": "^2.3.1",
+ "react-d3-cloud": "^1.0.5",
"react-wordcloud": "^1.2.7"
}
}
diff --git a/src/WordCloud.jsx b/src/WordCloud.jsx
index 82ed90a..7c90c8e 100644
--- a/src/WordCloud.jsx
+++ b/src/WordCloud.jsx
@@ -1,23 +1,34 @@
-import { Component, createElement } from "react";
+import React from 'react';
+import 'core-js';
+import { Component, createElement, render } from "react";
+
+
+
import WordCloudWidgetComponent from "./components/WordCloudWidgetComponent";
+
export default class WordCloudWidget extends Component {
+
+
+ shouldComponentUpdate(nextProps) {
- shouldComponentUpdate(nextProps){
return nextProps.dataSource !== this.props.dataSource;
}
render() {
+
var dataToRender = [];
- if(this.props.dataSource.status === "available"){
- var i=0;
- for(i=0; i< this.props.dataSource.totalCount; i++) {
- dataToRender.push({
- text: this.props.textAttrib(this.props.dataSource.items[i]).value,
- value: this.props.intAttrib(this.props.dataSource.items[i]).value
+
+ if (this.props.dataSource.status === "available" && this.props.dataSource.items) {
+ var i = 0;
+ for (i = 0; i < this.props.dataSource.items.length; i++) {
+ dataToRender.push({
+ text: this.props.textAttrib.get((this.props.dataSource.items[i])).value,
+ value: this.props.intAttrib.get((this.props.dataSource.items[i])).value
});
}
}
return ;
+
}
}
diff --git a/src/WordCloud.xml b/src/WordCloud.xml
index 78f2b62..60728b6 100644
--- a/src/WordCloud.xml
+++ b/src/WordCloud.xml
@@ -34,7 +34,7 @@
-
+
Chosen word
This attribute stores the clicked word
diff --git a/src/components/WordCloudWidgetComponent.jsx b/src/components/WordCloudWidgetComponent.jsx
index cf83dbc..9f6028a 100644
--- a/src/components/WordCloudWidgetComponent.jsx
+++ b/src/components/WordCloudWidgetComponent.jsx
@@ -1,20 +1,29 @@
-import { createElement } from "react";
-import { render } from "react-dom";
+import React from 'react';
+import { Component, createElement, render } from "react";
+import 'core-js';
import WordCloud from "react-d3-cloud";
-export default function WordCloudWidgetComponent(props){
+
+
+
+export default function WordCloudWidgetComponent(props) {
+
const data = props.inputData;
const fontSizeMapper = word => Math.log2(word.value) * 5;
- const rotate = word => (Math.floor(Math.random()*2) * 90);
-
+ const rotate = word => (Math.floor(Math.random() * 2) * 90);
const onClickHandle = (text) => {
- if (props.onClickAction.canExecute && !props.onClickAction.isExecuting) {
- props.chosenWord.setValue(text);
- props.onClickAction.execute();
+
+ (props.onClickAction.canExecute && !props.onClickAction.isExecuting)
+
+ {
+ props.chosenWord.setValue(text);
+ props.onClickAction.execute();
}
};
-
+
return (
- onClickHandle(word.text)}/>
+
+ onClickHandle(word.text)} />
+
);
}
\ No newline at end of file