MediaWiki:Gadget-select2.js

MediaWiki系统消息页面
/**
 * SPDX-License-Identifier: MIT
 * _addText: '{{Gadget Header|license=MIT|attribution=2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors}}'
 *
 * @base {@link https://github.com/select2/select2/}
 * @source {@link https://git.qiuwen.net.cn/InterfaceAdmin/QiuwenGadgets/src/branch/master/src/select2}
 * @license MIT {@link https://github.com/select2/select2/blob/master/LICENSE.md}
 */

/**
 * Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
/**
 * +------------------------------------------------------------+
 * |            === WARNING: GLOBAL GADGET FILE ===             |
 * +------------------------------------------------------------+
 * |       All changes should be made in the repository,        |
 * |                otherwise they will be lost.                |
 * +------------------------------------------------------------+
 * |        Changes to this page may affect many users.         |
 * | Please discuss changes by opening an issue before editing. |
 * +------------------------------------------------------------+
 */
/* <nowiki> */

(() => {

"use strict";
var __getOwnPropNames = Object.getOwnPropertyNames;
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/global.js
var require_global = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/global.js"(exports, module2) {
    "use strict";
    var check = function(it) {
      return it && it.Math === Math && it;
    };
    module2.exports = // 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 global == "object" && global) || check(typeof exports == "object" && exports) || // eslint-disable-next-line no-new-func -- fallback
    /* @__PURE__ */ function() {
      return this;
    }() || Function("return this")();
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/fails.js
var require_fails = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/fails.js"(exports, module2) {
    "use strict";
    module2.exports = function(exec) {
      try {
        return !!exec();
      } catch (error) {
        return true;
      }
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/descriptors.js
var require_descriptors = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/descriptors.js"(exports, module2) {
    "use strict";
    var fails = require_fails();
    module2.exports = !fails(function() {
      return Object.defineProperty({}, 1, { get: function() {
        return 7;
      } })[1] !== 7;
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-bind-native.js
var require_function_bind_native = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-bind-native.js"(exports, module2) {
    "use strict";
    var fails = require_fails();
    module2.exports = !fails(function() {
      var test = function() {
      }.bind();
      return typeof test != "function" || test.hasOwnProperty("prototype");
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-call.js
var require_function_call = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-call.js"(exports, module2) {
    "use strict";
    var NATIVE_BIND = require_function_bind_native();
    var call = Function.prototype.call;
    module2.exports = NATIVE_BIND ? call.bind(call) : function() {
      return call.apply(call, arguments);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-property-is-enumerable.js
var require_object_property_is_enumerable = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-property-is-enumerable.js"(exports) {
    "use strict";
    var $propertyIsEnumerable = {}.propertyIsEnumerable;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
    exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
      var descriptor = getOwnPropertyDescriptor(this, V);
      return !!descriptor && descriptor.enumerable;
    } : $propertyIsEnumerable;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/create-property-descriptor.js
var require_create_property_descriptor = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/create-property-descriptor.js"(exports, module2) {
    "use strict";
    module2.exports = function(bitmap, value) {
      return {
        enumerable: !(bitmap & 1),
        configurable: !(bitmap & 2),
        writable: !(bitmap & 4),
        value
      };
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-uncurry-this.js
var require_function_uncurry_this = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-uncurry-this.js"(exports, module2) {
    "use strict";
    var NATIVE_BIND = require_function_bind_native();
    var FunctionPrototype = Function.prototype;
    var call = FunctionPrototype.call;
    var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
    module2.exports = NATIVE_BIND ? uncurryThisWithBind : function(fn) {
      return function() {
        return call.apply(fn, arguments);
      };
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/classof-raw.js
var require_classof_raw = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/classof-raw.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var toString = uncurryThis({}.toString);
    var stringSlice = uncurryThis("".slice);
    module2.exports = function(it) {
      return stringSlice(toString(it), 8, -1);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/indexed-object.js
var require_indexed_object = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/indexed-object.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var classof = require_classof_raw();
    var $Object = Object;
    var split = uncurryThis("".split);
    module2.exports = fails(function() {
      return !$Object("z").propertyIsEnumerable(0);
    }) ? function(it) {
      return classof(it) === "String" ? split(it, "") : $Object(it);
    } : $Object;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-null-or-undefined.js
var require_is_null_or_undefined = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-null-or-undefined.js"(exports, module2) {
    "use strict";
    module2.exports = function(it) {
      return it === null || it === void 0;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/require-object-coercible.js
var require_require_object_coercible = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/require-object-coercible.js"(exports, module2) {
    "use strict";
    var isNullOrUndefined = require_is_null_or_undefined();
    var $TypeError = TypeError;
    module2.exports = function(it) {
      if (isNullOrUndefined(it))
        throw new $TypeError("Can't call method on " + it);
      return it;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-indexed-object.js
var require_to_indexed_object = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-indexed-object.js"(exports, module2) {
    "use strict";
    var IndexedObject = require_indexed_object();
    var requireObjectCoercible = require_require_object_coercible();
    module2.exports = function(it) {
      return IndexedObject(requireObjectCoercible(it));
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-callable.js
var require_is_callable = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-callable.js"(exports, module2) {
    "use strict";
    var documentAll = typeof document == "object" && document.all;
    module2.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) {
      return typeof argument == "function" || argument === documentAll;
    } : function(argument) {
      return typeof argument == "function";
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-object.js
var require_is_object = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-object.js"(exports, module2) {
    "use strict";
    var isCallable = require_is_callable();
    module2.exports = function(it) {
      return typeof it == "object" ? it !== null : isCallable(it);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/get-built-in.js
var require_get_built_in = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/get-built-in.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var isCallable = require_is_callable();
    var aFunction = function(argument) {
      return isCallable(argument) ? argument : void 0;
    };
    module2.exports = function(namespace, method) {
      return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method];
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-is-prototype-of.js
var require_object_is_prototype_of = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-is-prototype-of.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    module2.exports = uncurryThis({}.isPrototypeOf);
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/engine-user-agent.js
var require_engine_user_agent = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/engine-user-agent.js"(exports, module2) {
    "use strict";
    module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || "";
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/engine-v8-version.js
var require_engine_v8_version = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/engine-v8-version.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var userAgent = require_engine_user_agent();
    var process = global2.process;
    var Deno = global2.Deno;
    var versions = process && process.versions || Deno && Deno.version;
    var v8 = versions && versions.v8;
    var match;
    var version;
    if (v8) {
      match = v8.split(".");
      version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
    }
    if (!version && userAgent) {
      match = userAgent.match(/Edge\/(\d+)/);
      if (!match || match[1] >= 74) {
        match = userAgent.match(/Chrome\/(\d+)/);
        if (match)
          version = +match[1];
      }
    }
    module2.exports = version;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/symbol-constructor-detection.js
var require_symbol_constructor_detection = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module2) {
    "use strict";
    var V8_VERSION = require_engine_v8_version();
    var fails = require_fails();
    var global2 = require_global();
    var $String = global2.String;
    module2.exports = !!Object.getOwnPropertySymbols && !fails(function() {
      var symbol = Symbol("symbol detection");
      return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
      !Symbol.sham && V8_VERSION && V8_VERSION < 41;
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/use-symbol-as-uid.js
var require_use_symbol_as_uid = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module2) {
    "use strict";
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol";
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-symbol.js
var require_is_symbol = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-symbol.js"(exports, module2) {
    "use strict";
    var getBuiltIn = require_get_built_in();
    var isCallable = require_is_callable();
    var isPrototypeOf = require_object_is_prototype_of();
    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
    var $Object = Object;
    module2.exports = USE_SYMBOL_AS_UID ? function(it) {
      return typeof it == "symbol";
    } : function(it) {
      var $Symbol = getBuiltIn("Symbol");
      return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/try-to-string.js
var require_try_to_string = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/try-to-string.js"(exports, module2) {
    "use strict";
    var $String = String;
    module2.exports = function(argument) {
      try {
        return $String(argument);
      } catch (error) {
        return "Object";
      }
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/a-callable.js
var require_a_callable = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/a-callable.js"(exports, module2) {
    "use strict";
    var isCallable = require_is_callable();
    var tryToString = require_try_to_string();
    var $TypeError = TypeError;
    module2.exports = function(argument) {
      if (isCallable(argument))
        return argument;
      throw new $TypeError(tryToString(argument) + " is not a function");
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/get-method.js
var require_get_method = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/get-method.js"(exports, module2) {
    "use strict";
    var aCallable = require_a_callable();
    var isNullOrUndefined = require_is_null_or_undefined();
    module2.exports = function(V, P) {
      var func = V[P];
      return isNullOrUndefined(func) ? void 0 : aCallable(func);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/ordinary-to-primitive.js
var require_ordinary_to_primitive = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module2) {
    "use strict";
    var call = require_function_call();
    var isCallable = require_is_callable();
    var isObject = require_is_object();
    var $TypeError = TypeError;
    module2.exports = function(input, pref) {
      var fn, val;
      if (pref === "string" && isCallable(fn = input.toString) && !isObject(val = call(fn, input)))
        return val;
      if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input)))
        return val;
      if (pref !== "string" && isCallable(fn = input.toString) && !isObject(val = call(fn, input)))
        return val;
      throw new $TypeError("Can't convert object to primitive value");
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-pure.js
var require_is_pure = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-pure.js"(exports, module2) {
    "use strict";
    module2.exports = false;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/define-global-property.js
var require_define_global_property = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/define-global-property.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var defineProperty = Object.defineProperty;
    module2.exports = function(key, value) {
      try {
        defineProperty(global2, key, { value, configurable: true, writable: true });
      } catch (error) {
        global2[key] = value;
      }
      return value;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared-store.js
var require_shared_store = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared-store.js"(exports, module2) {
    "use strict";
    var IS_PURE = require_is_pure();
    var globalThis2 = require_global();
    var defineGlobalProperty = require_define_global_property();
    var SHARED = "__core-js_shared__";
    var store = module2.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {});
    (store.versions || (store.versions = [])).push({
      version: "3.37.0",
      mode: IS_PURE ? "pure" : "global",
      copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)",
      license: "https://github.com/zloirock/core-js/blob/v3.37.0/LICENSE",
      source: "https://github.com/zloirock/core-js"
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared.js
var require_shared = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared.js"(exports, module2) {
    "use strict";
    var store = require_shared_store();
    module2.exports = function(key, value) {
      return store[key] || (store[key] = value || {});
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-object.js
var require_to_object = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-object.js"(exports, module2) {
    "use strict";
    var requireObjectCoercible = require_require_object_coercible();
    var $Object = Object;
    module2.exports = function(argument) {
      return $Object(requireObjectCoercible(argument));
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/has-own-property.js
var require_has_own_property = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/has-own-property.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var toObject = require_to_object();
    var hasOwnProperty = uncurryThis({}.hasOwnProperty);
    module2.exports = Object.hasOwn || function hasOwn(it, key) {
      return hasOwnProperty(toObject(it), key);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/uid.js
var require_uid = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/uid.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var id = 0;
    var postfix = Math.random();
    var toString = uncurryThis(1 .toString);
    module2.exports = function(key) {
      return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString(++id + postfix, 36);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/well-known-symbol.js
var require_well_known_symbol = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/well-known-symbol.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var shared = require_shared();
    var hasOwn = require_has_own_property();
    var uid = require_uid();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
    var Symbol2 = global2.Symbol;
    var WellKnownSymbolsStore = shared("wks");
    var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid;
    module2.exports = function(name) {
      if (!hasOwn(WellKnownSymbolsStore, name)) {
        WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol2, name) ? Symbol2[name] : createWellKnownSymbol("Symbol." + name);
      }
      return WellKnownSymbolsStore[name];
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-primitive.js
var require_to_primitive = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-primitive.js"(exports, module2) {
    "use strict";
    var call = require_function_call();
    var isObject = require_is_object();
    var isSymbol = require_is_symbol();
    var getMethod = require_get_method();
    var ordinaryToPrimitive = require_ordinary_to_primitive();
    var wellKnownSymbol = require_well_known_symbol();
    var $TypeError = TypeError;
    var TO_PRIMITIVE = wellKnownSymbol("toPrimitive");
    module2.exports = function(input, pref) {
      if (!isObject(input) || isSymbol(input))
        return input;
      var exoticToPrim = getMethod(input, TO_PRIMITIVE);
      var result;
      if (exoticToPrim) {
        if (pref === void 0)
          pref = "default";
        result = call(exoticToPrim, input, pref);
        if (!isObject(result) || isSymbol(result))
          return result;
        throw new $TypeError("Can't convert object to primitive value");
      }
      if (pref === void 0)
        pref = "number";
      return ordinaryToPrimitive(input, pref);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-property-key.js
var require_to_property_key = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-property-key.js"(exports, module2) {
    "use strict";
    var toPrimitive = require_to_primitive();
    var isSymbol = require_is_symbol();
    module2.exports = function(argument) {
      var key = toPrimitive(argument, "string");
      return isSymbol(key) ? key : key + "";
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/document-create-element.js
var require_document_create_element = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/document-create-element.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var isObject = require_is_object();
    var document2 = global2.document;
    var EXISTS = isObject(document2) && isObject(document2.createElement);
    module2.exports = function(it) {
      return EXISTS ? document2.createElement(it) : {};
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/ie8-dom-define.js
var require_ie8_dom_define = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/ie8-dom-define.js"(exports, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    var createElement = require_document_create_element();
    module2.exports = !DESCRIPTORS && !fails(function() {
      return Object.defineProperty(createElement("div"), "a", {
        get: function() {
          return 7;
        }
      }).a !== 7;
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-descriptor.js
var require_object_get_own_property_descriptor = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var call = require_function_call();
    var propertyIsEnumerableModule = require_object_property_is_enumerable();
    var createPropertyDescriptor = require_create_property_descriptor();
    var toIndexedObject = require_to_indexed_object();
    var toPropertyKey = require_to_property_key();
    var hasOwn = require_has_own_property();
    var IE8_DOM_DEFINE = require_ie8_dom_define();
    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
      O = toIndexedObject(O);
      P = toPropertyKey(P);
      if (IE8_DOM_DEFINE)
        try {
          return $getOwnPropertyDescriptor(O, P);
        } catch (error) {
        }
      if (hasOwn(O, P))
        return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/v8-prototype-define-bug.js
var require_v8_prototype_define_bug = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    module2.exports = DESCRIPTORS && fails(function() {
      return Object.defineProperty(function() {
      }, "prototype", {
        value: 42,
        writable: false
      }).prototype !== 42;
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/an-object.js
var require_an_object = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/an-object.js"(exports, module2) {
    "use strict";
    var isObject = require_is_object();
    var $String = String;
    var $TypeError = TypeError;
    module2.exports = function(argument) {
      if (isObject(argument))
        return argument;
      throw new $TypeError($String(argument) + " is not an object");
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-define-property.js
var require_object_define_property = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-define-property.js"(exports) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var IE8_DOM_DEFINE = require_ie8_dom_define();
    var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug();
    var anObject = require_an_object();
    var toPropertyKey = require_to_property_key();
    var $TypeError = TypeError;
    var $defineProperty = Object.defineProperty;
    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var ENUMERABLE = "enumerable";
    var CONFIGURABLE = "configurable";
    var WRITABLE = "writable";
    exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPropertyKey(P);
      anObject(Attributes);
      if (typeof O === "function" && P === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
        var current = $getOwnPropertyDescriptor(O, P);
        if (current && current[WRITABLE]) {
          O[P] = Attributes.value;
          Attributes = {
            configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
            enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
            writable: false
          };
        }
      }
      return $defineProperty(O, P, Attributes);
    } : $defineProperty : function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPropertyKey(P);
      anObject(Attributes);
      if (IE8_DOM_DEFINE)
        try {
          return $defineProperty(O, P, Attributes);
        } catch (error) {
        }
      if ("get" in Attributes || "set" in Attributes)
        throw new $TypeError("Accessors not supported");
      if ("value" in Attributes)
        O[P] = Attributes.value;
      return O;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/create-non-enumerable-property.js
var require_create_non_enumerable_property = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var definePropertyModule = require_object_define_property();
    var createPropertyDescriptor = require_create_property_descriptor();
    module2.exports = DESCRIPTORS ? function(object, key, value) {
      return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
    } : function(object, key, value) {
      object[key] = value;
      return object;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-name.js
var require_function_name = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/function-name.js"(exports, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var hasOwn = require_has_own_property();
    var FunctionPrototype = Function.prototype;
    var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
    var EXISTS = hasOwn(FunctionPrototype, "name");
    var PROPER = EXISTS && function something() {
    }.name === "something";
    var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, "name").configurable);
    module2.exports = {
      EXISTS,
      PROPER,
      CONFIGURABLE
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/inspect-source.js
var require_inspect_source = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/inspect-source.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var isCallable = require_is_callable();
    var store = require_shared_store();
    var functionToString = uncurryThis(Function.toString);
    if (!isCallable(store.inspectSource)) {
      store.inspectSource = function(it) {
        return functionToString(it);
      };
    }
    module2.exports = store.inspectSource;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/weak-map-basic-detection.js
var require_weak_map_basic_detection = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var isCallable = require_is_callable();
    var WeakMap = global2.WeakMap;
    module2.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared-key.js
var require_shared_key = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/shared-key.js"(exports, module2) {
    "use strict";
    var shared = require_shared();
    var uid = require_uid();
    var keys = shared("keys");
    module2.exports = function(key) {
      return keys[key] || (keys[key] = uid(key));
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/hidden-keys.js
var require_hidden_keys = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/hidden-keys.js"(exports, module2) {
    "use strict";
    module2.exports = {};
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/internal-state.js
var require_internal_state = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/internal-state.js"(exports, module2) {
    "use strict";
    var NATIVE_WEAK_MAP = require_weak_map_basic_detection();
    var global2 = require_global();
    var isObject = require_is_object();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var hasOwn = require_has_own_property();
    var shared = require_shared_store();
    var sharedKey = require_shared_key();
    var hiddenKeys = require_hidden_keys();
    var OBJECT_ALREADY_INITIALIZED = "Object already initialized";
    var TypeError2 = global2.TypeError;
    var WeakMap = global2.WeakMap;
    var set;
    var get;
    var has;
    var enforce = function(it) {
      return has(it) ? get(it) : set(it, {});
    };
    var getterFor = function(TYPE) {
      return function(it) {
        var state;
        if (!isObject(it) || (state = get(it)).type !== TYPE) {
          throw new TypeError2("Incompatible receiver, " + TYPE + " required");
        }
        return state;
      };
    };
    if (NATIVE_WEAK_MAP || shared.state) {
      store = shared.state || (shared.state = new WeakMap());
      store.get = store.get;
      store.has = store.has;
      store.set = store.set;
      set = function(it, metadata) {
        if (store.has(it))
          throw new TypeError2(OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        store.set(it, metadata);
        return metadata;
      };
      get = function(it) {
        return store.get(it) || {};
      };
      has = function(it) {
        return store.has(it);
      };
    } else {
      STATE = sharedKey("state");
      hiddenKeys[STATE] = true;
      set = function(it, metadata) {
        if (hasOwn(it, STATE))
          throw new TypeError2(OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        createNonEnumerableProperty(it, STATE, metadata);
        return metadata;
      };
      get = function(it) {
        return hasOwn(it, STATE) ? it[STATE] : {};
      };
      has = function(it) {
        return hasOwn(it, STATE);
      };
    }
    var store;
    var STATE;
    module2.exports = {
      set,
      get,
      has,
      enforce,
      getterFor
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/make-built-in.js
var require_make_built_in = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/make-built-in.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var isCallable = require_is_callable();
    var hasOwn = require_has_own_property();
    var DESCRIPTORS = require_descriptors();
    var CONFIGURABLE_FUNCTION_NAME = require_function_name().CONFIGURABLE;
    var inspectSource = require_inspect_source();
    var InternalStateModule = require_internal_state();
    var enforceInternalState = InternalStateModule.enforce;
    var getInternalState = InternalStateModule.get;
    var $String = String;
    var defineProperty = Object.defineProperty;
    var stringSlice = uncurryThis("".slice);
    var replace = uncurryThis("".replace);
    var join = uncurryThis([].join);
    var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function() {
      return defineProperty(function() {
      }, "length", { value: 8 }).length !== 8;
    });
    var TEMPLATE = String(String).split("String");
    var makeBuiltIn = module2.exports = function(value, name, options) {
      if (stringSlice($String(name), 0, 7) === "Symbol(") {
        name = "[" + replace($String(name), /^Symbol\(([^)]*)\).*$/, "$1") + "]";
      }
      if (options && options.getter)
        name = "get " + name;
      if (options && options.setter)
        name = "set " + name;
      if (!hasOwn(value, "name") || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {
        if (DESCRIPTORS)
          defineProperty(value, "name", { value: name, configurable: true });
        else
          value.name = name;
      }
      if (CONFIGURABLE_LENGTH && options && hasOwn(options, "arity") && value.length !== options.arity) {
        defineProperty(value, "length", { value: options.arity });
      }
      try {
        if (options && hasOwn(options, "constructor") && options.constructor) {
          if (DESCRIPTORS)
            defineProperty(value, "prototype", { writable: false });
        } else if (value.prototype)
          value.prototype = void 0;
      } catch (error) {
      }
      var state = enforceInternalState(value);
      if (!hasOwn(state, "source")) {
        state.source = join(TEMPLATE, typeof name == "string" ? name : "");
      }
      return value;
    };
    Function.prototype.toString = makeBuiltIn(function toString() {
      return isCallable(this) && getInternalState(this).source || inspectSource(this);
    }, "toString");
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/define-built-in.js
var require_define_built_in = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/define-built-in.js"(exports, module2) {
    "use strict";
    var isCallable = require_is_callable();
    var definePropertyModule = require_object_define_property();
    var makeBuiltIn = require_make_built_in();
    var defineGlobalProperty = require_define_global_property();
    module2.exports = function(O, key, value, options) {
      if (!options)
        options = {};
      var simple = options.enumerable;
      var name = options.name !== void 0 ? options.name : key;
      if (isCallable(value))
        makeBuiltIn(value, name, options);
      if (options.global) {
        if (simple)
          O[key] = value;
        else
          defineGlobalProperty(key, value);
      } else {
        try {
          if (!options.unsafe)
            delete O[key];
          else if (O[key])
            simple = true;
        } catch (error) {
        }
        if (simple)
          O[key] = value;
        else
          definePropertyModule.f(O, key, {
            value,
            enumerable: false,
            configurable: !options.nonConfigurable,
            writable: !options.nonWritable
          });
      }
      return O;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/math-trunc.js
var require_math_trunc = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/math-trunc.js"(exports, module2) {
    "use strict";
    var ceil = Math.ceil;
    var floor = Math.floor;
    module2.exports = Math.trunc || function trunc(x) {
      var n = +x;
      return (n > 0 ? floor : ceil)(n);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-integer-or-infinity.js
var require_to_integer_or_infinity = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module2) {
    "use strict";
    var trunc = require_math_trunc();
    module2.exports = function(argument) {
      var number = +argument;
      return number !== number || number === 0 ? 0 : trunc(number);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-absolute-index.js
var require_to_absolute_index = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-absolute-index.js"(exports, module2) {
    "use strict";
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var max = Math.max;
    var min = Math.min;
    module2.exports = function(index, length) {
      var integer = toIntegerOrInfinity(index);
      return integer < 0 ? max(integer + length, 0) : min(integer, length);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-length.js
var require_to_length = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/to-length.js"(exports, module2) {
    "use strict";
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var min = Math.min;
    module2.exports = function(argument) {
      var len = toIntegerOrInfinity(argument);
      return len > 0 ? min(len, 9007199254740991) : 0;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/length-of-array-like.js
var require_length_of_array_like = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/length-of-array-like.js"(exports, module2) {
    "use strict";
    var toLength = require_to_length();
    module2.exports = function(obj) {
      return toLength(obj.length);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/array-includes.js
var require_array_includes = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/array-includes.js"(exports, module2) {
    "use strict";
    var toIndexedObject = require_to_indexed_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    var createMethod = function(IS_INCLUDES) {
      return function($this, el, fromIndex) {
        var O = toIndexedObject($this);
        var length = lengthOfArrayLike(O);
        if (length === 0)
          return !IS_INCLUDES && -1;
        var index = toAbsoluteIndex(fromIndex, length);
        var value;
        if (IS_INCLUDES && el !== el)
          while (length > index) {
            value = O[index++];
            if (value !== value)
              return true;
          }
        else
          for (; length > index; index++) {
            if ((IS_INCLUDES || index in O) && O[index] === el)
              return IS_INCLUDES || index || 0;
          }
        return !IS_INCLUDES && -1;
      };
    };
    module2.exports = {
      // `Array.prototype.includes` method
      // https://tc39.es/ecma262/#sec-array.prototype.includes
      includes: createMethod(true),
      // `Array.prototype.indexOf` method
      // https://tc39.es/ecma262/#sec-array.prototype.indexof
      indexOf: createMethod(false)
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-keys-internal.js
var require_object_keys_internal = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-keys-internal.js"(exports, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var hasOwn = require_has_own_property();
    var toIndexedObject = require_to_indexed_object();
    var indexOf = require_array_includes().indexOf;
    var hiddenKeys = require_hidden_keys();
    var push = uncurryThis([].push);
    module2.exports = function(object, names) {
      var O = toIndexedObject(object);
      var i = 0;
      var result = [];
      var key;
      for (key in O)
        !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
      while (names.length > i)
        if (hasOwn(O, key = names[i++])) {
          ~indexOf(result, key) || push(result, key);
        }
      return result;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/enum-bug-keys.js
var require_enum_bug_keys = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/enum-bug-keys.js"(exports, module2) {
    "use strict";
    module2.exports = [
      "constructor",
      "hasOwnProperty",
      "isPrototypeOf",
      "propertyIsEnumerable",
      "toLocaleString",
      "toString",
      "valueOf"
    ];
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-names.js
var require_object_get_own_property_names = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-names.js"(exports) {
    "use strict";
    var internalObjectKeys = require_object_keys_internal();
    var enumBugKeys = require_enum_bug_keys();
    var hiddenKeys = enumBugKeys.concat("length", "prototype");
    exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
      return internalObjectKeys(O, hiddenKeys);
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-symbols.js
var require_object_get_own_property_symbols = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) {
    "use strict";
    exports.f = Object.getOwnPropertySymbols;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/own-keys.js
var require_own_keys = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/own-keys.js"(exports, module2) {
    "use strict";
    var getBuiltIn = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var getOwnPropertyNamesModule = require_object_get_own_property_names();
    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
    var anObject = require_an_object();
    var concat = uncurryThis([].concat);
    module2.exports = getBuiltIn("Reflect", "ownKeys") || function ownKeys(it) {
      var keys = getOwnPropertyNamesModule.f(anObject(it));
      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
      return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/copy-constructor-properties.js
var require_copy_constructor_properties = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/copy-constructor-properties.js"(exports, module2) {
    "use strict";
    var hasOwn = require_has_own_property();
    var ownKeys = require_own_keys();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var definePropertyModule = require_object_define_property();
    module2.exports = function(target, source, exceptions) {
      var keys = ownKeys(source);
      var defineProperty = definePropertyModule.f;
      var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
      for (var i = 0; i < keys.length; i++) {
        var key = keys[i];
        if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
          defineProperty(target, key, getOwnPropertyDescriptor(source, key));
        }
      }
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-forced.js
var require_is_forced = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-forced.js"(exports, module2) {
    "use strict";
    var fails = require_fails();
    var isCallable = require_is_callable();
    var replacement = /#|\.prototype\./;
    var isForced = function(feature, detection) {
      var value = data[normalize(feature)];
      return value === POLYFILL ? true : value === NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;
    };
    var normalize = isForced.normalize = function(string) {
      return String(string).replace(replacement, ".").toLowerCase();
    };
    var data = isForced.data = {};
    var NATIVE = isForced.NATIVE = "N";
    var POLYFILL = isForced.POLYFILL = "P";
    module2.exports = isForced;
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/export.js
var require_export = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/export.js"(exports, module2) {
    "use strict";
    var global2 = require_global();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIn = require_define_built_in();
    var defineGlobalProperty = require_define_global_property();
    var copyConstructorProperties = require_copy_constructor_properties();
    var isForced = require_is_forced();
    module2.exports = 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 = global2;
      } else if (STATIC) {
        target = global2[TARGET] || defineGlobalProperty(TARGET, {});
      } else {
        target = global2[TARGET] && global2[TARGET].prototype;
      }
      if (target)
        for (key in source) {
          sourceProperty = source[key];
          if (options.dontCallGetSet) {
            descriptor = getOwnPropertyDescriptor(target, key);
            targetProperty = descriptor && descriptor.value;
          } else
            targetProperty = target[key];
          FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced);
          if (!FORCED && targetProperty !== void 0) {
            if (typeof sourceProperty == typeof targetProperty)
              continue;
            copyConstructorProperties(sourceProperty, targetProperty);
          }
          if (options.sham || targetProperty && targetProperty.sham) {
            createNonEnumerableProperty(sourceProperty, "sham", true);
          }
          defineBuiltIn(target, key, sourceProperty, options);
        }
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-array.js
var require_is_array = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/is-array.js"(exports, module2) {
    "use strict";
    var classof = require_classof_raw();
    module2.exports = Array.isArray || function isArray(argument) {
      return classof(argument) === "Array";
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/array-set-length.js
var require_array_set_length = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/array-set-length.js"(exports, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var isArray = require_is_array();
    var $TypeError = TypeError;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function() {
      if (this !== void 0)
        return true;
      try {
        Object.defineProperty([], "length", { writable: false }).length = 1;
      } catch (error) {
        return error instanceof TypeError;
      }
    }();
    module2.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function(O, length) {
      if (isArray(O) && !getOwnPropertyDescriptor(O, "length").writable) {
        throw new $TypeError("Cannot set read only .length");
      }
      return O.length = length;
    } : function(O, length) {
      return O.length = length;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/does-not-exceed-safe-integer.js
var require_does_not_exceed_safe_integer = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/does-not-exceed-safe-integer.js"(exports, module2) {
    "use strict";
    var $TypeError = TypeError;
    var MAX_SAFE_INTEGER = 9007199254740991;
    module2.exports = function(it) {
      if (it > MAX_SAFE_INTEGER)
        throw $TypeError("Maximum allowed index exceeded");
      return it;
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/modules/es.array.push.js
var require_es_array_push = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/modules/es.array.push.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var setArrayLength = require_array_set_length();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var fails = require_fails();
    var INCORRECT_TO_LENGTH = fails(function() {
      return [].push.call({ length: 4294967296 }, 1) !== 4294967297;
    });
    var properErrorOnNonWritableLength = function() {
      try {
        Object.defineProperty([], "length", { writable: false }).push();
      } catch (error) {
        return error instanceof TypeError;
      }
    };
    var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();
    $2({ target: "Array", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      push: function push(item) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var argCount = arguments.length;
        doesNotExceedSafeInteger(len + argCount);
        for (var i = 0; i < argCount; i++) {
          O[len] = arguments[i];
          len++;
        }
        setArrayLength(O, len);
        return len;
      }
    });
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/delete-property-or-throw.js
var require_delete_property_or_throw = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/internals/delete-property-or-throw.js"(exports, module2) {
    "use strict";
    var tryToString = require_try_to_string();
    var $TypeError = TypeError;
    module2.exports = function(O, P) {
      if (!delete O[P])
        throw new $TypeError("Cannot delete property " + tryToString(P) + " of " + tryToString(O));
    };
  }
});

// node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/modules/es.array.unshift.js
var require_es_array_unshift = __commonJS({
  "node_modules/.pnpm/core-js@3.37.0/node_modules/core-js/modules/es.array.unshift.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var setArrayLength = require_array_set_length();
    var deletePropertyOrThrow = require_delete_property_or_throw();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var INCORRECT_RESULT = [].unshift(0) !== 1;
    var properErrorOnNonWritableLength = function() {
      try {
        Object.defineProperty([], "length", { writable: false }).unshift();
      } catch (error) {
        return error instanceof TypeError;
      }
    };
    var FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();
    $2({ target: "Array", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      unshift: function unshift(item) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var argCount = arguments.length;
        if (argCount) {
          doesNotExceedSafeInteger(len + argCount);
          var k = len;
          while (k--) {
            var to = k + argCount;
            if (k in O)
              O[to] = O[k];
            else
              deletePropertyOrThrow(O, to);
          }
          for (var j = 0; j < argCount; j++) {
            O[j] = arguments[j];
          }
        }
        return setArrayLength(O, len + argCount);
      }
    });
  }
});

// dist/select2/select2.js
require_es_array_push();
require_es_array_unshift();
//! src/select2/select2.js
/*! Select2 4.0.12 | https://github.com/select2/select2/blob/master/LICENSE.md */
!function(n) {
  "function" == typeof define && define.amd ? define(["jquery"], n) : (
    /*"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:*/
    n(jQuery)
  );
}(function(u) {
  var e = function() {
    if (u && u.fn && u.fn.select2 && u.fn.select2.amd)
      var e2 = u.fn.select2.amd;
    var t2, n, r, h, o, s, f, g, m, v, y, _, i, a, w;
    function b(e3, t3) {
      return i.call(e3, t3);
    }
    function l(e3, t3) {
      var n2, r2, i2, o2, s2, a2, l2, c2, u2, d, p, h2 = t3 && t3.split("/"), f2 = y.map, g2 = f2 && f2["*"] || {};
      if (e3) {
        for (s2 = (e3 = e3.split("/")).length - 1, y.nodeIdCompat && w.test(e3[s2]) && (e3[s2] = e3[s2].replace(w, "")), "." === e3[0].charAt(0) && h2 && (e3 = h2.slice(0, h2.length - 1).concat(e3)), u2 = 0; u2 < e3.length; u2++)
          if ("." === (p = e3[u2]))
            e3.splice(u2, 1), u2 -= 1;
          else if (".." === p) {
            if (0 === u2 || 1 === u2 && ".." === e3[2] || ".." === e3[u2 - 1])
              continue;
            0 < u2 && (e3.splice(u2 - 1, 2), u2 -= 2);
          }
        e3 = e3.join("/");
      }
      if ((h2 || g2) && f2) {
        for (u2 = (n2 = e3.split("/")).length; 0 < u2; u2 -= 1) {
          if (r2 = n2.slice(0, u2).join("/"), h2) {
            for (d = h2.length; 0 < d; d -= 1)
              if (i2 = (i2 = f2[h2.slice(0, d).join("/")]) && i2[r2]) {
                o2 = i2, a2 = u2;
                break;
              }
          }
          if (o2)
            break;
          !l2 && g2 && g2[r2] && (l2 = g2[r2], c2 = u2);
        }
        !o2 && l2 && (o2 = l2, a2 = c2), o2 && (n2.splice(0, a2, o2), e3 = n2.join("/"));
      }
      return e3;
    }
    function A(t3, n2) {
      return function() {
        var e3 = a.call(arguments, 0);
        return "string" != typeof e3[0] && 1 === e3.length && e3.push(null), s.apply(h, e3.concat([t3, n2]));
      };
    }
    function x(t3) {
      return function(e3) {
        m[t3] = e3;
      };
    }
    function D(e3) {
      if (b(v, e3)) {
        var t3 = v[e3];
        delete v[e3], _[e3] = true, o.apply(h, t3);
      }
      if (!b(m, e3) && !b(_, e3))
        throw new Error("No " + e3);
      return m[e3];
    }
    function c(e3) {
      var t3, n2 = e3 ? e3.indexOf("!") : -1;
      return -1 < n2 && (t3 = e3.substring(0, n2), e3 = e3.substring(n2 + 1, e3.length)), [t3, e3];
    }
    function S(e3) {
      return e3 ? c(e3) : [];
    }
    return e2 && e2.requirejs || (e2 ? n = e2 : e2 = {}, m = {}, v = {}, y = {}, _ = {}, i = Object.prototype.hasOwnProperty, a = [].slice, w = /\.js$/, f = function(e3, t3) {
      var n2, r2 = c(e3), i2 = r2[0], o2 = t3[1];
      return e3 = r2[1], i2 && (n2 = D(i2 = l(i2, o2))), i2 ? e3 = n2 && n2.normalize ? n2.normalize(e3, /* @__PURE__ */ function(t4) {
        return function(e4) {
          return l(e4, t4);
        };
      }(o2)) : l(e3, o2) : (i2 = (r2 = c(e3 = l(e3, o2)))[0], e3 = r2[1], i2 && (n2 = D(i2))), {
        f: i2 ? i2 + "!" + e3 : e3,
        n: e3,
        pr: i2,
        p: n2
      };
    }, g = {
      require: function(e3) {
        return A(e3);
      },
      exports: function(e3) {
        var t3 = m[e3];
        return void 0 !== t3 ? t3 : m[e3] = {};
      },
      module: function(e3) {
        return {
          id: e3,
          uri: "",
          exports: m[e3],
          config: /* @__PURE__ */ function(e4) {
            return function() {
              return y && y.config && y.config[e4] || {};
            };
          }(e3)
        };
      }
    }, o = function(e3, t3, n2, r2) {
      var i2, o2, s2, a2, l2, c2, u2, d = [], p = typeof n2;
      if (c2 = S(r2 = r2 || e3), "undefined" == p || "function" == p) {
        for (t3 = !t3.length && n2.length ? ["require", "exports", "module"] : t3, l2 = 0; l2 < t3.length; l2 += 1)
          if ("require" === (o2 = (a2 = f(t3[l2], c2)).f))
            d[l2] = g.require(e3);
          else if ("exports" === o2)
            d[l2] = g.exports(e3), u2 = true;
          else if ("module" === o2)
            i2 = d[l2] = g.module(e3);
          else if (b(m, o2) || b(v, o2) || b(_, o2))
            d[l2] = D(o2);
          else {
            if (!a2.p)
              throw new Error(e3 + " missing " + o2);
            a2.p.load(a2.n, A(r2, true), x(o2), {}), d[l2] = m[o2];
          }
        s2 = n2 ? n2.apply(m[e3], d) : void 0, e3 && (i2 && i2.exports !== h && i2.exports !== m[e3] ? m[e3] = i2.exports : s2 === h && u2 || (m[e3] = s2));
      } else
        e3 && (m[e3] = n2);
    }, t2 = n = s = function(e3, t3, n2, r2, i2) {
      if ("string" == typeof e3)
        return g[e3] ? g[e3](t3) : D(f(e3, S(t3)).f);
      if (!e3.splice) {
        if ((y = e3).deps && s(y.deps, y.callback), !t3)
          return;
        t3.splice ? (e3 = t3, t3 = n2, n2 = null) : e3 = h;
      }
      return t3 = t3 || function() {
      }, "function" == typeof n2 && (n2 = r2, r2 = i2), r2 ? o(h, e3, t3, n2) : setTimeout(function() {
        o(h, e3, t3, n2);
      }, 4), s;
    }, s.config = function(e3) {
      return s(e3);
    }, t2._defined = m, (r = function(e3, t3, n2) {
      if ("string" != typeof e3)
        throw new Error("See almond README: incorrect module build, no module name");
      t3.splice || (n2 = t3, t3 = []), b(m, e3) || b(v, e3) || (v[e3] = [e3, t3, n2]);
    }).amd = {
      jQuery: true
    }, e2.requirejs = t2, e2.require = n, e2.define = r), e2.define("almond", function() {
    }), e2.define("jquery", [], function() {
      var e3 = u || $;
      return null == e3 && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."), e3;
    }), e2.define("select2/utils", ["jquery"], function(o2) {
      var i2 = {};
      function u2(e4) {
        var t3 = e4.prototype, n3 = [];
        for (var r2 in t3) {
          "function" == typeof t3[r2] && "constructor" !== r2 && n3.push(r2);
        }
        return n3;
      }
      i2.Extend = function(e4, t3) {
        var n3 = {}.hasOwnProperty;
        function r2() {
          this.constructor = e4;
        }
        for (var i3 in t3)
          n3.call(t3, i3) && (e4[i3] = t3[i3]);
        return r2.prototype = t3.prototype, e4.prototype = new r2(), e4.__super__ = t3.prototype, e4;
      }, i2.Decorate = function(r2, i3) {
        var e4 = u2(i3), t3 = u2(r2);
        function o3() {
          var e5 = Array.prototype.unshift, t4 = i3.prototype.constructor.length, n4 = r2.prototype.constructor;
          0 < t4 && (e5.call(arguments, r2.prototype.constructor), n4 = i3.prototype.constructor), n4.apply(this, arguments);
        }
        i3.displayName = r2.displayName, o3.prototype = new function() {
          this.constructor = o3;
        }();
        for (var n3 = 0; n3 < t3.length; n3++) {
          var s2 = t3[n3];
          o3.prototype[s2] = r2.prototype[s2];
        }
        function a2(e5) {
          var t4 = function() {
          };
          e5 in o3.prototype && (t4 = o3.prototype[e5]);
          var n4 = i3.prototype[e5];
          return function() {
            return Array.prototype.unshift.call(arguments, t4), n4.apply(this, arguments);
          };
        }
        for (var l2 = 0; l2 < e4.length; l2++) {
          var c2 = e4[l2];
          o3.prototype[c2] = a2(c2);
        }
        return o3;
      };
      function e3() {
        this.listeners = {};
      }
      e3.prototype.on = function(e4, t3) {
        this.listeners = this.listeners || {}, e4 in this.listeners ? this.listeners[e4].push(t3) : this.listeners[e4] = [t3];
      }, e3.prototype.trigger = function(e4) {
        var t3 = Array.prototype.slice, n3 = t3.call(arguments, 1);
        this.listeners = this.listeners || {}, null == n3 && (n3 = []), 0 === n3.length && n3.push({}), (n3[0]._type = e4) in this.listeners && this.invoke(this.listeners[e4], t3.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments);
      }, e3.prototype.invoke = function(e4, t3) {
        for (var n3 = 0, r2 = e4.length; n3 < r2; n3++)
          e4[n3].apply(this, t3);
      }, i2.Observable = e3, i2.generateChars = function(e4) {
        for (var t3 = "", n3 = 0; n3 < e4; n3++) {
          t3 += Math.floor(36 * Math.random()).toString(36);
        }
        return t3;
      }, i2.bind = function(e4, t3) {
        return function() {
          e4.apply(t3, arguments);
        };
      }, i2._convertData = function(e4) {
        for (var t3 in e4) {
          var n3 = t3.split("-"), r2 = e4;
          if (1 !== n3.length) {
            for (var i3 = 0; i3 < n3.length; i3++) {
              var o3 = n3[i3];
              (o3 = o3.substring(0, 1).toLowerCase() + o3.substring(1)) in r2 || (r2[o3] = {}), i3 == n3.length - 1 && (r2[o3] = e4[t3]), r2 = r2[o3];
            }
            delete e4[t3];
          }
        }
        return e4;
      }, i2.hasScroll = function(e4, t3) {
        var n3 = o2(t3), r2 = t3.style.overflowX, i3 = t3.style.overflowY;
        return (r2 !== i3 || "hidden" !== i3 && "visible" !== i3) && ("scroll" === r2 || "scroll" === i3 || n3.innerHeight() < t3.scrollHeight || n3.innerWidth() < t3.scrollWidth);
      }, i2.escapeMarkup = function(e4) {
        var t3 = {
          "\\": "&#92;",
          "&": "&amp;",
          "<": "&lt;",
          ">": "&gt;",
          '"': "&quot;",
          "'": "&#39;",
          "/": "&#47;"
        };
        return "string" != typeof e4 ? e4 : String(e4).replace(/[&<>"'\/\\]/g, function(e5) {
          return t3[e5];
        });
      }, i2.appendMany = function(e4, t3) {
        if ("1.7" === o2.fn.jquery.substr(0, 3)) {
          var n3 = o2();
          o2.map(t3, function(e5) {
            n3 = n3.add(e5);
          }), t3 = n3;
        }
        e4.append(t3);
      }, i2.__cache = {};
      var n2 = 0;
      return i2.GetUniqueElementId = function(e4) {
        var t3 = e4.getAttribute("data-select2-id");
        return null == t3 && (e4.id ? (t3 = e4.id, e4.setAttribute("data-select2-id", t3)) : (e4.setAttribute("data-select2-id", ++n2), t3 = n2.toString())), t3;
      }, i2.StoreData = function(e4, t3, n3) {
        var r2 = i2.GetUniqueElementId(e4);
        i2.__cache[r2] || (i2.__cache[r2] = {}), i2.__cache[r2][t3] = n3;
      }, i2.GetData = function(e4, t3) {
        var n3 = i2.GetUniqueElementId(e4);
        return t3 ? i2.__cache[n3] && null != i2.__cache[n3][t3] ? i2.__cache[n3][t3] : o2(e4).data(t3) : i2.__cache[n3];
      }, i2.RemoveData = function(e4) {
        var t3 = i2.GetUniqueElementId(e4);
        null != i2.__cache[t3] && delete i2.__cache[t3], e4.removeAttribute("data-select2-id");
      }, i2;
    }), e2.define("select2/results", ["jquery", "./utils"], function(h2, f2) {
      function r2(e3, t3, n2) {
        this.$element = e3, this.data = n2, this.options = t3, r2.__super__.constructor.call(this);
      }
      return f2.Extend(r2, f2.Observable), r2.prototype.render = function() {
        var e3 = h2('<ul class="select2-results__options" role="listbox"></ul>');
        return this.options.get("multiple") && e3.attr("aria-multiselectable", "true"), this.$results = e3;
      }, r2.prototype.clear = function() {
        this.$results.empty();
      }, r2.prototype.displayMessage = function(e3) {
        var t3 = this.options.get("escapeMarkup");
        this.clear(), this.hideLoading();
        var n2 = h2('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'), r3 = this.options.get("translations").get(e3.message);
        n2.append(t3(r3(e3.args))), n2[0].className += " select2-results__message", this.$results.append(n2);
      }, r2.prototype.hideMessages = function() {
        this.$results.find(".select2-results__message").remove();
      }, r2.prototype.append = function(e3) {
        this.hideLoading();
        var t3 = [];
        if (null != e3.results && 0 !== e3.results.length) {
          e3.results = this.sort(e3.results);
          for (var n2 = 0; n2 < e3.results.length; n2++) {
            var r3 = e3.results[n2], i2 = this.option(r3);
            t3.push(i2);
          }
          this.$results.append(t3);
        } else
          0 === this.$results.children().length && this.trigger("results:message", {
            message: "noResults"
          });
      }, r2.prototype.position = function(e3, t3) {
        t3.find(".select2-results").append(e3);
      }, r2.prototype.sort = function(e3) {
        return this.options.get("sorter")(e3);
      }, r2.prototype.highlightFirstItem = function() {
        var e3 = this.$results.find(".select2-results__option[aria-selected]"), t3 = e3.filter("[aria-selected=true]");
        0 < t3.length ? t3.first().trigger("mouseenter") : e3.first().trigger("mouseenter"), this.ensureHighlightVisible();
      }, r2.prototype.setClasses = function() {
        var t3 = this;
        this.data.current(function(e3) {
          var r3 = h2.map(e3, function(e4) {
            return e4.id.toString();
          });
          t3.$results.find(".select2-results__option[aria-selected]").each(function() {
            var e4 = h2(this), t4 = f2.GetData(this, "data"), n2 = "" + t4.id;
            null != t4.element && t4.element.selected || null == t4.element && -1 < h2.inArray(n2, r3) ? e4.attr("aria-selected", "true") : e4.attr("aria-selected", "false");
          });
        });
      }, r2.prototype.showLoading = function(e3) {
        this.hideLoading();
        var t3 = {
          disabled: true,
          loading: true,
          text: this.options.get("translations").get("searching")(e3)
        }, n2 = this.option(t3);
        n2.className += " loading-results", this.$results.prepend(n2);
      }, r2.prototype.hideLoading = function() {
        this.$results.find(".loading-results").remove();
      }, r2.prototype.option = function(e3) {
        var t3 = document.createElement("li");
        t3.className = "select2-results__option";
        var n2 = {
          role: "option",
          "aria-selected": "false"
        }, r3 = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;
        for (var i2 in (null != e3.element && r3.call(e3.element, ":disabled") || null == e3.element && e3.disabled) && (delete n2["aria-selected"], n2["aria-disabled"] = "true"), null == e3.id && delete n2["aria-selected"], null != e3._resultId && (t3.id = e3._resultId), e3.title && (t3.title = e3.title), e3.children && (n2.role = "group", n2["aria-label"] = e3.text, delete n2["aria-selected"]), n2) {
          var o2 = n2[i2];
          t3.setAttribute(i2, o2);
        }
        if (e3.children) {
          var s2 = h2(t3), a2 = document.createElement("strong");
          a2.className = "select2-results__group";
          h2(a2);
          this.template(e3, a2);
          for (var l2 = [], c2 = 0; c2 < e3.children.length; c2++) {
            var u2 = e3.children[c2], d = this.option(u2);
            l2.push(d);
          }
          var p = h2("<ul></ul>", {
            class: "select2-results__options select2-results__options--nested"
          });
          p.append(l2), s2.append(a2), s2.append(p);
        } else
          this.template(e3, t3);
        return f2.StoreData(t3, "data", e3), t3;
      }, r2.prototype.bind = function(t3, e3) {
        var l2 = this, n2 = t3.id + "-results";
        this.$results.attr("id", n2), t3.on("results:all", function(e4) {
          l2.clear(), l2.append(e4.data), t3.isOpen() && (l2.setClasses(), l2.highlightFirstItem());
        }), t3.on("results:append", function(e4) {
          l2.append(e4.data), t3.isOpen() && l2.setClasses();
        }), t3.on("query", function(e4) {
          l2.hideMessages(), l2.showLoading(e4);
        }), t3.on("select", function() {
          t3.isOpen() && (l2.setClasses(), l2.options.get("scrollAfterSelect") && l2.highlightFirstItem());
        }), t3.on("unselect", function() {
          t3.isOpen() && (l2.setClasses(), l2.options.get("scrollAfterSelect") && l2.highlightFirstItem());
        }), t3.on("open", function() {
          l2.$results.attr("aria-expanded", "true"), l2.$results.attr("aria-hidden", "false"), l2.setClasses(), l2.ensureHighlightVisible();
        }), t3.on("close", function() {
          l2.$results.attr("aria-expanded", "false"), l2.$results.attr("aria-hidden", "true"), l2.$results.removeAttr("aria-activedescendant");
        }), t3.on("results:toggle", function() {
          var e4 = l2.getHighlightedResults();
          0 !== e4.length && e4.trigger("mouseup");
        }), t3.on("results:select", function() {
          var e4 = l2.getHighlightedResults();
          if (0 !== e4.length) {
            var t4 = f2.GetData(e4[0], "data");
            "true" == e4.attr("aria-selected") ? l2.trigger("close", {}) : l2.trigger("select", {
              data: t4
            });
          }
        }), t3.on("results:previous", function() {
          var e4 = l2.getHighlightedResults(), t4 = l2.$results.find("[aria-selected]"), n3 = t4.index(e4);
          if (!(n3 <= 0)) {
            var r3 = n3 - 1;
            0 === e4.length && (r3 = 0);
            var i2 = t4.eq(r3);
            i2.trigger("mouseenter");
            var o2 = l2.$results.offset().top, s2 = i2.offset().top, a2 = l2.$results.scrollTop() + (s2 - o2);
            0 === r3 ? l2.$results.scrollTop(0) : s2 - o2 < 0 && l2.$results.scrollTop(a2);
          }
        }), t3.on("results:next", function() {
          var e4 = l2.getHighlightedResults(), t4 = l2.$results.find("[aria-selected]"), n3 = t4.index(e4) + 1;
          if (!(n3 >= t4.length)) {
            var r3 = t4.eq(n3);
            r3.trigger("mouseenter");
            var i2 = l2.$results.offset().top + l2.$results.outerHeight(false), o2 = r3.offset().top + r3.outerHeight(false), s2 = l2.$results.scrollTop() + o2 - i2;
            0 === n3 ? l2.$results.scrollTop(0) : i2 < o2 && l2.$results.scrollTop(s2);
          }
        }), t3.on("results:focus", function(e4) {
          e4.element.addClass("select2-results__option--highlighted");
        }), t3.on("results:message", function(e4) {
          l2.displayMessage(e4);
        }), h2.fn.mousewheel && this.$results.on("mousewheel", function(e4) {
          var t4 = l2.$results.scrollTop(), n3 = l2.$results.get(0).scrollHeight - t4 + e4.deltaY, r3 = 0 < e4.deltaY && t4 - e4.deltaY <= 0, i2 = e4.deltaY < 0 && n3 <= l2.$results.height();
          r3 ? (l2.$results.scrollTop(0), e4.preventDefault(), e4.stopPropagation()) : i2 && (l2.$results.scrollTop(l2.$results.get(0).scrollHeight - l2.$results.height()), e4.preventDefault(), e4.stopPropagation());
        }), this.$results.on("mouseup", ".select2-results__option[aria-selected]", function(e4) {
          var t4 = h2(this), n3 = f2.GetData(this, "data");
          "true" !== t4.attr("aria-selected") ? l2.trigger("select", {
            originalEvent: e4,
            data: n3
          }) : l2.options.get("multiple") ? l2.trigger("unselect", {
            originalEvent: e4,
            data: n3
          }) : l2.trigger("close", {});
        }), this.$results.on("mouseenter", ".select2-results__option[aria-selected]", function(e4) {
          var t4 = f2.GetData(this, "data");
          l2.getHighlightedResults().removeClass("select2-results__option--highlighted"), l2.trigger("results:focus", {
            data: t4,
            element: h2(this)
          });
        });
      }, r2.prototype.getHighlightedResults = function() {
        return this.$results.find(".select2-results__option--highlighted");
      }, r2.prototype.destroy = function() {
        this.$results.remove();
      }, r2.prototype.ensureHighlightVisible = function() {
        var e3 = this.getHighlightedResults();
        if (0 !== e3.length) {
          var t3 = this.$results.find("[aria-selected]").index(e3), n2 = this.$results.offset().top, r3 = e3.offset().top, i2 = this.$results.scrollTop() + (r3 - n2), o2 = r3 - n2;
          i2 -= 2 * e3.outerHeight(false), t3 <= 2 ? this.$results.scrollTop(0) : (o2 > this.$results.outerHeight() || o2 < 0) && this.$results.scrollTop(i2);
        }
      }, r2.prototype.template = function(e3, t3) {
        var n2 = this.options.get("templateResult"), r3 = this.options.get("escapeMarkup"), i2 = n2(e3, t3);
        null == i2 ? t3.style.display = "none" : "string" == typeof i2 ? t3.innerHTML = r3(i2) : h2(t3).append(i2);
      }, r2;
    }), e2.define("select2/keys", [], function() {
      return {
        BACKSPACE: 8,
        TAB: 9,
        ENTER: 13,
        SHIFT: 16,
        CTRL: 17,
        ALT: 18,
        ESC: 27,
        SPACE: 32,
        PAGE_UP: 33,
        PAGE_DOWN: 34,
        END: 35,
        HOME: 36,
        LEFT: 37,
        UP: 38,
        RIGHT: 39,
        DOWN: 40,
        DELETE: 46
      };
    }), e2.define("select2/selection/base", ["jquery", "../utils", "../keys"], function(n2, r2, i2) {
      function o2(e3, t3) {
        this.$element = e3, this.options = t3, o2.__super__.constructor.call(this);
      }
      return r2.Extend(o2, r2.Observable), o2.prototype.render = function() {
        var e3 = n2('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');
        return this._tabindex = 0, null != r2.GetData(this.$element[0], "old-tabindex") ? this._tabindex = r2.GetData(this.$element[0], "old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")), e3.attr("title", this.$element.attr("title")), e3.attr("tabindex", this._tabindex), e3.attr("aria-disabled", "false"), this.$selection = e3;
      }, o2.prototype.bind = function(e3, t3) {
        var n3 = this, r3 = e3.id + "-results";
        this.container = e3, this.$selection.on("focus", function(e4) {
          n3.trigger("focus", e4);
        }), this.$selection.on("blur", function(e4) {
          n3._handleBlur(e4);
        }), this.$selection.on("keydown", function(e4) {
          n3.trigger("keypress", e4), e4.which === i2.SPACE && e4.preventDefault();
        }), e3.on("results:focus", function(e4) {
          n3.$selection.attr("aria-activedescendant", e4.data._resultId);
        }), e3.on("selection:update", function(e4) {
          n3.update(e4.data);
        }), e3.on("open", function() {
          n3.$selection.attr("aria-expanded", "true"), n3.$selection.attr("aria-owns", r3), n3._attachCloseHandler(e3);
        }), e3.on("close", function() {
          n3.$selection.attr("aria-expanded", "false"), n3.$selection.removeAttr("aria-activedescendant"), n3.$selection.removeAttr("aria-owns"), n3.$selection.trigger("focus"), n3._detachCloseHandler(e3);
        }), e3.on("enable", function() {
          n3.$selection.attr("tabindex", n3._tabindex), n3.$selection.attr("aria-disabled", "false");
        }), e3.on("disable", function() {
          n3.$selection.attr("tabindex", "-1"), n3.$selection.attr("aria-disabled", "true");
        });
      }, o2.prototype._handleBlur = function(e3) {
        var t3 = this;
        window.setTimeout(function() {
          document.activeElement == t3.$selection[0] || n2.contains(t3.$selection[0], document.activeElement) || t3.trigger("blur", e3);
        }, 1);
      }, o2.prototype._attachCloseHandler = function(e3) {
        n2(document.body).on("mousedown.select2." + e3.id, function(e4) {
          var t3 = n2(e4.target).closest(".select2");
          n2(".select2.select2-container--open").each(function() {
            this != t3[0] && r2.GetData(this, "element").select2("close");
          });
        });
      }, o2.prototype._detachCloseHandler = function(e3) {
        n2(document.body).off("mousedown.select2." + e3.id);
      }, o2.prototype.position = function(e3, t3) {
        t3.find(".selection").append(e3);
      }, o2.prototype.destroy = function() {
        this._detachCloseHandler(this.container);
      }, o2.prototype.update = function(e3) {
        throw new Error("The `update` method must be defined in child classes.");
      }, o2;
    }), e2.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], function(e3, t3, n2, r2) {
      function i2() {
        i2.__super__.constructor.apply(this, arguments);
      }
      return n2.Extend(i2, t3), i2.prototype.render = function() {
        var e4 = i2.__super__.render.call(this);
        return e4.addClass("select2-selection--single"), e4.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'), e4;
      }, i2.prototype.bind = function(t4, e4) {
        var n3 = this;
        i2.__super__.bind.apply(this, arguments);
        var r3 = t4.id + "-container";
        this.$selection.find(".select2-selection__rendered").attr("id", r3).attr("role", "textbox").attr("aria-readonly", "true"), this.$selection.attr("aria-labelledby", r3), this.$selection.on("mousedown", function(e5) {
          1 === e5.which && n3.trigger("toggle", {
            originalEvent: e5
          });
        }), this.$selection.on("focus", function(e5) {
        }), this.$selection.on("blur", function(e5) {
        }), t4.on("focus", function(e5) {
          t4.isOpen() || n3.$selection.trigger("focus");
        });
      }, i2.prototype.clear = function() {
        var e4 = this.$selection.find(".select2-selection__rendered");
        e4.empty(), e4.removeAttr("title");
      }, i2.prototype.display = function(e4, t4) {
        var n3 = this.options.get("templateSelection");
        return this.options.get("escapeMarkup")(n3(e4, t4));
      }, i2.prototype.selectionContainer = function() {
        return e3("<span></span>");
      }, i2.prototype.update = function(e4) {
        if (0 !== e4.length) {
          var t4 = e4[0], n3 = this.$selection.find(".select2-selection__rendered"), r3 = this.display(t4, n3);
          n3.empty().append(r3);
          var i3 = t4.title || t4.text;
          i3 ? n3.attr("title", i3) : n3.removeAttr("title");
        } else
          this.clear();
      }, i2;
    }), e2.define("select2/selection/multiple", ["jquery", "./base", "../utils"], function(i2, e3, l2) {
      function n2(e4, t3) {
        n2.__super__.constructor.apply(this, arguments);
      }
      return l2.Extend(n2, e3), n2.prototype.render = function() {
        var e4 = n2.__super__.render.call(this);
        return e4.addClass("select2-selection--multiple"), e4.html('<ul class="select2-selection__rendered"></ul>'), e4;
      }, n2.prototype.bind = function(e4, t3) {
        var r2 = this;
        n2.__super__.bind.apply(this, arguments), this.$selection.on("click", function(e5) {
          r2.trigger("toggle", {
            originalEvent: e5
          });
        }), this.$selection.on("click", ".select2-selection__choice__remove", function(e5) {
          if (!r2.options.get("disabled")) {
            var t4 = i2(this).parent(), n3 = l2.GetData(t4[0], "data");
            r2.trigger("unselect", {
              originalEvent: e5,
              data: n3
            });
          }
        });
      }, n2.prototype.clear = function() {
        var e4 = this.$selection.find(".select2-selection__rendered");
        e4.empty(), e4.removeAttr("title");
      }, n2.prototype.display = function(e4, t3) {
        var n3 = this.options.get("templateSelection");
        return this.options.get("escapeMarkup")(n3(e4, t3));
      }, n2.prototype.selectionContainer = function() {
        return i2('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');
      }, n2.prototype.update = function(e4) {
        if (this.clear(), 0 !== e4.length) {
          for (var t3 = [], n3 = 0; n3 < e4.length; n3++) {
            var r2 = e4[n3], i3 = this.selectionContainer(), o2 = this.display(r2, i3);
            i3.append(o2);
            var s2 = r2.title || r2.text;
            s2 && i3.attr("title", s2), l2.StoreData(i3[0], "data", r2), t3.push(i3);
          }
          var a2 = this.$selection.find(".select2-selection__rendered");
          l2.appendMany(a2, t3);
        }
      }, n2;
    }), e2.define("select2/selection/placeholder", ["../utils"], function(e3) {
      function t3(e4, t4, n2) {
        this.placeholder = this.normalizePlaceholder(n2.get("placeholder")), e4.call(this, t4, n2);
      }
      return t3.prototype.normalizePlaceholder = function(e4, t4) {
        return "string" == typeof t4 && (t4 = {
          id: "",
          text: t4
        }), t4;
      }, t3.prototype.createPlaceholder = function(e4, t4) {
        var n2 = this.selectionContainer();
        return n2.html(this.display(t4)), n2.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), n2;
      }, t3.prototype.update = function(e4, t4) {
        var n2 = 1 == t4.length && t4[0].id != this.placeholder.id;
        if (1 < t4.length || n2)
          return e4.call(this, t4);
        this.clear();
        var r2 = this.createPlaceholder(this.placeholder);
        this.$selection.find(".select2-selection__rendered").append(r2);
      }, t3;
    }), e2.define("select2/selection/allowClear", ["jquery", "../keys", "../utils"], function(i2, r2, a2) {
      function e3() {
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r3 = this;
        e4.call(this, t3, n2), null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."), this.$selection.on("mousedown", ".select2-selection__clear", function(e5) {
          r3._handleClear(e5);
        }), t3.on("keypress", function(e5) {
          r3._handleKeyboardClear(e5, t3);
        });
      }, e3.prototype._handleClear = function(e4, t3) {
        if (!this.options.get("disabled")) {
          var n2 = this.$selection.find(".select2-selection__clear");
          if (0 !== n2.length) {
            t3.stopPropagation();
            var r3 = a2.GetData(n2[0], "data"), i3 = this.$element.val();
            this.$element.val(this.placeholder.id);
            var o2 = {
              data: r3
            };
            if (this.trigger("clear", o2), o2.prevented)
              this.$element.val(i3);
            else {
              for (var s2 = 0; s2 < r3.length; s2++)
                if (o2 = {
                  data: r3[s2]
                }, this.trigger("unselect", o2), o2.prevented)
                  return void this.$element.val(i3);
              this.$element.trigger("change"), this.trigger("toggle", {});
            }
          }
        }
      }, e3.prototype._handleKeyboardClear = function(e4, t3, n2) {
        n2.isOpen() || t3.which != r2.DELETE && t3.which != r2.BACKSPACE || this._handleClear(t3);
      }, e3.prototype.update = function(e4, t3) {
        if (e4.call(this, t3), !(0 < this.$selection.find(".select2-selection__placeholder").length || 0 === t3.length)) {
          var n2 = this.options.get("translations").get("removeAllItems"), r3 = i2('<span class="select2-selection__clear" title="' + n2() + '">&times;</span>');
          a2.StoreData(r3[0], "data", t3), this.$selection.find(".select2-selection__rendered").prepend(r3);
        }
      }, e3;
    }), e2.define("select2/selection/search", ["jquery", "../utils", "../keys"], function(r2, a2, l2) {
      function e3(e4, t3, n2) {
        e4.call(this, t3, n2);
      }
      return e3.prototype.render = function(e4) {
        var t3 = r2('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');
        this.$searchContainer = t3, this.$search = t3.find("input");
        var n2 = e4.call(this);
        return this._transferTabIndex(), n2;
      }, e3.prototype.bind = function(e4, t3, n2) {
        var r3 = this, i2 = t3.id + "-results";
        e4.call(this, t3, n2), t3.on("open", function() {
          r3.$search.attr("aria-controls", i2), r3.$search.trigger("focus");
        }), t3.on("close", function() {
          r3.$search.val(""), r3.$search.removeAttr("aria-controls"), r3.$search.removeAttr("aria-activedescendant"), r3.$search.trigger("focus");
        }), t3.on("enable", function() {
          r3.$search.prop("disabled", false), r3._transferTabIndex();
        }), t3.on("disable", function() {
          r3.$search.prop("disabled", true);
        }), t3.on("focus", function(e5) {
          r3.$search.trigger("focus");
        }), t3.on("results:focus", function(e5) {
          e5.data._resultId ? r3.$search.attr("aria-activedescendant", e5.data._resultId) : r3.$search.removeAttr("aria-activedescendant");
        }), this.$selection.on("focusin", ".select2-search--inline", function(e5) {
          r3.trigger("focus", e5);
        }), this.$selection.on("focusout", ".select2-search--inline", function(e5) {
          r3._handleBlur(e5);
        }), this.$selection.on("keydown", ".select2-search--inline", function(e5) {
          if (e5.stopPropagation(), r3.trigger("keypress", e5), r3._keyUpPrevented = e5.isDefaultPrevented(), e5.which === l2.BACKSPACE && "" === r3.$search.val()) {
            var t4 = r3.$searchContainer.prev(".select2-selection__choice");
            if (0 < t4.length) {
              var n3 = a2.GetData(t4[0], "data");
              r3.searchRemoveChoice(n3), e5.preventDefault();
            }
          }
        }), this.$selection.on("click", ".select2-search--inline", function(e5) {
          r3.$search.val() && e5.stopPropagation();
        });
        var o2 = document.documentMode, s2 = o2 && o2 <= 11;
        this.$selection.on("input.searchcheck", ".select2-search--inline", function(e5) {
          s2 ? r3.$selection.off("input.search input.searchcheck") : r3.$selection.off("keyup.search");
        }), this.$selection.on("keyup.search input.search", ".select2-search--inline", function(e5) {
          if (s2 && "input" === e5.type)
            r3.$selection.off("input.search input.searchcheck");
          else {
            var t4 = e5.which;
            t4 != l2.SHIFT && t4 != l2.CTRL && t4 != l2.ALT && t4 != l2.TAB && r3.handleSearch(e5);
          }
        });
      }, e3.prototype._transferTabIndex = function(e4) {
        this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1");
      }, e3.prototype.createPlaceholder = function(e4, t3) {
        this.$search.attr("placeholder", t3.text);
      }, e3.prototype.update = function(e4, t3) {
        var n2 = this.$search[0] == document.activeElement;
        this.$search.attr("placeholder", ""), e4.call(this, t3), this.$selection.find(".select2-selection__rendered").append(this.$searchContainer), this.resizeSearch(), n2 && this.$search.trigger("focus");
      }, e3.prototype.handleSearch = function() {
        if (this.resizeSearch(), !this._keyUpPrevented) {
          var e4 = this.$search.val();
          this.trigger("query", {
            term: e4
          });
        }
        this._keyUpPrevented = false;
      }, e3.prototype.searchRemoveChoice = function(e4, t3) {
        this.trigger("unselect", {
          data: t3
        }), this.$search.val(t3.text), this.handleSearch();
      }, e3.prototype.resizeSearch = function() {
        this.$search.css("width", "25px");
        var e4 = "";
        "" !== this.$search.attr("placeholder") ? e4 = this.$selection.find(".select2-selection__rendered").width() : e4 = 0.75 * (this.$search.val().length + 1) + "em";
        this.$search.css("width", e4);
      }, e3;
    }), e2.define("select2/selection/eventRelay", ["jquery"], function(s2) {
      function e3() {
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r2 = this, i2 = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting", "clear", "clearing"], o2 = ["opening", "closing", "selecting", "unselecting", "clearing"];
        e4.call(this, t3, n2), t3.on("*", function(e5, t4) {
          if (-1 !== s2.inArray(e5, i2)) {
            t4 = t4 || {};
            var n3 = s2.Event("select2:" + e5, {
              params: t4
            });
            r2.$element.trigger(n3), -1 !== s2.inArray(e5, o2) && (t4.prevented = n3.isDefaultPrevented());
          }
        });
      }, e3;
    }), e2.define("select2/translation", ["jquery", "require"], function(t3, n2) {
      function r2(e3) {
        this.dict = e3 || {};
      }
      return r2.prototype.all = function() {
        return this.dict;
      }, r2.prototype.get = function(e3) {
        return this.dict[e3];
      }, r2.prototype.extend = function(e3) {
        this.dict = t3.extend({}, e3.all(), this.dict);
      }, r2._cache = {}, r2.loadPath = function(e3) {
        if (!(e3 in r2._cache)) {
          var t4 = n2(e3);
          r2._cache[e3] = t4;
        }
        return new r2(r2._cache[e3]);
      }, r2;
    }), e2.define("select2/diacritics", [], function() {
      return {
        "Ⓐ": "A",
        "A": "A",
        "À": "A",
        "Á": "A",
        "Â": "A",
        "Ầ": "A",
        "Ấ": "A",
        "Ẫ": "A",
        "Ẩ": "A",
        "Ã": "A",
        "Ā": "A",
        "Ă": "A",
        "Ằ": "A",
        "Ắ": "A",
        "Ẵ": "A",
        "Ẳ": "A",
        "Ȧ": "A",
        "Ǡ": "A",
        "Ä": "A",
        "Ǟ": "A",
        "Ả": "A",
        "Å": "A",
        "Ǻ": "A",
        "Ǎ": "A",
        "Ȁ": "A",
        "Ȃ": "A",
        "Ạ": "A",
        "Ậ": "A",
        "Ặ": "A",
        "Ḁ": "A",
        "Ą": "A",
        "Ⱥ": "A",
        "Ɐ": "A",
        "Ꜳ": "AA",
        "Æ": "AE",
        "Ǽ": "AE",
        "Ǣ": "AE",
        "Ꜵ": "AO",
        "Ꜷ": "AU",
        "Ꜹ": "AV",
        "Ꜻ": "AV",
        "Ꜽ": "AY",
        "Ⓑ": "B",
        "B": "B",
        "Ḃ": "B",
        "Ḅ": "B",
        "Ḇ": "B",
        "Ƀ": "B",
        "Ƃ": "B",
        "Ɓ": "B",
        "Ⓒ": "C",
        "C": "C",
        "Ć": "C",
        "Ĉ": "C",
        "Ċ": "C",
        "Č": "C",
        "Ç": "C",
        "Ḉ": "C",
        "Ƈ": "C",
        "Ȼ": "C",
        "Ꜿ": "C",
        "Ⓓ": "D",
        "D": "D",
        "Ḋ": "D",
        "Ď": "D",
        "Ḍ": "D",
        "Ḑ": "D",
        "Ḓ": "D",
        "Ḏ": "D",
        "Đ": "D",
        "Ƌ": "D",
        "Ɗ": "D",
        "Ɖ": "D",
        "Ꝺ": "D",
        "DZ": "DZ",
        "DŽ": "DZ",
        "Dz": "Dz",
        "Dž": "Dz",
        "Ⓔ": "E",
        "E": "E",
        "È": "E",
        "É": "E",
        "Ê": "E",
        "Ề": "E",
        "Ế": "E",
        "Ễ": "E",
        "Ể": "E",
        "Ẽ": "E",
        "Ē": "E",
        "Ḕ": "E",
        "Ḗ": "E",
        "Ĕ": "E",
        "Ė": "E",
        "Ë": "E",
        "Ẻ": "E",
        "Ě": "E",
        "Ȅ": "E",
        "Ȇ": "E",
        "Ẹ": "E",
        "Ệ": "E",
        "Ȩ": "E",
        "Ḝ": "E",
        "Ę": "E",
        "Ḙ": "E",
        "Ḛ": "E",
        "Ɛ": "E",
        "Ǝ": "E",
        "Ⓕ": "F",
        "F": "F",
        "Ḟ": "F",
        "Ƒ": "F",
        "Ꝼ": "F",
        "Ⓖ": "G",
        "G": "G",
        "Ǵ": "G",
        "Ĝ": "G",
        "Ḡ": "G",
        "Ğ": "G",
        "Ġ": "G",
        "Ǧ": "G",
        "Ģ": "G",
        "Ǥ": "G",
        "Ɠ": "G",
        "Ꞡ": "G",
        "Ᵹ": "G",
        "Ꝿ": "G",
        "Ⓗ": "H",
        "H": "H",
        "Ĥ": "H",
        "Ḣ": "H",
        "Ḧ": "H",
        "Ȟ": "H",
        "Ḥ": "H",
        "Ḩ": "H",
        "Ḫ": "H",
        "Ħ": "H",
        "Ⱨ": "H",
        "Ⱶ": "H",
        "Ɥ": "H",
        "Ⓘ": "I",
        "I": "I",
        "Ì": "I",
        "Í": "I",
        "Î": "I",
        "Ĩ": "I",
        "Ī": "I",
        "Ĭ": "I",
        "İ": "I",
        "Ï": "I",
        "Ḯ": "I",
        "Ỉ": "I",
        "Ǐ": "I",
        "Ȉ": "I",
        "Ȋ": "I",
        "Ị": "I",
        "Į": "I",
        "Ḭ": "I",
        "Ɨ": "I",
        "Ⓙ": "J",
        "J": "J",
        "Ĵ": "J",
        "Ɉ": "J",
        "Ⓚ": "K",
        "K": "K",
        "Ḱ": "K",
        "Ǩ": "K",
        "Ḳ": "K",
        "Ķ": "K",
        "Ḵ": "K",
        "Ƙ": "K",
        "Ⱪ": "K",
        "Ꝁ": "K",
        "Ꝃ": "K",
        "Ꝅ": "K",
        "Ꞣ": "K",
        "Ⓛ": "L",
        "L": "L",
        "Ŀ": "L",
        "Ĺ": "L",
        "Ľ": "L",
        "Ḷ": "L",
        "Ḹ": "L",
        "Ļ": "L",
        "Ḽ": "L",
        "Ḻ": "L",
        "Ł": "L",
        "Ƚ": "L",
        "Ɫ": "L",
        "Ⱡ": "L",
        "Ꝉ": "L",
        "Ꝇ": "L",
        "Ꞁ": "L",
        "LJ": "LJ",
        "Lj": "Lj",
        "Ⓜ": "M",
        "M": "M",
        "Ḿ": "M",
        "Ṁ": "M",
        "Ṃ": "M",
        "Ɱ": "M",
        "Ɯ": "M",
        "Ⓝ": "N",
        "N": "N",
        "Ǹ": "N",
        "Ń": "N",
        "Ñ": "N",
        "Ṅ": "N",
        "Ň": "N",
        "Ṇ": "N",
        "Ņ": "N",
        "Ṋ": "N",
        "Ṉ": "N",
        "Ƞ": "N",
        "Ɲ": "N",
        "Ꞑ": "N",
        "Ꞥ": "N",
        "NJ": "NJ",
        "Nj": "Nj",
        "Ⓞ": "O",
        "O": "O",
        "Ò": "O",
        "Ó": "O",
        "Ô": "O",
        "Ồ": "O",
        "Ố": "O",
        "Ỗ": "O",
        "Ổ": "O",
        "Õ": "O",
        "Ṍ": "O",
        "Ȭ": "O",
        "Ṏ": "O",
        "Ō": "O",
        "Ṑ": "O",
        "Ṓ": "O",
        "Ŏ": "O",
        "Ȯ": "O",
        "Ȱ": "O",
        "Ö": "O",
        "Ȫ": "O",
        "Ỏ": "O",
        "Ő": "O",
        "Ǒ": "O",
        "Ȍ": "O",
        "Ȏ": "O",
        "Ơ": "O",
        "Ờ": "O",
        "Ớ": "O",
        "Ỡ": "O",
        "Ở": "O",
        "Ợ": "O",
        "Ọ": "O",
        "Ộ": "O",
        "Ǫ": "O",
        "Ǭ": "O",
        "Ø": "O",
        "Ǿ": "O",
        "Ɔ": "O",
        "Ɵ": "O",
        "Ꝋ": "O",
        "Ꝍ": "O",
        "Œ": "OE",
        "Ƣ": "OI",
        "Ꝏ": "OO",
        "Ȣ": "OU",
        "Ⓟ": "P",
        "P": "P",
        "Ṕ": "P",
        "Ṗ": "P",
        "Ƥ": "P",
        "Ᵽ": "P",
        "Ꝑ": "P",
        "Ꝓ": "P",
        "Ꝕ": "P",
        "Ⓠ": "Q",
        "Q": "Q",
        "Ꝗ": "Q",
        "Ꝙ": "Q",
        "Ɋ": "Q",
        "Ⓡ": "R",
        "R": "R",
        "Ŕ": "R",
        "Ṙ": "R",
        "Ř": "R",
        "Ȑ": "R",
        "Ȓ": "R",
        "Ṛ": "R",
        "Ṝ": "R",
        "Ŗ": "R",
        "Ṟ": "R",
        "Ɍ": "R",
        "Ɽ": "R",
        "Ꝛ": "R",
        "Ꞧ": "R",
        "Ꞃ": "R",
        "Ⓢ": "S",
        "S": "S",
        "ẞ": "S",
        "Ś": "S",
        "Ṥ": "S",
        "Ŝ": "S",
        "Ṡ": "S",
        "Š": "S",
        "Ṧ": "S",
        "Ṣ": "S",
        "Ṩ": "S",
        "Ș": "S",
        "Ş": "S",
        "Ȿ": "S",
        "Ꞩ": "S",
        "Ꞅ": "S",
        "Ⓣ": "T",
        "T": "T",
        "Ṫ": "T",
        "Ť": "T",
        "Ṭ": "T",
        "Ț": "T",
        "Ţ": "T",
        "Ṱ": "T",
        "Ṯ": "T",
        "Ŧ": "T",
        "Ƭ": "T",
        "Ʈ": "T",
        "Ⱦ": "T",
        "Ꞇ": "T",
        "Ꜩ": "TZ",
        "Ⓤ": "U",
        "U": "U",
        "Ù": "U",
        "Ú": "U",
        "Û": "U",
        "Ũ": "U",
        "Ṹ": "U",
        "Ū": "U",
        "Ṻ": "U",
        "Ŭ": "U",
        "Ü": "U",
        "Ǜ": "U",
        "Ǘ": "U",
        "Ǖ": "U",
        "Ǚ": "U",
        "Ủ": "U",
        "Ů": "U",
        "Ű": "U",
        "Ǔ": "U",
        "Ȕ": "U",
        "Ȗ": "U",
        "Ư": "U",
        "Ừ": "U",
        "Ứ": "U",
        "Ữ": "U",
        "Ử": "U",
        "Ự": "U",
        "Ụ": "U",
        "Ṳ": "U",
        "Ų": "U",
        "Ṷ": "U",
        "Ṵ": "U",
        "Ʉ": "U",
        "Ⓥ": "V",
        "V": "V",
        "Ṽ": "V",
        "Ṿ": "V",
        "Ʋ": "V",
        "Ꝟ": "V",
        "Ʌ": "V",
        "Ꝡ": "VY",
        "Ⓦ": "W",
        "W": "W",
        "Ẁ": "W",
        "Ẃ": "W",
        "Ŵ": "W",
        "Ẇ": "W",
        "Ẅ": "W",
        "Ẉ": "W",
        "Ⱳ": "W",
        "Ⓧ": "X",
        "X": "X",
        "Ẋ": "X",
        "Ẍ": "X",
        "Ⓨ": "Y",
        "Y": "Y",
        "Ỳ": "Y",
        "Ý": "Y",
        "Ŷ": "Y",
        "Ỹ": "Y",
        "Ȳ": "Y",
        "Ẏ": "Y",
        "Ÿ": "Y",
        "Ỷ": "Y",
        "Ỵ": "Y",
        "Ƴ": "Y",
        "Ɏ": "Y",
        "Ỿ": "Y",
        "Ⓩ": "Z",
        "Z": "Z",
        "Ź": "Z",
        "Ẑ": "Z",
        "Ż": "Z",
        "Ž": "Z",
        "Ẓ": "Z",
        "Ẕ": "Z",
        "Ƶ": "Z",
        "Ȥ": "Z",
        "Ɀ": "Z",
        "Ⱬ": "Z",
        "Ꝣ": "Z",
        "ⓐ": "a",
        "a": "a",
        "ẚ": "a",
        "à": "a",
        "á": "a",
        "â": "a",
        "ầ": "a",
        "ấ": "a",
        "ẫ": "a",
        "ẩ": "a",
        "ã": "a",
        "ā": "a",
        "ă": "a",
        "ằ": "a",
        "ắ": "a",
        "ẵ": "a",
        "ẳ": "a",
        "ȧ": "a",
        "ǡ": "a",
        "ä": "a",
        "ǟ": "a",
        "ả": "a",
        "å": "a",
        "ǻ": "a",
        "ǎ": "a",
        "ȁ": "a",
        "ȃ": "a",
        "ạ": "a",
        "ậ": "a",
        "ặ": "a",
        "ḁ": "a",
        "ą": "a",
        "ⱥ": "a",
        "ɐ": "a",
        "ꜳ": "aa",
        "æ": "ae",
        "ǽ": "ae",
        "ǣ": "ae",
        "ꜵ": "ao",
        "ꜷ": "au",
        "ꜹ": "av",
        "ꜻ": "av",
        "ꜽ": "ay",
        "ⓑ": "b",
        "b": "b",
        "ḃ": "b",
        "ḅ": "b",
        "ḇ": "b",
        "ƀ": "b",
        "ƃ": "b",
        "ɓ": "b",
        "ⓒ": "c",
        "c": "c",
        "ć": "c",
        "ĉ": "c",
        "ċ": "c",
        "č": "c",
        "ç": "c",
        "ḉ": "c",
        "ƈ": "c",
        "ȼ": "c",
        "ꜿ": "c",
        "ↄ": "c",
        "ⓓ": "d",
        "d": "d",
        "ḋ": "d",
        "ď": "d",
        "ḍ": "d",
        "ḑ": "d",
        "ḓ": "d",
        "ḏ": "d",
        "đ": "d",
        "ƌ": "d",
        "ɖ": "d",
        "ɗ": "d",
        "ꝺ": "d",
        "dz": "dz",
        "dž": "dz",
        "ⓔ": "e",
        "e": "e",
        "è": "e",
        "é": "e",
        "ê": "e",
        "ề": "e",
        "ế": "e",
        "ễ": "e",
        "ể": "e",
        "ẽ": "e",
        "ē": "e",
        "ḕ": "e",
        "ḗ": "e",
        "ĕ": "e",
        "ė": "e",
        "ë": "e",
        "ẻ": "e",
        "ě": "e",
        "ȅ": "e",
        "ȇ": "e",
        "ẹ": "e",
        "ệ": "e",
        "ȩ": "e",
        "ḝ": "e",
        "ę": "e",
        "ḙ": "e",
        "ḛ": "e",
        "ɇ": "e",
        "ɛ": "e",
        "ǝ": "e",
        "ⓕ": "f",
        "f": "f",
        "ḟ": "f",
        "ƒ": "f",
        "ꝼ": "f",
        "ⓖ": "g",
        "g": "g",
        "ǵ": "g",
        "ĝ": "g",
        "ḡ": "g",
        "ğ": "g",
        "ġ": "g",
        "ǧ": "g",
        "ģ": "g",
        "ǥ": "g",
        "ɠ": "g",
        "ꞡ": "g",
        "ᵹ": "g",
        "ꝿ": "g",
        "ⓗ": "h",
        "h": "h",
        "ĥ": "h",
        "ḣ": "h",
        "ḧ": "h",
        "ȟ": "h",
        "ḥ": "h",
        "ḩ": "h",
        "ḫ": "h",
        "ẖ": "h",
        "ħ": "h",
        "ⱨ": "h",
        "ⱶ": "h",
        "ɥ": "h",
        "ƕ": "hv",
        "ⓘ": "i",
        "i": "i",
        "ì": "i",
        "í": "i",
        "î": "i",
        "ĩ": "i",
        "ī": "i",
        "ĭ": "i",
        "ï": "i",
        "ḯ": "i",
        "ỉ": "i",
        "ǐ": "i",
        "ȉ": "i",
        "ȋ": "i",
        "ị": "i",
        "į": "i",
        "ḭ": "i",
        "ɨ": "i",
        "ı": "i",
        "ⓙ": "j",
        "j": "j",
        "ĵ": "j",
        "ǰ": "j",
        "ɉ": "j",
        "ⓚ": "k",
        "k": "k",
        "ḱ": "k",
        "ǩ": "k",
        "ḳ": "k",
        "ķ": "k",
        "ḵ": "k",
        "ƙ": "k",
        "ⱪ": "k",
        "ꝁ": "k",
        "ꝃ": "k",
        "ꝅ": "k",
        "ꞣ": "k",
        "ⓛ": "l",
        "l": "l",
        "ŀ": "l",
        "ĺ": "l",
        "ľ": "l",
        "ḷ": "l",
        "ḹ": "l",
        "ļ": "l",
        "ḽ": "l",
        "ḻ": "l",
        "ſ": "l",
        "ł": "l",
        "ƚ": "l",
        "ɫ": "l",
        "ⱡ": "l",
        "ꝉ": "l",
        "ꞁ": "l",
        "ꝇ": "l",
        "lj": "lj",
        "ⓜ": "m",
        "m": "m",
        "ḿ": "m",
        "ṁ": "m",
        "ṃ": "m",
        "ɱ": "m",
        "ɯ": "m",
        "ⓝ": "n",
        "n": "n",
        "ǹ": "n",
        "ń": "n",
        "ñ": "n",
        "ṅ": "n",
        "ň": "n",
        "ṇ": "n",
        "ņ": "n",
        "ṋ": "n",
        "ṉ": "n",
        "ƞ": "n",
        "ɲ": "n",
        "ʼn": "n",
        "ꞑ": "n",
        "ꞥ": "n",
        "nj": "nj",
        "ⓞ": "o",
        "o": "o",
        "ò": "o",
        "ó": "o",
        "ô": "o",
        "ồ": "o",
        "ố": "o",
        "ỗ": "o",
        "ổ": "o",
        "õ": "o",
        "ṍ": "o",
        "ȭ": "o",
        "ṏ": "o",
        "ō": "o",
        "ṑ": "o",
        "ṓ": "o",
        "ŏ": "o",
        "ȯ": "o",
        "ȱ": "o",
        "ö": "o",
        "ȫ": "o",
        "ỏ": "o",
        "ő": "o",
        "ǒ": "o",
        "ȍ": "o",
        "ȏ": "o",
        "ơ": "o",
        "ờ": "o",
        "ớ": "o",
        "ỡ": "o",
        "ở": "o",
        "ợ": "o",
        "ọ": "o",
        "ộ": "o",
        "ǫ": "o",
        "ǭ": "o",
        "ø": "o",
        "ǿ": "o",
        "ɔ": "o",
        "ꝋ": "o",
        "ꝍ": "o",
        "ɵ": "o",
        "œ": "oe",
        "ƣ": "oi",
        "ȣ": "ou",
        "ꝏ": "oo",
        "ⓟ": "p",
        "p": "p",
        "ṕ": "p",
        "ṗ": "p",
        "ƥ": "p",
        "ᵽ": "p",
        "ꝑ": "p",
        "ꝓ": "p",
        "ꝕ": "p",
        "ⓠ": "q",
        "q": "q",
        "ɋ": "q",
        "ꝗ": "q",
        "ꝙ": "q",
        "ⓡ": "r",
        "r": "r",
        "ŕ": "r",
        "ṙ": "r",
        "ř": "r",
        "ȑ": "r",
        "ȓ": "r",
        "ṛ": "r",
        "ṝ": "r",
        "ŗ": "r",
        "ṟ": "r",
        "ɍ": "r",
        "ɽ": "r",
        "ꝛ": "r",
        "ꞧ": "r",
        "ꞃ": "r",
        "ⓢ": "s",
        "s": "s",
        "ß": "s",
        "ś": "s",
        "ṥ": "s",
        "ŝ": "s",
        "ṡ": "s",
        "š": "s",
        "ṧ": "s",
        "ṣ": "s",
        "ṩ": "s",
        "ș": "s",
        "ş": "s",
        "ȿ": "s",
        "ꞩ": "s",
        "ꞅ": "s",
        "ẛ": "s",
        "ⓣ": "t",
        "t": "t",
        "ṫ": "t",
        "ẗ": "t",
        "ť": "t",
        "ṭ": "t",
        "ț": "t",
        "ţ": "t",
        "ṱ": "t",
        "ṯ": "t",
        "ŧ": "t",
        "ƭ": "t",
        "ʈ": "t",
        "ⱦ": "t",
        "ꞇ": "t",
        "ꜩ": "tz",
        "ⓤ": "u",
        "u": "u",
        "ù": "u",
        "ú": "u",
        "û": "u",
        "ũ": "u",
        "ṹ": "u",
        "ū": "u",
        "ṻ": "u",
        "ŭ": "u",
        "ü": "u",
        "ǜ": "u",
        "ǘ": "u",
        "ǖ": "u",
        "ǚ": "u",
        "ủ": "u",
        "ů": "u",
        "ű": "u",
        "ǔ": "u",
        "ȕ": "u",
        "ȗ": "u",
        "ư": "u",
        "ừ": "u",
        "ứ": "u",
        "ữ": "u",
        "ử": "u",
        "ự": "u",
        "ụ": "u",
        "ṳ": "u",
        "ų": "u",
        "ṷ": "u",
        "ṵ": "u",
        "ʉ": "u",
        "ⓥ": "v",
        "v": "v",
        "ṽ": "v",
        "ṿ": "v",
        "ʋ": "v",
        "ꝟ": "v",
        "ʌ": "v",
        "ꝡ": "vy",
        "ⓦ": "w",
        "w": "w",
        "ẁ": "w",
        "ẃ": "w",
        "ŵ": "w",
        "ẇ": "w",
        "ẅ": "w",
        "ẘ": "w",
        "ẉ": "w",
        "ⱳ": "w",
        "ⓧ": "x",
        "x": "x",
        "ẋ": "x",
        "ẍ": "x",
        "ⓨ": "y",
        "y": "y",
        "ỳ": "y",
        "ý": "y",
        "ŷ": "y",
        "ỹ": "y",
        "ȳ": "y",
        "ẏ": "y",
        "ÿ": "y",
        "ỷ": "y",
        "ẙ": "y",
        "ỵ": "y",
        "ƴ": "y",
        "ɏ": "y",
        "ỿ": "y",
        "ⓩ": "z",
        "z": "z",
        "ź": "z",
        "ẑ": "z",
        "ż": "z",
        "ž": "z",
        "ẓ": "z",
        "ẕ": "z",
        "ƶ": "z",
        "ȥ": "z",
        "ɀ": "z",
        "ⱬ": "z",
        "ꝣ": "z",
        "Ά": "Α",
        "Έ": "Ε",
        "Ή": "Η",
        "Ί": "Ι",
        "Ϊ": "Ι",
        "Ό": "Ο",
        "Ύ": "Υ",
        "Ϋ": "Υ",
        "Ώ": "Ω",
        "ά": "α",
        "έ": "ε",
        "ή": "η",
        "ί": "ι",
        "ϊ": "ι",
        "ΐ": "ι",
        "ό": "ο",
        "ύ": "υ",
        "ϋ": "υ",
        "ΰ": "υ",
        "ώ": "ω",
        "ς": "σ",
        "’": "'"
      };
    }), e2.define("select2/data/base", ["../utils"], function(r2) {
      function n2(e3, t3) {
        n2.__super__.constructor.call(this);
      }
      return r2.Extend(n2, r2.Observable), n2.prototype.current = function(e3) {
        throw new Error("The `current` method must be defined in child classes.");
      }, n2.prototype.query = function(e3, t3) {
        throw new Error("The `query` method must be defined in child classes.");
      }, n2.prototype.bind = function(e3, t3) {
      }, n2.prototype.destroy = function() {
      }, n2.prototype.generateResultId = function(e3, t3) {
        var n3 = e3.id + "-result-";
        return n3 += r2.generateChars(4), null != t3.id ? n3 += "-" + t3.id.toString() : n3 += "-" + r2.generateChars(4), n3;
      }, n2;
    }), e2.define("select2/data/select", ["./base", "../utils", "jquery"], function(e3, a2, l2) {
      function n2(e4, t3) {
        this.$element = e4, this.options = t3, n2.__super__.constructor.call(this);
      }
      return a2.Extend(n2, e3), n2.prototype.current = function(e4) {
        var n3 = [], r2 = this;
        this.$element.find(":selected").each(function() {
          var e5 = l2(this), t3 = r2.item(e5);
          n3.push(t3);
        }), e4(n3);
      }, n2.prototype.select = function(i2) {
        var o2 = this;
        if (i2.selected = true, l2(i2.element).is("option"))
          return i2.element.selected = true, void this.$element.trigger("change");
        if (this.$element.prop("multiple"))
          this.current(function(e5) {
            var t3 = [];
            (i2 = [i2]).push.apply(i2, e5);
            for (var n3 = 0; n3 < i2.length; n3++) {
              var r2 = i2[n3].id;
              -1 === l2.inArray(r2, t3) && t3.push(r2);
            }
            o2.$element.val(t3), o2.$element.trigger("change");
          });
        else {
          var e4 = i2.id;
          this.$element.val(e4), this.$element.trigger("change");
        }
      }, n2.prototype.unselect = function(i2) {
        var o2 = this;
        if (this.$element.prop("multiple")) {
          if (i2.selected = false, l2(i2.element).is("option"))
            return i2.element.selected = false, void this.$element.trigger("change");
          this.current(function(e4) {
            for (var t3 = [], n3 = 0; n3 < e4.length; n3++) {
              var r2 = e4[n3].id;
              r2 !== i2.id && -1 === l2.inArray(r2, t3) && t3.push(r2);
            }
            o2.$element.val(t3), o2.$element.trigger("change");
          });
        }
      }, n2.prototype.bind = function(e4, t3) {
        var n3 = this;
        (this.container = e4).on("select", function(e5) {
          n3.select(e5.data);
        }), e4.on("unselect", function(e5) {
          n3.unselect(e5.data);
        });
      }, n2.prototype.destroy = function() {
        this.$element.find("*").each(function() {
          a2.RemoveData(this);
        });
      }, n2.prototype.query = function(r2, e4) {
        var i2 = [], o2 = this;
        this.$element.children().each(function() {
          var e5 = l2(this);
          if (e5.is("option") || e5.is("optgroup")) {
            var t3 = o2.item(e5), n3 = o2.matches(r2, t3);
            null !== n3 && i2.push(n3);
          }
        }), e4({
          results: i2
        });
      }, n2.prototype.addOptions = function(e4) {
        a2.appendMany(this.$element, e4);
      }, n2.prototype.option = function(e4) {
        var t3;
        e4.children ? (t3 = document.createElement("optgroup")).label = e4.text : void 0 !== (t3 = document.createElement("option")).textContent ? t3.textContent = e4.text : t3.innerText = e4.text, void 0 !== e4.id && (t3.value = e4.id), e4.disabled && (t3.disabled = true), e4.selected && (t3.selected = true), e4.title && (t3.title = e4.title);
        var n3 = l2(t3), r2 = this._normalizeItem(e4);
        return r2.element = t3, a2.StoreData(t3, "data", r2), n3;
      }, n2.prototype.item = function(e4) {
        var t3 = {};
        if (null != (t3 = a2.GetData(e4[0], "data")))
          return t3;
        if (e4.is("option"))
          t3 = {
            id: e4.val(),
            text: e4.text(),
            disabled: e4.prop("disabled"),
            selected: e4.prop("selected"),
            title: e4.prop("title")
          };
        else if (e4.is("optgroup")) {
          t3 = {
            text: e4.prop("label"),
            children: [],
            title: e4.prop("title")
          };
          for (var n3 = e4.children("option"), r2 = [], i2 = 0; i2 < n3.length; i2++) {
            var o2 = l2(n3[i2]), s2 = this.item(o2);
            r2.push(s2);
          }
          t3.children = r2;
        }
        return (t3 = this._normalizeItem(t3)).element = e4[0], a2.StoreData(e4[0], "data", t3), t3;
      }, n2.prototype._normalizeItem = function(e4) {
        e4 !== Object(e4) && (e4 = {
          id: e4,
          text: e4
        });
        return null != (e4 = l2.extend({}, {
          text: ""
        }, e4)).id && (e4.id = e4.id.toString()), null != e4.text && (e4.text = e4.text.toString()), null == e4._resultId && e4.id && null != this.container && (e4._resultId = this.generateResultId(this.container, e4)), l2.extend({}, {
          selected: false,
          disabled: false
        }, e4);
      }, n2.prototype.matches = function(e4, t3) {
        return this.options.get("matcher")(e4, t3);
      }, n2;
    }), e2.define("select2/data/array", ["./select", "../utils", "jquery"], function(e3, f2, g2) {
      function r2(e4, t3) {
        this._dataToConvert = t3.get("data") || [], r2.__super__.constructor.call(this, e4, t3);
      }
      return f2.Extend(r2, e3), r2.prototype.bind = function(e4, t3) {
        r2.__super__.bind.call(this, e4, t3), this.addOptions(this.convertToOptions(this._dataToConvert));
      }, r2.prototype.select = function(n2) {
        var e4 = this.$element.find("option").filter(function(e5, t3) {
          return t3.value == n2.id.toString();
        });
        0 === e4.length && (e4 = this.option(n2), this.addOptions(e4)), r2.__super__.select.call(this, n2);
      }, r2.prototype.convertToOptions = function(e4) {
        var t3 = this, n2 = this.$element.find("option"), r3 = n2.map(function() {
          return t3.item(g2(this)).id;
        }).get(), i2 = [];
        function o2(e5) {
          return function() {
            return g2(this).val() == e5.id;
          };
        }
        for (var s2 = 0; s2 < e4.length; s2++) {
          var a2 = this._normalizeItem(e4[s2]);
          if (0 <= g2.inArray(a2.id, r3)) {
            var l2 = n2.filter(o2(a2)), c2 = this.item(l2), u2 = g2.extend(true, {}, a2, c2), d = this.option(u2);
            l2.replaceWith(d);
          } else {
            var p = this.option(a2);
            if (a2.children) {
              var h2 = this.convertToOptions(a2.children);
              f2.appendMany(p, h2);
            }
            i2.push(p);
          }
        }
        return i2;
      }, r2;
    }), e2.define("select2/data/ajax", ["./array", "../utils", "jquery"], function(e3, t3, o2) {
      function n2(e4, t4) {
        this.ajaxOptions = this._applyDefaults(t4.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), n2.__super__.constructor.call(this, e4, t4);
      }
      return t3.Extend(n2, e3), n2.prototype._applyDefaults = function(e4) {
        var t4 = {
          data: function(e5) {
            return o2.extend({}, e5, {
              q: e5.term
            });
          },
          transport: function(e5, t5, n3) {
            var r2 = o2.ajax(e5);
            return r2.then(t5), r2.fail(n3), r2;
          }
        };
        return o2.extend({}, t4, e4, true);
      }, n2.prototype.processResults = function(e4) {
        return e4;
      }, n2.prototype.query = function(n3, r2) {
        var i2 = this;
        null != this._request && (o2.isFunction(this._request.abort) && this._request.abort(), this._request = null);
        var t4 = o2.extend({
          type: "GET"
        }, this.ajaxOptions);
        function e4() {
          var e5 = t4.transport(t4, function(e6) {
            var t5 = i2.processResults(e6, n3);
            i2.options.get("debug") && window.console && console.error && (t5 && t5.results && o2.isArray(t5.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")), r2(t5);
          }, function() {
            "status" in e5 && (0 === e5.status || "0" === e5.status) || i2.trigger("results:message", {
              message: "errorLoading"
            });
          });
          i2._request = e5;
        }
        "function" == typeof t4.url && (t4.url = t4.url.call(this.$element, n3)), "function" == typeof t4.data && (t4.data = t4.data.call(this.$element, n3)), this.ajaxOptions.delay && null != n3.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(e4, this.ajaxOptions.delay)) : e4();
      }, n2;
    }), e2.define("select2/data/tags", ["jquery"], function(u2) {
      function e3(e4, t3, n2) {
        var r2 = n2.get("tags"), i2 = n2.get("createTag");
        void 0 !== i2 && (this.createTag = i2);
        var o2 = n2.get("insertTag");
        if (void 0 !== o2 && (this.insertTag = o2), e4.call(this, t3, n2), u2.isArray(r2))
          for (var s2 = 0; s2 < r2.length; s2++) {
            var a2 = r2[s2], l2 = this._normalizeItem(a2), c2 = this.option(l2);
            this.$element.append(c2);
          }
      }
      return e3.prototype.query = function(e4, c2, u3) {
        var d = this;
        this._removeOldTags(), null != c2.term && null == c2.page ? e4.call(this, c2, function e5(t3, n2) {
          for (var r2 = t3.results, i2 = 0; i2 < r2.length; i2++) {
            var o2 = r2[i2], s2 = null != o2.children && !e5({
              results: o2.children
            }, true);
            if ((o2.text || "").toUpperCase() === (c2.term || "").toUpperCase() || s2)
              return !n2 && (t3.data = r2, void u3(t3));
          }
          if (n2)
            return true;
          var a2 = d.createTag(c2);
          if (null != a2) {
            var l2 = d.option(a2);
            l2.attr("data-select2-tag", true), d.addOptions([l2]), d.insertTag(r2, a2);
          }
          t3.results = r2, u3(t3);
        }) : e4.call(this, c2, u3);
      }, e3.prototype.createTag = function(e4, t3) {
        var n2 = u2.trim(t3.term);
        return "" === n2 ? null : {
          id: n2,
          text: n2
        };
      }, e3.prototype.insertTag = function(e4, t3, n2) {
        t3.unshift(n2);
      }, e3.prototype._removeOldTags = function(e4) {
        this.$element.find("option[data-select2-tag]").each(function() {
          this.selected || u2(this).remove();
        });
      }, e3;
    }), e2.define("select2/data/tokenizer", ["jquery"], function(d) {
      function e3(e4, t3, n2) {
        var r2 = n2.get("tokenizer");
        void 0 !== r2 && (this.tokenizer = r2), e4.call(this, t3, n2);
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        e4.call(this, t3, n2), this.$search = t3.dropdown.$search || t3.selection.$search || n2.find(".select2-search__field");
      }, e3.prototype.query = function(e4, t3, n2) {
        var r2 = this;
        t3.term = t3.term || "";
        var i2 = this.tokenizer(t3, this.options, function(e5) {
          var t4 = r2._normalizeItem(e5);
          if (!r2.$element.find("option").filter(function() {
            return d(this).val() === t4.id;
          }).length) {
            var n3 = r2.option(t4);
            n3.attr("data-select2-tag", true), r2._removeOldTags(), r2.addOptions([n3]);
          }
          !function(e6) {
            r2.trigger("select", {
              data: e6
            });
          }(t4);
        });
        i2.term !== t3.term && (this.$search.length && (this.$search.val(i2.term), this.$search.trigger("focus")), t3.term = i2.term), e4.call(this, t3, n2);
      }, e3.prototype.tokenizer = function(e4, t3, n2, r2) {
        for (var i2 = n2.get("tokenSeparators") || [], o2 = t3.term, s2 = 0, a2 = this.createTag || function(e5) {
          return {
            id: e5.term,
            text: e5.term
          };
        }; s2 < o2.length; ) {
          var l2 = o2[s2];
          if (-1 !== d.inArray(l2, i2)) {
            var c2 = o2.substr(0, s2), u2 = a2(d.extend({}, t3, {
              term: c2
            }));
            null != u2 ? (r2(u2), o2 = o2.substr(s2 + 1) || "", s2 = 0) : s2++;
          } else
            s2++;
        }
        return {
          term: o2
        };
      }, e3;
    }), e2.define("select2/data/minimumInputLength", [], function() {
      function e3(e4, t3, n2) {
        this.minimumInputLength = n2.get("minimumInputLength"), e4.call(this, t3, n2);
      }
      return e3.prototype.query = function(e4, t3, n2) {
        t3.term = t3.term || "", t3.term.length < this.minimumInputLength ? this.trigger("results:message", {
          message: "inputTooShort",
          args: {
            minimum: this.minimumInputLength,
            input: t3.term,
            params: t3
          }
        }) : e4.call(this, t3, n2);
      }, e3;
    }), e2.define("select2/data/maximumInputLength", [], function() {
      function e3(e4, t3, n2) {
        this.maximumInputLength = n2.get("maximumInputLength"), e4.call(this, t3, n2);
      }
      return e3.prototype.query = function(e4, t3, n2) {
        t3.term = t3.term || "", 0 < this.maximumInputLength && t3.term.length > this.maximumInputLength ? this.trigger("results:message", {
          message: "inputTooLong",
          args: {
            maximum: this.maximumInputLength,
            input: t3.term,
            params: t3
          }
        }) : e4.call(this, t3, n2);
      }, e3;
    }), e2.define("select2/data/maximumSelectionLength", [], function() {
      function e3(e4, t3, n2) {
        this.maximumSelectionLength = n2.get("maximumSelectionLength"), e4.call(this, t3, n2);
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r2 = this;
        e4.call(this, t3, n2), t3.on("select", function() {
          r2._checkIfMaximumSelected();
        });
      }, e3.prototype.query = function(e4, t3, n2) {
        var r2 = this;
        this._checkIfMaximumSelected(function() {
          e4.call(r2, t3, n2);
        });
      }, e3.prototype._checkIfMaximumSelected = function(e4, n2) {
        var r2 = this;
        this.current(function(e5) {
          var t3 = null != e5 ? e5.length : 0;
          0 < r2.maximumSelectionLength && t3 >= r2.maximumSelectionLength ? r2.trigger("results:message", {
            message: "maximumSelected",
            args: {
              maximum: r2.maximumSelectionLength
            }
          }) : n2 && n2();
        });
      }, e3;
    }), e2.define("select2/dropdown", ["jquery", "./utils"], function(t3, e3) {
      function n2(e4, t4) {
        this.$element = e4, this.options = t4, n2.__super__.constructor.call(this);
      }
      return e3.Extend(n2, e3.Observable), n2.prototype.render = function() {
        var e4 = t3('<span class="select2-dropdown"><span class="select2-results"></span></span>');
        return e4.attr("dir", this.options.get("dir")), this.$dropdown = e4;
      }, n2.prototype.bind = function() {
      }, n2.prototype.position = function(e4, t4) {
      }, n2.prototype.destroy = function() {
        this.$dropdown.remove();
      }, n2;
    }), e2.define("select2/dropdown/search", ["jquery", "../utils"], function(o2, e3) {
      function t3() {
      }
      return t3.prototype.render = function(e4) {
        var t4 = e4.call(this), n2 = o2('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');
        return this.$searchContainer = n2, this.$search = n2.find("input"), t4.prepend(n2), t4;
      }, t3.prototype.bind = function(e4, t4, n2) {
        var r2 = this, i2 = t4.id + "-results";
        e4.call(this, t4, n2), this.$search.on("keydown", function(e5) {
          r2.trigger("keypress", e5), r2._keyUpPrevented = e5.isDefaultPrevented();
        }), this.$search.on("input", function(e5) {
          o2(this).off("keyup");
        }), this.$search.on("keyup input", function(e5) {
          r2.handleSearch(e5);
        }), t4.on("open", function() {
          r2.$search.attr("tabindex", 0), r2.$search.attr("aria-controls", i2), r2.$search.trigger("focus"), window.setTimeout(function() {
            r2.$search.trigger("focus");
          }, 0);
        }), t4.on("close", function() {
          r2.$search.attr("tabindex", -1), r2.$search.removeAttr("aria-controls"), r2.$search.removeAttr("aria-activedescendant"), r2.$search.val(""), r2.$search.trigger("blur");
        }), t4.on("focus", function() {
          t4.isOpen() || r2.$search.trigger("focus");
        }), t4.on("results:all", function(e5) {
          null != e5.query.term && "" !== e5.query.term || (r2.showSearch(e5) ? r2.$searchContainer.removeClass("select2-search--hide") : r2.$searchContainer.addClass("select2-search--hide"));
        }), t4.on("results:focus", function(e5) {
          e5.data._resultId ? r2.$search.attr("aria-activedescendant", e5.data._resultId) : r2.$search.removeAttr("aria-activedescendant");
        });
      }, t3.prototype.handleSearch = function(e4) {
        if (!this._keyUpPrevented) {
          var t4 = this.$search.val();
          this.trigger("query", {
            term: t4
          });
        }
        this._keyUpPrevented = false;
      }, t3.prototype.showSearch = function(e4, t4) {
        return true;
      }, t3;
    }), e2.define("select2/dropdown/hidePlaceholder", [], function() {
      function e3(e4, t3, n2, r2) {
        this.placeholder = this.normalizePlaceholder(n2.get("placeholder")), e4.call(this, t3, n2, r2);
      }
      return e3.prototype.append = function(e4, t3) {
        t3.results = this.removePlaceholder(t3.results), e4.call(this, t3);
      }, e3.prototype.normalizePlaceholder = function(e4, t3) {
        return "string" == typeof t3 && (t3 = {
          id: "",
          text: t3
        }), t3;
      }, e3.prototype.removePlaceholder = function(e4, t3) {
        for (var n2 = t3.slice(0), r2 = t3.length - 1; 0 <= r2; r2--) {
          var i2 = t3[r2];
          this.placeholder.id === i2.id && n2.splice(r2, 1);
        }
        return n2;
      }, e3;
    }), e2.define("select2/dropdown/infiniteScroll", ["jquery"], function(n2) {
      function e3(e4, t3, n3, r2) {
        this.lastParams = {}, e4.call(this, t3, n3, r2), this.$loadingMore = this.createLoadingMore(), this.loading = false;
      }
      return e3.prototype.append = function(e4, t3) {
        this.$loadingMore.remove(), this.loading = false, e4.call(this, t3), this.showLoadingMore(t3) && (this.$results.append(this.$loadingMore), this.loadMoreIfNeeded());
      }, e3.prototype.bind = function(e4, t3, n3) {
        var r2 = this;
        e4.call(this, t3, n3), t3.on("query", function(e5) {
          r2.lastParams = e5, r2.loading = true;
        }), t3.on("query:append", function(e5) {
          r2.lastParams = e5, r2.loading = true;
        }), this.$results.on("scroll", this.loadMoreIfNeeded.bind(this));
      }, e3.prototype.loadMoreIfNeeded = function() {
        var e4 = n2.contains(document.documentElement, this.$loadingMore[0]);
        if (!this.loading && e4) {
          var t3 = this.$results.offset().top + this.$results.outerHeight(false);
          this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false) <= t3 + 50 && this.loadMore();
        }
      }, e3.prototype.loadMore = function() {
        this.loading = true;
        var e4 = n2.extend({}, {
          page: 1
        }, this.lastParams);
        e4.page++, this.trigger("query:append", e4);
      }, e3.prototype.showLoadingMore = function(e4, t3) {
        return t3.pagination && t3.pagination.more;
      }, e3.prototype.createLoadingMore = function() {
        var e4 = n2('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'), t3 = this.options.get("translations").get("loadingMore");
        return e4.html(t3(this.lastParams)), e4;
      }, e3;
    }), e2.define("select2/dropdown/attachBody", ["jquery", "../utils"], function(f2, a2) {
      function e3(e4, t3, n2) {
        this.$dropdownParent = f2(n2.get("dropdownParent") || document.body), e4.call(this, t3, n2);
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r2 = this;
        e4.call(this, t3, n2), t3.on("open", function() {
          r2._showDropdown(), r2._attachPositioningHandler(t3), r2._bindContainerResultHandlers(t3);
        }), t3.on("close", function() {
          r2._hideDropdown(), r2._detachPositioningHandler(t3);
        }), this.$dropdownContainer.on("mousedown", function(e5) {
          e5.stopPropagation();
        });
      }, e3.prototype.destroy = function(e4) {
        e4.call(this), this.$dropdownContainer.remove();
      }, e3.prototype.position = function(e4, t3, n2) {
        t3.attr("class", n2.attr("class")), t3.removeClass("select2"), t3.addClass("select2-container--open"), t3.css({
          position: "absolute",
          top: -999999
        }), this.$container = n2;
      }, e3.prototype.render = function(e4) {
        var t3 = f2("<span></span>"), n2 = e4.call(this);
        return t3.append(n2), this.$dropdownContainer = t3;
      }, e3.prototype._hideDropdown = function(e4) {
        this.$dropdownContainer.detach();
      }, e3.prototype._bindContainerResultHandlers = function(e4, t3) {
        if (!this._containerResultsHandlersBound) {
          var n2 = this;
          t3.on("results:all", function() {
            n2._positionDropdown(), n2._resizeDropdown();
          }), t3.on("results:append", function() {
            n2._positionDropdown(), n2._resizeDropdown();
          }), t3.on("results:message", function() {
            n2._positionDropdown(), n2._resizeDropdown();
          }), t3.on("select", function() {
            n2._positionDropdown(), n2._resizeDropdown();
          }), t3.on("unselect", function() {
            n2._positionDropdown(), n2._resizeDropdown();
          }), this._containerResultsHandlersBound = true;
        }
      }, e3.prototype._attachPositioningHandler = function(e4, t3) {
        var n2 = this, r2 = "scroll.select2." + t3.id, i2 = "resize.select2." + t3.id, o2 = "orientationchange.select2." + t3.id, s2 = this.$container.parents().filter(a2.hasScroll);
        s2.each(function() {
          a2.StoreData(this, "select2-scroll-position", {
            x: f2(this).scrollLeft(),
            y: f2(this).scrollTop()
          });
        }), s2.on(r2, function(e5) {
          var t4 = a2.GetData(this, "select2-scroll-position");
          f2(this).scrollTop(t4.y);
        }), f2(window).on(r2 + " " + i2 + " " + o2, function(e5) {
          n2._positionDropdown(), n2._resizeDropdown();
        });
      }, e3.prototype._detachPositioningHandler = function(e4, t3) {
        var n2 = "scroll.select2." + t3.id, r2 = "resize.select2." + t3.id, i2 = "orientationchange.select2." + t3.id;
        this.$container.parents().filter(a2.hasScroll).off(n2), f2(window).off(n2 + " " + r2 + " " + i2);
      }, e3.prototype._positionDropdown = function() {
        var e4 = f2(window), t3 = this.$dropdown.hasClass("select2-dropdown--above"), n2 = this.$dropdown.hasClass("select2-dropdown--below"), r2 = null, i2 = this.$container.offset();
        i2.bottom = i2.top + this.$container.outerHeight(false);
        var o2 = {
          height: this.$container.outerHeight(false)
        };
        o2.top = i2.top, o2.bottom = i2.top + o2.height;
        var s2 = this.$dropdown.outerHeight(false), a3 = e4.scrollTop(), l2 = e4.scrollTop() + e4.height(), c2 = a3 < i2.top - s2, u2 = l2 > i2.bottom + s2, d = {
          left: i2.left,
          top: o2.bottom
        }, p = this.$dropdownParent;
        "static" === p.css("position") && (p = p.offsetParent());
        var h2 = {
          top: 0,
          left: 0
        };
        (f2.contains(document.body, p[0]) || p[0].isConnected) && (h2 = p.offset()), d.top -= h2.top, d.left -= h2.left, t3 || n2 || (r2 = "below"), u2 || !c2 || t3 ? !c2 && u2 && t3 && (r2 = "below") : r2 = "above", ("above" == r2 || t3 && "below" !== r2) && (d.top = o2.top - h2.top - s2), null != r2 && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + r2), this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + r2)), this.$dropdownContainer.css(d);
      }, e3.prototype._resizeDropdown = function() {
        var e4 = {
          width: this.$container.outerWidth(false) + "px"
        };
        this.options.get("dropdownAutoWidth") && (e4.minWidth = e4.width, e4.position = "relative", e4.width = "auto"), this.$dropdown.css(e4);
      }, e3.prototype._showDropdown = function(e4) {
        this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown();
      }, e3;
    }), e2.define("select2/dropdown/minimumResultsForSearch", [], function() {
      function e3(e4, t3, n2, r2) {
        this.minimumResultsForSearch = n2.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), e4.call(this, t3, n2, r2);
      }
      return e3.prototype.showSearch = function(e4, t3) {
        return !(function e5(t4) {
          for (var n2 = 0, r2 = 0; r2 < t4.length; r2++) {
            var i2 = t4[r2];
            i2.children ? n2 += e5(i2.children) : n2++;
          }
          return n2;
        }(t3.data.results) < this.minimumResultsForSearch) && e4.call(this, t3);
      }, e3;
    }), e2.define("select2/dropdown/selectOnClose", ["../utils"], function(o2) {
      function e3() {
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r2 = this;
        e4.call(this, t3, n2), t3.on("close", function(e5) {
          r2._handleSelectOnClose(e5);
        });
      }, e3.prototype._handleSelectOnClose = function(e4, t3) {
        if (t3 && null != t3.originalSelect2Event) {
          var n2 = t3.originalSelect2Event;
          if ("select" === n2._type || "unselect" === n2._type)
            return;
        }
        var r2 = this.getHighlightedResults();
        if (!(r2.length < 1)) {
          var i2 = o2.GetData(r2[0], "data");
          null != i2.element && i2.element.selected || null == i2.element && i2.selected || this.trigger("select", {
            data: i2
          });
        }
      }, e3;
    }), e2.define("select2/dropdown/closeOnSelect", [], function() {
      function e3() {
      }
      return e3.prototype.bind = function(e4, t3, n2) {
        var r2 = this;
        e4.call(this, t3, n2), t3.on("select", function(e5) {
          r2._selectTriggered(e5);
        }), t3.on("unselect", function(e5) {
          r2._selectTriggered(e5);
        });
      }, e3.prototype._selectTriggered = function(e4, t3) {
        var n2 = t3.originalEvent;
        n2 && (n2.ctrlKey || n2.metaKey) || this.trigger("close", {
          originalEvent: n2,
          originalSelect2Event: t3
        });
      }, e3;
    }), e2.define("select2/i18n/en", [], function() {
      return {
        errorLoading: function() {
          return "The results could not be loaded.";
        },
        inputTooLong: function(e3) {
          var t3 = e3.input.length - e3.maximum, n2 = "Please delete " + t3 + " character";
          return 1 != t3 && (n2 += "s"), n2;
        },
        inputTooShort: function(e3) {
          return "Please enter " + (e3.minimum - e3.input.length) + " or more characters";
        },
        loadingMore: function() {
          return "Loading more results…";
        },
        maximumSelected: function(e3) {
          var t3 = "You can only select " + e3.maximum + " item";
          return 1 != e3.maximum && (t3 += "s"), t3;
        },
        noResults: function() {
          return "No results found";
        },
        searching: function() {
          return "Searching…";
        },
        removeAllItems: function() {
          return "Remove all items";
        }
      };
    }), e2.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], function(c2, u2, d, p, h2, f2, g2, m2, v2, y2, s2, t3, _2, $2, w2, b2, A2, x2, D2, S2, E, C, O, T, q, L, I, j, e3) {
      function n2() {
        this.reset();
      }
      return n2.prototype.apply = function(e4) {
        if (null == (e4 = c2.extend(true, {}, this.defaults, e4)).dataAdapter) {
          if (null != e4.ajax ? e4.dataAdapter = w2 : null != e4.data ? e4.dataAdapter = $2 : e4.dataAdapter = _2, 0 < e4.minimumInputLength && (e4.dataAdapter = y2.Decorate(e4.dataAdapter, x2)), 0 < e4.maximumInputLength && (e4.dataAdapter = y2.Decorate(e4.dataAdapter, D2)), 0 < e4.maximumSelectionLength && (e4.dataAdapter = y2.Decorate(e4.dataAdapter, S2)), e4.tags && (e4.dataAdapter = y2.Decorate(e4.dataAdapter, b2)), null == e4.tokenSeparators && null == e4.tokenizer || (e4.dataAdapter = y2.Decorate(e4.dataAdapter, A2)), null != e4.query) {
            var t4 = u2(e4.amdBase + "compat/query");
            e4.dataAdapter = y2.Decorate(e4.dataAdapter, t4);
          }
          if (null != e4.initSelection) {
            var n3 = u2(e4.amdBase + "compat/initSelection");
            e4.dataAdapter = y2.Decorate(e4.dataAdapter, n3);
          }
        }
        if (null == e4.resultsAdapter && (e4.resultsAdapter = d, null != e4.ajax && (e4.resultsAdapter = y2.Decorate(e4.resultsAdapter, T)), null != e4.placeholder && (e4.resultsAdapter = y2.Decorate(e4.resultsAdapter, O)), e4.selectOnClose && (e4.resultsAdapter = y2.Decorate(e4.resultsAdapter, I))), null == e4.dropdownAdapter) {
          if (e4.multiple)
            e4.dropdownAdapter = E;
          else {
            var r2 = y2.Decorate(E, C);
            e4.dropdownAdapter = r2;
          }
          if (0 !== e4.minimumResultsForSearch && (e4.dropdownAdapter = y2.Decorate(e4.dropdownAdapter, L)), e4.closeOnSelect && (e4.dropdownAdapter = y2.Decorate(e4.dropdownAdapter, j)), null != e4.dropdownCssClass || null != e4.dropdownCss || null != e4.adaptDropdownCssClass) {
            var i2 = u2(e4.amdBase + "compat/dropdownCss");
            e4.dropdownAdapter = y2.Decorate(e4.dropdownAdapter, i2);
          }
          e4.dropdownAdapter = y2.Decorate(e4.dropdownAdapter, q);
        }
        if (null == e4.selectionAdapter) {
          if (e4.multiple ? e4.selectionAdapter = h2 : e4.selectionAdapter = p, null != e4.placeholder && (e4.selectionAdapter = y2.Decorate(e4.selectionAdapter, f2)), e4.allowClear && (e4.selectionAdapter = y2.Decorate(e4.selectionAdapter, g2)), e4.multiple && (e4.selectionAdapter = y2.Decorate(e4.selectionAdapter, m2)), null != e4.containerCssClass || null != e4.containerCss || null != e4.adaptContainerCssClass) {
            var o2 = u2(e4.amdBase + "compat/containerCss");
            e4.selectionAdapter = y2.Decorate(e4.selectionAdapter, o2);
          }
          e4.selectionAdapter = y2.Decorate(e4.selectionAdapter, v2);
        }
        e4.language = this._resolveLanguage(e4.language), e4.language.push("en");
        for (var s3 = [], a2 = 0; a2 < e4.language.length; a2++) {
          var l2 = e4.language[a2];
          -1 === s3.indexOf(l2) && s3.push(l2);
        }
        return e4.language = s3, e4.translations = this._processTranslations(e4.language, e4.debug), e4;
      }, n2.prototype.reset = function() {
        function a2(e4) {
          return e4.replace(/[^\u0000-\u007E]/g, function(e5) {
            return t3[e5] || e5;
          });
        }
        this.defaults = {
          amdBase: "./",
          amdLanguageBase: "./i18n/",
          closeOnSelect: true,
          debug: false,
          dropdownAutoWidth: false,
          escapeMarkup: y2.escapeMarkup,
          language: {},
          matcher: function e4(t4, n3) {
            if ("" === c2.trim(t4.term))
              return n3;
            if (n3.children && 0 < n3.children.length) {
              for (var r2 = c2.extend(true, {}, n3), i2 = n3.children.length - 1; 0 <= i2; i2--)
                null == e4(t4, n3.children[i2]) && r2.children.splice(i2, 1);
              return 0 < r2.children.length ? r2 : e4(t4, r2);
            }
            var o2 = a2(n3.text).toUpperCase(), s3 = a2(t4.term).toUpperCase();
            return -1 < o2.indexOf(s3) ? n3 : null;
          },
          minimumInputLength: 0,
          maximumInputLength: 0,
          maximumSelectionLength: 0,
          minimumResultsForSearch: 0,
          selectOnClose: false,
          scrollAfterSelect: false,
          sorter: function(e4) {
            return e4;
          },
          templateResult: function(e4) {
            return e4.text;
          },
          templateSelection: function(e4) {
            return e4.text;
          },
          theme: "default",
          width: "resolve"
        };
      }, n2.prototype.applyFromElement = function(e4, t4) {
        var n3 = e4.language, r2 = this.defaults.language, i2 = t4.prop("lang"), o2 = t4.closest("[lang]").prop("lang"), s3 = Array.prototype.concat.call(this._resolveLanguage(i2), this._resolveLanguage(n3), this._resolveLanguage(r2), this._resolveLanguage(o2));
        return e4.language = s3, e4;
      }, n2.prototype._resolveLanguage = function(e4) {
        if (!e4)
          return [];
        if (c2.isEmptyObject(e4))
          return [];
        if (c2.isPlainObject(e4))
          return [e4];
        var t4;
        t4 = c2.isArray(e4) ? e4 : [e4];
        for (var n3 = [], r2 = 0; r2 < t4.length; r2++)
          if (n3.push(t4[r2]), "string" == typeof t4[r2] && 0 < t4[r2].indexOf("-")) {
            var i2 = t4[r2].split("-")[0];
            n3.push(i2);
          }
        return n3;
      }, n2.prototype._processTranslations = function(e4, t4) {
        for (var n3 = new s2(), r2 = 0; r2 < e4.length; r2++) {
          var i2 = new s2(), o2 = e4[r2];
          if ("string" == typeof o2)
            try {
              i2 = s2.loadPath(o2);
            } catch (e5) {
              try {
                o2 = this.defaults.amdLanguageBase + o2, i2 = s2.loadPath(o2);
              } catch (e6) {
                t4 && window.console && console.warn && console.warn('Select2: The language file for "' + o2 + '" could not be automatically loaded. A fallback will be used instead.');
              }
            }
          else
            i2 = c2.isPlainObject(o2) ? new s2(o2) : o2;
          n3.extend(i2);
        }
        return n3;
      }, n2.prototype.set = function(e4, t4) {
        var n3 = {};
        n3[c2.camelCase(e4)] = t4;
        var r2 = y2._convertData(n3);
        c2.extend(true, this.defaults, r2);
      }, new n2();
    }), e2.define("select2/options", ["require", "jquery", "./defaults", "./utils"], function(r2, d, i2, p) {
      function e3(e4, t3) {
        if (this.options = e4, null != t3 && this.fromElement(t3), null != t3 && (this.options = i2.applyFromElement(this.options, t3)), this.options = i2.apply(this.options), t3 && t3.is("input")) {
          var n2 = r2(this.get("amdBase") + "compat/inputData");
          this.options.dataAdapter = p.Decorate(this.options.dataAdapter, n2);
        }
      }
      return e3.prototype.fromElement = function(e4) {
        var t3 = ["select2"];
        null == this.options.multiple && (this.options.multiple = e4.prop("multiple")), null == this.options.disabled && (this.options.disabled = e4.prop("disabled")), null == this.options.dir && (e4.prop("dir") ? this.options.dir = e4.prop("dir") : e4.closest("[dir]").prop("dir") ? this.options.dir = e4.closest("[dir]").prop("dir") : this.options.dir = "ltr"), e4.prop("disabled", this.options.disabled), e4.prop("multiple", this.options.multiple), p.GetData(e4[0], "select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'), p.StoreData(e4[0], "data", p.GetData(e4[0], "select2Tags")), p.StoreData(e4[0], "tags", true)), p.GetData(e4[0], "ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."), e4.attr("ajax--url", p.GetData(e4[0], "ajaxUrl")), p.StoreData(e4[0], "ajax-Url", p.GetData(e4[0], "ajaxUrl")));
        var n2 = {};
        function r3(e5, t4) {
          return t4.toUpperCase();
        }
        for (var i3 = 0; i3 < e4[0].attributes.length; i3++) {
          var o2 = e4[0].attributes[i3].name, s2 = "data-";
          if (o2.substr(0, s2.length) == s2) {
            var a2 = o2.substring(s2.length), l2 = p.GetData(e4[0], a2);
            n2[a2.replace(/-([a-z])/g, r3)] = l2;
          }
        }
        d.fn.jquery && "1." == d.fn.jquery.substr(0, 2) && e4[0].dataset && (n2 = d.extend(true, {}, e4[0].dataset, n2));
        var c2 = d.extend(true, {}, p.GetData(e4[0]), n2);
        for (var u2 in c2 = p._convertData(c2))
          -1 < d.inArray(u2, t3) || (d.isPlainObject(this.options[u2]) ? d.extend(this.options[u2], c2[u2]) : this.options[u2] = c2[u2]);
        return this;
      }, e3.prototype.get = function(e4) {
        return this.options[e4];
      }, e3.prototype.set = function(e4, t3) {
        this.options[e4] = t3;
      }, e3;
    }), e2.define("select2/core", ["jquery", "./options", "./utils", "./keys"], function(i2, c2, u2, r2) {
      var d = function(e3, t3) {
        null != u2.GetData(e3[0], "select2") && u2.GetData(e3[0], "select2").destroy(), this.$element = e3, this.id = this._generateId(e3), t3 = t3 || {}, this.options = new c2(t3, e3), d.__super__.constructor.call(this);
        var n2 = e3.attr("tabindex") || 0;
        u2.StoreData(e3[0], "old-tabindex", n2), e3.attr("tabindex", "-1");
        var r3 = this.options.get("dataAdapter");
        this.dataAdapter = new r3(e3, this.options);
        var i3 = this.render();
        this._placeContainer(i3);
        var o2 = this.options.get("selectionAdapter");
        this.selection = new o2(e3, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, i3);
        var s2 = this.options.get("dropdownAdapter");
        this.dropdown = new s2(e3, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, i3);
        var a2 = this.options.get("resultsAdapter");
        this.results = new a2(e3, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown);
        var l2 = this;
        this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current(function(e4) {
          l2.trigger("selection:update", {
            data: e4
          });
        }), e3.addClass("select2-hidden-accessible"), e3.attr("aria-hidden", "true"), this._syncAttributes(), u2.StoreData(e3[0], "select2", this), e3.data("select2", this);
      };
      return u2.Extend(d, u2.Observable), d.prototype._generateId = function(e3) {
        return "select2-" + (null != e3.attr("id") ? e3.attr("id") : null != e3.attr("name") ? e3.attr("name") + "-" + u2.generateChars(2) : u2.generateChars(4)).replace(/(:|\.|\[|\]|,)/g, "");
      }, d.prototype._placeContainer = function(e3) {
        e3.insertAfter(this.$element);
        var t3 = this._resolveWidth(this.$element, this.options.get("width"));
        null != t3 && e3.css("width", t3);
      }, d.prototype._resolveWidth = function(e3, t3) {
        var n2 = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
        if ("resolve" == t3) {
          var r3 = this._resolveWidth(e3, "style");
          return null != r3 ? r3 : this._resolveWidth(e3, "element");
        }
        if ("element" == t3) {
          var i3 = e3.outerWidth(false);
          return i3 <= 0 ? "auto" : i3 + "px";
        }
        if ("style" != t3)
          return "computedstyle" != t3 ? t3 : window.getComputedStyle(e3[0]).width;
        var o2 = e3.attr("style");
        if ("string" != typeof o2)
          return null;
        for (var s2 = o2.split(";"), a2 = 0, l2 = s2.length; a2 < l2; a2 += 1) {
          var c3 = s2[a2].replace(/\s/g, "").match(n2);
          if (null !== c3 && 1 <= c3.length)
            return c3[1];
        }
        return null;
      }, d.prototype._bindAdapters = function() {
        this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container);
      }, d.prototype._registerDomEvents = function() {
        var t3 = this;
        this.$element.on("change.select2", function() {
          t3.dataAdapter.current(function(e4) {
            t3.trigger("selection:update", {
              data: e4
            });
          });
        }), this.$element.on("focus.select2", function(e4) {
          t3.trigger("focus", e4);
        }), this._syncA = u2.bind(this._syncAttributes, this), this._syncS = u2.bind(this._syncSubtree, this), this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._syncA);
        var e3 = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
        null != e3 ? (this._observer = new e3(function(e4) {
          i2.each(e4, t3._syncA), i2.each(e4, t3._syncS);
        }), this._observer.observe(this.$element[0], {
          attributes: true,
          childList: true,
          subtree: false
        })) : this.$element[0].addEventListener && (this.$element[0].addEventListener("DOMAttrModified", t3._syncA, false), this.$element[0].addEventListener("DOMNodeInserted", t3._syncS, false), this.$element[0].addEventListener("DOMNodeRemoved", t3._syncS, false));
      }, d.prototype._registerDataEvents = function() {
        var n2 = this;
        this.dataAdapter.on("*", function(e3, t3) {
          n2.trigger(e3, t3);
        });
      }, d.prototype._registerSelectionEvents = function() {
        var n2 = this, r3 = ["toggle", "focus"];
        this.selection.on("toggle", function() {
          n2.toggleDropdown();
        }), this.selection.on("focus", function(e3) {
          n2.focus(e3);
        }), this.selection.on("*", function(e3, t3) {
          -1 === i2.inArray(e3, r3) && n2.trigger(e3, t3);
        });
      }, d.prototype._registerDropdownEvents = function() {
        var n2 = this;
        this.dropdown.on("*", function(e3, t3) {
          n2.trigger(e3, t3);
        });
      }, d.prototype._registerResultsEvents = function() {
        var n2 = this;
        this.results.on("*", function(e3, t3) {
          n2.trigger(e3, t3);
        });
      }, d.prototype._registerEvents = function() {
        var n2 = this;
        this.on("open", function() {
          n2.$container.addClass("select2-container--open");
        }), this.on("close", function() {
          n2.$container.removeClass("select2-container--open");
        }), this.on("enable", function() {
          n2.$container.removeClass("select2-container--disabled");
        }), this.on("disable", function() {
          n2.$container.addClass("select2-container--disabled");
        }), this.on("blur", function() {
          n2.$container.removeClass("select2-container--focus");
        }), this.on("query", function(t3) {
          n2.isOpen() || n2.trigger("open", {}), this.dataAdapter.query(t3, function(e3) {
            n2.trigger("results:all", {
              data: e3,
              query: t3
            });
          });
        }), this.on("query:append", function(t3) {
          this.dataAdapter.query(t3, function(e3) {
            n2.trigger("results:append", {
              data: e3,
              query: t3
            });
          });
        }), this.on("keypress", function(e3) {
          var t3 = e3.which;
          n2.isOpen() ? t3 === r2.ESC || t3 === r2.TAB || t3 === r2.UP && e3.altKey ? (n2.close(), e3.preventDefault()) : t3 === r2.ENTER ? (n2.trigger("results:select", {}), e3.preventDefault()) : t3 === r2.SPACE && e3.ctrlKey ? (n2.trigger("results:toggle", {}), e3.preventDefault()) : t3 === r2.UP ? (n2.trigger("results:previous", {}), e3.preventDefault()) : t3 === r2.DOWN && (n2.trigger("results:next", {}), e3.preventDefault()) : (t3 === r2.ENTER || t3 === r2.SPACE || t3 === r2.DOWN && e3.altKey) && (n2.open(), e3.preventDefault());
        });
      }, d.prototype._syncAttributes = function() {
        this.options.set("disabled", this.$element.prop("disabled")), this.options.get("disabled") ? (this.isOpen() && this.close(), this.trigger("disable", {})) : this.trigger("enable", {});
      }, d.prototype._syncSubtree = function(e3, t3) {
        var n2 = false, r3 = this;
        if (!e3 || !e3.target || "OPTION" === e3.target.nodeName || "OPTGROUP" === e3.target.nodeName) {
          if (t3) {
            if (t3.addedNodes && 0 < t3.addedNodes.length)
              for (var i3 = 0; i3 < t3.addedNodes.length; i3++) {
                t3.addedNodes[i3].selected && (n2 = true);
              }
            else
              t3.removedNodes && 0 < t3.removedNodes.length && (n2 = true);
          } else
            n2 = true;
          n2 && this.dataAdapter.current(function(e4) {
            r3.trigger("selection:update", {
              data: e4
            });
          });
        }
      }, d.prototype.trigger = function(e3, t3) {
        var n2 = d.__super__.trigger, r3 = {
          open: "opening",
          close: "closing",
          select: "selecting",
          unselect: "unselecting",
          clear: "clearing"
        };
        if (void 0 === t3 && (t3 = {}), e3 in r3) {
          var i3 = r3[e3], o2 = {
            prevented: false,
            name: e3,
            args: t3
          };
          if (n2.call(this, i3, o2), o2.prevented)
            return void (t3.prevented = true);
        }
        n2.call(this, e3, t3);
      }, d.prototype.toggleDropdown = function() {
        this.options.get("disabled") || (this.isOpen() ? this.close() : this.open());
      }, d.prototype.open = function() {
        this.isOpen() || this.trigger("query", {});
      }, d.prototype.close = function() {
        this.isOpen() && this.trigger("close", {});
      }, d.prototype.isOpen = function() {
        return this.$container.hasClass("select2-container--open");
      }, d.prototype.hasFocus = function() {
        return this.$container.hasClass("select2-container--focus");
      }, d.prototype.focus = function(e3) {
        this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {}));
      }, d.prototype.enable = function(e3) {
        this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'), null != e3 && 0 !== e3.length || (e3 = [true]);
        var t3 = !e3[0];
        this.$element.prop("disabled", t3);
      }, d.prototype.data = function() {
        this.options.get("debug") && 0 < arguments.length && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');
        var t3 = [];
        return this.dataAdapter.current(function(e3) {
          t3 = e3;
        }), t3;
      }, d.prototype.val = function(e3) {
        if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == e3 || 0 === e3.length)
          return this.$element.val();
        var t3 = e3[0];
        i2.isArray(t3) && (t3 = i2.map(t3, function(e4) {
          return e4.toString();
        })), this.$element.val(t3).trigger("change");
      }, d.prototype.destroy = function() {
        this.$container.remove(), this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._syncA), null != this._observer ? (this._observer.disconnect(), this._observer = null) : this.$element[0].removeEventListener && (this.$element[0].removeEventListener("DOMAttrModified", this._syncA, false), this.$element[0].removeEventListener("DOMNodeInserted", this._syncS, false), this.$element[0].removeEventListener("DOMNodeRemoved", this._syncS, false)), this._syncA = null, this._syncS = null, this.$element.off(".select2"), this.$element.attr("tabindex", u2.GetData(this.$element[0], "old-tabindex")), this.$element.removeClass("select2-hidden-accessible"), this.$element.attr("aria-hidden", "false"), u2.RemoveData(this.$element[0]), this.$element.removeData("select2"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null;
      }, d.prototype.render = function() {
        var e3 = i2('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');
        return e3.attr("dir", this.options.get("dir")), this.$container = e3, this.$container.addClass("select2-container--" + this.options.get("theme")), u2.StoreData(e3[0], "element", this.$element), e3;
      }, d;
    }), e2.define("jquery-mousewheel", ["jquery"], function(e3) {
      return e3;
    }), e2.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults", "./select2/utils"], function(i2, e3, o2, t3, s2) {
      if (null == i2.fn.select2) {
        var a2 = ["open", "close", "destroy"];
        i2.fn.select2 = function(t4) {
          if ("object" == typeof (t4 = t4 || {}))
            return this.each(function() {
              var e4 = i2.extend(true, {}, t4);
              new o2(i2(this), e4);
            }), this;
          if ("string" != typeof t4)
            throw new Error("Invalid arguments for Select2: " + t4);
          var n2, r2 = Array.prototype.slice.call(arguments, 1);
          return this.each(function() {
            var e4 = s2.GetData(this, "select2");
            null == e4 && window.console && console.error && console.error("The select2('" + t4 + "') method was called on an element that is not using Select2."), n2 = e4[t4].apply(e4, r2);
          }), -1 < i2.inArray(t4, a2) ? this : n2;
        };
      }
      return null == i2.fn.select2.defaults && (i2.fn.select2.defaults = t3), o2;
    }), {
      define: e2.define,
      require: e2.require
    };
  }(), t = e.require("jquery.select2");
  return u.fn.select2.amd = e, t;
});

})();

/* </nowiki> */

//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zZXQtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVsZXRlLXByb3BlcnR5LW9yLXRocm93LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnVuc2hpZnQuanMiLCAic3JjL3NlbGVjdDIvc2VsZWN0Mi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgY2hlY2sodHlwZW9mIHRoaXMgPT0gJ29iamVjdCcgJiYgdGhpcykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSkgOiBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgbmF2aWdhdG9yICE9ICd1bmRlZmluZWQnICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAnJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWwuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcbiIsICIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsICRPYmplY3QoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM3LjAnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM3LjAvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgfHwge30pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXRydW5jIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh4KSB7XG4gIHZhciBuID0gK3g7XG4gIHJldHVybiAobiA+IDAgPyBmbG9vciA6IGNlaWwpKG4pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdICYmIGdsb2JhbFtUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1pc2FycmF5IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZ3VtZW50KSB7XG4gIHJldHVybiBjbGFzc29mKGFyZ3VtZW50KSA9PT0gJ0FycmF5Jztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBTYWZhcmkgPCAxMyBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBpbiB0aGlzIGNhc2VcbnZhciBTSUxFTlRfT05fTk9OX1dSSVRBQkxFX0xFTkdUSF9TRVQgPSBERVNDUklQVE9SUyAmJiAhZnVuY3Rpb24gKCkge1xuICAvLyBtYWtlcyBubyBzZW5zZSB3aXRob3V0IHByb3BlciBzdHJpY3QgbW9kZSBzdXBwb3J0XG4gIGlmICh0aGlzICE9PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHsgd3JpdGFibGU6IGZhbHNlIH0pLmxlbmd0aCA9IDE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICB9XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gU0lMRU5UX09OX05PTl9XUklUQUJMRV9MRU5HVEhfU0VUID8gZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICBpZiAoaXNBcnJheShPKSAmJiAhZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sICdsZW5ndGgnKS53cml0YWJsZSkge1xuICAgIHRocm93IG5ldyAkVHlwZUVycm9yKCdDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoJyk7XG4gIH0gcmV0dXJuIE8ubGVuZ3RoID0gbGVuZ3RoO1xufSA6IGZ1bmN0aW9uIChPLCBsZW5ndGgpIHtcbiAgcmV0dXJuIE8ubGVuZ3RoID0gbGVuZ3RoO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPiBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyAkVHlwZUVycm9yKCdNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHNldEFycmF5TGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNldC1sZW5ndGgnKTtcbnZhciBkb2VzTm90RXhjZWVkU2FmZUludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlcicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBJTkNPUlJFQ1RfVE9fTEVOR1RIID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW10ucHVzaC5jYWxsKHsgbGVuZ3RoOiAweDEwMDAwMDAwMCB9LCAxKSAhPT0gNDI5NDk2NzI5Nztcbn0pO1xuXG4vLyBWOCA8PSAxMjEgYW5kIFNhZmFyaSA8PSAxNS40OyBGRiA8IDIzIHRocm93cyBJbnRlcm5hbEVycm9yXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xMjY4MVxudmFyIHByb3BlckVycm9yT25Ob25Xcml0YWJsZUxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICdsZW5ndGgnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KS5wdXNoKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICB9XG59O1xuXG52YXIgRk9SQ0VEID0gSU5DT1JSRUNUX1RPX0xFTkdUSCB8fCAhcHJvcGVyRXJyb3JPbk5vbldyaXRhYmxlTGVuZ3RoKCk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucHVzaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5wdXNoXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgcHVzaDogZnVuY3Rpb24gcHVzaChpdGVtKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBkb2VzTm90RXhjZWVkU2FmZUludGVnZXIobGVuICsgYXJnQ291bnQpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnQ291bnQ7IGkrKykge1xuICAgICAgT1tsZW5dID0gYXJndW1lbnRzW2ldO1xuICAgICAgbGVuKys7XG4gICAgfVxuICAgIHNldEFycmF5TGVuZ3RoKE8sIGxlbik7XG4gICAgcmV0dXJuIGxlbjtcbiAgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIFApIHtcbiAgaWYgKCFkZWxldGUgT1tQXSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Nhbm5vdCBkZWxldGUgcHJvcGVydHkgJyArIHRyeVRvU3RyaW5nKFApICsgJyBvZiAnICsgdHJ5VG9TdHJpbmcoTykpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIHNldEFycmF5TGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNldC1sZW5ndGgnKTtcbnZhciBkZWxldGVQcm9wZXJ0eU9yVGhyb3cgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVsZXRlLXByb3BlcnR5LW9yLXRocm93Jyk7XG52YXIgZG9lc05vdEV4Y2VlZFNhZmVJbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvZXMtbm90LWV4Y2VlZC1zYWZlLWludGVnZXInKTtcblxuLy8gSUU4LVxudmFyIElOQ09SUkVDVF9SRVNVTFQgPSBbXS51bnNoaWZ0KDApICE9PSAxO1xuXG4vLyBWOCB+IENocm9tZSA8IDcxIGFuZCBTYWZhcmkgPD0gMTUuNCwgRkYgPCAyMyB0aHJvd3MgSW50ZXJuYWxFcnJvclxudmFyIHByb3BlckVycm9yT25Ob25Xcml0YWJsZUxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICdsZW5ndGgnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KS51bnNoaWZ0KCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICB9XG59O1xuXG52YXIgRk9SQ0VEID0gSU5DT1JSRUNUX1JFU1VMVCB8fCAhcHJvcGVyRXJyb3JPbk5vbldyaXRhYmxlTGVuZ3RoKCk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUudW5zaGlmdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS51bnNoaWZ0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdW5zaGlmdDogZnVuY3Rpb24gdW5zaGlmdChpdGVtKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZiAoYXJnQ291bnQpIHtcbiAgICAgIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlcihsZW4gKyBhcmdDb3VudCk7XG4gICAgICB2YXIgayA9IGxlbjtcbiAgICAgIHdoaWxlIChrLS0pIHtcbiAgICAgICAgdmFyIHRvID0gayArIGFyZ0NvdW50O1xuICAgICAgICBpZiAoayBpbiBPKSBPW3RvXSA9IE9ba107XG4gICAgICAgIGVsc2UgZGVsZXRlUHJvcGVydHlPclRocm93KE8sIHRvKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJnQ291bnQ7IGorKykge1xuICAgICAgICBPW2pdID0gYXJndW1lbnRzW2pdO1xuICAgICAgfVxuICAgIH0gcmV0dXJuIHNldEFycmF5TGVuZ3RoKE8sIGxlbiArIGFyZ0NvdW50KTtcbiAgfVxufSk7XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCAnLi9zZWxlY3QyLmxlc3MnO1xuXG4vKiEgU2VsZWN0MiA0LjAuMTIgfCBodHRwczovL2dpdGh1Yi5jb20vc2VsZWN0Mi9zZWxlY3QyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQgKi9cbiFmdW5jdGlvbihuKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtcImpxdWVyeVwiXSxuKTovKlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/cmVxdWlyZShcImpxdWVyeVwiKTpyZXF1aXJlKFwianF1ZXJ5XCIpKGUpKSxuKHQpLHR9OiovbihqUXVlcnkpfShmdW5jdGlvbih1KXt2YXIgZT1mdW5jdGlvbigpe2lmKHUmJnUuZm4mJnUuZm4uc2VsZWN0MiYmdS5mbi5zZWxlY3QyLmFtZCl2YXIgZT11LmZuLnNlbGVjdDIuYW1kO3ZhciB0LG4scixoLG8scyxmLGcsbSx2LHksXyxpLGEsdztmdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGkuY2FsbChlLHQpfWZ1bmN0aW9uIGwoZSx0KXt2YXIgbixyLGksbyxzLGEsbCxjLHUsZCxwLGg9dCYmdC5zcGxpdChcIi9cIiksZj15Lm1hcCxnPWYmJmZbXCIqXCJdfHx7fTtpZihlKXtmb3Iocz0oZT1lLnNwbGl0KFwiL1wiKSkubGVuZ3RoLTEseS5ub2RlSWRDb21wYXQmJncudGVzdChlW3NdKSYmKGVbc109ZVtzXS5yZXBsYWNlKHcsXCJcIikpLFwiLlwiPT09ZVswXS5jaGFyQXQoMCkmJmgmJihlPWguc2xpY2UoMCxoLmxlbmd0aC0xKS5jb25jYXQoZSkpLHU9MDt1PGUubGVuZ3RoO3UrKylpZihcIi5cIj09PShwPWVbdV0pKWUuc3BsaWNlKHUsMSksdS09MTtlbHNlIGlmKFwiLi5cIj09PXApe2lmKDA9PT11fHwxPT09dSYmXCIuLlwiPT09ZVsyXXx8XCIuLlwiPT09ZVt1LTFdKWNvbnRpbnVlOzA8dSYmKGUuc3BsaWNlKHUtMSwyKSx1LT0yKX1lPWUuam9pbihcIi9cIil9aWYoKGh8fGcpJiZmKXtmb3IodT0obj1lLnNwbGl0KFwiL1wiKSkubGVuZ3RoOzA8dTt1LT0xKXtpZihyPW4uc2xpY2UoMCx1KS5qb2luKFwiL1wiKSxoKWZvcihkPWgubGVuZ3RoOzA8ZDtkLT0xKWlmKGk9KGk9ZltoLnNsaWNlKDAsZCkuam9pbihcIi9cIildKSYmaVtyXSl7bz1pLGE9dTticmVha31pZihvKWJyZWFrOyFsJiZnJiZnW3JdJiYobD1nW3JdLGM9dSl9IW8mJmwmJihvPWwsYT1jKSxvJiYobi5zcGxpY2UoMCxhLG8pLGU9bi5qb2luKFwiL1wiKSl9cmV0dXJuIGV9ZnVuY3Rpb24gQSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWEuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0mJjE9PT1lLmxlbmd0aCYmZS5wdXNoKG51bGwpLHMuYXBwbHkoaCxlLmNvbmNhdChbdCxuXSkpfX1mdW5jdGlvbiB4KHQpe3JldHVybiBmdW5jdGlvbihlKXttW3RdPWV9fWZ1bmN0aW9uIEQoZSl7aWYoYih2LGUpKXt2YXIgdD12W2VdO2RlbGV0ZSB2W2VdLF9bZV09ITAsby5hcHBseShoLHQpfWlmKCFiKG0sZSkmJiFiKF8sZSkpdGhyb3cgbmV3IEVycm9yKFwiTm8gXCIrZSk7cmV0dXJuIG1bZV19ZnVuY3Rpb24gYyhlKXt2YXIgdCxuPWU/ZS5pbmRleE9mKFwiIVwiKTotMTtyZXR1cm4tMTxuJiYodD1lLnN1YnN0cmluZygwLG4pLGU9ZS5zdWJzdHJpbmcobisxLGUubGVuZ3RoKSksW3QsZV19ZnVuY3Rpb24gUyhlKXtyZXR1cm4gZT9jKGUpOltdfXJldHVybiBlJiZlLnJlcXVpcmVqc3x8KGU/bj1lOmU9e30sbT17fSx2PXt9LHk9e30sXz17fSxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1bXS5zbGljZSx3PS9cXC5qcyQvLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWMoZSksaT1yWzBdLG89dFsxXTtyZXR1cm4gZT1yWzFdLGkmJihuPUQoaT1sKGksbykpKSxpP2U9biYmbi5ub3JtYWxpemU/bi5ub3JtYWxpemUoZSxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSx0KX19KG8pKTpsKGUsbyk6KGk9KHI9YyhlPWwoZSxvKSkpWzBdLGU9clsxXSxpJiYobj1EKGkpKSkse2Y6aT9pK1wiIVwiK2U6ZSxuOmUscHI6aSxwOm59fSxnPXtyZXF1aXJlOmZ1bmN0aW9uKGUpe3JldHVybiBBKGUpfSxleHBvcnRzOmZ1bmN0aW9uKGUpe3ZhciB0PW1bZV07cmV0dXJuIHZvaWQgMCE9PXQ/dDptW2VdPXt9fSxtb2R1bGU6ZnVuY3Rpb24oZSl7cmV0dXJue2lkOmUsdXJpOlwiXCIsZXhwb3J0czptW2VdLGNvbmZpZzpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4geSYmeS5jb25maWcmJnkuY29uZmlnW2VdfHx7fX19KGUpfX19LG89ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxzLGEsbCxjLHUsZD1bXSxwPXR5cGVvZiBuO2lmKGM9UyhyPXJ8fGUpLFwidW5kZWZpbmVkXCI9PXB8fFwiZnVuY3Rpb25cIj09cCl7Zm9yKHQ9IXQubGVuZ3RoJiZuLmxlbmd0aD9bXCJyZXF1aXJlXCIsXCJleHBvcnRzXCIsXCJtb2R1bGVcIl06dCxsPTA7bDx0Lmxlbmd0aDtsKz0xKWlmKFwicmVxdWlyZVwiPT09KG89KGE9Zih0W2xdLGMpKS5mKSlkW2xdPWcucmVxdWlyZShlKTtlbHNlIGlmKFwiZXhwb3J0c1wiPT09bylkW2xdPWcuZXhwb3J0cyhlKSx1PSEwO2Vsc2UgaWYoXCJtb2R1bGVcIj09PW8paT1kW2xdPWcubW9kdWxlKGUpO2Vsc2UgaWYoYihtLG8pfHxiKHYsbyl8fGIoXyxvKSlkW2xdPUQobyk7ZWxzZXtpZighYS5wKXRocm93IG5ldyBFcnJvcihlK1wiIG1pc3NpbmcgXCIrbyk7YS5wLmxvYWQoYS5uLEEociwhMCkseChvKSx7fSksZFtsXT1tW29dfXM9bj9uLmFwcGx5KG1bZV0sZCk6dm9pZCAwLGUmJihpJiZpLmV4cG9ydHMhPT1oJiZpLmV4cG9ydHMhPT1tW2VdP21bZV09aS5leHBvcnRzOnM9PT1oJiZ1fHwobVtlXT1zKSl9ZWxzZSBlJiYobVtlXT1uKX0sdD1uPXM9ZnVuY3Rpb24oZSx0LG4scixpKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZ1tlXT9nW2VdKHQpOkQoZihlLFModCkpLmYpO2lmKCFlLnNwbGljZSl7aWYoKHk9ZSkuZGVwcyYmcyh5LmRlcHMseS5jYWxsYmFjayksIXQpcmV0dXJuO3Quc3BsaWNlPyhlPXQsdD1uLG49bnVsbCk6ZT1ofXJldHVybiB0PXR8fGZ1bmN0aW9uKCl7fSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYobj1yLHI9aSkscj9vKGgsZSx0LG4pOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvKGgsZSx0LG4pfSw0KSxzfSxzLmNvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4gcyhlKX0sdC5fZGVmaW5lZD1tLChyPWZ1bmN0aW9uKGUsdCxuKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJTZWUgYWxtb25kIFJFQURNRTogaW5jb3JyZWN0IG1vZHVsZSBidWlsZCwgbm8gbW9kdWxlIG5hbWVcIik7dC5zcGxpY2V8fChuPXQsdD1bXSksYihtLGUpfHxiKHYsZSl8fCh2W2VdPVtlLHQsbl0pfSkuYW1kPXtqUXVlcnk6ITB9LGUucmVxdWlyZWpzPXQsZS5yZXF1aXJlPW4sZS5kZWZpbmU9ciksZS5kZWZpbmUoXCJhbG1vbmRcIixmdW5jdGlvbigpe30pLGUuZGVmaW5lKFwianF1ZXJ5XCIsW10sZnVuY3Rpb24oKXt2YXIgZT11fHwkO3JldHVybiBudWxsPT1lJiZjb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKFwiU2VsZWN0MjogQW4gaW5zdGFuY2Ugb2YgalF1ZXJ5IG9yIGEgalF1ZXJ5LWNvbXBhdGlibGUgbGlicmFyeSB3YXMgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGluY2x1ZGluZyBqUXVlcnkgYmVmb3JlIFNlbGVjdDIgb24geW91ciB3ZWIgcGFnZS5cIiksZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi91dGlsc1wiLFtcImpxdWVyeVwiXSxmdW5jdGlvbihvKXt2YXIgaT17fTtmdW5jdGlvbiB1KGUpe3ZhciB0PWUucHJvdG90eXBlLG49W107Zm9yKHZhciByIGluIHQpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHRbcl0mJlwiY29uc3RydWN0b3JcIiE9PXImJm4ucHVzaChyKX1yZXR1cm4gbn1pLkV4dGVuZD1mdW5jdGlvbihlLHQpe3ZhciBuPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9Zm9yKHZhciBpIGluIHQpbi5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiByLnByb3RvdHlwZT10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgcixlLl9fc3VwZXJfXz10LnByb3RvdHlwZSxlfSxpLkRlY29yYXRlPWZ1bmN0aW9uKHIsaSl7dmFyIGU9dShpKSx0PXUocik7ZnVuY3Rpb24gbygpe3ZhciBlPUFycmF5LnByb3RvdHlwZS51bnNoaWZ0LHQ9aS5wcm90b3R5cGUuY29uc3RydWN0b3IubGVuZ3RoLG49ci5wcm90b3R5cGUuY29uc3RydWN0b3I7MDx0JiYoZS5jYWxsKGFyZ3VtZW50cyxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvciksbj1pLnByb3RvdHlwZS5jb25zdHJ1Y3Rvciksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9aS5kaXNwbGF5TmFtZT1yLmRpc3BsYXlOYW1lLG8ucHJvdG90eXBlPW5ldyBmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3I9b307Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl07by5wcm90b3R5cGVbc109ci5wcm90b3R5cGVbc119ZnVuY3Rpb24gYShlKXt2YXIgdD1mdW5jdGlvbigpe307ZSBpbiBvLnByb3RvdHlwZSYmKHQ9by5wcm90b3R5cGVbZV0pO3ZhciBuPWkucHJvdG90eXBlW2VdO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKGFyZ3VtZW50cyx0KSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19Zm9yKHZhciBsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBjPWVbbF07by5wcm90b3R5cGVbY109YShjKX1yZXR1cm4gb307ZnVuY3Rpb24gZSgpe3RoaXMubGlzdGVuZXJzPXt9fWUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7dGhpcy5saXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnN8fHt9LGUgaW4gdGhpcy5saXN0ZW5lcnM/dGhpcy5saXN0ZW5lcnNbZV0ucHVzaCh0KTp0aGlzLmxpc3RlbmVyc1tlXT1bdF19LGUucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLG49dC5jYWxsKGFyZ3VtZW50cywxKTt0aGlzLmxpc3RlbmVycz10aGlzLmxpc3RlbmVyc3x8e30sbnVsbD09biYmKG49W10pLDA9PT1uLmxlbmd0aCYmbi5wdXNoKHt9KSwoblswXS5fdHlwZT1lKWluIHRoaXMubGlzdGVuZXJzJiZ0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tlXSx0LmNhbGwoYXJndW1lbnRzLDEpKSxcIipcImluIHRoaXMubGlzdGVuZXJzJiZ0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tcIipcIl0sYXJndW1lbnRzKX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWVbbl0uYXBwbHkodGhpcyx0KX0saS5PYnNlcnZhYmxlPWUsaS5nZW5lcmF0ZUNoYXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cIlwiLG49MDtuPGU7bisrKXt0Kz1NYXRoLmZsb29yKDM2Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KX1yZXR1cm4gdH0saS5iaW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0LGFyZ3VtZW50cyl9fSxpLl9jb252ZXJ0RGF0YT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl7dmFyIG49dC5zcGxpdChcIi1cIikscj1lO2lmKDEhPT1uLmxlbmd0aCl7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV07KG89by5zdWJzdHJpbmcoMCwxKS50b0xvd2VyQ2FzZSgpK28uc3Vic3RyaW5nKDEpKWluIHJ8fChyW29dPXt9KSxpPT1uLmxlbmd0aC0xJiYocltvXT1lW3RdKSxyPXJbb119ZGVsZXRlIGVbdF19fXJldHVybiBlfSxpLmhhc1Njcm9sbD1mdW5jdGlvbihlLHQpe3ZhciBuPW8odCkscj10LnN0eWxlLm92ZXJmbG93WCxpPXQuc3R5bGUub3ZlcmZsb3dZO3JldHVybihyIT09aXx8XCJoaWRkZW5cIiE9PWkmJlwidmlzaWJsZVwiIT09aSkmJihcInNjcm9sbFwiPT09cnx8XCJzY3JvbGxcIj09PWl8fChuLmlubmVySGVpZ2h0KCk8dC5zY3JvbGxIZWlnaHR8fG4uaW5uZXJXaWR0aCgpPHQuc2Nyb2xsV2lkdGgpKX0saS5lc2NhcGVNYXJrdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9e1wiXFxcXFwiOlwiJiM5MjtcIixcIiZcIjpcIiZhbXA7XCIsXCI8XCI6XCImbHQ7XCIsXCI+XCI6XCImZ3Q7XCIsJ1wiJzpcIiZxdW90O1wiLFwiJ1wiOlwiJiMzOTtcIixcIi9cIjpcIiYjNDc7XCJ9O3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBlP2U6U3RyaW5nKGUpLnJlcGxhY2UoL1smPD5cIidcXC9cXFxcXS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9LGkuYXBwZW5kTWFueT1mdW5jdGlvbihlLHQpe2lmKFwiMS43XCI9PT1vLmZuLmpxdWVyeS5zdWJzdHIoMCwzKSl7dmFyIG49bygpO28ubWFwKHQsZnVuY3Rpb24oZSl7bj1uLmFkZChlKX0pLHQ9bn1lLmFwcGVuZCh0KX0saS5fX2NhY2hlPXt9O3ZhciBuPTA7cmV0dXJuIGkuR2V0VW5pcXVlRWxlbWVudElkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zZWxlY3QyLWlkXCIpO3JldHVybiBudWxsPT10JiYoZS5pZD8odD1lLmlkLGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zZWxlY3QyLWlkXCIsdCkpOihlLnNldEF0dHJpYnV0ZShcImRhdGEtc2VsZWN0Mi1pZFwiLCsrbiksdD1uLnRvU3RyaW5nKCkpKSx0fSxpLlN0b3JlRGF0YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9aS5HZXRVbmlxdWVFbGVtZW50SWQoZSk7aS5fX2NhY2hlW3JdfHwoaS5fX2NhY2hlW3JdPXt9KSxpLl9fY2FjaGVbcl1bdF09bn0saS5HZXREYXRhPWZ1bmN0aW9uKGUsdCl7dmFyIG49aS5HZXRVbmlxdWVFbGVtZW50SWQoZSk7cmV0dXJuIHQ/aS5fX2NhY2hlW25dJiZudWxsIT1pLl9fY2FjaGVbbl1bdF0/aS5fX2NhY2hlW25dW3RdOm8oZSkuZGF0YSh0KTppLl9fY2FjaGVbbl19LGkuUmVtb3ZlRGF0YT1mdW5jdGlvbihlKXt2YXIgdD1pLkdldFVuaXF1ZUVsZW1lbnRJZChlKTtudWxsIT1pLl9fY2FjaGVbdF0mJmRlbGV0ZSBpLl9fY2FjaGVbdF0sZS5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXNlbGVjdDItaWRcIil9LGl9KSxlLmRlZmluZShcInNlbGVjdDIvcmVzdWx0c1wiLFtcImpxdWVyeVwiLFwiLi91dGlsc1wiXSxmdW5jdGlvbihoLGYpe2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMuJGVsZW1lbnQ9ZSx0aGlzLmRhdGE9bix0aGlzLm9wdGlvbnM9dCxyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfXJldHVybiBmLkV4dGVuZChyLGYuT2JzZXJ2YWJsZSksci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9aCgnPHVsIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zXCIgcm9sZT1cImxpc3Rib3hcIj48L3VsPicpO3JldHVybiB0aGlzLm9wdGlvbnMuZ2V0KFwibXVsdGlwbGVcIikmJmUuYXR0cihcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsXCJ0cnVlXCIpLHRoaXMuJHJlc3VsdHM9ZX0sci5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLiRyZXN1bHRzLmVtcHR5KCl9LHIucHJvdG90eXBlLmRpc3BsYXlNZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5nZXQoXCJlc2NhcGVNYXJrdXBcIik7dGhpcy5jbGVhcigpLHRoaXMuaGlkZUxvYWRpbmcoKTt2YXIgbj1oKCc8bGkgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvblwiPjwvbGk+Jykscj10aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNsYXRpb25zXCIpLmdldChlLm1lc3NhZ2UpO24uYXBwZW5kKHQocihlLmFyZ3MpKSksblswXS5jbGFzc05hbWUrPVwiIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZVwiLHRoaXMuJHJlc3VsdHMuYXBwZW5kKG4pfSxyLnByb3RvdHlwZS5oaWRlTWVzc2FnZXM9ZnVuY3Rpb24oKXt0aGlzLiRyZXN1bHRzLmZpbmQoXCIuc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlXCIpLnJlbW92ZSgpfSxyLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSl7dGhpcy5oaWRlTG9hZGluZygpO3ZhciB0PVtdO2lmKG51bGwhPWUucmVzdWx0cyYmMCE9PWUucmVzdWx0cy5sZW5ndGgpe2UucmVzdWx0cz10aGlzLnNvcnQoZS5yZXN1bHRzKTtmb3IodmFyIG49MDtuPGUucmVzdWx0cy5sZW5ndGg7bisrKXt2YXIgcj1lLnJlc3VsdHNbbl0saT10aGlzLm9wdGlvbihyKTt0LnB1c2goaSl9dGhpcy4kcmVzdWx0cy5hcHBlbmQodCl9ZWxzZSAwPT09dGhpcy4kcmVzdWx0cy5jaGlsZHJlbigpLmxlbmd0aCYmdGhpcy50cmlnZ2VyKFwicmVzdWx0czptZXNzYWdlXCIse21lc3NhZ2U6XCJub1Jlc3VsdHNcIn0pfSxyLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihlLHQpe3QuZmluZChcIi5zZWxlY3QyLXJlc3VsdHNcIikuYXBwZW5kKGUpfSxyLnByb3RvdHlwZS5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnMuZ2V0KFwic29ydGVyXCIpKGUpfSxyLnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRyZXN1bHRzLmZpbmQoXCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF1cIiksdD1lLmZpbHRlcihcIlthcmlhLXNlbGVjdGVkPXRydWVdXCIpOzA8dC5sZW5ndGg/dC5maXJzdCgpLnRyaWdnZXIoXCJtb3VzZWVudGVyXCIpOmUuZmlyc3QoKS50cmlnZ2VyKFwibW91c2VlbnRlclwiKSx0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKX0sci5wcm90b3R5cGUuc2V0Q2xhc3Nlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kYXRhLmN1cnJlbnQoZnVuY3Rpb24oZSl7dmFyIHI9aC5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5pZC50b1N0cmluZygpfSk7dC4kcmVzdWx0cy5maW5kKFwiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdXCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1oKHRoaXMpLHQ9Zi5HZXREYXRhKHRoaXMsXCJkYXRhXCIpLG49XCJcIit0LmlkO251bGwhPXQuZWxlbWVudCYmdC5lbGVtZW50LnNlbGVjdGVkfHxudWxsPT10LmVsZW1lbnQmJi0xPGguaW5BcnJheShuLHIpP2UuYXR0cihcImFyaWEtc2VsZWN0ZWRcIixcInRydWVcIik6ZS5hdHRyKFwiYXJpYS1zZWxlY3RlZFwiLFwiZmFsc2VcIil9KX0pfSxyLnByb3RvdHlwZS5zaG93TG9hZGluZz1mdW5jdGlvbihlKXt0aGlzLmhpZGVMb2FkaW5nKCk7dmFyIHQ9e2Rpc2FibGVkOiEwLGxvYWRpbmc6ITAsdGV4dDp0aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNsYXRpb25zXCIpLmdldChcInNlYXJjaGluZ1wiKShlKX0sbj10aGlzLm9wdGlvbih0KTtuLmNsYXNzTmFtZSs9XCIgbG9hZGluZy1yZXN1bHRzXCIsdGhpcy4kcmVzdWx0cy5wcmVwZW5kKG4pfSxyLnByb3RvdHlwZS5oaWRlTG9hZGluZz1mdW5jdGlvbigpe3RoaXMuJHJlc3VsdHMuZmluZChcIi5sb2FkaW5nLXJlc3VsdHNcIikucmVtb3ZlKCl9LHIucHJvdG90eXBlLm9wdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7dC5jbGFzc05hbWU9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvblwiO3ZhciBuPXtyb2xlOlwib3B0aW9uXCIsXCJhcmlhLXNlbGVjdGVkXCI6XCJmYWxzZVwifSxyPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7Zm9yKHZhciBpIGluKG51bGwhPWUuZWxlbWVudCYmci5jYWxsKGUuZWxlbWVudCxcIjpkaXNhYmxlZFwiKXx8bnVsbD09ZS5lbGVtZW50JiZlLmRpc2FibGVkKSYmKGRlbGV0ZSBuW1wiYXJpYS1zZWxlY3RlZFwiXSxuW1wiYXJpYS1kaXNhYmxlZFwiXT1cInRydWVcIiksbnVsbD09ZS5pZCYmZGVsZXRlIG5bXCJhcmlhLXNlbGVjdGVkXCJdLG51bGwhPWUuX3Jlc3VsdElkJiYodC5pZD1lLl9yZXN1bHRJZCksZS50aXRsZSYmKHQudGl0bGU9ZS50aXRsZSksZS5jaGlsZHJlbiYmKG4ucm9sZT1cImdyb3VwXCIsbltcImFyaWEtbGFiZWxcIl09ZS50ZXh0LGRlbGV0ZSBuW1wiYXJpYS1zZWxlY3RlZFwiXSksbil7dmFyIG89bltpXTt0LnNldEF0dHJpYnV0ZShpLG8pfWlmKGUuY2hpbGRyZW4pe3ZhciBzPWgodCksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3Ryb25nXCIpO2EuY2xhc3NOYW1lPVwic2VsZWN0Mi1yZXN1bHRzX19ncm91cFwiO2goYSk7dGhpcy50ZW1wbGF0ZShlLGEpO2Zvcih2YXIgbD1bXSxjPTA7YzxlLmNoaWxkcmVuLmxlbmd0aDtjKyspe3ZhciB1PWUuY2hpbGRyZW5bY10sZD10aGlzLm9wdGlvbih1KTtsLnB1c2goZCl9dmFyIHA9aChcIjx1bD48L3VsPlwiLHtjbGFzczpcInNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMtLW5lc3RlZFwifSk7cC5hcHBlbmQobCkscy5hcHBlbmQoYSkscy5hcHBlbmQocCl9ZWxzZSB0aGlzLnRlbXBsYXRlKGUsdCk7cmV0dXJuIGYuU3RvcmVEYXRhKHQsXCJkYXRhXCIsZSksdH0sci5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUpe3ZhciBsPXRoaXMsbj10LmlkK1wiLXJlc3VsdHNcIjt0aGlzLiRyZXN1bHRzLmF0dHIoXCJpZFwiLG4pLHQub24oXCJyZXN1bHRzOmFsbFwiLGZ1bmN0aW9uKGUpe2wuY2xlYXIoKSxsLmFwcGVuZChlLmRhdGEpLHQuaXNPcGVuKCkmJihsLnNldENsYXNzZXMoKSxsLmhpZ2hsaWdodEZpcnN0SXRlbSgpKX0pLHQub24oXCJyZXN1bHRzOmFwcGVuZFwiLGZ1bmN0aW9uKGUpe2wuYXBwZW5kKGUuZGF0YSksdC5pc09wZW4oKSYmbC5zZXRDbGFzc2VzKCl9KSx0Lm9uKFwicXVlcnlcIixmdW5jdGlvbihlKXtsLmhpZGVNZXNzYWdlcygpLGwuc2hvd0xvYWRpbmcoZSl9KSx0Lm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oKXt0LmlzT3BlbigpJiYobC5zZXRDbGFzc2VzKCksbC5vcHRpb25zLmdldChcInNjcm9sbEFmdGVyU2VsZWN0XCIpJiZsLmhpZ2hsaWdodEZpcnN0SXRlbSgpKX0pLHQub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKCl7dC5pc09wZW4oKSYmKGwuc2V0Q2xhc3NlcygpLGwub3B0aW9ucy5nZXQoXCJzY3JvbGxBZnRlclNlbGVjdFwiKSYmbC5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSx0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7bC4kcmVzdWx0cy5hdHRyKFwiYXJpYS1leHBhbmRlZFwiLFwidHJ1ZVwiKSxsLiRyZXN1bHRzLmF0dHIoXCJhcmlhLWhpZGRlblwiLFwiZmFsc2VcIiksbC5zZXRDbGFzc2VzKCksbC5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCl9KSx0Lm9uKFwiY2xvc2VcIixmdW5jdGlvbigpe2wuJHJlc3VsdHMuYXR0cihcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpLGwuJHJlc3VsdHMuYXR0cihcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLGwuJHJlc3VsdHMucmVtb3ZlQXR0cihcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKX0pLHQub24oXCJyZXN1bHRzOnRvZ2dsZVwiLGZ1bmN0aW9uKCl7dmFyIGU9bC5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTswIT09ZS5sZW5ndGgmJmUudHJpZ2dlcihcIm1vdXNldXBcIil9KSx0Lm9uKFwicmVzdWx0czpzZWxlY3RcIixmdW5jdGlvbigpe3ZhciBlPWwuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7aWYoMCE9PWUubGVuZ3RoKXt2YXIgdD1mLkdldERhdGEoZVswXSxcImRhdGFcIik7XCJ0cnVlXCI9PWUuYXR0cihcImFyaWEtc2VsZWN0ZWRcIik/bC50cmlnZ2VyKFwiY2xvc2VcIix7fSk6bC50cmlnZ2VyKFwic2VsZWN0XCIse2RhdGE6dH0pfX0pLHQub24oXCJyZXN1bHRzOnByZXZpb3VzXCIsZnVuY3Rpb24oKXt2YXIgZT1sLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpLHQ9bC4kcmVzdWx0cy5maW5kKFwiW2FyaWEtc2VsZWN0ZWRdXCIpLG49dC5pbmRleChlKTtpZighKG48PTApKXt2YXIgcj1uLTE7MD09PWUubGVuZ3RoJiYocj0wKTt2YXIgaT10LmVxKHIpO2kudHJpZ2dlcihcIm1vdXNlZW50ZXJcIik7dmFyIG89bC4kcmVzdWx0cy5vZmZzZXQoKS50b3Ascz1pLm9mZnNldCgpLnRvcCxhPWwuJHJlc3VsdHMuc2Nyb2xsVG9wKCkrKHMtbyk7MD09PXI/bC4kcmVzdWx0cy5zY3JvbGxUb3AoMCk6cy1vPDAmJmwuJHJlc3VsdHMuc2Nyb2xsVG9wKGEpfX0pLHQub24oXCJyZXN1bHRzOm5leHRcIixmdW5jdGlvbigpe3ZhciBlPWwuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCksdD1sLiRyZXN1bHRzLmZpbmQoXCJbYXJpYS1zZWxlY3RlZF1cIiksbj10LmluZGV4KGUpKzE7aWYoIShuPj10Lmxlbmd0aCkpe3ZhciByPXQuZXEobik7ci50cmlnZ2VyKFwibW91c2VlbnRlclwiKTt2YXIgaT1sLiRyZXN1bHRzLm9mZnNldCgpLnRvcCtsLiRyZXN1bHRzLm91dGVySGVpZ2h0KCExKSxvPXIub2Zmc2V0KCkudG9wK3Iub3V0ZXJIZWlnaHQoITEpLHM9bC4kcmVzdWx0cy5zY3JvbGxUb3AoKStvLWk7MD09PW4/bC4kcmVzdWx0cy5zY3JvbGxUb3AoMCk6aTxvJiZsLiRyZXN1bHRzLnNjcm9sbFRvcChzKX19KSx0Lm9uKFwicmVzdWx0czpmb2N1c1wiLGZ1bmN0aW9uKGUpe2UuZWxlbWVudC5hZGRDbGFzcyhcInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFwiKX0pLHQub24oXCJyZXN1bHRzOm1lc3NhZ2VcIixmdW5jdGlvbihlKXtsLmRpc3BsYXlNZXNzYWdlKGUpfSksaC5mbi5tb3VzZXdoZWVsJiZ0aGlzLiRyZXN1bHRzLm9uKFwibW91c2V3aGVlbFwiLGZ1bmN0aW9uKGUpe3ZhciB0PWwuJHJlc3VsdHMuc2Nyb2xsVG9wKCksbj1sLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQtdCtlLmRlbHRhWSxyPTA8ZS5kZWx0YVkmJnQtZS5kZWx0YVk8PTAsaT1lLmRlbHRhWTwwJiZuPD1sLiRyZXN1bHRzLmhlaWdodCgpO3I/KGwuJHJlc3VsdHMuc2Nyb2xsVG9wKDApLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKTppJiYobC4kcmVzdWx0cy5zY3JvbGxUb3AobC4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0LWwuJHJlc3VsdHMuaGVpZ2h0KCkpLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX0pLHRoaXMuJHJlc3VsdHMub24oXCJtb3VzZXVwXCIsXCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF1cIixmdW5jdGlvbihlKXt2YXIgdD1oKHRoaXMpLG49Zi5HZXREYXRhKHRoaXMsXCJkYXRhXCIpO1widHJ1ZVwiIT09dC5hdHRyKFwiYXJpYS1zZWxlY3RlZFwiKT9sLnRyaWdnZXIoXCJzZWxlY3RcIix7b3JpZ2luYWxFdmVudDplLGRhdGE6bn0pOmwub3B0aW9ucy5nZXQoXCJtdWx0aXBsZVwiKT9sLnRyaWdnZXIoXCJ1bnNlbGVjdFwiLHtvcmlnaW5hbEV2ZW50OmUsZGF0YTpufSk6bC50cmlnZ2VyKFwiY2xvc2VcIix7fSl9KSx0aGlzLiRyZXN1bHRzLm9uKFwibW91c2VlbnRlclwiLFwiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdXCIsZnVuY3Rpb24oZSl7dmFyIHQ9Zi5HZXREYXRhKHRoaXMsXCJkYXRhXCIpO2wuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCkucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRcIiksbC50cmlnZ2VyKFwicmVzdWx0czpmb2N1c1wiLHtkYXRhOnQsZWxlbWVudDpoKHRoaXMpfSl9KX0sci5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlc3VsdHMuZmluZChcIi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRcIil9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRyZXN1bHRzLnJlbW92ZSgpfSxyLnByb3RvdHlwZS5lbnN1cmVIaWdobGlnaHRWaXNpYmxlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtpZigwIT09ZS5sZW5ndGgpe3ZhciB0PXRoaXMuJHJlc3VsdHMuZmluZChcIlthcmlhLXNlbGVjdGVkXVwiKS5pbmRleChlKSxuPXRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wLHI9ZS5vZmZzZXQoKS50b3AsaT10aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgpKyhyLW4pLG89ci1uO2ktPTIqZS5vdXRlckhlaWdodCghMSksdDw9Mj90aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgwKToobz50aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KCl8fG88MCkmJnRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKGkpfX0sci5wcm90b3R5cGUudGVtcGxhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLm9wdGlvbnMuZ2V0KFwidGVtcGxhdGVSZXN1bHRcIikscj10aGlzLm9wdGlvbnMuZ2V0KFwiZXNjYXBlTWFya3VwXCIpLGk9bihlLHQpO251bGw9PWk/dC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOlwic3RyaW5nXCI9PXR5cGVvZiBpP3QuaW5uZXJIVE1MPXIoaSk6aCh0KS5hcHBlbmQoaSl9LHJ9KSxlLmRlZmluZShcInNlbGVjdDIva2V5c1wiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue0JBQ0tTUEFDRTo4LFRBQjo5LEVOVEVSOjEzLFNISUZUOjE2LENUUkw6MTcsQUxUOjE4LEVTQzoyNyxTUEFDRTozMixQQUdFX1VQOjMzLFBBR0VfRE9XTjozNCxFTkQ6MzUsSE9NRTozNixMRUZUOjM3LFVQOjM4LFJJR0hUOjM5LERPV046NDAsREVMRVRFOjQ2fX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9zZWxlY3Rpb24vYmFzZVwiLFtcImpxdWVyeVwiLFwiLi4vdXRpbHNcIixcIi4uL2tleXNcIl0sZnVuY3Rpb24obixyLGkpe2Z1bmN0aW9uIG8oZSx0KXt0aGlzLiRlbGVtZW50PWUsdGhpcy5vcHRpb25zPXQsby5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1yZXR1cm4gci5FeHRlbmQobyxyLk9ic2VydmFibGUpLG8ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPW4oJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25cIiByb2xlPVwiY29tYm9ib3hcIiAgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj48L3NwYW4+Jyk7cmV0dXJuIHRoaXMuX3RhYmluZGV4PTAsbnVsbCE9ci5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sXCJvbGQtdGFiaW5kZXhcIik/dGhpcy5fdGFiaW5kZXg9ci5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sXCJvbGQtdGFiaW5kZXhcIik6bnVsbCE9dGhpcy4kZWxlbWVudC5hdHRyKFwidGFiaW5kZXhcIikmJih0aGlzLl90YWJpbmRleD10aGlzLiRlbGVtZW50LmF0dHIoXCJ0YWJpbmRleFwiKSksZS5hdHRyKFwidGl0bGVcIix0aGlzLiRlbGVtZW50LmF0dHIoXCJ0aXRsZVwiKSksZS5hdHRyKFwidGFiaW5kZXhcIix0aGlzLl90YWJpbmRleCksZS5hdHRyKFwiYXJpYS1kaXNhYmxlZFwiLFwiZmFsc2VcIiksdGhpcy4kc2VsZWN0aW9uPWV9LG8ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZS5pZCtcIi1yZXN1bHRzXCI7dGhpcy5jb250YWluZXI9ZSx0aGlzLiRzZWxlY3Rpb24ub24oXCJmb2N1c1wiLGZ1bmN0aW9uKGUpe24udHJpZ2dlcihcImZvY3VzXCIsZSl9KSx0aGlzLiRzZWxlY3Rpb24ub24oXCJibHVyXCIsZnVuY3Rpb24oZSl7bi5faGFuZGxlQmx1cihlKX0pLHRoaXMuJHNlbGVjdGlvbi5vbihcImtleWRvd25cIixmdW5jdGlvbihlKXtuLnRyaWdnZXIoXCJrZXlwcmVzc1wiLGUpLGUud2hpY2g9PT1pLlNQQUNFJiZlLnByZXZlbnREZWZhdWx0KCl9KSxlLm9uKFwicmVzdWx0czpmb2N1c1wiLGZ1bmN0aW9uKGUpe24uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsZS5kYXRhLl9yZXN1bHRJZCl9KSxlLm9uKFwic2VsZWN0aW9uOnVwZGF0ZVwiLGZ1bmN0aW9uKGUpe24udXBkYXRlKGUuZGF0YSl9KSxlLm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7bi4kc2VsZWN0aW9uLmF0dHIoXCJhcmlhLWV4cGFuZGVkXCIsXCJ0cnVlXCIpLG4uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1vd25zXCIsciksbi5fYXR0YWNoQ2xvc2VIYW5kbGVyKGUpfSksZS5vbihcImNsb3NlXCIsZnVuY3Rpb24oKXtuLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpLG4uJHNlbGVjdGlvbi5yZW1vdmVBdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpLG4uJHNlbGVjdGlvbi5yZW1vdmVBdHRyKFwiYXJpYS1vd25zXCIpLG4uJHNlbGVjdGlvbi50cmlnZ2VyKFwiZm9jdXNcIiksbi5fZGV0YWNoQ2xvc2VIYW5kbGVyKGUpfSksZS5vbihcImVuYWJsZVwiLGZ1bmN0aW9uKCl7bi4kc2VsZWN0aW9uLmF0dHIoXCJ0YWJpbmRleFwiLG4uX3RhYmluZGV4KSxuLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtZGlzYWJsZWRcIixcImZhbHNlXCIpfSksZS5vbihcImRpc2FibGVcIixmdW5jdGlvbigpe24uJHNlbGVjdGlvbi5hdHRyKFwidGFiaW5kZXhcIixcIi0xXCIpLG4uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1kaXNhYmxlZFwiLFwidHJ1ZVwiKX0pfSxvLnByb3RvdHlwZS5faGFuZGxlQmx1cj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09dC4kc2VsZWN0aW9uWzBdfHxuLmNvbnRhaW5zKHQuJHNlbGVjdGlvblswXSxkb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8dC50cmlnZ2VyKFwiYmx1clwiLGUpfSwxKX0sby5wcm90b3R5cGUuX2F0dGFjaENsb3NlSGFuZGxlcj1mdW5jdGlvbihlKXtuKGRvY3VtZW50LmJvZHkpLm9uKFwibW91c2Vkb3duLnNlbGVjdDIuXCIrZS5pZCxmdW5jdGlvbihlKXt2YXIgdD1uKGUudGFyZ2V0KS5jbG9zZXN0KFwiLnNlbGVjdDJcIik7bihcIi5zZWxlY3QyLnNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpLmVhY2goZnVuY3Rpb24oKXt0aGlzIT10WzBdJiZyLkdldERhdGEodGhpcyxcImVsZW1lbnRcIikuc2VsZWN0MihcImNsb3NlXCIpfSl9KX0sby5wcm90b3R5cGUuX2RldGFjaENsb3NlSGFuZGxlcj1mdW5jdGlvbihlKXtuKGRvY3VtZW50LmJvZHkpLm9mZihcIm1vdXNlZG93bi5zZWxlY3QyLlwiK2UuaWQpfSxvLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihlLHQpe3QuZmluZChcIi5zZWxlY3Rpb25cIikuYXBwZW5kKGUpfSxvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fZGV0YWNoQ2xvc2VIYW5kbGVyKHRoaXMuY29udGFpbmVyKX0sby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIlRoZSBgdXBkYXRlYCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuXCIpfSxvfSksZS5kZWZpbmUoXCJzZWxlY3QyL3NlbGVjdGlvbi9zaW5nbGVcIixbXCJqcXVlcnlcIixcIi4vYmFzZVwiLFwiLi4vdXRpbHNcIixcIi4uL2tleXNcIl0sZnVuY3Rpb24oZSx0LG4scil7ZnVuY3Rpb24gaSgpe2kuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gbi5FeHRlbmQoaSx0KSxpLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1pLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTtyZXR1cm4gZS5hZGRDbGFzcyhcInNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGVcIiksZS5odG1sKCc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19hcnJvd1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48YiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9iPjwvc3Bhbj4nKSxlfSxpLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgcj10LmlkK1wiLWNvbnRhaW5lclwiO3RoaXMuJHNlbGVjdGlvbi5maW5kKFwiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiKS5hdHRyKFwiaWRcIixyKS5hdHRyKFwicm9sZVwiLFwidGV4dGJveFwiKS5hdHRyKFwiYXJpYS1yZWFkb25seVwiLFwidHJ1ZVwiKSx0aGlzLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtbGFiZWxsZWRieVwiLHIpLHRoaXMuJHNlbGVjdGlvbi5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGUpezE9PT1lLndoaWNoJiZuLnRyaWdnZXIoXCJ0b2dnbGVcIix7b3JpZ2luYWxFdmVudDplfSl9KSx0aGlzLiRzZWxlY3Rpb24ub24oXCJmb2N1c1wiLGZ1bmN0aW9uKGUpe30pLHRoaXMuJHNlbGVjdGlvbi5vbihcImJsdXJcIixmdW5jdGlvbihlKXt9KSx0Lm9uKFwiZm9jdXNcIixmdW5jdGlvbihlKXt0LmlzT3BlbigpfHxuLiRzZWxlY3Rpb24udHJpZ2dlcihcImZvY3VzXCIpfSl9LGkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpO2UuZW1wdHkoKSxlLnJlbW92ZUF0dHIoXCJ0aXRsZVwiKX0saS5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMub3B0aW9ucy5nZXQoXCJ0ZW1wbGF0ZVNlbGVjdGlvblwiKTtyZXR1cm4gdGhpcy5vcHRpb25zLmdldChcImVzY2FwZU1hcmt1cFwiKShuKGUsdCkpfSxpLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZShcIjxzcGFuPjwvc3Bhbj5cIil9LGkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtpZigwIT09ZS5sZW5ndGgpe3ZhciB0PWVbMF0sbj10aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikscj10aGlzLmRpc3BsYXkodCxuKTtuLmVtcHR5KCkuYXBwZW5kKHIpO3ZhciBpPXQudGl0bGV8fHQudGV4dDtpP24uYXR0cihcInRpdGxlXCIsaSk6bi5yZW1vdmVBdHRyKFwidGl0bGVcIil9ZWxzZSB0aGlzLmNsZWFyKCl9LGl9KSxlLmRlZmluZShcInNlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlXCIsW1wianF1ZXJ5XCIsXCIuL2Jhc2VcIixcIi4uL3V0aWxzXCJdLGZ1bmN0aW9uKGksZSxsKXtmdW5jdGlvbiBuKGUsdCl7bi5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBsLkV4dGVuZChuLGUpLG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPW4uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO3JldHVybiBlLmFkZENsYXNzKFwic2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlXCIpLGUuaHRtbCgnPHVsIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCI+PC91bD4nKSxlfSxuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztuLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLiRzZWxlY3Rpb24ub24oXCJjbGlja1wiLGZ1bmN0aW9uKGUpe3IudHJpZ2dlcihcInRvZ2dsZVwiLHtvcmlnaW5hbEV2ZW50OmV9KX0pLHRoaXMuJHNlbGVjdGlvbi5vbihcImNsaWNrXCIsXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlXCIsZnVuY3Rpb24oZSl7aWYoIXIub3B0aW9ucy5nZXQoXCJkaXNhYmxlZFwiKSl7dmFyIHQ9aSh0aGlzKS5wYXJlbnQoKSxuPWwuR2V0RGF0YSh0WzBdLFwiZGF0YVwiKTtyLnRyaWdnZXIoXCJ1bnNlbGVjdFwiLHtvcmlnaW5hbEV2ZW50OmUsZGF0YTpufSl9fSl9LG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpO2UuZW1wdHkoKSxlLnJlbW92ZUF0dHIoXCJ0aXRsZVwiKX0sbi5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMub3B0aW9ucy5nZXQoXCJ0ZW1wbGF0ZVNlbGVjdGlvblwiKTtyZXR1cm4gdGhpcy5vcHRpb25zLmdldChcImVzY2FwZU1hcmt1cFwiKShuKGUsdCkpfSxuLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaSgnPGxpIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZVwiPjxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPiZ0aW1lczs8L3NwYW4+PC9saT4nKX0sbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xlYXIoKSwwIT09ZS5sZW5ndGgpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0saT10aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpLG89dGhpcy5kaXNwbGF5KHIsaSk7aS5hcHBlbmQobyk7dmFyIHM9ci50aXRsZXx8ci50ZXh0O3MmJmkuYXR0cihcInRpdGxlXCIscyksbC5TdG9yZURhdGEoaVswXSxcImRhdGFcIixyKSx0LnB1c2goaSl9dmFyIGE9dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpO2wuYXBwZW5kTWFueShhLHQpfX0sbn0pLGUuZGVmaW5lKFwic2VsZWN0Mi9zZWxlY3Rpb24vcGxhY2Vob2xkZXJcIixbXCIuLi91dGlsc1wiXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuKXt0aGlzLnBsYWNlaG9sZGVyPXRoaXMubm9ybWFsaXplUGxhY2Vob2xkZXIobi5nZXQoXCJwbGFjZWhvbGRlclwiKSksZS5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gdC5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9e2lkOlwiXCIsdGV4dDp0fSksdH0sdC5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO3JldHVybiBuLmh0bWwodGhpcy5kaXNwbGF5KHQpKSxuLmFkZENsYXNzKFwic2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyXCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZVwiKSxufSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0xPT10Lmxlbmd0aCYmdFswXS5pZCE9dGhpcy5wbGFjZWhvbGRlci5pZDtpZigxPHQubGVuZ3RofHxuKXJldHVybiBlLmNhbGwodGhpcyx0KTt0aGlzLmNsZWFyKCk7dmFyIHI9dGhpcy5jcmVhdGVQbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKTt0aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikuYXBwZW5kKHIpfSx0fSksZS5kZWZpbmUoXCJzZWxlY3QyL3NlbGVjdGlvbi9hbGxvd0NsZWFyXCIsW1wianF1ZXJ5XCIsXCIuLi9rZXlzXCIsXCIuLi91dGlsc1wiXSxmdW5jdGlvbihpLHIsYSl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztlLmNhbGwodGhpcyx0LG4pLG51bGw9PXRoaXMucGxhY2Vob2xkZXImJnRoaXMub3B0aW9ucy5nZXQoXCJkZWJ1Z1wiKSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoXCJTZWxlY3QyOiBUaGUgYGFsbG93Q2xlYXJgIG9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgcGxhY2Vob2xkZXJgIG9wdGlvbi5cIiksdGhpcy4kc2VsZWN0aW9uLm9uKFwibW91c2Vkb3duXCIsXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIsZnVuY3Rpb24oZSl7ci5faGFuZGxlQ2xlYXIoZSl9KSx0Lm9uKFwia2V5cHJlc3NcIixmdW5jdGlvbihlKXtyLl9oYW5kbGVLZXlib2FyZENsZWFyKGUsdCl9KX0sZS5wcm90b3R5cGUuX2hhbmRsZUNsZWFyPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMub3B0aW9ucy5nZXQoXCJkaXNhYmxlZFwiKSl7dmFyIG49dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIpO2lmKDAhPT1uLmxlbmd0aCl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgcj1hLkdldERhdGEoblswXSxcImRhdGFcIiksaT10aGlzLiRlbGVtZW50LnZhbCgpO3RoaXMuJGVsZW1lbnQudmFsKHRoaXMucGxhY2Vob2xkZXIuaWQpO3ZhciBvPXtkYXRhOnJ9O2lmKHRoaXMudHJpZ2dlcihcImNsZWFyXCIsbyksby5wcmV2ZW50ZWQpdGhpcy4kZWxlbWVudC52YWwoaSk7ZWxzZXtmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKylpZihvPXtkYXRhOnJbc119LHRoaXMudHJpZ2dlcihcInVuc2VsZWN0XCIsbyksby5wcmV2ZW50ZWQpcmV0dXJuIHZvaWQgdGhpcy4kZWxlbWVudC52YWwoaSk7dGhpcy4kZWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpLHRoaXMudHJpZ2dlcihcInRvZ2dsZVwiLHt9KX19fX0sZS5wcm90b3R5cGUuX2hhbmRsZUtleWJvYXJkQ2xlYXI9ZnVuY3Rpb24oZSx0LG4pe24uaXNPcGVuKCl8fHQud2hpY2ghPXIuREVMRVRFJiZ0LndoaWNoIT1yLkJBQ0tTUEFDRXx8dGhpcy5faGFuZGxlQ2xlYXIodCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKGUuY2FsbCh0aGlzLHQpLCEoMDx0aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXJcIikubGVuZ3RofHwwPT09dC5sZW5ndGgpKXt2YXIgbj10aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNsYXRpb25zXCIpLmdldChcInJlbW92ZUFsbEl0ZW1zXCIpLHI9aSgnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXJcIiB0aXRsZT1cIicrbigpKydcIj4mdGltZXM7PC9zcGFuPicpO2EuU3RvcmVEYXRhKHJbMF0sXCJkYXRhXCIsdCksdGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpLnByZXBlbmQocil9fSxlfSksZS5kZWZpbmUoXCJzZWxlY3QyL3NlbGVjdGlvbi9zZWFyY2hcIixbXCJqcXVlcnlcIixcIi4uL3V0aWxzXCIsXCIuLi9rZXlzXCJdLGZ1bmN0aW9uKHIsYSxsKXtmdW5jdGlvbiBlKGUsdCxuKXtlLmNhbGwodGhpcyx0LG4pfXJldHVybiBlLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9cignPGxpIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWlubGluZVwiPjxpbnB1dCBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgLz48L2xpPicpO3RoaXMuJHNlYXJjaENvbnRhaW5lcj10LHRoaXMuJHNlYXJjaD10LmZpbmQoXCJpbnB1dFwiKTt2YXIgbj1lLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMuX3RyYW5zZmVyVGFiSW5kZXgoKSxufSxlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLGk9dC5pZCtcIi1yZXN1bHRzXCI7ZS5jYWxsKHRoaXMsdCxuKSx0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7ci4kc2VhcmNoLmF0dHIoXCJhcmlhLWNvbnRyb2xzXCIsaSksci4kc2VhcmNoLnRyaWdnZXIoXCJmb2N1c1wiKX0pLHQub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7ci4kc2VhcmNoLnZhbChcIlwiKSxyLiRzZWFyY2gucmVtb3ZlQXR0cihcImFyaWEtY29udHJvbHNcIiksci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiksci4kc2VhcmNoLnRyaWdnZXIoXCJmb2N1c1wiKX0pLHQub24oXCJlbmFibGVcIixmdW5jdGlvbigpe3IuJHNlYXJjaC5wcm9wKFwiZGlzYWJsZWRcIiwhMSksci5fdHJhbnNmZXJUYWJJbmRleCgpfSksdC5vbihcImRpc2FibGVcIixmdW5jdGlvbigpe3IuJHNlYXJjaC5wcm9wKFwiZGlzYWJsZWRcIiwhMCl9KSx0Lm9uKFwiZm9jdXNcIixmdW5jdGlvbihlKXtyLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfSksdC5vbihcInJlc3VsdHM6Zm9jdXNcIixmdW5jdGlvbihlKXtlLmRhdGEuX3Jlc3VsdElkP3IuJHNlYXJjaC5hdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsZS5kYXRhLl9yZXN1bHRJZCk6ci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIil9KSx0aGlzLiRzZWxlY3Rpb24ub24oXCJmb2N1c2luXCIsXCIuc2VsZWN0Mi1zZWFyY2gtLWlubGluZVwiLGZ1bmN0aW9uKGUpe3IudHJpZ2dlcihcImZvY3VzXCIsZSl9KSx0aGlzLiRzZWxlY3Rpb24ub24oXCJmb2N1c291dFwiLFwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIixmdW5jdGlvbihlKXtyLl9oYW5kbGVCbHVyKGUpfSksdGhpcy4kc2VsZWN0aW9uLm9uKFwia2V5ZG93blwiLFwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIixmdW5jdGlvbihlKXtpZihlLnN0b3BQcm9wYWdhdGlvbigpLHIudHJpZ2dlcihcImtleXByZXNzXCIsZSksci5fa2V5VXBQcmV2ZW50ZWQ9ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSxlLndoaWNoPT09bC5CQUNLU1BBQ0UmJlwiXCI9PT1yLiRzZWFyY2gudmFsKCkpe3ZhciB0PXIuJHNlYXJjaENvbnRhaW5lci5wcmV2KFwiLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VcIik7aWYoMDx0Lmxlbmd0aCl7dmFyIG49YS5HZXREYXRhKHRbMF0sXCJkYXRhXCIpO3Iuc2VhcmNoUmVtb3ZlQ2hvaWNlKG4pLGUucHJldmVudERlZmF1bHQoKX19fSksdGhpcy4kc2VsZWN0aW9uLm9uKFwiY2xpY2tcIixcIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lXCIsZnVuY3Rpb24oZSl7ci4kc2VhcmNoLnZhbCgpJiZlLnN0b3BQcm9wYWdhdGlvbigpfSk7dmFyIG89ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLHM9byYmbzw9MTE7dGhpcy4kc2VsZWN0aW9uLm9uKFwiaW5wdXQuc2VhcmNoY2hlY2tcIixcIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lXCIsZnVuY3Rpb24oZSl7cz9yLiRzZWxlY3Rpb24ub2ZmKFwiaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrXCIpOnIuJHNlbGVjdGlvbi5vZmYoXCJrZXl1cC5zZWFyY2hcIil9KSx0aGlzLiRzZWxlY3Rpb24ub24oXCJrZXl1cC5zZWFyY2ggaW5wdXQuc2VhcmNoXCIsXCIuc2VsZWN0Mi1zZWFyY2gtLWlubGluZVwiLGZ1bmN0aW9uKGUpe2lmKHMmJlwiaW5wdXRcIj09PWUudHlwZSlyLiRzZWxlY3Rpb24ub2ZmKFwiaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrXCIpO2Vsc2V7dmFyIHQ9ZS53aGljaDt0IT1sLlNISUZUJiZ0IT1sLkNUUkwmJnQhPWwuQUxUJiZ0IT1sLlRBQiYmci5oYW5kbGVTZWFyY2goZSl9fSl9LGUucHJvdG90eXBlLl90cmFuc2ZlclRhYkluZGV4PWZ1bmN0aW9uKGUpe3RoaXMuJHNlYXJjaC5hdHRyKFwidGFiaW5kZXhcIix0aGlzLiRzZWxlY3Rpb24uYXR0cihcInRhYmluZGV4XCIpKSx0aGlzLiRzZWxlY3Rpb24uYXR0cihcInRhYmluZGV4XCIsXCItMVwiKX0sZS5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLiRzZWFyY2guYXR0cihcInBsYWNlaG9sZGVyXCIsdC50ZXh0KX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kc2VhcmNoWzBdPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RoaXMuJHNlYXJjaC5hdHRyKFwicGxhY2Vob2xkZXJcIixcIlwiKSxlLmNhbGwodGhpcyx0KSx0aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikuYXBwZW5kKHRoaXMuJHNlYXJjaENvbnRhaW5lciksdGhpcy5yZXNpemVTZWFyY2goKSxuJiZ0aGlzLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfSxlLnByb3RvdHlwZS5oYW5kbGVTZWFyY2g9ZnVuY3Rpb24oKXtpZih0aGlzLnJlc2l6ZVNlYXJjaCgpLCF0aGlzLl9rZXlVcFByZXZlbnRlZCl7dmFyIGU9dGhpcy4kc2VhcmNoLnZhbCgpO3RoaXMudHJpZ2dlcihcInF1ZXJ5XCIse3Rlcm06ZX0pfXRoaXMuX2tleVVwUHJldmVudGVkPSExfSxlLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2U9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyaWdnZXIoXCJ1bnNlbGVjdFwiLHtkYXRhOnR9KSx0aGlzLiRzZWFyY2gudmFsKHQudGV4dCksdGhpcy5oYW5kbGVTZWFyY2goKX0sZS5wcm90b3R5cGUucmVzaXplU2VhcmNoPWZ1bmN0aW9uKCl7dGhpcy4kc2VhcmNoLmNzcyhcIndpZHRoXCIsXCIyNXB4XCIpO3ZhciBlPVwiXCI7XCJcIiE9PXRoaXMuJHNlYXJjaC5hdHRyKFwicGxhY2Vob2xkZXJcIik/ZT10aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikud2lkdGgoKTplPS43NSoodGhpcy4kc2VhcmNoLnZhbCgpLmxlbmd0aCsxKStcImVtXCI7dGhpcy4kc2VhcmNoLmNzcyhcIndpZHRoXCIsZSl9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvc2VsZWN0aW9uL2V2ZW50UmVsYXlcIixbXCJqcXVlcnlcIl0sZnVuY3Rpb24ocyl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPVtcIm9wZW5cIixcIm9wZW5pbmdcIixcImNsb3NlXCIsXCJjbG9zaW5nXCIsXCJzZWxlY3RcIixcInNlbGVjdGluZ1wiLFwidW5zZWxlY3RcIixcInVuc2VsZWN0aW5nXCIsXCJjbGVhclwiLFwiY2xlYXJpbmdcIl0sbz1bXCJvcGVuaW5nXCIsXCJjbG9zaW5nXCIsXCJzZWxlY3RpbmdcIixcInVuc2VsZWN0aW5nXCIsXCJjbGVhcmluZ1wiXTtlLmNhbGwodGhpcyx0LG4pLHQub24oXCIqXCIsZnVuY3Rpb24oZSx0KXtpZigtMSE9PXMuaW5BcnJheShlLGkpKXt0PXR8fHt9O3ZhciBuPXMuRXZlbnQoXCJzZWxlY3QyOlwiK2Use3BhcmFtczp0fSk7ci4kZWxlbWVudC50cmlnZ2VyKG4pLC0xIT09cy5pbkFycmF5KGUsbykmJih0LnByZXZlbnRlZD1uLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19KX0sZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi90cmFuc2xhdGlvblwiLFtcImpxdWVyeVwiLFwicmVxdWlyZVwiXSxmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIHIoZSl7dGhpcy5kaWN0PWV8fHt9fXJldHVybiByLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaWN0fSxyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGljdFtlXX0sci5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKGUpe3RoaXMuZGljdD10LmV4dGVuZCh7fSxlLmFsbCgpLHRoaXMuZGljdCl9LHIuX2NhY2hlPXt9LHIubG9hZFBhdGg9ZnVuY3Rpb24oZSl7aWYoIShlIGluIHIuX2NhY2hlKSl7dmFyIHQ9bihlKTtyLl9jYWNoZVtlXT10fXJldHVybiBuZXcgcihyLl9jYWNoZVtlXSl9LHJ9KSxlLmRlZmluZShcInNlbGVjdDIvZGlhY3JpdGljc1wiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue1wi4pK2XCI6XCJBXCIsXCLvvKFcIjpcIkFcIixcIsOAXCI6XCJBXCIsXCLDgVwiOlwiQVwiLFwiw4JcIjpcIkFcIixcIuG6plwiOlwiQVwiLFwi4bqkXCI6XCJBXCIsXCLhuqpcIjpcIkFcIixcIuG6qFwiOlwiQVwiLFwiw4NcIjpcIkFcIixcIsSAXCI6XCJBXCIsXCLEglwiOlwiQVwiLFwi4bqwXCI6XCJBXCIsXCLhuq5cIjpcIkFcIixcIuG6tFwiOlwiQVwiLFwi4bqyXCI6XCJBXCIsXCLIplwiOlwiQVwiLFwix6BcIjpcIkFcIixcIsOEXCI6XCJBXCIsXCLHnlwiOlwiQVwiLFwi4bqiXCI6XCJBXCIsXCLDhVwiOlwiQVwiLFwix7pcIjpcIkFcIixcIseNXCI6XCJBXCIsXCLIgFwiOlwiQVwiLFwiyIJcIjpcIkFcIixcIuG6oFwiOlwiQVwiLFwi4bqsXCI6XCJBXCIsXCLhurZcIjpcIkFcIixcIuG4gFwiOlwiQVwiLFwixIRcIjpcIkFcIixcIsi6XCI6XCJBXCIsXCLisa9cIjpcIkFcIixcIuqcslwiOlwiQUFcIixcIsOGXCI6XCJBRVwiLFwix7xcIjpcIkFFXCIsXCLHolwiOlwiQUVcIixcIuqctFwiOlwiQU9cIixcIuqctlwiOlwiQVVcIixcIuqcuFwiOlwiQVZcIixcIuqculwiOlwiQVZcIixcIuqcvFwiOlwiQVlcIixcIuKSt1wiOlwiQlwiLFwi77yiXCI6XCJCXCIsXCLhuIJcIjpcIkJcIixcIuG4hFwiOlwiQlwiLFwi4biGXCI6XCJCXCIsXCLJg1wiOlwiQlwiLFwixoJcIjpcIkJcIixcIsaBXCI6XCJCXCIsXCLikrhcIjpcIkNcIixcIu+8o1wiOlwiQ1wiLFwixIZcIjpcIkNcIixcIsSIXCI6XCJDXCIsXCLEilwiOlwiQ1wiLFwixIxcIjpcIkNcIixcIsOHXCI6XCJDXCIsXCLhuIhcIjpcIkNcIixcIsaHXCI6XCJDXCIsXCLIu1wiOlwiQ1wiLFwi6py+XCI6XCJDXCIsXCLikrlcIjpcIkRcIixcIu+8pFwiOlwiRFwiLFwi4biKXCI6XCJEXCIsXCLEjlwiOlwiRFwiLFwi4biMXCI6XCJEXCIsXCLhuJBcIjpcIkRcIixcIuG4klwiOlwiRFwiLFwi4biOXCI6XCJEXCIsXCLEkFwiOlwiRFwiLFwixotcIjpcIkRcIixcIsaKXCI6XCJEXCIsXCLGiVwiOlwiRFwiLFwi6p25XCI6XCJEXCIsXCLHsVwiOlwiRFpcIixcIseEXCI6XCJEWlwiLFwix7JcIjpcIkR6XCIsXCLHhVwiOlwiRHpcIixcIuKSulwiOlwiRVwiLFwi77ylXCI6XCJFXCIsXCLDiFwiOlwiRVwiLFwiw4lcIjpcIkVcIixcIsOKXCI6XCJFXCIsXCLhu4BcIjpcIkVcIixcIuG6vlwiOlwiRVwiLFwi4buEXCI6XCJFXCIsXCLhu4JcIjpcIkVcIixcIuG6vFwiOlwiRVwiLFwixJJcIjpcIkVcIixcIuG4lFwiOlwiRVwiLFwi4biWXCI6XCJFXCIsXCLElFwiOlwiRVwiLFwixJZcIjpcIkVcIixcIsOLXCI6XCJFXCIsXCLhurpcIjpcIkVcIixcIsSaXCI6XCJFXCIsXCLIhFwiOlwiRVwiLFwiyIZcIjpcIkVcIixcIuG6uFwiOlwiRVwiLFwi4buGXCI6XCJFXCIsXCLIqFwiOlwiRVwiLFwi4bicXCI6XCJFXCIsXCLEmFwiOlwiRVwiLFwi4biYXCI6XCJFXCIsXCLhuJpcIjpcIkVcIixcIsaQXCI6XCJFXCIsXCLGjlwiOlwiRVwiLFwi4pK7XCI6XCJGXCIsXCLvvKZcIjpcIkZcIixcIuG4nlwiOlwiRlwiLFwixpFcIjpcIkZcIixcIuqdu1wiOlwiRlwiLFwi4pK8XCI6XCJHXCIsXCLvvKdcIjpcIkdcIixcIse0XCI6XCJHXCIsXCLEnFwiOlwiR1wiLFwi4bigXCI6XCJHXCIsXCLEnlwiOlwiR1wiLFwixKBcIjpcIkdcIixcIsemXCI6XCJHXCIsXCLEolwiOlwiR1wiLFwix6RcIjpcIkdcIixcIsaTXCI6XCJHXCIsXCLqnqBcIjpcIkdcIixcIuqdvVwiOlwiR1wiLFwi6p2+XCI6XCJHXCIsXCLikr1cIjpcIkhcIixcIu+8qFwiOlwiSFwiLFwixKRcIjpcIkhcIixcIuG4olwiOlwiSFwiLFwi4bimXCI6XCJIXCIsXCLInlwiOlwiSFwiLFwi4bikXCI6XCJIXCIsXCLhuKhcIjpcIkhcIixcIuG4qlwiOlwiSFwiLFwixKZcIjpcIkhcIixcIuKxp1wiOlwiSFwiLFwi4rG1XCI6XCJIXCIsXCLqno1cIjpcIkhcIixcIuKSvlwiOlwiSVwiLFwi77ypXCI6XCJJXCIsXCLDjFwiOlwiSVwiLFwiw41cIjpcIklcIixcIsOOXCI6XCJJXCIsXCLEqFwiOlwiSVwiLFwixKpcIjpcIklcIixcIsSsXCI6XCJJXCIsXCLEsFwiOlwiSVwiLFwiw49cIjpcIklcIixcIuG4rlwiOlwiSVwiLFwi4buIXCI6XCJJXCIsXCLHj1wiOlwiSVwiLFwiyIhcIjpcIklcIixcIsiKXCI6XCJJXCIsXCLhu4pcIjpcIklcIixcIsSuXCI6XCJJXCIsXCLhuKxcIjpcIklcIixcIsaXXCI6XCJJXCIsXCLikr9cIjpcIkpcIixcIu+8qlwiOlwiSlwiLFwixLRcIjpcIkpcIixcIsmIXCI6XCJKXCIsXCLik4BcIjpcIktcIixcIu+8q1wiOlwiS1wiLFwi4biwXCI6XCJLXCIsXCLHqFwiOlwiS1wiLFwi4biyXCI6XCJLXCIsXCLEtlwiOlwiS1wiLFwi4bi0XCI6XCJLXCIsXCLGmFwiOlwiS1wiLFwi4rGpXCI6XCJLXCIsXCLqnYBcIjpcIktcIixcIuqdglwiOlwiS1wiLFwi6p2EXCI6XCJLXCIsXCLqnqJcIjpcIktcIixcIuKTgVwiOlwiTFwiLFwi77ysXCI6XCJMXCIsXCLEv1wiOlwiTFwiLFwixLlcIjpcIkxcIixcIsS9XCI6XCJMXCIsXCLhuLZcIjpcIkxcIixcIuG4uFwiOlwiTFwiLFwixLtcIjpcIkxcIixcIuG4vFwiOlwiTFwiLFwi4bi6XCI6XCJMXCIsXCLFgVwiOlwiTFwiLFwiyL1cIjpcIkxcIixcIuKxolwiOlwiTFwiLFwi4rGgXCI6XCJMXCIsXCLqnYhcIjpcIkxcIixcIuqdhlwiOlwiTFwiLFwi6p6AXCI6XCJMXCIsXCLHh1wiOlwiTEpcIixcIseIXCI6XCJMalwiLFwi4pOCXCI6XCJNXCIsXCLvvK1cIjpcIk1cIixcIuG4vlwiOlwiTVwiLFwi4bmAXCI6XCJNXCIsXCLhuYJcIjpcIk1cIixcIuKxrlwiOlwiTVwiLFwixpxcIjpcIk1cIixcIuKTg1wiOlwiTlwiLFwi77yuXCI6XCJOXCIsXCLHuFwiOlwiTlwiLFwixYNcIjpcIk5cIixcIsORXCI6XCJOXCIsXCLhuYRcIjpcIk5cIixcIsWHXCI6XCJOXCIsXCLhuYZcIjpcIk5cIixcIsWFXCI6XCJOXCIsXCLhuYpcIjpcIk5cIixcIuG5iFwiOlwiTlwiLFwiyKBcIjpcIk5cIixcIsadXCI6XCJOXCIsXCLqnpBcIjpcIk5cIixcIuqepFwiOlwiTlwiLFwix4pcIjpcIk5KXCIsXCLHi1wiOlwiTmpcIixcIuKThFwiOlwiT1wiLFwi77yvXCI6XCJPXCIsXCLDklwiOlwiT1wiLFwiw5NcIjpcIk9cIixcIsOUXCI6XCJPXCIsXCLhu5JcIjpcIk9cIixcIuG7kFwiOlwiT1wiLFwi4buWXCI6XCJPXCIsXCLhu5RcIjpcIk9cIixcIsOVXCI6XCJPXCIsXCLhuYxcIjpcIk9cIixcIsisXCI6XCJPXCIsXCLhuY5cIjpcIk9cIixcIsWMXCI6XCJPXCIsXCLhuZBcIjpcIk9cIixcIuG5klwiOlwiT1wiLFwixY5cIjpcIk9cIixcIsiuXCI6XCJPXCIsXCLIsFwiOlwiT1wiLFwiw5ZcIjpcIk9cIixcIsiqXCI6XCJPXCIsXCLhu45cIjpcIk9cIixcIsWQXCI6XCJPXCIsXCLHkVwiOlwiT1wiLFwiyIxcIjpcIk9cIixcIsiOXCI6XCJPXCIsXCLGoFwiOlwiT1wiLFwi4bucXCI6XCJPXCIsXCLhu5pcIjpcIk9cIixcIuG7oFwiOlwiT1wiLFwi4bueXCI6XCJPXCIsXCLhu6JcIjpcIk9cIixcIuG7jFwiOlwiT1wiLFwi4buYXCI6XCJPXCIsXCLHqlwiOlwiT1wiLFwix6xcIjpcIk9cIixcIsOYXCI6XCJPXCIsXCLHvlwiOlwiT1wiLFwixoZcIjpcIk9cIixcIsafXCI6XCJPXCIsXCLqnYpcIjpcIk9cIixcIuqdjFwiOlwiT1wiLFwixZJcIjpcIk9FXCIsXCLGolwiOlwiT0lcIixcIuqdjlwiOlwiT09cIixcIsiiXCI6XCJPVVwiLFwi4pOFXCI6XCJQXCIsXCLvvLBcIjpcIlBcIixcIuG5lFwiOlwiUFwiLFwi4bmWXCI6XCJQXCIsXCLGpFwiOlwiUFwiLFwi4rGjXCI6XCJQXCIsXCLqnZBcIjpcIlBcIixcIuqdklwiOlwiUFwiLFwi6p2UXCI6XCJQXCIsXCLik4ZcIjpcIlFcIixcIu+8sVwiOlwiUVwiLFwi6p2WXCI6XCJRXCIsXCLqnZhcIjpcIlFcIixcIsmKXCI6XCJRXCIsXCLik4dcIjpcIlJcIixcIu+8slwiOlwiUlwiLFwixZRcIjpcIlJcIixcIuG5mFwiOlwiUlwiLFwixZhcIjpcIlJcIixcIsiQXCI6XCJSXCIsXCLIklwiOlwiUlwiLFwi4bmaXCI6XCJSXCIsXCLhuZxcIjpcIlJcIixcIsWWXCI6XCJSXCIsXCLhuZ5cIjpcIlJcIixcIsmMXCI6XCJSXCIsXCLisaRcIjpcIlJcIixcIuqdmlwiOlwiUlwiLFwi6p6mXCI6XCJSXCIsXCLqnoJcIjpcIlJcIixcIuKTiFwiOlwiU1wiLFwi77yzXCI6XCJTXCIsXCLhup5cIjpcIlNcIixcIsWaXCI6XCJTXCIsXCLhuaRcIjpcIlNcIixcIsWcXCI6XCJTXCIsXCLhuaBcIjpcIlNcIixcIsWgXCI6XCJTXCIsXCLhuaZcIjpcIlNcIixcIuG5olwiOlwiU1wiLFwi4bmoXCI6XCJTXCIsXCLImFwiOlwiU1wiLFwixZ5cIjpcIlNcIixcIuKxvlwiOlwiU1wiLFwi6p6oXCI6XCJTXCIsXCLqnoRcIjpcIlNcIixcIuKTiVwiOlwiVFwiLFwi77y0XCI6XCJUXCIsXCLhuapcIjpcIlRcIixcIsWkXCI6XCJUXCIsXCLhuaxcIjpcIlRcIixcIsiaXCI6XCJUXCIsXCLFolwiOlwiVFwiLFwi4bmwXCI6XCJUXCIsXCLhua5cIjpcIlRcIixcIsWmXCI6XCJUXCIsXCLGrFwiOlwiVFwiLFwixq5cIjpcIlRcIixcIsi+XCI6XCJUXCIsXCLqnoZcIjpcIlRcIixcIuqcqFwiOlwiVFpcIixcIuKTilwiOlwiVVwiLFwi77y1XCI6XCJVXCIsXCLDmVwiOlwiVVwiLFwiw5pcIjpcIlVcIixcIsObXCI6XCJVXCIsXCLFqFwiOlwiVVwiLFwi4bm4XCI6XCJVXCIsXCLFqlwiOlwiVVwiLFwi4bm6XCI6XCJVXCIsXCLFrFwiOlwiVVwiLFwiw5xcIjpcIlVcIixcIsebXCI6XCJVXCIsXCLHl1wiOlwiVVwiLFwix5VcIjpcIlVcIixcIseZXCI6XCJVXCIsXCLhu6ZcIjpcIlVcIixcIsWuXCI6XCJVXCIsXCLFsFwiOlwiVVwiLFwix5NcIjpcIlVcIixcIsiUXCI6XCJVXCIsXCLIllwiOlwiVVwiLFwixq9cIjpcIlVcIixcIuG7qlwiOlwiVVwiLFwi4buoXCI6XCJVXCIsXCLhu65cIjpcIlVcIixcIuG7rFwiOlwiVVwiLFwi4buwXCI6XCJVXCIsXCLhu6RcIjpcIlVcIixcIuG5slwiOlwiVVwiLFwixbJcIjpcIlVcIixcIuG5tlwiOlwiVVwiLFwi4bm0XCI6XCJVXCIsXCLJhFwiOlwiVVwiLFwi4pOLXCI6XCJWXCIsXCLvvLZcIjpcIlZcIixcIuG5vFwiOlwiVlwiLFwi4bm+XCI6XCJWXCIsXCLGslwiOlwiVlwiLFwi6p2eXCI6XCJWXCIsXCLJhVwiOlwiVlwiLFwi6p2gXCI6XCJWWVwiLFwi4pOMXCI6XCJXXCIsXCLvvLdcIjpcIldcIixcIuG6gFwiOlwiV1wiLFwi4bqCXCI6XCJXXCIsXCLFtFwiOlwiV1wiLFwi4bqGXCI6XCJXXCIsXCLhuoRcIjpcIldcIixcIuG6iFwiOlwiV1wiLFwi4rGyXCI6XCJXXCIsXCLik41cIjpcIlhcIixcIu+8uFwiOlwiWFwiLFwi4bqKXCI6XCJYXCIsXCLhuoxcIjpcIlhcIixcIuKTjlwiOlwiWVwiLFwi77y5XCI6XCJZXCIsXCLhu7JcIjpcIllcIixcIsOdXCI6XCJZXCIsXCLFtlwiOlwiWVwiLFwi4bu4XCI6XCJZXCIsXCLIslwiOlwiWVwiLFwi4bqOXCI6XCJZXCIsXCLFuFwiOlwiWVwiLFwi4bu2XCI6XCJZXCIsXCLhu7RcIjpcIllcIixcIsazXCI6XCJZXCIsXCLJjlwiOlwiWVwiLFwi4bu+XCI6XCJZXCIsXCLik49cIjpcIlpcIixcIu+8ulwiOlwiWlwiLFwixblcIjpcIlpcIixcIuG6kFwiOlwiWlwiLFwixbtcIjpcIlpcIixcIsW9XCI6XCJaXCIsXCLhupJcIjpcIlpcIixcIuG6lFwiOlwiWlwiLFwixrVcIjpcIlpcIixcIsikXCI6XCJaXCIsXCLisb9cIjpcIlpcIixcIuKxq1wiOlwiWlwiLFwi6p2iXCI6XCJaXCIsXCLik5BcIjpcImFcIixcIu+9gVwiOlwiYVwiLFwi4bqaXCI6XCJhXCIsXCLDoFwiOlwiYVwiLFwiw6FcIjpcImFcIixcIsOiXCI6XCJhXCIsXCLhuqdcIjpcImFcIixcIuG6pVwiOlwiYVwiLFwi4bqrXCI6XCJhXCIsXCLhuqlcIjpcImFcIixcIsOjXCI6XCJhXCIsXCLEgVwiOlwiYVwiLFwixINcIjpcImFcIixcIuG6sVwiOlwiYVwiLFwi4bqvXCI6XCJhXCIsXCLhurVcIjpcImFcIixcIuG6s1wiOlwiYVwiLFwiyKdcIjpcImFcIixcIsehXCI6XCJhXCIsXCLDpFwiOlwiYVwiLFwix59cIjpcImFcIixcIuG6o1wiOlwiYVwiLFwiw6VcIjpcImFcIixcIse7XCI6XCJhXCIsXCLHjlwiOlwiYVwiLFwiyIFcIjpcImFcIixcIsiDXCI6XCJhXCIsXCLhuqFcIjpcImFcIixcIuG6rVwiOlwiYVwiLFwi4bq3XCI6XCJhXCIsXCLhuIFcIjpcImFcIixcIsSFXCI6XCJhXCIsXCLisaVcIjpcImFcIixcIsmQXCI6XCJhXCIsXCLqnLNcIjpcImFhXCIsXCLDplwiOlwiYWVcIixcIse9XCI6XCJhZVwiLFwix6NcIjpcImFlXCIsXCLqnLVcIjpcImFvXCIsXCLqnLdcIjpcImF1XCIsXCLqnLlcIjpcImF2XCIsXCLqnLtcIjpcImF2XCIsXCLqnL1cIjpcImF5XCIsXCLik5FcIjpcImJcIixcIu+9glwiOlwiYlwiLFwi4biDXCI6XCJiXCIsXCLhuIVcIjpcImJcIixcIuG4h1wiOlwiYlwiLFwixoBcIjpcImJcIixcIsaDXCI6XCJiXCIsXCLJk1wiOlwiYlwiLFwi4pOSXCI6XCJjXCIsXCLvvYNcIjpcImNcIixcIsSHXCI6XCJjXCIsXCLEiVwiOlwiY1wiLFwixItcIjpcImNcIixcIsSNXCI6XCJjXCIsXCLDp1wiOlwiY1wiLFwi4biJXCI6XCJjXCIsXCLGiFwiOlwiY1wiLFwiyLxcIjpcImNcIixcIuqcv1wiOlwiY1wiLFwi4oaEXCI6XCJjXCIsXCLik5NcIjpcImRcIixcIu+9hFwiOlwiZFwiLFwi4biLXCI6XCJkXCIsXCLEj1wiOlwiZFwiLFwi4biNXCI6XCJkXCIsXCLhuJFcIjpcImRcIixcIuG4k1wiOlwiZFwiLFwi4biPXCI6XCJkXCIsXCLEkVwiOlwiZFwiLFwixoxcIjpcImRcIixcIsmWXCI6XCJkXCIsXCLJl1wiOlwiZFwiLFwi6p26XCI6XCJkXCIsXCLHs1wiOlwiZHpcIixcIseGXCI6XCJkelwiLFwi4pOUXCI6XCJlXCIsXCLvvYVcIjpcImVcIixcIsOoXCI6XCJlXCIsXCLDqVwiOlwiZVwiLFwiw6pcIjpcImVcIixcIuG7gVwiOlwiZVwiLFwi4bq/XCI6XCJlXCIsXCLhu4VcIjpcImVcIixcIuG7g1wiOlwiZVwiLFwi4bq9XCI6XCJlXCIsXCLEk1wiOlwiZVwiLFwi4biVXCI6XCJlXCIsXCLhuJdcIjpcImVcIixcIsSVXCI6XCJlXCIsXCLEl1wiOlwiZVwiLFwiw6tcIjpcImVcIixcIuG6u1wiOlwiZVwiLFwixJtcIjpcImVcIixcIsiFXCI6XCJlXCIsXCLIh1wiOlwiZVwiLFwi4bq5XCI6XCJlXCIsXCLhu4dcIjpcImVcIixcIsipXCI6XCJlXCIsXCLhuJ1cIjpcImVcIixcIsSZXCI6XCJlXCIsXCLhuJlcIjpcImVcIixcIuG4m1wiOlwiZVwiLFwiyYdcIjpcImVcIixcIsmbXCI6XCJlXCIsXCLHnVwiOlwiZVwiLFwi4pOVXCI6XCJmXCIsXCLvvYZcIjpcImZcIixcIuG4n1wiOlwiZlwiLFwixpJcIjpcImZcIixcIuqdvFwiOlwiZlwiLFwi4pOWXCI6XCJnXCIsXCLvvYdcIjpcImdcIixcIse1XCI6XCJnXCIsXCLEnVwiOlwiZ1wiLFwi4bihXCI6XCJnXCIsXCLEn1wiOlwiZ1wiLFwixKFcIjpcImdcIixcIsenXCI6XCJnXCIsXCLEo1wiOlwiZ1wiLFwix6VcIjpcImdcIixcIsmgXCI6XCJnXCIsXCLqnqFcIjpcImdcIixcIuG1uVwiOlwiZ1wiLFwi6p2/XCI6XCJnXCIsXCLik5dcIjpcImhcIixcIu+9iFwiOlwiaFwiLFwixKVcIjpcImhcIixcIuG4o1wiOlwiaFwiLFwi4binXCI6XCJoXCIsXCLIn1wiOlwiaFwiLFwi4bilXCI6XCJoXCIsXCLhuKlcIjpcImhcIixcIuG4q1wiOlwiaFwiLFwi4bqWXCI6XCJoXCIsXCLEp1wiOlwiaFwiLFwi4rGoXCI6XCJoXCIsXCLisbZcIjpcImhcIixcIsmlXCI6XCJoXCIsXCLGlVwiOlwiaHZcIixcIuKTmFwiOlwiaVwiLFwi772JXCI6XCJpXCIsXCLDrFwiOlwiaVwiLFwiw61cIjpcImlcIixcIsOuXCI6XCJpXCIsXCLEqVwiOlwiaVwiLFwixKtcIjpcImlcIixcIsStXCI6XCJpXCIsXCLDr1wiOlwiaVwiLFwi4bivXCI6XCJpXCIsXCLhu4lcIjpcImlcIixcIseQXCI6XCJpXCIsXCLIiVwiOlwiaVwiLFwiyItcIjpcImlcIixcIuG7i1wiOlwiaVwiLFwixK9cIjpcImlcIixcIuG4rVwiOlwiaVwiLFwiyahcIjpcImlcIixcIsSxXCI6XCJpXCIsXCLik5lcIjpcImpcIixcIu+9ilwiOlwialwiLFwixLVcIjpcImpcIixcIsewXCI6XCJqXCIsXCLJiVwiOlwialwiLFwi4pOaXCI6XCJrXCIsXCLvvYtcIjpcImtcIixcIuG4sVwiOlwia1wiLFwix6lcIjpcImtcIixcIuG4s1wiOlwia1wiLFwixLdcIjpcImtcIixcIuG4tVwiOlwia1wiLFwixplcIjpcImtcIixcIuKxqlwiOlwia1wiLFwi6p2BXCI6XCJrXCIsXCLqnYNcIjpcImtcIixcIuqdhVwiOlwia1wiLFwi6p6jXCI6XCJrXCIsXCLik5tcIjpcImxcIixcIu+9jFwiOlwibFwiLFwixYBcIjpcImxcIixcIsS6XCI6XCJsXCIsXCLEvlwiOlwibFwiLFwi4bi3XCI6XCJsXCIsXCLhuLlcIjpcImxcIixcIsS8XCI6XCJsXCIsXCLhuL1cIjpcImxcIixcIuG4u1wiOlwibFwiLFwixb9cIjpcImxcIixcIsWCXCI6XCJsXCIsXCLGmlwiOlwibFwiLFwiyatcIjpcImxcIixcIuKxoVwiOlwibFwiLFwi6p2JXCI6XCJsXCIsXCLqnoFcIjpcImxcIixcIuqdh1wiOlwibFwiLFwix4lcIjpcImxqXCIsXCLik5xcIjpcIm1cIixcIu+9jVwiOlwibVwiLFwi4bi/XCI6XCJtXCIsXCLhuYFcIjpcIm1cIixcIuG5g1wiOlwibVwiLFwiybFcIjpcIm1cIixcIsmvXCI6XCJtXCIsXCLik51cIjpcIm5cIixcIu+9jlwiOlwiblwiLFwix7lcIjpcIm5cIixcIsWEXCI6XCJuXCIsXCLDsVwiOlwiblwiLFwi4bmFXCI6XCJuXCIsXCLFiFwiOlwiblwiLFwi4bmHXCI6XCJuXCIsXCLFhlwiOlwiblwiLFwi4bmLXCI6XCJuXCIsXCLhuYlcIjpcIm5cIixcIsaeXCI6XCJuXCIsXCLJslwiOlwiblwiLFwixYlcIjpcIm5cIixcIuqekVwiOlwiblwiLFwi6p6lXCI6XCJuXCIsXCLHjFwiOlwibmpcIixcIuKTnlwiOlwib1wiLFwi772PXCI6XCJvXCIsXCLDslwiOlwib1wiLFwiw7NcIjpcIm9cIixcIsO0XCI6XCJvXCIsXCLhu5NcIjpcIm9cIixcIuG7kVwiOlwib1wiLFwi4buXXCI6XCJvXCIsXCLhu5VcIjpcIm9cIixcIsO1XCI6XCJvXCIsXCLhuY1cIjpcIm9cIixcIsitXCI6XCJvXCIsXCLhuY9cIjpcIm9cIixcIsWNXCI6XCJvXCIsXCLhuZFcIjpcIm9cIixcIuG5k1wiOlwib1wiLFwixY9cIjpcIm9cIixcIsivXCI6XCJvXCIsXCLIsVwiOlwib1wiLFwiw7ZcIjpcIm9cIixcIsirXCI6XCJvXCIsXCLhu49cIjpcIm9cIixcIsWRXCI6XCJvXCIsXCLHklwiOlwib1wiLFwiyI1cIjpcIm9cIixcIsiPXCI6XCJvXCIsXCLGoVwiOlwib1wiLFwi4budXCI6XCJvXCIsXCLhu5tcIjpcIm9cIixcIuG7oVwiOlwib1wiLFwi4bufXCI6XCJvXCIsXCLhu6NcIjpcIm9cIixcIuG7jVwiOlwib1wiLFwi4buZXCI6XCJvXCIsXCLHq1wiOlwib1wiLFwix61cIjpcIm9cIixcIsO4XCI6XCJvXCIsXCLHv1wiOlwib1wiLFwiyZRcIjpcIm9cIixcIuqdi1wiOlwib1wiLFwi6p2NXCI6XCJvXCIsXCLJtVwiOlwib1wiLFwixZNcIjpcIm9lXCIsXCLGo1wiOlwib2lcIixcIsijXCI6XCJvdVwiLFwi6p2PXCI6XCJvb1wiLFwi4pOfXCI6XCJwXCIsXCLvvZBcIjpcInBcIixcIuG5lVwiOlwicFwiLFwi4bmXXCI6XCJwXCIsXCLGpVwiOlwicFwiLFwi4bW9XCI6XCJwXCIsXCLqnZFcIjpcInBcIixcIuqdk1wiOlwicFwiLFwi6p2VXCI6XCJwXCIsXCLik6BcIjpcInFcIixcIu+9kVwiOlwicVwiLFwiyYtcIjpcInFcIixcIuqdl1wiOlwicVwiLFwi6p2ZXCI6XCJxXCIsXCLik6FcIjpcInJcIixcIu+9klwiOlwiclwiLFwixZVcIjpcInJcIixcIuG5mVwiOlwiclwiLFwixZlcIjpcInJcIixcIsiRXCI6XCJyXCIsXCLIk1wiOlwiclwiLFwi4bmbXCI6XCJyXCIsXCLhuZ1cIjpcInJcIixcIsWXXCI6XCJyXCIsXCLhuZ9cIjpcInJcIixcIsmNXCI6XCJyXCIsXCLJvVwiOlwiclwiLFwi6p2bXCI6XCJyXCIsXCLqnqdcIjpcInJcIixcIuqeg1wiOlwiclwiLFwi4pOiXCI6XCJzXCIsXCLvvZNcIjpcInNcIixcIsOfXCI6XCJzXCIsXCLFm1wiOlwic1wiLFwi4bmlXCI6XCJzXCIsXCLFnVwiOlwic1wiLFwi4bmhXCI6XCJzXCIsXCLFoVwiOlwic1wiLFwi4bmnXCI6XCJzXCIsXCLhuaNcIjpcInNcIixcIuG5qVwiOlwic1wiLFwiyJlcIjpcInNcIixcIsWfXCI6XCJzXCIsXCLIv1wiOlwic1wiLFwi6p6pXCI6XCJzXCIsXCLqnoVcIjpcInNcIixcIuG6m1wiOlwic1wiLFwi4pOjXCI6XCJ0XCIsXCLvvZRcIjpcInRcIixcIuG5q1wiOlwidFwiLFwi4bqXXCI6XCJ0XCIsXCLFpVwiOlwidFwiLFwi4bmtXCI6XCJ0XCIsXCLIm1wiOlwidFwiLFwixaNcIjpcInRcIixcIuG5sVwiOlwidFwiLFwi4bmvXCI6XCJ0XCIsXCLFp1wiOlwidFwiLFwixq1cIjpcInRcIixcIsqIXCI6XCJ0XCIsXCLisaZcIjpcInRcIixcIuqeh1wiOlwidFwiLFwi6pypXCI6XCJ0elwiLFwi4pOkXCI6XCJ1XCIsXCLvvZVcIjpcInVcIixcIsO5XCI6XCJ1XCIsXCLDulwiOlwidVwiLFwiw7tcIjpcInVcIixcIsWpXCI6XCJ1XCIsXCLhublcIjpcInVcIixcIsWrXCI6XCJ1XCIsXCLhubtcIjpcInVcIixcIsWtXCI6XCJ1XCIsXCLDvFwiOlwidVwiLFwix5xcIjpcInVcIixcIseYXCI6XCJ1XCIsXCLHllwiOlwidVwiLFwix5pcIjpcInVcIixcIuG7p1wiOlwidVwiLFwixa9cIjpcInVcIixcIsWxXCI6XCJ1XCIsXCLHlFwiOlwidVwiLFwiyJVcIjpcInVcIixcIsiXXCI6XCJ1XCIsXCLGsFwiOlwidVwiLFwi4burXCI6XCJ1XCIsXCLhu6lcIjpcInVcIixcIuG7r1wiOlwidVwiLFwi4butXCI6XCJ1XCIsXCLhu7FcIjpcInVcIixcIuG7pVwiOlwidVwiLFwi4bmzXCI6XCJ1XCIsXCLFs1wiOlwidVwiLFwi4bm3XCI6XCJ1XCIsXCLhubVcIjpcInVcIixcIsqJXCI6XCJ1XCIsXCLik6VcIjpcInZcIixcIu+9llwiOlwidlwiLFwi4bm9XCI6XCJ2XCIsXCLhub9cIjpcInZcIixcIsqLXCI6XCJ2XCIsXCLqnZ9cIjpcInZcIixcIsqMXCI6XCJ2XCIsXCLqnaFcIjpcInZ5XCIsXCLik6ZcIjpcIndcIixcIu+9l1wiOlwid1wiLFwi4bqBXCI6XCJ3XCIsXCLhuoNcIjpcIndcIixcIsW1XCI6XCJ3XCIsXCLhuodcIjpcIndcIixcIuG6hVwiOlwid1wiLFwi4bqYXCI6XCJ3XCIsXCLhuolcIjpcIndcIixcIuKxs1wiOlwid1wiLFwi4pOnXCI6XCJ4XCIsXCLvvZhcIjpcInhcIixcIuG6i1wiOlwieFwiLFwi4bqNXCI6XCJ4XCIsXCLik6hcIjpcInlcIixcIu+9mVwiOlwieVwiLFwi4buzXCI6XCJ5XCIsXCLDvVwiOlwieVwiLFwixbdcIjpcInlcIixcIuG7uVwiOlwieVwiLFwiyLNcIjpcInlcIixcIuG6j1wiOlwieVwiLFwiw79cIjpcInlcIixcIuG7t1wiOlwieVwiLFwi4bqZXCI6XCJ5XCIsXCLhu7VcIjpcInlcIixcIsa0XCI6XCJ5XCIsXCLJj1wiOlwieVwiLFwi4bu/XCI6XCJ5XCIsXCLik6lcIjpcInpcIixcIu+9mlwiOlwielwiLFwixbpcIjpcInpcIixcIuG6kVwiOlwielwiLFwixbxcIjpcInpcIixcIsW+XCI6XCJ6XCIsXCLhupNcIjpcInpcIixcIuG6lVwiOlwielwiLFwixrZcIjpcInpcIixcIsilXCI6XCJ6XCIsXCLJgFwiOlwielwiLFwi4rGsXCI6XCJ6XCIsXCLqnaNcIjpcInpcIixcIs6GXCI6XCLOkVwiLFwizohcIjpcIs6VXCIsXCLOiVwiOlwizpdcIixcIs6KXCI6XCLOmVwiLFwizqpcIjpcIs6ZXCIsXCLOjFwiOlwizp9cIixcIs6OXCI6XCLOpVwiLFwizqtcIjpcIs6lXCIsXCLOj1wiOlwizqlcIixcIs6sXCI6XCLOsVwiLFwizq1cIjpcIs61XCIsXCLOrlwiOlwizrdcIixcIs6vXCI6XCLOuVwiLFwiz4pcIjpcIs65XCIsXCLOkFwiOlwizrlcIixcIs+MXCI6XCLOv1wiLFwiz41cIjpcIs+FXCIsXCLPi1wiOlwiz4VcIixcIs6wXCI6XCLPhVwiLFwiz45cIjpcIs+JXCIsXCLPglwiOlwiz4NcIixcIuKAmVwiOlwiJ1wifX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kYXRhL2Jhc2VcIixbXCIuLi91dGlsc1wiXSxmdW5jdGlvbihyKXtmdW5jdGlvbiBuKGUsdCl7bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1yZXR1cm4gci5FeHRlbmQobixyLk9ic2VydmFibGUpLG4ucHJvdG90eXBlLmN1cnJlbnQ9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwiVGhlIGBjdXJyZW50YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuXCIpfSxuLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcihcIlRoZSBgcXVlcnlgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy5cIil9LG4ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0KXt9LG4ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmdlbmVyYXRlUmVzdWx0SWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmlkK1wiLXJlc3VsdC1cIjtyZXR1cm4gbis9ci5nZW5lcmF0ZUNoYXJzKDQpLG51bGwhPXQuaWQ/bis9XCItXCIrdC5pZC50b1N0cmluZygpOm4rPVwiLVwiK3IuZ2VuZXJhdGVDaGFycyg0KSxufSxufSksZS5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvc2VsZWN0XCIsW1wiLi9iYXNlXCIsXCIuLi91dGlsc1wiLFwianF1ZXJ5XCJdLGZ1bmN0aW9uKGUsYSxsKXtmdW5jdGlvbiBuKGUsdCl7dGhpcy4kZWxlbWVudD1lLHRoaXMub3B0aW9ucz10LG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIGEuRXh0ZW5kKG4sZSksbi5wcm90b3R5cGUuY3VycmVudD1mdW5jdGlvbihlKXt2YXIgbj1bXSxyPXRoaXM7dGhpcy4kZWxlbWVudC5maW5kKFwiOnNlbGVjdGVkXCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1sKHRoaXMpLHQ9ci5pdGVtKGUpO24ucHVzaCh0KX0pLGUobil9LG4ucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbihpKXt2YXIgbz10aGlzO2lmKGkuc2VsZWN0ZWQ9ITAsbChpLmVsZW1lbnQpLmlzKFwib3B0aW9uXCIpKXJldHVybiBpLmVsZW1lbnQuc2VsZWN0ZWQ9ITAsdm9pZCB0aGlzLiRlbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7aWYodGhpcy4kZWxlbWVudC5wcm9wKFwibXVsdGlwbGVcIikpdGhpcy5jdXJyZW50KGZ1bmN0aW9uKGUpe3ZhciB0PVtdOyhpPVtpXSkucHVzaC5hcHBseShpLGUpO2Zvcih2YXIgbj0wO248aS5sZW5ndGg7bisrKXt2YXIgcj1pW25dLmlkOy0xPT09bC5pbkFycmF5KHIsdCkmJnQucHVzaChyKX1vLiRlbGVtZW50LnZhbCh0KSxvLiRlbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIil9KTtlbHNle3ZhciBlPWkuaWQ7dGhpcy4kZWxlbWVudC52YWwoZSksdGhpcy4kZWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpfX0sbi5wcm90b3R5cGUudW5zZWxlY3Q9ZnVuY3Rpb24oaSl7dmFyIG89dGhpcztpZih0aGlzLiRlbGVtZW50LnByb3AoXCJtdWx0aXBsZVwiKSl7aWYoaS5zZWxlY3RlZD0hMSxsKGkuZWxlbWVudCkuaXMoXCJvcHRpb25cIikpcmV0dXJuIGkuZWxlbWVudC5zZWxlY3RlZD0hMSx2b2lkIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTt0aGlzLmN1cnJlbnQoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXS5pZDtyIT09aS5pZCYmLTE9PT1sLmluQXJyYXkocix0KSYmdC5wdXNoKHIpfW8uJGVsZW1lbnQudmFsKHQpLG8uJGVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKX0pfX0sbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7KHRoaXMuY29udGFpbmVyPWUpLm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oZSl7bi5zZWxlY3QoZS5kYXRhKX0pLGUub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKGUpe24udW5zZWxlY3QoZS5kYXRhKX0pfSxuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5maW5kKFwiKlwiKS5lYWNoKGZ1bmN0aW9uKCl7YS5SZW1vdmVEYXRhKHRoaXMpfSl9LG4ucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHIsZSl7dmFyIGk9W10sbz10aGlzO3RoaXMuJGVsZW1lbnQuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9bCh0aGlzKTtpZihlLmlzKFwib3B0aW9uXCIpfHxlLmlzKFwib3B0Z3JvdXBcIikpe3ZhciB0PW8uaXRlbShlKSxuPW8ubWF0Y2hlcyhyLHQpO251bGwhPT1uJiZpLnB1c2gobil9fSksZSh7cmVzdWx0czppfSl9LG4ucHJvdG90eXBlLmFkZE9wdGlvbnM9ZnVuY3Rpb24oZSl7YS5hcHBlbmRNYW55KHRoaXMuJGVsZW1lbnQsZSl9LG4ucHJvdG90eXBlLm9wdGlvbj1mdW5jdGlvbihlKXt2YXIgdDtlLmNoaWxkcmVuPyh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRncm91cFwiKSkubGFiZWw9ZS50ZXh0OnZvaWQgMCE9PSh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIikpLnRleHRDb250ZW50P3QudGV4dENvbnRlbnQ9ZS50ZXh0OnQuaW5uZXJUZXh0PWUudGV4dCx2b2lkIDAhPT1lLmlkJiYodC52YWx1ZT1lLmlkKSxlLmRpc2FibGVkJiYodC5kaXNhYmxlZD0hMCksZS5zZWxlY3RlZCYmKHQuc2VsZWN0ZWQ9ITApLGUudGl0bGUmJih0LnRpdGxlPWUudGl0bGUpO3ZhciBuPWwodCkscj10aGlzLl9ub3JtYWxpemVJdGVtKGUpO3JldHVybiByLmVsZW1lbnQ9dCxhLlN0b3JlRGF0YSh0LFwiZGF0YVwiLHIpLG59LG4ucHJvdG90eXBlLml0ZW09ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYobnVsbCE9KHQ9YS5HZXREYXRhKGVbMF0sXCJkYXRhXCIpKSlyZXR1cm4gdDtpZihlLmlzKFwib3B0aW9uXCIpKXQ9e2lkOmUudmFsKCksdGV4dDplLnRleHQoKSxkaXNhYmxlZDplLnByb3AoXCJkaXNhYmxlZFwiKSxzZWxlY3RlZDplLnByb3AoXCJzZWxlY3RlZFwiKSx0aXRsZTplLnByb3AoXCJ0aXRsZVwiKX07ZWxzZSBpZihlLmlzKFwib3B0Z3JvdXBcIikpe3Q9e3RleHQ6ZS5wcm9wKFwibGFiZWxcIiksY2hpbGRyZW46W10sdGl0bGU6ZS5wcm9wKFwidGl0bGVcIil9O2Zvcih2YXIgbj1lLmNoaWxkcmVuKFwib3B0aW9uXCIpLHI9W10saT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1sKG5baV0pLHM9dGhpcy5pdGVtKG8pO3IucHVzaChzKX10LmNoaWxkcmVuPXJ9cmV0dXJuKHQ9dGhpcy5fbm9ybWFsaXplSXRlbSh0KSkuZWxlbWVudD1lWzBdLGEuU3RvcmVEYXRhKGVbMF0sXCJkYXRhXCIsdCksdH0sbi5wcm90b3R5cGUuX25vcm1hbGl6ZUl0ZW09ZnVuY3Rpb24oZSl7ZSE9PU9iamVjdChlKSYmKGU9e2lkOmUsdGV4dDplfSk7cmV0dXJuIG51bGwhPShlPWwuZXh0ZW5kKHt9LHt0ZXh0OlwiXCJ9LGUpKS5pZCYmKGUuaWQ9ZS5pZC50b1N0cmluZygpKSxudWxsIT1lLnRleHQmJihlLnRleHQ9ZS50ZXh0LnRvU3RyaW5nKCkpLG51bGw9PWUuX3Jlc3VsdElkJiZlLmlkJiZudWxsIT10aGlzLmNvbnRhaW5lciYmKGUuX3Jlc3VsdElkPXRoaXMuZ2VuZXJhdGVSZXN1bHRJZCh0aGlzLmNvbnRhaW5lcixlKSksbC5leHRlbmQoe30se3NlbGVjdGVkOiExLGRpc2FibGVkOiExfSxlKX0sbi5wcm90b3R5cGUubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9wdGlvbnMuZ2V0KFwibWF0Y2hlclwiKShlLHQpfSxufSksZS5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvYXJyYXlcIixbXCIuL3NlbGVjdFwiLFwiLi4vdXRpbHNcIixcImpxdWVyeVwiXSxmdW5jdGlvbihlLGYsZyl7ZnVuY3Rpb24gcihlLHQpe3RoaXMuX2RhdGFUb0NvbnZlcnQ9dC5nZXQoXCJkYXRhXCIpfHxbXSxyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsZSx0KX1yZXR1cm4gZi5FeHRlbmQocixlKSxyLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCl7ci5fX3N1cGVyX18uYmluZC5jYWxsKHRoaXMsZSx0KSx0aGlzLmFkZE9wdGlvbnModGhpcy5jb252ZXJ0VG9PcHRpb25zKHRoaXMuX2RhdGFUb0NvbnZlcnQpKX0sci5wcm90b3R5cGUuc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZChcIm9wdGlvblwiKS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC52YWx1ZT09bi5pZC50b1N0cmluZygpfSk7MD09PWUubGVuZ3RoJiYoZT10aGlzLm9wdGlvbihuKSx0aGlzLmFkZE9wdGlvbnMoZSkpLHIuX19zdXBlcl9fLnNlbGVjdC5jYWxsKHRoaXMsbil9LHIucHJvdG90eXBlLmNvbnZlcnRUb09wdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuJGVsZW1lbnQuZmluZChcIm9wdGlvblwiKSxyPW4ubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaXRlbShnKHRoaXMpKS5pZH0pLmdldCgpLGk9W107ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzKS52YWwoKT09ZS5pZH19Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBhPXRoaXMuX25vcm1hbGl6ZUl0ZW0oZVtzXSk7aWYoMDw9Zy5pbkFycmF5KGEuaWQscikpe3ZhciBsPW4uZmlsdGVyKG8oYSkpLGM9dGhpcy5pdGVtKGwpLHU9Zy5leHRlbmQoITAse30sYSxjKSxkPXRoaXMub3B0aW9uKHUpO2wucmVwbGFjZVdpdGgoZCl9ZWxzZXt2YXIgcD10aGlzLm9wdGlvbihhKTtpZihhLmNoaWxkcmVuKXt2YXIgaD10aGlzLmNvbnZlcnRUb09wdGlvbnMoYS5jaGlsZHJlbik7Zi5hcHBlbmRNYW55KHAsaCl9aS5wdXNoKHApfX1yZXR1cm4gaX0scn0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kYXRhL2FqYXhcIixbXCIuL2FycmF5XCIsXCIuLi91dGlsc1wiLFwianF1ZXJ5XCJdLGZ1bmN0aW9uKGUsdCxvKXtmdW5jdGlvbiBuKGUsdCl7dGhpcy5hamF4T3B0aW9ucz10aGlzLl9hcHBseURlZmF1bHRzKHQuZ2V0KFwiYWpheFwiKSksbnVsbCE9dGhpcy5hamF4T3B0aW9ucy5wcm9jZXNzUmVzdWx0cyYmKHRoaXMucHJvY2Vzc1Jlc3VsdHM9dGhpcy5hamF4T3B0aW9ucy5wcm9jZXNzUmVzdWx0cyksbi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLGUsdCl9cmV0dXJuIHQuRXh0ZW5kKG4sZSksbi5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e2RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZXh0ZW5kKHt9LGUse3E6ZS50ZXJtfSl9LHRyYW5zcG9ydDpmdW5jdGlvbihlLHQsbil7dmFyIHI9by5hamF4KGUpO3JldHVybiByLnRoZW4odCksci5mYWlsKG4pLHJ9fTtyZXR1cm4gby5leHRlbmQoe30sdCxlLCEwKX0sbi5wcm90b3R5cGUucHJvY2Vzc1Jlc3VsdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG4ucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKG4scil7dmFyIGk9dGhpcztudWxsIT10aGlzLl9yZXF1ZXN0JiYoby5pc0Z1bmN0aW9uKHRoaXMuX3JlcXVlc3QuYWJvcnQpJiZ0aGlzLl9yZXF1ZXN0LmFib3J0KCksdGhpcy5fcmVxdWVzdD1udWxsKTt2YXIgdD1vLmV4dGVuZCh7dHlwZTpcIkdFVFwifSx0aGlzLmFqYXhPcHRpb25zKTtmdW5jdGlvbiBlKCl7dmFyIGU9dC50cmFuc3BvcnQodCxmdW5jdGlvbihlKXt2YXIgdD1pLnByb2Nlc3NSZXN1bHRzKGUsbik7aS5vcHRpb25zLmdldChcImRlYnVnXCIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvciYmKHQmJnQucmVzdWx0cyYmby5pc0FycmF5KHQucmVzdWx0cyl8fGNvbnNvbGUuZXJyb3IoXCJTZWxlY3QyOiBUaGUgQUpBWCByZXN1bHRzIGRpZCBub3QgcmV0dXJuIGFuIGFycmF5IGluIHRoZSBgcmVzdWx0c2Aga2V5IG9mIHRoZSByZXNwb25zZS5cIikpLHIodCl9LGZ1bmN0aW9uKCl7XCJzdGF0dXNcImluIGUmJigwPT09ZS5zdGF0dXN8fFwiMFwiPT09ZS5zdGF0dXMpfHxpLnRyaWdnZXIoXCJyZXN1bHRzOm1lc3NhZ2VcIix7bWVzc2FnZTpcImVycm9yTG9hZGluZ1wifSl9KTtpLl9yZXF1ZXN0PWV9XCJmdW5jdGlvblwiPT10eXBlb2YgdC51cmwmJih0LnVybD10LnVybC5jYWxsKHRoaXMuJGVsZW1lbnQsbikpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGF0YSYmKHQuZGF0YT10LmRhdGEuY2FsbCh0aGlzLiRlbGVtZW50LG4pKSx0aGlzLmFqYXhPcHRpb25zLmRlbGF5JiZudWxsIT1uLnRlcm0/KHRoaXMuX3F1ZXJ5VGltZW91dCYmd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9xdWVyeVRpbWVvdXQpLHRoaXMuX3F1ZXJ5VGltZW91dD13aW5kb3cuc2V0VGltZW91dChlLHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpKTplKCl9LG59KSxlLmRlZmluZShcInNlbGVjdDIvZGF0YS90YWdzXCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKHUpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciByPW4uZ2V0KFwidGFnc1wiKSxpPW4uZ2V0KFwiY3JlYXRlVGFnXCIpO3ZvaWQgMCE9PWkmJih0aGlzLmNyZWF0ZVRhZz1pKTt2YXIgbz1uLmdldChcImluc2VydFRhZ1wiKTtpZih2b2lkIDAhPT1vJiYodGhpcy5pbnNlcnRUYWc9byksZS5jYWxsKHRoaXMsdCxuKSx1LmlzQXJyYXkocikpZm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspe3ZhciBhPXJbc10sbD10aGlzLl9ub3JtYWxpemVJdGVtKGEpLGM9dGhpcy5vcHRpb24obCk7dGhpcy4kZWxlbWVudC5hcHBlbmQoYyl9fXJldHVybiBlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLGMsdSl7dmFyIGQ9dGhpczt0aGlzLl9yZW1vdmVPbGRUYWdzKCksbnVsbCE9Yy50ZXJtJiZudWxsPT1jLnBhZ2U/ZS5jYWxsKHRoaXMsYyxmdW5jdGlvbiBlKHQsbil7Zm9yKHZhciByPXQucmVzdWx0cyxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV0scz1udWxsIT1vLmNoaWxkcmVuJiYhZSh7cmVzdWx0czpvLmNoaWxkcmVufSwhMCk7aWYoKG8udGV4dHx8XCJcIikudG9VcHBlckNhc2UoKT09PShjLnRlcm18fFwiXCIpLnRvVXBwZXJDYXNlKCl8fHMpcmV0dXJuIW4mJih0LmRhdGE9cix2b2lkIHUodCkpfWlmKG4pcmV0dXJuITA7dmFyIGE9ZC5jcmVhdGVUYWcoYyk7aWYobnVsbCE9YSl7dmFyIGw9ZC5vcHRpb24oYSk7bC5hdHRyKFwiZGF0YS1zZWxlY3QyLXRhZ1wiLCEwKSxkLmFkZE9wdGlvbnMoW2xdKSxkLmluc2VydFRhZyhyLGEpfXQucmVzdWx0cz1yLHUodCl9KTplLmNhbGwodGhpcyxjLHUpfSxlLnByb3RvdHlwZS5jcmVhdGVUYWc9ZnVuY3Rpb24oZSx0KXt2YXIgbj11LnRyaW0odC50ZXJtKTtyZXR1cm5cIlwiPT09bj9udWxsOntpZDpuLHRleHQ6bn19LGUucHJvdG90eXBlLmluc2VydFRhZz1mdW5jdGlvbihlLHQsbil7dC51bnNoaWZ0KG4pfSxlLnByb3RvdHlwZS5fcmVtb3ZlT2xkVGFncz1mdW5jdGlvbihlKXt0aGlzLiRlbGVtZW50LmZpbmQoXCJvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ11cIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWR8fHUodGhpcykucmVtb3ZlKCl9KX0sZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kYXRhL3Rva2VuaXplclwiLFtcImpxdWVyeVwiXSxmdW5jdGlvbihkKXtmdW5jdGlvbiBlKGUsdCxuKXt2YXIgcj1uLmdldChcInRva2VuaXplclwiKTt2b2lkIDAhPT1yJiYodGhpcy50b2tlbml6ZXI9ciksZS5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7ZS5jYWxsKHRoaXMsdCxuKSx0aGlzLiRzZWFyY2g9dC5kcm9wZG93bi4kc2VhcmNofHx0LnNlbGVjdGlvbi4kc2VhcmNofHxuLmZpbmQoXCIuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkXCIpfSxlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpczt0LnRlcm09dC50ZXJtfHxcIlwiO3ZhciBpPXRoaXMudG9rZW5pemVyKHQsdGhpcy5vcHRpb25zLGZ1bmN0aW9uKGUpe3ZhciB0PXIuX25vcm1hbGl6ZUl0ZW0oZSk7aWYoIXIuJGVsZW1lbnQuZmluZChcIm9wdGlvblwiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzKS52YWwoKT09PXQuaWR9KS5sZW5ndGgpe3ZhciBuPXIub3B0aW9uKHQpO24uYXR0cihcImRhdGEtc2VsZWN0Mi10YWdcIiwhMCksci5fcmVtb3ZlT2xkVGFncygpLHIuYWRkT3B0aW9ucyhbbl0pfSFmdW5jdGlvbihlKXtyLnRyaWdnZXIoXCJzZWxlY3RcIix7ZGF0YTplfSl9KHQpfSk7aS50ZXJtIT09dC50ZXJtJiYodGhpcy4kc2VhcmNoLmxlbmd0aCYmKHRoaXMuJHNlYXJjaC52YWwoaS50ZXJtKSx0aGlzLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpKSx0LnRlcm09aS50ZXJtKSxlLmNhbGwodGhpcyx0LG4pfSxlLnByb3RvdHlwZS50b2tlbml6ZXI9ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpPW4uZ2V0KFwidG9rZW5TZXBhcmF0b3JzXCIpfHxbXSxvPXQudGVybSxzPTAsYT10aGlzLmNyZWF0ZVRhZ3x8ZnVuY3Rpb24oZSl7cmV0dXJue2lkOmUudGVybSx0ZXh0OmUudGVybX19O3M8by5sZW5ndGg7KXt2YXIgbD1vW3NdO2lmKC0xIT09ZC5pbkFycmF5KGwsaSkpe3ZhciBjPW8uc3Vic3RyKDAscyksdT1hKGQuZXh0ZW5kKHt9LHQse3Rlcm06Y30pKTtudWxsIT11PyhyKHUpLG89by5zdWJzdHIocysxKXx8XCJcIixzPTApOnMrK31lbHNlIHMrK31yZXR1cm57dGVybTpvfX0sZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kYXRhL21pbmltdW1JbnB1dExlbmd0aFwiLFtdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5taW5pbXVtSW5wdXRMZW5ndGg9bi5nZXQoXCJtaW5pbXVtSW5wdXRMZW5ndGhcIiksZS5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSx0LG4pe3QudGVybT10LnRlcm18fFwiXCIsdC50ZXJtLmxlbmd0aDx0aGlzLm1pbmltdW1JbnB1dExlbmd0aD90aGlzLnRyaWdnZXIoXCJyZXN1bHRzOm1lc3NhZ2VcIix7bWVzc2FnZTpcImlucHV0VG9vU2hvcnRcIixhcmdzOnttaW5pbXVtOnRoaXMubWluaW11bUlucHV0TGVuZ3RoLGlucHV0OnQudGVybSxwYXJhbXM6dH19KTplLmNhbGwodGhpcyx0LG4pfSxlfSksZS5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoXCIsW10sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLm1heGltdW1JbnB1dExlbmd0aD1uLmdldChcIm1heGltdW1JbnB1dExlbmd0aFwiKSxlLmNhbGwodGhpcyx0LG4pfXJldHVybiBlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLHQsbil7dC50ZXJtPXQudGVybXx8XCJcIiwwPHRoaXMubWF4aW11bUlucHV0TGVuZ3RoJiZ0LnRlcm0ubGVuZ3RoPnRoaXMubWF4aW11bUlucHV0TGVuZ3RoP3RoaXMudHJpZ2dlcihcInJlc3VsdHM6bWVzc2FnZVwiLHttZXNzYWdlOlwiaW5wdXRUb29Mb25nXCIsYXJnczp7bWF4aW11bTp0aGlzLm1heGltdW1JbnB1dExlbmd0aCxpbnB1dDp0LnRlcm0scGFyYW1zOnR9fSk6ZS5jYWxsKHRoaXMsdCxuKX0sZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGhcIixbXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3RoaXMubWF4aW11bVNlbGVjdGlvbkxlbmd0aD1uLmdldChcIm1heGltdW1TZWxlY3Rpb25MZW5ndGhcIiksZS5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztlLmNhbGwodGhpcyx0LG4pLHQub24oXCJzZWxlY3RcIixmdW5jdGlvbigpe3IuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKX0pfSxlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpczt0aGlzLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkKGZ1bmN0aW9uKCl7ZS5jYWxsKHIsdCxuKX0pfSxlLnByb3RvdHlwZS5fY2hlY2tJZk1heGltdW1TZWxlY3RlZD1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7dGhpcy5jdXJyZW50KGZ1bmN0aW9uKGUpe3ZhciB0PW51bGwhPWU/ZS5sZW5ndGg6MDswPHIubWF4aW11bVNlbGVjdGlvbkxlbmd0aCYmdD49ci5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoP3IudHJpZ2dlcihcInJlc3VsdHM6bWVzc2FnZVwiLHttZXNzYWdlOlwibWF4aW11bVNlbGVjdGVkXCIsYXJnczp7bWF4aW11bTpyLm1heGltdW1TZWxlY3Rpb25MZW5ndGh9fSk6biYmbigpfSl9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd25cIixbXCJqcXVlcnlcIixcIi4vdXRpbHNcIl0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKGUsdCl7dGhpcy4kZWxlbWVudD1lLHRoaXMub3B0aW9ucz10LG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIGUuRXh0ZW5kKG4sZS5PYnNlcnZhYmxlKSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10KCc8c3BhbiBjbGFzcz1cInNlbGVjdDItZHJvcGRvd25cIj48c3BhbiBjbGFzcz1cInNlbGVjdDItcmVzdWx0c1wiPjwvc3Bhbj48L3NwYW4+Jyk7cmV0dXJuIGUuYXR0cihcImRpclwiLHRoaXMub3B0aW9ucy5nZXQoXCJkaXJcIikpLHRoaXMuJGRyb3Bkb3duPWV9LG4ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLnBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7fSxuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy4kZHJvcGRvd24ucmVtb3ZlKCl9LG59KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vc2VhcmNoXCIsW1wianF1ZXJ5XCIsXCIuLi91dGlsc1wiXSxmdW5jdGlvbihvLGUpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgdD1lLmNhbGwodGhpcyksbj1vKCc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93blwiPjxpbnB1dCBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgLz48L3NwYW4+Jyk7cmV0dXJuIHRoaXMuJHNlYXJjaENvbnRhaW5lcj1uLHRoaXMuJHNlYXJjaD1uLmZpbmQoXCJpbnB1dFwiKSx0LnByZXBlbmQobiksdH0sdC5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPXQuaWQrXCItcmVzdWx0c1wiO2UuY2FsbCh0aGlzLHQsbiksdGhpcy4kc2VhcmNoLm9uKFwia2V5ZG93blwiLGZ1bmN0aW9uKGUpe3IudHJpZ2dlcihcImtleXByZXNzXCIsZSksci5fa2V5VXBQcmV2ZW50ZWQ9ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKX0pLHRoaXMuJHNlYXJjaC5vbihcImlucHV0XCIsZnVuY3Rpb24oZSl7byh0aGlzKS5vZmYoXCJrZXl1cFwiKX0pLHRoaXMuJHNlYXJjaC5vbihcImtleXVwIGlucHV0XCIsZnVuY3Rpb24oZSl7ci5oYW5kbGVTZWFyY2goZSl9KSx0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7ci4kc2VhcmNoLmF0dHIoXCJ0YWJpbmRleFwiLDApLHIuJHNlYXJjaC5hdHRyKFwiYXJpYS1jb250cm9sc1wiLGkpLHIuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIiksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfSwwKX0pLHQub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7ci4kc2VhcmNoLmF0dHIoXCJ0YWJpbmRleFwiLC0xKSxyLiRzZWFyY2gucmVtb3ZlQXR0cihcImFyaWEtY29udHJvbHNcIiksci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiksci4kc2VhcmNoLnZhbChcIlwiKSxyLiRzZWFyY2gudHJpZ2dlcihcImJsdXJcIil9KSx0Lm9uKFwiZm9jdXNcIixmdW5jdGlvbigpe3QuaXNPcGVuKCl8fHIuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIil9KSx0Lm9uKFwicmVzdWx0czphbGxcIixmdW5jdGlvbihlKXtudWxsIT1lLnF1ZXJ5LnRlcm0mJlwiXCIhPT1lLnF1ZXJ5LnRlcm18fChyLnNob3dTZWFyY2goZSk/ci4kc2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1zZWFyY2gtLWhpZGVcIik6ci4kc2VhcmNoQ29udGFpbmVyLmFkZENsYXNzKFwic2VsZWN0Mi1zZWFyY2gtLWhpZGVcIikpfSksdC5vbihcInJlc3VsdHM6Zm9jdXNcIixmdW5jdGlvbihlKXtlLmRhdGEuX3Jlc3VsdElkP3IuJHNlYXJjaC5hdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsZS5kYXRhLl9yZXN1bHRJZCk6ci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIil9KX0sdC5wcm90b3R5cGUuaGFuZGxlU2VhcmNoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLl9rZXlVcFByZXZlbnRlZCl7dmFyIHQ9dGhpcy4kc2VhcmNoLnZhbCgpO3RoaXMudHJpZ2dlcihcInF1ZXJ5XCIse3Rlcm06dH0pfXRoaXMuX2tleVVwUHJldmVudGVkPSExfSx0LnByb3RvdHlwZS5zaG93U2VhcmNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuITB9LHR9KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyXCIsW10sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMucGxhY2Vob2xkZXI9dGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihuLmdldChcInBsYWNlaG9sZGVyXCIpKSxlLmNhbGwodGhpcyx0LG4scil9cmV0dXJuIGUucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlLHQpe3QucmVzdWx0cz10aGlzLnJlbW92ZVBsYWNlaG9sZGVyKHQucmVzdWx0cyksZS5jYWxsKHRoaXMsdCl9LGUucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PXtpZDpcIlwiLHRleHQ6dH0pLHR9LGUucHJvdG90eXBlLnJlbW92ZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQuc2xpY2UoMCkscj10Lmxlbmd0aC0xOzA8PXI7ci0tKXt2YXIgaT10W3JdO3RoaXMucGxhY2Vob2xkZXIuaWQ9PT1pLmlkJiZuLnNwbGljZShyLDEpfXJldHVybiBufSxlfSksZS5kZWZpbmUoXCJzZWxlY3QyL2Ryb3Bkb3duL2luZmluaXRlU2Nyb2xsXCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUoZSx0LG4scil7dGhpcy5sYXN0UGFyYW1zPXt9LGUuY2FsbCh0aGlzLHQsbixyKSx0aGlzLiRsb2FkaW5nTW9yZT10aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCksdGhpcy5sb2FkaW5nPSExfXJldHVybiBlLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXt0aGlzLiRsb2FkaW5nTW9yZS5yZW1vdmUoKSx0aGlzLmxvYWRpbmc9ITEsZS5jYWxsKHRoaXMsdCksdGhpcy5zaG93TG9hZGluZ01vcmUodCkmJih0aGlzLiRyZXN1bHRzLmFwcGVuZCh0aGlzLiRsb2FkaW5nTW9yZSksdGhpcy5sb2FkTW9yZUlmTmVlZGVkKCkpfSxlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2UuY2FsbCh0aGlzLHQsbiksdC5vbihcInF1ZXJ5XCIsZnVuY3Rpb24oZSl7ci5sYXN0UGFyYW1zPWUsci5sb2FkaW5nPSEwfSksdC5vbihcInF1ZXJ5OmFwcGVuZFwiLGZ1bmN0aW9uKGUpe3IubGFzdFBhcmFtcz1lLHIubG9hZGluZz0hMH0pLHRoaXMuJHJlc3VsdHMub24oXCJzY3JvbGxcIix0aGlzLmxvYWRNb3JlSWZOZWVkZWQuYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLmxvYWRNb3JlSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT1uLmNvbnRhaW5zKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRsb2FkaW5nTW9yZVswXSk7aWYoIXRoaXMubG9hZGluZyYmZSl7dmFyIHQ9dGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3ArdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCghMSk7dGhpcy4kbG9hZGluZ01vcmUub2Zmc2V0KCkudG9wK3RoaXMuJGxvYWRpbmdNb3JlLm91dGVySGVpZ2h0KCExKTw9dCs1MCYmdGhpcy5sb2FkTW9yZSgpfX0sZS5wcm90b3R5cGUubG9hZE1vcmU9ZnVuY3Rpb24oKXt0aGlzLmxvYWRpbmc9ITA7dmFyIGU9bi5leHRlbmQoe30se3BhZ2U6MX0sdGhpcy5sYXN0UGFyYW1zKTtlLnBhZ2UrKyx0aGlzLnRyaWdnZXIoXCJxdWVyeTphcHBlbmRcIixlKX0sZS5wcm90b3R5cGUuc2hvd0xvYWRpbmdNb3JlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQucGFnaW5hdGlvbiYmdC5wYWdpbmF0aW9uLm1vcmV9LGUucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlPWZ1bmN0aW9uKCl7dmFyIGU9bignPGxpIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWxvYWQtbW9yZVwicm9sZT1cIm9wdGlvblwiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI+PC9saT4nKSx0PXRoaXMub3B0aW9ucy5nZXQoXCJ0cmFuc2xhdGlvbnNcIikuZ2V0KFwibG9hZGluZ01vcmVcIik7cmV0dXJuIGUuaHRtbCh0KHRoaXMubGFzdFBhcmFtcykpLGV9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vYXR0YWNoQm9keVwiLFtcImpxdWVyeVwiLFwiLi4vdXRpbHNcIl0sZnVuY3Rpb24oZixhKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLiRkcm9wZG93blBhcmVudD1mKG4uZ2V0KFwiZHJvcGRvd25QYXJlbnRcIil8fGRvY3VtZW50LmJvZHkpLGUuY2FsbCh0aGlzLHQsbil9cmV0dXJuIGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7ZS5jYWxsKHRoaXMsdCxuKSx0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7ci5fc2hvd0Ryb3Bkb3duKCksci5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpLHIuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyh0KX0pLHQub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7ci5faGlkZURyb3Bkb3duKCksci5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpfSksdGhpcy4kZHJvcGRvd25Db250YWluZXIub24oXCJtb3VzZWRvd25cIixmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfSl9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZSl7ZS5jYWxsKHRoaXMpLHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihlLHQsbil7dC5hdHRyKFwiY2xhc3NcIixuLmF0dHIoXCJjbGFzc1wiKSksdC5yZW1vdmVDbGFzcyhcInNlbGVjdDJcIiksdC5hZGRDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpLHQuY3NzKHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOi05OTk5OTl9KSx0aGlzLiRjb250YWluZXI9bn0sZS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWYoXCI8c3Bhbj48L3NwYW4+XCIpLG49ZS5jYWxsKHRoaXMpO3JldHVybiB0LmFwcGVuZChuKSx0aGlzLiRkcm9wZG93bkNvbnRhaW5lcj10fSxlLnByb3RvdHlwZS5faGlkZURyb3Bkb3duPWZ1bmN0aW9uKGUpe3RoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpfSxlLnByb3RvdHlwZS5fYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kKXt2YXIgbj10aGlzO3Qub24oXCJyZXN1bHRzOmFsbFwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSx0Lm9uKFwicmVzdWx0czphcHBlbmRcIixmdW5jdGlvbigpe24uX3Bvc2l0aW9uRHJvcGRvd24oKSxuLl9yZXNpemVEcm9wZG93bigpfSksdC5vbihcInJlc3VsdHM6bWVzc2FnZVwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSx0Lm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oKXtuLl9wb3NpdGlvbkRyb3Bkb3duKCksbi5fcmVzaXplRHJvcGRvd24oKX0pLHQub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSx0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZD0hMH19LGUucHJvdG90eXBlLl9hdHRhY2hQb3NpdGlvbmluZ0hhbmRsZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9XCJzY3JvbGwuc2VsZWN0Mi5cIit0LmlkLGk9XCJyZXNpemUuc2VsZWN0Mi5cIit0LmlkLG89XCJvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLlwiK3QuaWQscz10aGlzLiRjb250YWluZXIucGFyZW50cygpLmZpbHRlcihhLmhhc1Njcm9sbCk7cy5lYWNoKGZ1bmN0aW9uKCl7YS5TdG9yZURhdGEodGhpcyxcInNlbGVjdDItc2Nyb2xsLXBvc2l0aW9uXCIse3g6Zih0aGlzKS5zY3JvbGxMZWZ0KCkseTpmKHRoaXMpLnNjcm9sbFRvcCgpfSl9KSxzLm9uKHIsZnVuY3Rpb24oZSl7dmFyIHQ9YS5HZXREYXRhKHRoaXMsXCJzZWxlY3QyLXNjcm9sbC1wb3NpdGlvblwiKTtmKHRoaXMpLnNjcm9sbFRvcCh0LnkpfSksZih3aW5kb3cpLm9uKHIrXCIgXCIraStcIiBcIitvLGZ1bmN0aW9uKGUpe24uX3Bvc2l0aW9uRHJvcGRvd24oKSxuLl9yZXNpemVEcm9wZG93bigpfSl9LGUucHJvdG90eXBlLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1cInNjcm9sbC5zZWxlY3QyLlwiK3QuaWQscj1cInJlc2l6ZS5zZWxlY3QyLlwiK3QuaWQsaT1cIm9yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuXCIrdC5pZDt0aGlzLiRjb250YWluZXIucGFyZW50cygpLmZpbHRlcihhLmhhc1Njcm9sbCkub2ZmKG4pLGYod2luZG93KS5vZmYobitcIiBcIityK1wiIFwiK2kpfSxlLnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93bj1mdW5jdGlvbigpe3ZhciBlPWYod2luZG93KSx0PXRoaXMuJGRyb3Bkb3duLmhhc0NsYXNzKFwic2VsZWN0Mi1kcm9wZG93bi0tYWJvdmVcIiksbj10aGlzLiRkcm9wZG93bi5oYXNDbGFzcyhcInNlbGVjdDItZHJvcGRvd24tLWJlbG93XCIpLHI9bnVsbCxpPXRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtpLmJvdHRvbT1pLnRvcCt0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoITEpO3ZhciBvPXtoZWlnaHQ6dGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KCExKX07by50b3A9aS50b3Asby5ib3R0b209aS50b3Arby5oZWlnaHQ7dmFyIHM9dGhpcy4kZHJvcGRvd24ub3V0ZXJIZWlnaHQoITEpLGE9ZS5zY3JvbGxUb3AoKSxsPWUuc2Nyb2xsVG9wKCkrZS5oZWlnaHQoKSxjPWE8aS50b3Atcyx1PWw+aS5ib3R0b20rcyxkPXtsZWZ0OmkubGVmdCx0b3A6by5ib3R0b219LHA9dGhpcy4kZHJvcGRvd25QYXJlbnQ7XCJzdGF0aWNcIj09PXAuY3NzKFwicG9zaXRpb25cIikmJihwPXAub2Zmc2V0UGFyZW50KCkpO3ZhciBoPXt0b3A6MCxsZWZ0OjB9OyhmLmNvbnRhaW5zKGRvY3VtZW50LmJvZHkscFswXSl8fHBbMF0uaXNDb25uZWN0ZWQpJiYoaD1wLm9mZnNldCgpKSxkLnRvcC09aC50b3AsZC5sZWZ0LT1oLmxlZnQsdHx8bnx8KHI9XCJiZWxvd1wiKSx1fHwhY3x8dD8hYyYmdSYmdCYmKHI9XCJiZWxvd1wiKTpyPVwiYWJvdmVcIiwoXCJhYm92ZVwiPT1yfHx0JiZcImJlbG93XCIhPT1yKSYmKGQudG9wPW8udG9wLWgudG9wLXMpLG51bGwhPXImJih0aGlzLiRkcm9wZG93bi5yZW1vdmVDbGFzcyhcInNlbGVjdDItZHJvcGRvd24tLWJlbG93IHNlbGVjdDItZHJvcGRvd24tLWFib3ZlXCIpLmFkZENsYXNzKFwic2VsZWN0Mi1kcm9wZG93bi0tXCIrciksdGhpcy4kY29udGFpbmVyLnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLWJlbG93IHNlbGVjdDItY29udGFpbmVyLS1hYm92ZVwiKS5hZGRDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1cIityKSksdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGQpfSxlLnByb3RvdHlwZS5fcmVzaXplRHJvcGRvd249ZnVuY3Rpb24oKXt2YXIgZT17d2lkdGg6dGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoITEpK1wicHhcIn07dGhpcy5vcHRpb25zLmdldChcImRyb3Bkb3duQXV0b1dpZHRoXCIpJiYoZS5taW5XaWR0aD1lLndpZHRoLGUucG9zaXRpb249XCJyZWxhdGl2ZVwiLGUud2lkdGg9XCJhdXRvXCIpLHRoaXMuJGRyb3Bkb3duLmNzcyhlKX0sZS5wcm90b3R5cGUuX3Nob3dEcm9wZG93bj1mdW5jdGlvbihlKXt0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5hcHBlbmRUbyh0aGlzLiRkcm9wZG93blBhcmVudCksdGhpcy5fcG9zaXRpb25Ecm9wZG93bigpLHRoaXMuX3Jlc2l6ZURyb3Bkb3duKCl9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2hcIixbXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scil7dGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD1uLmdldChcIm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoXCIpLHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCYmKHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g9MS8wKSxlLmNhbGwodGhpcyx0LG4scil9cmV0dXJuIGUucHJvdG90eXBlLnNob3dTZWFyY2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBuPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT10W3JdO2kuY2hpbGRyZW4/bis9ZShpLmNoaWxkcmVuKTpuKyt9cmV0dXJuIG59KHQuZGF0YS5yZXN1bHRzKTx0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoKSYmZS5jYWxsKHRoaXMsdCl9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZVwiLFtcIi4uL3V0aWxzXCJdLGZ1bmN0aW9uKG8pe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7ZS5jYWxsKHRoaXMsdCxuKSx0Lm9uKFwiY2xvc2VcIixmdW5jdGlvbihlKXtyLl9oYW5kbGVTZWxlY3RPbkNsb3NlKGUpfSl9LGUucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RPbkNsb3NlPWZ1bmN0aW9uKGUsdCl7aWYodCYmbnVsbCE9dC5vcmlnaW5hbFNlbGVjdDJFdmVudCl7dmFyIG49dC5vcmlnaW5hbFNlbGVjdDJFdmVudDtpZihcInNlbGVjdFwiPT09bi5fdHlwZXx8XCJ1bnNlbGVjdFwiPT09bi5fdHlwZSlyZXR1cm59dmFyIHI9dGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtpZighKHIubGVuZ3RoPDEpKXt2YXIgaT1vLkdldERhdGEoclswXSxcImRhdGFcIik7bnVsbCE9aS5lbGVtZW50JiZpLmVsZW1lbnQuc2VsZWN0ZWR8fG51bGw9PWkuZWxlbWVudCYmaS5zZWxlY3RlZHx8dGhpcy50cmlnZ2VyKFwic2VsZWN0XCIse2RhdGE6aX0pfX0sZX0pLGUuZGVmaW5lKFwic2VsZWN0Mi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0XCIsW10sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2UuY2FsbCh0aGlzLHQsbiksdC5vbihcInNlbGVjdFwiLGZ1bmN0aW9uKGUpe3IuX3NlbGVjdFRyaWdnZXJlZChlKX0pLHQub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKGUpe3IuX3NlbGVjdFRyaWdnZXJlZChlKX0pfSxlLnByb3RvdHlwZS5fc2VsZWN0VHJpZ2dlcmVkPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vcmlnaW5hbEV2ZW50O24mJihuLmN0cmxLZXl8fG4ubWV0YUtleSl8fHRoaXMudHJpZ2dlcihcImNsb3NlXCIse29yaWdpbmFsRXZlbnQ6bixvcmlnaW5hbFNlbGVjdDJFdmVudDp0fSl9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvaTE4bi9lblwiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue2Vycm9yTG9hZGluZzpmdW5jdGlvbigpe3JldHVyblwiVGhlIHJlc3VsdHMgY291bGQgbm90IGJlIGxvYWRlZC5cIn0saW5wdXRUb29Mb25nOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5wdXQubGVuZ3RoLWUubWF4aW11bSxuPVwiUGxlYXNlIGRlbGV0ZSBcIit0K1wiIGNoYXJhY3RlclwiO3JldHVybiAxIT10JiYobis9XCJzXCIpLG59LGlucHV0VG9vU2hvcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuXCJQbGVhc2UgZW50ZXIgXCIrKGUubWluaW11bS1lLmlucHV0Lmxlbmd0aCkrXCIgb3IgbW9yZSBjaGFyYWN0ZXJzXCJ9LGxvYWRpbmdNb3JlOmZ1bmN0aW9uKCl7cmV0dXJuXCJMb2FkaW5nIG1vcmUgcmVzdWx0c+KAplwifSxtYXhpbXVtU2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJZb3UgY2FuIG9ubHkgc2VsZWN0IFwiK2UubWF4aW11bStcIiBpdGVtXCI7cmV0dXJuIDEhPWUubWF4aW11bSYmKHQrPVwic1wiKSx0fSxub1Jlc3VsdHM6ZnVuY3Rpb24oKXtyZXR1cm5cIk5vIHJlc3VsdHMgZm91bmRcIn0sc2VhcmNoaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJTZWFyY2hpbmfigKZcIn0scmVtb3ZlQWxsSXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm5cIlJlbW92ZSBhbGwgaXRlbXNcIn19fSksZS5kZWZpbmUoXCJzZWxlY3QyL2RlZmF1bHRzXCIsW1wianF1ZXJ5XCIsXCJyZXF1aXJlXCIsXCIuL3Jlc3VsdHNcIixcIi4vc2VsZWN0aW9uL3NpbmdsZVwiLFwiLi9zZWxlY3Rpb24vbXVsdGlwbGVcIixcIi4vc2VsZWN0aW9uL3BsYWNlaG9sZGVyXCIsXCIuL3NlbGVjdGlvbi9hbGxvd0NsZWFyXCIsXCIuL3NlbGVjdGlvbi9zZWFyY2hcIixcIi4vc2VsZWN0aW9uL2V2ZW50UmVsYXlcIixcIi4vdXRpbHNcIixcIi4vdHJhbnNsYXRpb25cIixcIi4vZGlhY3JpdGljc1wiLFwiLi9kYXRhL3NlbGVjdFwiLFwiLi9kYXRhL2FycmF5XCIsXCIuL2RhdGEvYWpheFwiLFwiLi9kYXRhL3RhZ3NcIixcIi4vZGF0YS90b2tlbml6ZXJcIixcIi4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGhcIixcIi4vZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGhcIixcIi4vZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXCIsXCIuL2Ryb3Bkb3duXCIsXCIuL2Ryb3Bkb3duL3NlYXJjaFwiLFwiLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXJcIixcIi4vZHJvcGRvd24vaW5maW5pdGVTY3JvbGxcIixcIi4vZHJvcGRvd24vYXR0YWNoQm9keVwiLFwiLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaFwiLFwiLi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlXCIsXCIuL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3RcIixcIi4vaTE4bi9lblwiXSxmdW5jdGlvbihjLHUsZCxwLGgsZixnLG0sdix5LHMsdCxfLCQsdyxiLEEseCxELFMsRSxDLE8sVCxxLEwsSSxqLGUpe2Z1bmN0aW9uIG4oKXt0aGlzLnJlc2V0KCl9cmV0dXJuIG4ucHJvdG90eXBlLmFwcGx5PWZ1bmN0aW9uKGUpe2lmKG51bGw9PShlPWMuZXh0ZW5kKCEwLHt9LHRoaXMuZGVmYXVsdHMsZSkpLmRhdGFBZGFwdGVyKXtpZihudWxsIT1lLmFqYXg/ZS5kYXRhQWRhcHRlcj13Om51bGwhPWUuZGF0YT9lLmRhdGFBZGFwdGVyPSQ6ZS5kYXRhQWRhcHRlcj1fLDA8ZS5taW5pbXVtSW5wdXRMZW5ndGgmJihlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcix4KSksMDxlLm1heGltdW1JbnB1dExlbmd0aCYmKGUuZGF0YUFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRhdGFBZGFwdGVyLEQpKSwwPGUubWF4aW11bVNlbGVjdGlvbkxlbmd0aCYmKGUuZGF0YUFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRhdGFBZGFwdGVyLFMpKSxlLnRhZ3MmJihlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixiKSksbnVsbD09ZS50b2tlblNlcGFyYXRvcnMmJm51bGw9PWUudG9rZW5pemVyfHwoZS5kYXRhQWRhcHRlcj15LkRlY29yYXRlKGUuZGF0YUFkYXB0ZXIsQSkpLG51bGwhPWUucXVlcnkpe3ZhciB0PXUoZS5hbWRCYXNlK1wiY29tcGF0L3F1ZXJ5XCIpO2UuZGF0YUFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRhdGFBZGFwdGVyLHQpfWlmKG51bGwhPWUuaW5pdFNlbGVjdGlvbil7dmFyIG49dShlLmFtZEJhc2UrXCJjb21wYXQvaW5pdFNlbGVjdGlvblwiKTtlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixuKX19aWYobnVsbD09ZS5yZXN1bHRzQWRhcHRlciYmKGUucmVzdWx0c0FkYXB0ZXI9ZCxudWxsIT1lLmFqYXgmJihlLnJlc3VsdHNBZGFwdGVyPXkuRGVjb3JhdGUoZS5yZXN1bHRzQWRhcHRlcixUKSksbnVsbCE9ZS5wbGFjZWhvbGRlciYmKGUucmVzdWx0c0FkYXB0ZXI9eS5EZWNvcmF0ZShlLnJlc3VsdHNBZGFwdGVyLE8pKSxlLnNlbGVjdE9uQ2xvc2UmJihlLnJlc3VsdHNBZGFwdGVyPXkuRGVjb3JhdGUoZS5yZXN1bHRzQWRhcHRlcixJKSkpLG51bGw9PWUuZHJvcGRvd25BZGFwdGVyKXtpZihlLm11bHRpcGxlKWUuZHJvcGRvd25BZGFwdGVyPUU7ZWxzZXt2YXIgcj15LkRlY29yYXRlKEUsQyk7ZS5kcm9wZG93bkFkYXB0ZXI9cn1pZigwIT09ZS5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCYmKGUuZHJvcGRvd25BZGFwdGVyPXkuRGVjb3JhdGUoZS5kcm9wZG93bkFkYXB0ZXIsTCkpLGUuY2xvc2VPblNlbGVjdCYmKGUuZHJvcGRvd25BZGFwdGVyPXkuRGVjb3JhdGUoZS5kcm9wZG93bkFkYXB0ZXIsaikpLG51bGwhPWUuZHJvcGRvd25Dc3NDbGFzc3x8bnVsbCE9ZS5kcm9wZG93bkNzc3x8bnVsbCE9ZS5hZGFwdERyb3Bkb3duQ3NzQ2xhc3Mpe3ZhciBpPXUoZS5hbWRCYXNlK1wiY29tcGF0L2Ryb3Bkb3duQ3NzXCIpO2UuZHJvcGRvd25BZGFwdGVyPXkuRGVjb3JhdGUoZS5kcm9wZG93bkFkYXB0ZXIsaSl9ZS5kcm9wZG93bkFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRyb3Bkb3duQWRhcHRlcixxKX1pZihudWxsPT1lLnNlbGVjdGlvbkFkYXB0ZXIpe2lmKGUubXVsdGlwbGU/ZS5zZWxlY3Rpb25BZGFwdGVyPWg6ZS5zZWxlY3Rpb25BZGFwdGVyPXAsbnVsbCE9ZS5wbGFjZWhvbGRlciYmKGUuc2VsZWN0aW9uQWRhcHRlcj15LkRlY29yYXRlKGUuc2VsZWN0aW9uQWRhcHRlcixmKSksZS5hbGxvd0NsZWFyJiYoZS5zZWxlY3Rpb25BZGFwdGVyPXkuRGVjb3JhdGUoZS5zZWxlY3Rpb25BZGFwdGVyLGcpKSxlLm11bHRpcGxlJiYoZS5zZWxlY3Rpb25BZGFwdGVyPXkuRGVjb3JhdGUoZS5zZWxlY3Rpb25BZGFwdGVyLG0pKSxudWxsIT1lLmNvbnRhaW5lckNzc0NsYXNzfHxudWxsIT1lLmNvbnRhaW5lckNzc3x8bnVsbCE9ZS5hZGFwdENvbnRhaW5lckNzc0NsYXNzKXt2YXIgbz11KGUuYW1kQmFzZStcImNvbXBhdC9jb250YWluZXJDc3NcIik7ZS5zZWxlY3Rpb25BZGFwdGVyPXkuRGVjb3JhdGUoZS5zZWxlY3Rpb25BZGFwdGVyLG8pfWUuc2VsZWN0aW9uQWRhcHRlcj15LkRlY29yYXRlKGUuc2VsZWN0aW9uQWRhcHRlcix2KX1lLmxhbmd1YWdlPXRoaXMuX3Jlc29sdmVMYW5ndWFnZShlLmxhbmd1YWdlKSxlLmxhbmd1YWdlLnB1c2goXCJlblwiKTtmb3IodmFyIHM9W10sYT0wO2E8ZS5sYW5ndWFnZS5sZW5ndGg7YSsrKXt2YXIgbD1lLmxhbmd1YWdlW2FdOy0xPT09cy5pbmRleE9mKGwpJiZzLnB1c2gobCl9cmV0dXJuIGUubGFuZ3VhZ2U9cyxlLnRyYW5zbGF0aW9ucz10aGlzLl9wcm9jZXNzVHJhbnNsYXRpb25zKGUubGFuZ3VhZ2UsZS5kZWJ1ZyksZX0sbi5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGUpe3JldHVybiBlLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfHxlfSl9dGhpcy5kZWZhdWx0cz17YW1kQmFzZTpcIi4vXCIsYW1kTGFuZ3VhZ2VCYXNlOlwiLi9pMThuL1wiLGNsb3NlT25TZWxlY3Q6ITAsZGVidWc6ITEsZHJvcGRvd25BdXRvV2lkdGg6ITEsZXNjYXBlTWFya3VwOnkuZXNjYXBlTWFya3VwLGxhbmd1YWdlOnt9LG1hdGNoZXI6ZnVuY3Rpb24gZSh0LG4pe2lmKFwiXCI9PT1jLnRyaW0odC50ZXJtKSlyZXR1cm4gbjtpZihuLmNoaWxkcmVuJiYwPG4uY2hpbGRyZW4ubGVuZ3RoKXtmb3IodmFyIHI9Yy5leHRlbmQoITAse30sbiksaT1uLmNoaWxkcmVuLmxlbmd0aC0xOzA8PWk7aS0tKW51bGw9PWUodCxuLmNoaWxkcmVuW2ldKSYmci5jaGlsZHJlbi5zcGxpY2UoaSwxKTtyZXR1cm4gMDxyLmNoaWxkcmVuLmxlbmd0aD9yOmUodCxyKX12YXIgbz1hKG4udGV4dCkudG9VcHBlckNhc2UoKSxzPWEodC50ZXJtKS50b1VwcGVyQ2FzZSgpO3JldHVybi0xPG8uaW5kZXhPZihzKT9uOm51bGx9LG1pbmltdW1JbnB1dExlbmd0aDowLG1heGltdW1JbnB1dExlbmd0aDowLG1heGltdW1TZWxlY3Rpb25MZW5ndGg6MCxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDowLHNlbGVjdE9uQ2xvc2U6ITEsc2Nyb2xsQWZ0ZXJTZWxlY3Q6ITEsc29ydGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSx0ZW1wbGF0ZVJlc3VsdDpmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0fSx0ZW1wbGF0ZVNlbGVjdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0fSx0aGVtZTpcImRlZmF1bHRcIix3aWR0aDpcInJlc29sdmVcIn19LG4ucHJvdG90eXBlLmFwcGx5RnJvbUVsZW1lbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxhbmd1YWdlLHI9dGhpcy5kZWZhdWx0cy5sYW5ndWFnZSxpPXQucHJvcChcImxhbmdcIiksbz10LmNsb3Nlc3QoXCJbbGFuZ11cIikucHJvcChcImxhbmdcIikscz1BcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwodGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGkpLHRoaXMuX3Jlc29sdmVMYW5ndWFnZShuKSx0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UociksdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG8pKTtyZXR1cm4gZS5sYW5ndWFnZT1zLGV9LG4ucHJvdG90eXBlLl9yZXNvbHZlTGFuZ3VhZ2U9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuW107aWYoYy5pc0VtcHR5T2JqZWN0KGUpKXJldHVybltdO2lmKGMuaXNQbGFpbk9iamVjdChlKSlyZXR1cm5bZV07dmFyIHQ7dD1jLmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBuPVtdLHI9MDtyPHQubGVuZ3RoO3IrKylpZihuLnB1c2godFtyXSksXCJzdHJpbmdcIj09dHlwZW9mIHRbcl0mJjA8dFtyXS5pbmRleE9mKFwiLVwiKSl7dmFyIGk9dFtyXS5zcGxpdChcIi1cIilbMF07bi5wdXNoKGkpfXJldHVybiBufSxuLnByb3RvdHlwZS5fcHJvY2Vzc1RyYW5zbGF0aW9ucz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1uZXcgcyxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPW5ldyBzLG89ZVtyXTtpZihcInN0cmluZ1wiPT10eXBlb2Ygbyl0cnl7aT1zLmxvYWRQYXRoKG8pfWNhdGNoKGUpe3RyeXtvPXRoaXMuZGVmYXVsdHMuYW1kTGFuZ3VhZ2VCYXNlK28saT1zLmxvYWRQYXRoKG8pfWNhdGNoKGUpe3QmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGxhbmd1YWdlIGZpbGUgZm9yIFwiJytvKydcIiBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBsb2FkZWQuIEEgZmFsbGJhY2sgd2lsbCBiZSB1c2VkIGluc3RlYWQuJyl9fWVsc2UgaT1jLmlzUGxhaW5PYmplY3Qobyk/bmV3IHMobyk6bztuLmV4dGVuZChpKX1yZXR1cm4gbn0sbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307bltjLmNhbWVsQ2FzZShlKV09dDt2YXIgcj15Ll9jb252ZXJ0RGF0YShuKTtjLmV4dGVuZCghMCx0aGlzLmRlZmF1bHRzLHIpfSxuZXcgbn0pLGUuZGVmaW5lKFwic2VsZWN0Mi9vcHRpb25zXCIsW1wicmVxdWlyZVwiLFwianF1ZXJ5XCIsXCIuL2RlZmF1bHRzXCIsXCIuL3V0aWxzXCJdLGZ1bmN0aW9uKHIsZCxpLHApe2Z1bmN0aW9uIGUoZSx0KXtpZih0aGlzLm9wdGlvbnM9ZSxudWxsIT10JiZ0aGlzLmZyb21FbGVtZW50KHQpLG51bGwhPXQmJih0aGlzLm9wdGlvbnM9aS5hcHBseUZyb21FbGVtZW50KHRoaXMub3B0aW9ucyx0KSksdGhpcy5vcHRpb25zPWkuYXBwbHkodGhpcy5vcHRpb25zKSx0JiZ0LmlzKFwiaW5wdXRcIikpe3ZhciBuPXIodGhpcy5nZXQoXCJhbWRCYXNlXCIpK1wiY29tcGF0L2lucHV0RGF0YVwiKTt0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXI9cC5EZWNvcmF0ZSh0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXIsbil9fXJldHVybiBlLnByb3RvdHlwZS5mcm9tRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD1bXCJzZWxlY3QyXCJdO251bGw9PXRoaXMub3B0aW9ucy5tdWx0aXBsZSYmKHRoaXMub3B0aW9ucy5tdWx0aXBsZT1lLnByb3AoXCJtdWx0aXBsZVwiKSksbnVsbD09dGhpcy5vcHRpb25zLmRpc2FibGVkJiYodGhpcy5vcHRpb25zLmRpc2FibGVkPWUucHJvcChcImRpc2FibGVkXCIpKSxudWxsPT10aGlzLm9wdGlvbnMuZGlyJiYoZS5wcm9wKFwiZGlyXCIpP3RoaXMub3B0aW9ucy5kaXI9ZS5wcm9wKFwiZGlyXCIpOmUuY2xvc2VzdChcIltkaXJdXCIpLnByb3AoXCJkaXJcIik/dGhpcy5vcHRpb25zLmRpcj1lLmNsb3Nlc3QoXCJbZGlyXVwiKS5wcm9wKFwiZGlyXCIpOnRoaXMub3B0aW9ucy5kaXI9XCJsdHJcIiksZS5wcm9wKFwiZGlzYWJsZWRcIix0aGlzLm9wdGlvbnMuZGlzYWJsZWQpLGUucHJvcChcIm11bHRpcGxlXCIsdGhpcy5vcHRpb25zLm11bHRpcGxlKSxwLkdldERhdGEoZVswXSxcInNlbGVjdDJUYWdzXCIpJiYodGhpcy5vcHRpb25zLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgZGF0YS1zZWxlY3QyLXRhZ3NgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSB0aGUgYGRhdGEtZGF0YWAgYW5kIGBkYXRhLXRhZ3M9XCJ0cnVlXCJgIGF0dHJpYnV0ZXMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nKSxwLlN0b3JlRGF0YShlWzBdLFwiZGF0YVwiLHAuR2V0RGF0YShlWzBdLFwic2VsZWN0MlRhZ3NcIikpLHAuU3RvcmVEYXRhKGVbMF0sXCJ0YWdzXCIsITApKSxwLkdldERhdGEoZVswXSxcImFqYXhVcmxcIikmJih0aGlzLm9wdGlvbnMuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihcIlNlbGVjdDI6IFRoZSBgZGF0YS1hamF4LXVybGAgYXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gYGRhdGEtYWpheC0tdXJsYCBhbmQgc3VwcG9ydCBmb3IgdGhlIG9sZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTZWxlY3QyLlwiKSxlLmF0dHIoXCJhamF4LS11cmxcIixwLkdldERhdGEoZVswXSxcImFqYXhVcmxcIikpLHAuU3RvcmVEYXRhKGVbMF0sXCJhamF4LVVybFwiLHAuR2V0RGF0YShlWzBdLFwiYWpheFVybFwiKSkpO3ZhciBuPXt9O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgaT0wO2k8ZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDtpKyspe3ZhciBvPWVbMF0uYXR0cmlidXRlc1tpXS5uYW1lLHM9XCJkYXRhLVwiO2lmKG8uc3Vic3RyKDAscy5sZW5ndGgpPT1zKXt2YXIgYT1vLnN1YnN0cmluZyhzLmxlbmd0aCksbD1wLkdldERhdGEoZVswXSxhKTtuW2EucmVwbGFjZSgvLShbYS16XSkvZyxyKV09bH19ZC5mbi5qcXVlcnkmJlwiMS5cIj09ZC5mbi5qcXVlcnkuc3Vic3RyKDAsMikmJmVbMF0uZGF0YXNldCYmKG49ZC5leHRlbmQoITAse30sZVswXS5kYXRhc2V0LG4pKTt2YXIgYz1kLmV4dGVuZCghMCx7fSxwLkdldERhdGEoZVswXSksbik7Zm9yKHZhciB1IGluIGM9cC5fY29udmVydERhdGEoYykpLTE8ZC5pbkFycmF5KHUsdCl8fChkLmlzUGxhaW5PYmplY3QodGhpcy5vcHRpb25zW3VdKT9kLmV4dGVuZCh0aGlzLm9wdGlvbnNbdV0sY1t1XSk6dGhpcy5vcHRpb25zW3VdPWNbdV0pO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dGhpcy5vcHRpb25zW2VdPXR9LGV9KSxlLmRlZmluZShcInNlbGVjdDIvY29yZVwiLFtcImpxdWVyeVwiLFwiLi9vcHRpb25zXCIsXCIuL3V0aWxzXCIsXCIuL2tleXNcIl0sZnVuY3Rpb24oaSxjLHUscil7dmFyIGQ9ZnVuY3Rpb24oZSx0KXtudWxsIT11LkdldERhdGEoZVswXSxcInNlbGVjdDJcIikmJnUuR2V0RGF0YShlWzBdLFwic2VsZWN0MlwiKS5kZXN0cm95KCksdGhpcy4kZWxlbWVudD1lLHRoaXMuaWQ9dGhpcy5fZ2VuZXJhdGVJZChlKSx0PXR8fHt9LHRoaXMub3B0aW9ucz1uZXcgYyh0LGUpLGQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dmFyIG49ZS5hdHRyKFwidGFiaW5kZXhcIil8fDA7dS5TdG9yZURhdGEoZVswXSxcIm9sZC10YWJpbmRleFwiLG4pLGUuYXR0cihcInRhYmluZGV4XCIsXCItMVwiKTt2YXIgcj10aGlzLm9wdGlvbnMuZ2V0KFwiZGF0YUFkYXB0ZXJcIik7dGhpcy5kYXRhQWRhcHRlcj1uZXcgcihlLHRoaXMub3B0aW9ucyk7dmFyIGk9dGhpcy5yZW5kZXIoKTt0aGlzLl9wbGFjZUNvbnRhaW5lcihpKTt2YXIgbz10aGlzLm9wdGlvbnMuZ2V0KFwic2VsZWN0aW9uQWRhcHRlclwiKTt0aGlzLnNlbGVjdGlvbj1uZXcgbyhlLHRoaXMub3B0aW9ucyksdGhpcy4kc2VsZWN0aW9uPXRoaXMuc2VsZWN0aW9uLnJlbmRlcigpLHRoaXMuc2VsZWN0aW9uLnBvc2l0aW9uKHRoaXMuJHNlbGVjdGlvbixpKTt2YXIgcz10aGlzLm9wdGlvbnMuZ2V0KFwiZHJvcGRvd25BZGFwdGVyXCIpO3RoaXMuZHJvcGRvd249bmV3IHMoZSx0aGlzLm9wdGlvbnMpLHRoaXMuJGRyb3Bkb3duPXRoaXMuZHJvcGRvd24ucmVuZGVyKCksdGhpcy5kcm9wZG93bi5wb3NpdGlvbih0aGlzLiRkcm9wZG93bixpKTt2YXIgYT10aGlzLm9wdGlvbnMuZ2V0KFwicmVzdWx0c0FkYXB0ZXJcIik7dGhpcy5yZXN1bHRzPW5ldyBhKGUsdGhpcy5vcHRpb25zLHRoaXMuZGF0YUFkYXB0ZXIpLHRoaXMuJHJlc3VsdHM9dGhpcy5yZXN1bHRzLnJlbmRlcigpLHRoaXMucmVzdWx0cy5wb3NpdGlvbih0aGlzLiRyZXN1bHRzLHRoaXMuJGRyb3Bkb3duKTt2YXIgbD10aGlzO3RoaXMuX2JpbmRBZGFwdGVycygpLHRoaXMuX3JlZ2lzdGVyRG9tRXZlbnRzKCksdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCksdGhpcy5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMoKSx0aGlzLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzKCksdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCksdGhpcy5fcmVnaXN0ZXJFdmVudHMoKSx0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24oZSl7bC50cmlnZ2VyKFwic2VsZWN0aW9uOnVwZGF0ZVwiLHtkYXRhOmV9KX0pLGUuYWRkQ2xhc3MoXCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlXCIpLGUuYXR0cihcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLHRoaXMuX3N5bmNBdHRyaWJ1dGVzKCksdS5TdG9yZURhdGEoZVswXSxcInNlbGVjdDJcIix0aGlzKSxlLmRhdGEoXCJzZWxlY3QyXCIsdGhpcyl9O3JldHVybiB1LkV4dGVuZChkLHUuT2JzZXJ2YWJsZSksZC5wcm90b3R5cGUuX2dlbmVyYXRlSWQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzZWxlY3QyLVwiKyhudWxsIT1lLmF0dHIoXCJpZFwiKT9lLmF0dHIoXCJpZFwiKTpudWxsIT1lLmF0dHIoXCJuYW1lXCIpP2UuYXR0cihcIm5hbWVcIikrXCItXCIrdS5nZW5lcmF0ZUNoYXJzKDIpOnUuZ2VuZXJhdGVDaGFycyg0KSkucmVwbGFjZSgvKDp8XFwufFxcW3xcXF18LCkvZyxcIlwiKX0sZC5wcm90b3R5cGUuX3BsYWNlQ29udGFpbmVyPWZ1bmN0aW9uKGUpe2UuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCk7dmFyIHQ9dGhpcy5fcmVzb2x2ZVdpZHRoKHRoaXMuJGVsZW1lbnQsdGhpcy5vcHRpb25zLmdldChcIndpZHRoXCIpKTtudWxsIT10JiZlLmNzcyhcIndpZHRoXCIsdCl9LGQucHJvdG90eXBlLl9yZXNvbHZlV2lkdGg9ZnVuY3Rpb24oZSx0KXt2YXIgbj0vXndpZHRoOigoWy0rXT8oWzAtOV0qXFwuKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pO2lmKFwicmVzb2x2ZVwiPT10KXt2YXIgcj10aGlzLl9yZXNvbHZlV2lkdGgoZSxcInN0eWxlXCIpO3JldHVybiBudWxsIT1yP3I6dGhpcy5fcmVzb2x2ZVdpZHRoKGUsXCJlbGVtZW50XCIpfWlmKFwiZWxlbWVudFwiPT10KXt2YXIgaT1lLm91dGVyV2lkdGgoITEpO3JldHVybiBpPD0wP1wiYXV0b1wiOmkrXCJweFwifWlmKFwic3R5bGVcIiE9dClyZXR1cm5cImNvbXB1dGVkc3R5bGVcIiE9dD90OndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVbMF0pLndpZHRoO3ZhciBvPWUuYXR0cihcInN0eWxlXCIpO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBvKXJldHVybiBudWxsO2Zvcih2YXIgcz1vLnNwbGl0KFwiO1wiKSxhPTAsbD1zLmxlbmd0aDthPGw7YSs9MSl7dmFyIGM9c1thXS5yZXBsYWNlKC9cXHMvZyxcIlwiKS5tYXRjaChuKTtpZihudWxsIT09YyYmMTw9Yy5sZW5ndGgpcmV0dXJuIGNbMV19cmV0dXJuIG51bGx9LGQucHJvdG90eXBlLl9iaW5kQWRhcHRlcnM9ZnVuY3Rpb24oKXt0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpLHRoaXMuc2VsZWN0aW9uLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpLHRoaXMuZHJvcGRvd24uYmluZCh0aGlzLHRoaXMuJGNvbnRhaW5lciksdGhpcy5yZXN1bHRzLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpfSxkLnByb3RvdHlwZS5fcmVnaXN0ZXJEb21FdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuJGVsZW1lbnQub24oXCJjaGFuZ2Uuc2VsZWN0MlwiLGZ1bmN0aW9uKCl7dC5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGUpe3QudHJpZ2dlcihcInNlbGVjdGlvbjp1cGRhdGVcIix7ZGF0YTplfSl9KX0pLHRoaXMuJGVsZW1lbnQub24oXCJmb2N1cy5zZWxlY3QyXCIsZnVuY3Rpb24oZSl7dC50cmlnZ2VyKFwiZm9jdXNcIixlKX0pLHRoaXMuX3N5bmNBPXUuYmluZCh0aGlzLl9zeW5jQXR0cmlidXRlcyx0aGlzKSx0aGlzLl9zeW5jUz11LmJpbmQodGhpcy5fc3luY1N1YnRyZWUsdGhpcyksdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCYmdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIix0aGlzLl9zeW5jQSk7dmFyIGU9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXJ8fHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuTW96TXV0YXRpb25PYnNlcnZlcjtudWxsIT1lPyh0aGlzLl9vYnNlcnZlcj1uZXcgZShmdW5jdGlvbihlKXtpLmVhY2goZSx0Ll9zeW5jQSksaS5lYWNoKGUsdC5fc3luY1MpfSksdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdLHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiExfSkpOnRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lciYmKHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUF0dHJNb2RpZmllZFwiLHQuX3N5bmNBLCExKSx0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Ob2RlSW5zZXJ0ZWRcIix0Ll9zeW5jUywhMSksdGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKFwiRE9NTm9kZVJlbW92ZWRcIix0Ll9zeW5jUywhMSkpfSxkLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmRhdGFBZGFwdGVyLm9uKFwiKlwiLGZ1bmN0aW9uKGUsdCl7bi50cmlnZ2VyKGUsdCl9KX0sZC5wcm90b3R5cGUuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPVtcInRvZ2dsZVwiLFwiZm9jdXNcIl07dGhpcy5zZWxlY3Rpb24ub24oXCJ0b2dnbGVcIixmdW5jdGlvbigpe24udG9nZ2xlRHJvcGRvd24oKX0pLHRoaXMuc2VsZWN0aW9uLm9uKFwiZm9jdXNcIixmdW5jdGlvbihlKXtuLmZvY3VzKGUpfSksdGhpcy5zZWxlY3Rpb24ub24oXCIqXCIsZnVuY3Rpb24oZSx0KXstMT09PWkuaW5BcnJheShlLHIpJiZuLnRyaWdnZXIoZSx0KX0pfSxkLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5kcm9wZG93bi5vbihcIipcIixmdW5jdGlvbihlLHQpe24udHJpZ2dlcihlLHQpfSl9LGQucHJvdG90eXBlLl9yZWdpc3RlclJlc3VsdHNFdmVudHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMucmVzdWx0cy5vbihcIipcIixmdW5jdGlvbihlLHQpe24udHJpZ2dlcihlLHQpfSl9LGQucHJvdG90eXBlLl9yZWdpc3RlckV2ZW50cz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5vbihcIm9wZW5cIixmdW5jdGlvbigpe24uJGNvbnRhaW5lci5hZGRDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpfSksdGhpcy5vbihcImNsb3NlXCIsZnVuY3Rpb24oKXtuLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlblwiKX0pLHRoaXMub24oXCJlbmFibGVcIixmdW5jdGlvbigpe24uJGNvbnRhaW5lci5yZW1vdmVDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZFwiKX0pLHRoaXMub24oXCJkaXNhYmxlXCIsZnVuY3Rpb24oKXtuLiRjb250YWluZXIuYWRkQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWRcIil9KSx0aGlzLm9uKFwiYmx1clwiLGZ1bmN0aW9uKCl7bi4kY29udGFpbmVyLnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLWZvY3VzXCIpfSksdGhpcy5vbihcInF1ZXJ5XCIsZnVuY3Rpb24odCl7bi5pc09wZW4oKXx8bi50cmlnZ2VyKFwib3BlblwiLHt9KSx0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHQsZnVuY3Rpb24oZSl7bi50cmlnZ2VyKFwicmVzdWx0czphbGxcIix7ZGF0YTplLHF1ZXJ5OnR9KX0pfSksdGhpcy5vbihcInF1ZXJ5OmFwcGVuZFwiLGZ1bmN0aW9uKHQpe3RoaXMuZGF0YUFkYXB0ZXIucXVlcnkodCxmdW5jdGlvbihlKXtuLnRyaWdnZXIoXCJyZXN1bHRzOmFwcGVuZFwiLHtkYXRhOmUscXVlcnk6dH0pfSl9KSx0aGlzLm9uKFwia2V5cHJlc3NcIixmdW5jdGlvbihlKXt2YXIgdD1lLndoaWNoO24uaXNPcGVuKCk/dD09PXIuRVNDfHx0PT09ci5UQUJ8fHQ9PT1yLlVQJiZlLmFsdEtleT8obi5jbG9zZSgpLGUucHJldmVudERlZmF1bHQoKSk6dD09PXIuRU5URVI/KG4udHJpZ2dlcihcInJlc3VsdHM6c2VsZWN0XCIse30pLGUucHJldmVudERlZmF1bHQoKSk6dD09PXIuU1BBQ0UmJmUuY3RybEtleT8obi50cmlnZ2VyKFwicmVzdWx0czp0b2dnbGVcIix7fSksZS5wcmV2ZW50RGVmYXVsdCgpKTp0PT09ci5VUD8obi50cmlnZ2VyKFwicmVzdWx0czpwcmV2aW91c1wiLHt9KSxlLnByZXZlbnREZWZhdWx0KCkpOnQ9PT1yLkRPV04mJihuLnRyaWdnZXIoXCJyZXN1bHRzOm5leHRcIix7fSksZS5wcmV2ZW50RGVmYXVsdCgpKToodD09PXIuRU5URVJ8fHQ9PT1yLlNQQUNFfHx0PT09ci5ET1dOJiZlLmFsdEtleSkmJihuLm9wZW4oKSxlLnByZXZlbnREZWZhdWx0KCkpfSl9LGQucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcz1mdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zZXQoXCJkaXNhYmxlZFwiLHRoaXMuJGVsZW1lbnQucHJvcChcImRpc2FibGVkXCIpKSx0aGlzLm9wdGlvbnMuZ2V0KFwiZGlzYWJsZWRcIik/KHRoaXMuaXNPcGVuKCkmJnRoaXMuY2xvc2UoKSx0aGlzLnRyaWdnZXIoXCJkaXNhYmxlXCIse30pKTp0aGlzLnRyaWdnZXIoXCJlbmFibGVcIix7fSl9LGQucHJvdG90eXBlLl9zeW5jU3VidHJlZT1mdW5jdGlvbihlLHQpe3ZhciBuPSExLHI9dGhpcztpZighZXx8IWUudGFyZ2V0fHxcIk9QVElPTlwiPT09ZS50YXJnZXQubm9kZU5hbWV8fFwiT1BUR1JPVVBcIj09PWUudGFyZ2V0Lm5vZGVOYW1lKXtpZih0KWlmKHQuYWRkZWROb2RlcyYmMDx0LmFkZGVkTm9kZXMubGVuZ3RoKWZvcih2YXIgaT0wO2k8dC5hZGRlZE5vZGVzLmxlbmd0aDtpKyspe3QuYWRkZWROb2Rlc1tpXS5zZWxlY3RlZCYmKG49ITApfWVsc2UgdC5yZW1vdmVkTm9kZXMmJjA8dC5yZW1vdmVkTm9kZXMubGVuZ3RoJiYobj0hMCk7ZWxzZSBuPSEwO24mJnRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbihlKXtyLnRyaWdnZXIoXCJzZWxlY3Rpb246dXBkYXRlXCIse2RhdGE6ZX0pfSl9fSxkLnByb3RvdHlwZS50cmlnZ2VyPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZC5fX3N1cGVyX18udHJpZ2dlcixyPXtvcGVuOlwib3BlbmluZ1wiLGNsb3NlOlwiY2xvc2luZ1wiLHNlbGVjdDpcInNlbGVjdGluZ1wiLHVuc2VsZWN0OlwidW5zZWxlY3RpbmdcIixjbGVhcjpcImNsZWFyaW5nXCJ9O2lmKHZvaWQgMD09PXQmJih0PXt9KSxlIGluIHIpe3ZhciBpPXJbZV0sbz17cHJldmVudGVkOiExLG5hbWU6ZSxhcmdzOnR9O2lmKG4uY2FsbCh0aGlzLGksbyksby5wcmV2ZW50ZWQpcmV0dXJuIHZvaWQodC5wcmV2ZW50ZWQ9ITApfW4uY2FsbCh0aGlzLGUsdCl9LGQucHJvdG90eXBlLnRvZ2dsZURyb3Bkb3duPWZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmdldChcImRpc2FibGVkXCIpfHwodGhpcy5pc09wZW4oKT90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCkpfSxkLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7dGhpcy5pc09wZW4oKXx8dGhpcy50cmlnZ2VyKFwicXVlcnlcIix7fSl9LGQucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dGhpcy5pc09wZW4oKSYmdGhpcy50cmlnZ2VyKFwiY2xvc2VcIix7fSl9LGQucHJvdG90eXBlLmlzT3Blbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjb250YWluZXIuaGFzQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlblwiKX0sZC5wcm90b3R5cGUuaGFzRm9jdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGFpbmVyLmhhc0NsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLWZvY3VzXCIpfSxkLnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbihlKXt0aGlzLmhhc0ZvY3VzKCl8fCh0aGlzLiRjb250YWluZXIuYWRkQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXNcIiksdGhpcy50cmlnZ2VyKFwiZm9jdXNcIix7fSkpfSxkLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zLmdldChcImRlYnVnXCIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcImVuYWJsZVwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQucHJvcChcImRpc2FibGVkXCIpIGluc3RlYWQuJyksbnVsbCE9ZSYmMCE9PWUubGVuZ3RofHwoZT1bITBdKTt2YXIgdD0hZVswXTt0aGlzLiRlbGVtZW50LnByb3AoXCJkaXNhYmxlZFwiLHQpfSxkLnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmdldChcImRlYnVnXCIpJiYwPGFyZ3VtZW50cy5sZW5ndGgmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MihcImRhdGFcIilgLiBZb3Ugc2hvdWxkIGNvbnNpZGVyIHNldHRpbmcgdGhlIHZhbHVlIGluc3RlYWQgdXNpbmcgYCRlbGVtZW50LnZhbCgpYC4nKTt2YXIgdD1bXTtyZXR1cm4gdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGUpe3Q9ZX0pLHR9LGQucHJvdG90eXBlLnZhbD1mdW5jdGlvbihlKXtpZih0aGlzLm9wdGlvbnMuZ2V0KFwiZGVidWdcIikmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwidmFsXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGxhdGVyIFNlbGVjdDIgdmVyc2lvbnMuIFVzZSAkZWxlbWVudC52YWwoKSBpbnN0ZWFkLicpLG51bGw9PWV8fDA9PT1lLmxlbmd0aClyZXR1cm4gdGhpcy4kZWxlbWVudC52YWwoKTt2YXIgdD1lWzBdO2kuaXNBcnJheSh0KSYmKHQ9aS5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygpfSkpLHRoaXMuJGVsZW1lbnQudmFsKHQpLnRyaWdnZXIoXCJjaGFuZ2VcIil9LGQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRjb250YWluZXIucmVtb3ZlKCksdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCYmdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIix0aGlzLl9zeW5jQSksbnVsbCE9dGhpcy5fb2JzZXJ2ZXI/KHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLl9vYnNlcnZlcj1udWxsKTp0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXImJih0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01BdHRyTW9kaWZpZWRcIix0aGlzLl9zeW5jQSwhMSksdGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NTm9kZUluc2VydGVkXCIsdGhpcy5fc3luY1MsITEpLHRoaXMuJGVsZW1lbnRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTU5vZGVSZW1vdmVkXCIsdGhpcy5fc3luY1MsITEpKSx0aGlzLl9zeW5jQT1udWxsLHRoaXMuX3N5bmNTPW51bGwsdGhpcy4kZWxlbWVudC5vZmYoXCIuc2VsZWN0MlwiKSx0aGlzLiRlbGVtZW50LmF0dHIoXCJ0YWJpbmRleFwiLHUuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLFwib2xkLXRhYmluZGV4XCIpKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZVwiKSx0aGlzLiRlbGVtZW50LmF0dHIoXCJhcmlhLWhpZGRlblwiLFwiZmFsc2VcIiksdS5SZW1vdmVEYXRhKHRoaXMuJGVsZW1lbnRbMF0pLHRoaXMuJGVsZW1lbnQucmVtb3ZlRGF0YShcInNlbGVjdDJcIiksdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCksdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpLHRoaXMuZHJvcGRvd24uZGVzdHJveSgpLHRoaXMucmVzdWx0cy5kZXN0cm95KCksdGhpcy5kYXRhQWRhcHRlcj1udWxsLHRoaXMuc2VsZWN0aW9uPW51bGwsdGhpcy5kcm9wZG93bj1udWxsLHRoaXMucmVzdWx0cz1udWxsfSxkLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1pKCc8c3BhbiBjbGFzcz1cInNlbGVjdDIgc2VsZWN0Mi1jb250YWluZXJcIj48c3BhbiBjbGFzcz1cInNlbGVjdGlvblwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+PC9zcGFuPicpO3JldHVybiBlLmF0dHIoXCJkaXJcIix0aGlzLm9wdGlvbnMuZ2V0KFwiZGlyXCIpKSx0aGlzLiRjb250YWluZXI9ZSx0aGlzLiRjb250YWluZXIuYWRkQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tXCIrdGhpcy5vcHRpb25zLmdldChcInRoZW1lXCIpKSx1LlN0b3JlRGF0YShlWzBdLFwiZWxlbWVudFwiLHRoaXMuJGVsZW1lbnQpLGV9LGR9KSxlLmRlZmluZShcImpxdWVyeS1tb3VzZXdoZWVsXCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKGUpe3JldHVybiBlfSksZS5kZWZpbmUoXCJqcXVlcnkuc2VsZWN0MlwiLFtcImpxdWVyeVwiLFwianF1ZXJ5LW1vdXNld2hlZWxcIixcIi4vc2VsZWN0Mi9jb3JlXCIsXCIuL3NlbGVjdDIvZGVmYXVsdHNcIixcIi4vc2VsZWN0Mi91dGlsc1wiXSxmdW5jdGlvbihpLGUsbyx0LHMpe2lmKG51bGw9PWkuZm4uc2VsZWN0Mil7dmFyIGE9W1wib3BlblwiLFwiY2xvc2VcIixcImRlc3Ryb3lcIl07aS5mbi5zZWxlY3QyPWZ1bmN0aW9uKHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZih0PXR8fHt9KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9aS5leHRlbmQoITAse30sdCk7bmV3IG8oaSh0aGlzKSxlKX0pLHRoaXM7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgZm9yIFNlbGVjdDI6IFwiK3QpO3ZhciBuLHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1zLkdldERhdGEodGhpcyxcInNlbGVjdDJcIik7bnVsbD09ZSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoXCJUaGUgc2VsZWN0MignXCIrdCtcIicpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgU2VsZWN0Mi5cIiksbj1lW3RdLmFwcGx5KGUscil9KSwtMTxpLmluQXJyYXkodCxhKT90aGlzOm59fXJldHVybiBudWxsPT1pLmZuLnNlbGVjdDIuZGVmYXVsdHMmJihpLmZuLnNlbGVjdDIuZGVmYXVsdHM9dCksb30pLHtkZWZpbmU6ZS5kZWZpbmUscmVxdWlyZTplLnJlcXVpcmV9fSgpLHQ9ZS5yZXF1aXJlKFwianF1ZXJ5LnNlbGVjdDJcIik7cmV0dXJuIHUuZm4uc2VsZWN0Mi5hbWQ9ZSx0fSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsd0ZBQUFBLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUSxTQUFVLElBQUk7QUFDeEIsYUFBTyxNQUFNLEdBQUcsU0FBUyxRQUFRO0FBQUEsSUFDbkM7QUFHQSxJQUFBQSxRQUFPO0FBQUEsSUFFTCxNQUFNLE9BQU8sY0FBYyxZQUFZLFVBQVUsS0FDakQsTUFBTSxPQUFPLFVBQVUsWUFBWSxNQUFNO0FBQUEsSUFFekMsTUFBTSxPQUFPLFFBQVEsWUFBWSxJQUFJLEtBQ3JDLE1BQU0sT0FBTyxVQUFVLFlBQVksTUFBTSxLQUN6QyxNQUFNLE9BQU8sV0FBUSxZQUFZLE9BQUk7QUFBQSxJQUVwQywyQkFBWTtBQUFFLGFBQU87QUFBQSxJQUFNLEVBQUcsS0FBSyxTQUFTLGFBQWEsRUFBRTtBQUFBO0FBQUE7OztBQ2Y5RDtBQUFBLHVGQUFBQyxTQUFBO0FBQUE7QUFDQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxNQUFNO0FBQy9CLFVBQUk7QUFDRixlQUFPLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDaEIsU0FBUyxPQUFPO0FBQ2QsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDUEE7QUFBQSw2RkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRO0FBR1osSUFBQUEsUUFBTyxVQUFVLENBQUMsTUFBTSxXQUFZO0FBRWxDLGFBQU8sT0FBTyxlQUFlLENBQUMsR0FBRyxHQUFHLEVB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S0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUssS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUssS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFLLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUssS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFLLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFLLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSyxLQUFJO1FBQUssS0FBSTtRQUFLLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSyxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUksS0FBSTtRQUFJLEtBQUk7UUFBSSxLQUFJO1FBQUks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T0Q7QUFBRSxrQkFBTSxJQUFJVixNQUFNLG9DQUFrQ1UsRUFBQztBQUFFLGNBQUl6QyxJQUFFQyxLQUFFaUUsTUFBTTVCLFVBQVVqQixNQUFNdkIsS0FBSzRCLFdBQVUsQ0FBQztBQUFFLGlCQUFPLEtBQUs4RyxLQUFLLFdBQVU7QUFBQyxnQkFBSTlGLEtBQUV0QyxHQUFFb0csUUFBUSxNQUFLLFNBQVM7QUFBRSxvQkFBTTlELE1BQUcwRyxPQUFPNUYsV0FBU0EsUUFBUUMsU0FBT0QsUUFBUUMsTUFBTSxrQkFBZ0JoQixLQUFFLCtEQUErRCxHQUFFekMsS0FBRTBDLEdBQUVELEVBQUMsRUFBRWIsTUFBTWMsSUFBRXpDLEVBQUM7VUFBQyxDQUFDLEdBQUUsS0FBR0MsR0FBRXlJLFFBQVFsRyxJQUFFcEMsRUFBQyxJQUFFLE9BQUtMO1FBQUM7TUFBQztBQUFDLGFBQU8sUUFBTUUsR0FBRXhCLEdBQUdDLFFBQVE0WCxhQUFXclcsR0FBRXhCLEdBQUdDLFFBQVE0WCxXQUFTMVcsS0FBR007SUFBQyxDQUFDLEdBQUU7TUFBQzlCLFFBQU9PLEdBQUVQO01BQU91RSxTQUFRaEUsR0FBRWdFO0lBQU87RUFBQyxFQUFFLEdBQUVnWixJQUFFbmQsRUFBRW1FLFFBQVEsZ0JBQWdCO0FBQUUsU0FBT3BFLEVBQUVFLEdBQUdDLFFBQVFMLE1BQUlHLEdBQUVtZDtBQUFDLENBQUM7IiwKICAibmFtZXMiOiBbIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJTeW1ib2wiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImRvY3VtZW50IiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIlR5cGVFcnJvciIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm4iLCAiZGVmaW5lIiwgImFtZCIsICJqUXVlcnkiLCAidSIsICJlIiwgImZuIiwgInNlbGVjdDIiLCAiZTIiLCAidDIiLCAiciIsICJoIiwgIm8iLCAicyIsICJmIiwgImciLCAibSIsICJ2IiwgInkiLCAiXyIsICJpIiwgImEiLCAidyIsICJiIiwgImUzIiwgInQzIiwgImNhbGwiLCAibCIsICJuMiIsICJyMiIsICJpMiIsICJvMiIsICJzMiIsICJhMiIsICJsMiIsICJjMiIsICJ1MiIsICJkIiwgInAiLCAiaDIiLCAic3BsaXQiLCAiZjIiLCAibWFwIiwgImcyIiwgImxlbmd0aCIsICJub2RlSWRDb21wYXQiLCAidGVzdCIsICJyZXBsYWNlIiwgImNoYXJBdCIsICJzbGljZSIsICJjb25jYXQiLCAic3BsaWNlIiwgImpvaW4iLCAiQSIsICJhcmd1bWVudHMiLCAicHVzaCIsICJhcHBseSIsICJ4IiwgIkQiLCAiRXJyb3IiLCAiYyIsICJpbmRleE9mIiwgInN1YnN0cmluZyIsICJTIiwgInJlcXVpcmVqcyIsICJPYmplY3QiLCAicHJvdG90eXBlIiwgImhhc093blByb3BlcnR5IiwgIm5vcm1hbGl6ZSIsICJ0NCIsICJlNCIsICJwciIsICJyZXF1aXJlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlkIiwgInVyaSIsICJjb25maWciLCAibG9hZCIsICJkZXBzIiwgImNhbGxiYWNrIiwgInNldFRpbWVvdXQiLCAiX2RlZmluZWQiLCAiJCIsICJjb25zb2xlIiwgImVycm9yIiwgIm4zIiwgIkV4dGVuZCIsICJjb25zdHJ1Y3RvciIsICJpMyIsICJfX3N1cGVyX18iLCAiRGVjb3JhdGUiLCAibzMiLCAiZTUiLCAiQXJyYXkiLCAidW5zaGlmdCIsICJuNCIsICJkaXNwbGF5TmFtZSIsICJsaXN0ZW5lcnMiLCAib24iLCAidHJpZ2dlciIsICJfdHlwZSIsICJpbnZva2UiLCAiT2JzZXJ2YWJsZSIsICJnZW5lcmF0ZUNoYXJzIiwgIk1hdGgiLCAiZmxvb3IiLCAicmFuZG9tIiwgInRvU3RyaW5nIiwgImJpbmQiLCAiX2NvbnZlcnREYXRhIiwgInRvTG93ZXJDYXNlIiwgImhhc1Njcm9sbCIsICJzdHlsZSIsICJvdmVyZmxvd1giLCAib3ZlcmZsb3dZIiwgImlubmVySGVpZ2h0IiwgInNjcm9sbEhlaWdodCIsICJpbm5lcldpZHRoIiwgInNjcm9sbFdpZHRoIiwgImVzY2FwZU1hcmt1cCIsICJTdHJpbmciLCAiYXBwZW5kTWFueSIsICJqcXVlcnkiLCAic3Vic3RyIiwgImFkZCIsICJhcHBlbmQiLCAiX19jYWNoZSIsICJHZXRVbmlxdWVFbGVtZW50SWQiLCAiZ2V0QXR0cmlidXRlIiwgInNldEF0dHJpYnV0ZSIsICJTdG9yZURhdGEiLCAiR2V0RGF0YSIsICJkYXRhIiwgIlJlbW92ZURhdGEiLCAicmVtb3ZlQXR0cmlidXRlIiwgIiRlbGVtZW50IiwgIm9wdGlvbnMiLCAicmVuZGVyIiwgImdldCIsICJhdHRyIiwgIiRyZXN1bHRzIiwgImNsZWFyIiwgImVtcHR5IiwgImRpc3BsYXlNZXNzYWdlIiwgImhpZGVMb2FkaW5nIiwgInIzIiwgIm1lc3NhZ2UiLCAiYXJncyIsICJjbGFzc05hbWUiLCAiaGlkZU1lc3NhZ2VzIiwgImZpbmQiLCAicmVtb3ZlIiwgInJlc3VsdHMiLCAic29ydCIsICJvcHRpb24iLCAiY2hpbGRyZW4iLCAicG9zaXRpb24iLCAiaGlnaGxpZ2h0Rmlyc3RJdGVtIiwgImZpbHRlciIsICJmaXJzdCIsICJlbnN1cmVIaWdobGlnaHRWaXNpYmxlIiwgInNldENsYXNzZXMiLCAiY3VycmVudCIsICJlYWNoIiwgImVsZW1lbnQiLCAic2VsZWN0ZWQiLCAiaW5BcnJheSIsICJzaG93TG9hZGluZyIsICJkaXNhYmxlZCIsICJsb2FkaW5nIiwgInRleHQiLCAicHJlcGVuZCIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgInJvbGUiLCAid2luZG93IiwgIkVsZW1lbnQiLCAibWF0Y2hlcyIsICJtc01hdGNoZXNTZWxlY3RvciIsICJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCAiX3Jlc3VsdElkIiwgInRpdGxlIiwgInRlbXBsYXRlIiwgImNsYXNzIiwgImlzT3BlbiIsICJyZW1vdmVBdHRyIiwgImdldEhpZ2hsaWdodGVkUmVzdWx0cyIsICJpbmRleCIsICJlcSIsICJvZmZzZXQiLCAidG9wIiwgInNjcm9sbFRvcCIsICJvdXRlckhlaWdodCIsICJhZGRDbGFzcyIsICJtb3VzZXdoZWVsIiwgImRlbHRhWSIsICJoZWlnaHQiLCAicHJldmVudERlZmF1bHQiLCAic3RvcFByb3BhZ2F0aW9uIiwgIm9yaWdpbmFsRXZlbnQiLCAicmVtb3ZlQ2xhc3MiLCAiZGVzdHJveSIsICJkaXNwbGF5IiwgImlubmVySFRNTCIsICJCQUNLU1BBQ0UiLCAiVEFCIiwgIkVOVEVSIiwgIlNISUZUIiwgIkNUUkwiLCAiQUxUIiwgIkVTQyIsICJTUEFDRSIsICJQQUdFX1VQIiwgIlBBR0VfRE9XTiIsICJFTkQiLCAiSE9NRSIsICJMRUZUIiwgIlVQIiwgIlJJR0hUIiwgIkRPV04iLCAiREVMRVRFIiwgIl90YWJpbmRleCIsICIkc2VsZWN0aW9uIiwgImNvbnRhaW5lciIsICJfaGFuZGxlQmx1ciIsICJ3aGljaCIsICJ1cGRhdGUiLCAiX2F0dGFjaENsb3NlSGFuZGxlciIsICJfZGV0YWNoQ2xvc2VIYW5kbGVyIiwgImFjdGl2ZUVsZW1lbnQiLCAiY29udGFpbnMiLCAiYm9keSIsICJ0YXJnZXQiLCAiY2xvc2VzdCIsICJvZmYiLCAiaHRtbCIsICJzZWxlY3Rpb25Db250YWluZXIiLCAicGFyZW50IiwgInBsYWNlaG9sZGVyIiwgIm5vcm1hbGl6ZVBsYWNlaG9sZGVyIiwgImNyZWF0ZVBsYWNlaG9sZGVyIiwgIl9oYW5kbGVDbGVhciIsICJfaGFuZGxlS2V5Ym9hcmRDbGVhciIsICJ2YWwiLCAicHJldmVudGVkIiwgIiRzZWFyY2hDb250YWluZXIiLCAiJHNlYXJjaCIsICJfdHJhbnNmZXJUYWJJbmRleCIsICJwcm9wIiwgIl9rZXlVcFByZXZlbnRlZCIsICJpc0RlZmF1bHRQcmV2ZW50ZWQiLCAicHJldiIsICJzZWFyY2hSZW1vdmVDaG9pY2UiLCAiZG9jdW1lbnRNb2RlIiwgInR5cGUiLCAiaGFuZGxlU2VhcmNoIiwgInJlc2l6ZVNlYXJjaCIsICJ0ZXJtIiwgImNzcyIsICJ3aWR0aCIsICJFdmVudCIsICJwYXJhbXMiLCAiZGljdCIsICJhbGwiLCAiZXh0ZW5kIiwgIl9jYWNoZSIsICJsb2FkUGF0aCIsICJxdWVyeSIsICJnZW5lcmF0ZVJlc3VsdElkIiwgIml0ZW0iLCAic2VsZWN0IiwgImlzIiwgInVuc2VsZWN0IiwgImFkZE9wdGlvbnMiLCAibGFiZWwiLCAidGV4dENvbnRlbnQiLCAiaW5uZXJUZXh0IiwgInZhbHVlIiwgIl9ub3JtYWxpemVJdGVtIiwgIl9kYXRhVG9Db252ZXJ0IiwgImNvbnZlcnRUb09wdGlvbnMiLCAicmVwbGFjZVdpdGgiLCAiYWpheE9wdGlvbnMiLCAiX2FwcGx5RGVmYXVsdHMiLCAicHJvY2Vzc1Jlc3VsdHMiLCAicSIsICJ0cmFuc3BvcnQiLCAidDUiLCAiYWpheCIsICJ0aGVuIiwgImZhaWwiLCAiX3JlcXVlc3QiLCAiaXNGdW5jdGlvbiIsICJhYm9ydCIsICJlNiIsICJpc0FycmF5IiwgInN0YXR1cyIsICJ1cmwiLCAiZGVsYXkiLCAiX3F1ZXJ5VGltZW91dCIsICJjbGVhclRpbWVvdXQiLCAiY3JlYXRlVGFnIiwgImluc2VydFRhZyIsICJ1MyIsICJfcmVtb3ZlT2xkVGFncyIsICJwYWdlIiwgInRvVXBwZXJDYXNlIiwgInRyaW0iLCAidG9rZW5pemVyIiwgImRyb3Bkb3duIiwgInNlbGVjdGlvbiIsICJtaW5pbXVtSW5wdXRMZW5ndGgiLCAibWluaW11bSIsICJpbnB1dCIsICJtYXhpbXVtSW5wdXRMZW5ndGgiLCAibWF4aW11bSIsICJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgIl9jaGVja0lmTWF4aW11bVNlbGVjdGVkIiwgIiRkcm9wZG93biIsICJzaG93U2VhcmNoIiwgInJlbW92ZVBsYWNlaG9sZGVyIiwgImxhc3RQYXJhbXMiLCAiJGxvYWRpbmdNb3JlIiwgImNyZWF0ZUxvYWRpbmdNb3JlIiwgInNob3dMb2FkaW5nTW9yZSIsICJsb2FkTW9yZUlmTmVlZGVkIiwgImRvY3VtZW50RWxlbWVudCIsICJsb2FkTW9yZSIsICJwYWdpbmF0aW9uIiwgIm1vcmUiLCAiJGRyb3Bkb3duUGFyZW50IiwgIl9zaG93RHJvcGRvd24iLCAiX2F0dGFjaFBvc2l0aW9uaW5nSGFuZGxlciIsICJfYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzIiwgIl9oaWRlRHJvcGRvd24iLCAiX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlciIsICIkZHJvcGRvd25Db250YWluZXIiLCAiJGNvbnRhaW5lciIsICJkZXRhY2giLCAiX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kIiwgIl9wb3NpdGlvbkRyb3Bkb3duIiwgIl9yZXNpemVEcm9wZG93biIsICJwYXJlbnRzIiwgInNjcm9sbExlZnQiLCAiaGFzQ2xhc3MiLCAiYm90dG9tIiwgImEzIiwgImxlZnQiLCAib2Zmc2V0UGFyZW50IiwgImlzQ29ubmVjdGVkIiwgIm91dGVyV2lkdGgiLCAibWluV2lkdGgiLCAiYXBwZW5kVG8iLCAibWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCAiX2hhbmRsZVNlbGVjdE9uQ2xvc2UiLCAib3JpZ2luYWxTZWxlY3QyRXZlbnQiLCAiX3NlbGVjdFRyaWdnZXJlZCIsICJjdHJsS2V5IiwgIm1ldGFLZXkiLCAiZXJyb3JMb2FkaW5nIiwgImlucHV0VG9vTG9uZyIsICJpbnB1dFRvb1Nob3J0IiwgImxvYWRpbmdNb3JlIiwgIm1heGltdW1TZWxlY3RlZCIsICJub1Jlc3VsdHMiLCAic2VhcmNoaW5nIiwgInJlbW92ZUFsbEl0ZW1zIiwgIm0yIiwgInYyIiwgInkyIiwgIl8yIiwgIiQyIiwgIncyIiwgImIyIiwgIkEyIiwgIngyIiwgIkQyIiwgIlMyIiwgIkUiLCAiQyIsICJPIiwgIlQiLCAiTCIsICJJIiwgImoiLCAicmVzZXQiLCAiZGVmYXVsdHMiLCAiZGF0YUFkYXB0ZXIiLCAidGFncyIsICJ0b2tlblNlcGFyYXRvcnMiLCAiYW1kQmFzZSIsICJpbml0U2VsZWN0aW9uIiwgInJlc3VsdHNBZGFwdGVyIiwgInNlbGVjdE9uQ2xvc2UiLCAiZHJvcGRvd25BZGFwdGVyIiwgIm11bHRpcGxlIiwgImNsb3NlT25TZWxlY3QiLCAiZHJvcGRvd25Dc3NDbGFzcyIsICJkcm9wZG93bkNzcyIsICJhZGFwdERyb3Bkb3duQ3NzQ2xhc3MiLCAic2VsZWN0aW9uQWRhcHRlciIsICJhbGxvd0NsZWFyIiwgImNvbnRhaW5lckNzc0NsYXNzIiwgImNvbnRhaW5lckNzcyIsICJhZGFwdENvbnRhaW5lckNzc0NsYXNzIiwgImxhbmd1YWdlIiwgIl9yZXNvbHZlTGFuZ3VhZ2UiLCAiczMiLCAidHJhbnNsYXRpb25zIiwgIl9wcm9jZXNzVHJhbnNsYXRpb25zIiwgImRlYnVnIiwgImFtZExhbmd1YWdlQmFzZSIsICJkcm9wZG93bkF1dG9XaWR0aCIsICJtYXRjaGVyIiwgInNjcm9sbEFmdGVyU2VsZWN0IiwgInNvcnRlciIsICJ0ZW1wbGF0ZVJlc3VsdCIsICJ0ZW1wbGF0ZVNlbGVjdGlvbiIsICJ0aGVtZSIsICJhcHBseUZyb21FbGVtZW50IiwgImlzRW1wdHlPYmplY3QiLCAiaXNQbGFpbk9iamVjdCIsICJ3YXJuIiwgInNldCIsICJjYW1lbENhc2UiLCAiZnJvbUVsZW1lbnQiLCAiZGlyIiwgImF0dHJpYnV0ZXMiLCAibmFtZSIsICJkYXRhc2V0IiwgIl9nZW5lcmF0ZUlkIiwgIl9wbGFjZUNvbnRhaW5lciIsICJfYmluZEFkYXB0ZXJzIiwgIl9yZWdpc3RlckRvbUV2ZW50cyIsICJfcmVnaXN0ZXJEYXRhRXZlbnRzIiwgIl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cyIsICJfcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyIsICJfcmVnaXN0ZXJSZXN1bHRzRXZlbnRzIiwgIl9yZWdpc3RlckV2ZW50cyIsICJfc3luY0F0dHJpYnV0ZXMiLCAiaW5zZXJ0QWZ0ZXIiLCAiX3Jlc29sdmVXaWR0aCIsICJnZXRDb21wdXRlZFN0eWxlIiwgImMzIiwgIm1hdGNoIiwgIl9zeW5jQSIsICJfc3luY1MiLCAiX3N5bmNTdWJ0cmVlIiwgImF0dGFjaEV2ZW50IiwgIk11dGF0aW9uT2JzZXJ2ZXIiLCAiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsICJNb3pNdXRhdGlvbk9ic2VydmVyIiwgIl9vYnNlcnZlciIsICJvYnNlcnZlIiwgImNoaWxkTGlzdCIsICJzdWJ0cmVlIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAidG9nZ2xlRHJvcGRvd24iLCAiZm9jdXMiLCAiYWx0S2V5IiwgImNsb3NlIiwgIm9wZW4iLCAibm9kZU5hbWUiLCAiYWRkZWROb2RlcyIsICJyZW1vdmVkTm9kZXMiLCAiaGFzRm9jdXMiLCAiZW5hYmxlIiwgImRldGFjaEV2ZW50IiwgImRpc2Nvbm5lY3QiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJyZW1vdmVEYXRhIiwgInQiXQp9Cg==